naxx merge fixes

This commit is contained in:
bash
2025-11-04 21:21:59 +01:00
parent 52a09fbf54
commit 8c2409ff06
16 changed files with 88 additions and 112 deletions
@@ -24,10 +24,8 @@ enum GuardSays
enum Spells enum Spells
{ {
SPELL_IMPALE_10 = 28783, SPELL_IMPALE = 28783,
SPELL_IMPALE_25 = 56090, SPELL_LOCUST_SWARM = 28785,
SPELL_LOCUST_SWARM_10 = 28785,
SPELL_LOCUST_SWARM_25 = 54021,
SPELL_SUMMON_CORPSE_SCRABS_5 = 29105, SPELL_SUMMON_CORPSE_SCRABS_5 = 29105,
SPELL_SUMMON_CORPSE_SCRABS_10 = 28864, SPELL_SUMMON_CORPSE_SCRABS_10 = 28864,
SPELL_BERSERK = 26662 SPELL_BERSERK = 26662
@@ -127,12 +125,12 @@ public:
} }
ScheduleTimedEvent(15s, [&] { ScheduleTimedEvent(15s, [&] {
DoCastRandomTarget(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)); DoCastRandomTarget(SPELL_IMPALE);
}, 20s); }, 20s);
ScheduleTimedEvent(70s, 2min, [&] { ScheduleTimedEvent(70s, 2min, [&] {
Talk(EMOTE_LOCUST); Talk(EMOTE_LOCUST);
DoCastSelf(RAID_MODE(SPELL_LOCUST_SWARM_10, SPELL_LOCUST_SWARM_25)); DoCastSelf(SPELL_LOCUST_SWARM);
me->m_Events.AddEventAtOffset([&] me->m_Events.AddEventAtOffset([&]
{ {
@@ -19,6 +19,7 @@
#include "CreatureScript.h" #include "CreatureScript.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SpellInfo.h" #include "SpellInfo.h"
#include "SpellMgr.h"
#include "naxxramas.h" #include "naxxramas.h"
@@ -1,9 +1,10 @@
#ifndef BOSS_FAERLINA_H_ #ifndef BOSS_FAERLINA_H_
#define BOSS_FAERLINA_H_ #define BOSS_FAERLINA_H_
#include "ScriptMgr.h" #include "CreatureScript.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SpellInfo.h" #include "SpellInfo.h"
#include "SpellMgr.h"
#include "naxxramas.h" #include "naxxramas.h"
namespace Faerlina { namespace Faerlina {
@@ -25,7 +26,6 @@ enum Spells
SPELL_RAIN_OF_FIRE = 28794, SPELL_RAIN_OF_FIRE = 28794,
SPELL_FRENZY = 28798, SPELL_FRENZY = 28798,
SPELL_WIDOWS_EMBRACE = 28732, SPELL_WIDOWS_EMBRACE = 28732,
SPELL_MINION_WIDOWS_EMBRACE = 54097
}; };
enum Groups enum Groups
@@ -131,7 +131,7 @@ public:
void SpellHit(Unit* caster, SpellInfo const* spell) override void SpellHit(Unit* caster, SpellInfo const* spell) override
{ {
if (spell->Id == RAID_MODE(SPELL_WIDOWS_EMBRACE, SPELL_MINION_WIDOWS_EMBRACE)) if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_WIDOWS_EMBRACE, me))
{ {
Talk(EMOTE_WIDOWS_EMBRACE); Talk(EMOTE_WIDOWS_EMBRACE);
scheduler.RescheduleGroup(GROUP_FRENZY, 1min); scheduler.RescheduleGroup(GROUP_FRENZY, 1min);
@@ -22,23 +22,17 @@ enum Spells
SPELL_MARK_OF_ZELIEK = 28835, SPELL_MARK_OF_ZELIEK = 28835,
SPELL_MARK_DAMAGE = 28836, SPELL_MARK_DAMAGE = 28836,
// Korth'azz // Korth'azz
SPELL_KORTHAZZ_METEOR_10 = 28884, SPELL_KORTHAZZ_METEOR = 28884,
SPELL_KORTHAZZ_METEOR_25 = 57467,
// Blaumeux // Blaumeux
SPELL_BLAUMEUX_SHADOW_BOLT_10 = 57374, SPELL_BLAUMEUX_SHADOW_BOLT = 57374,
SPELL_BLAUMEUX_SHADOW_BOLT_25 = 57464, SPELL_BLAUMEUX_VOID_ZONE = 28863,
SPELL_BLAUMEUX_VOID_ZONE_10 = 28863,
SPELL_BLAUMEUX_VOID_ZONE_25 = 57463,
SPELL_BLAUMEUX_UNYIELDING_PAIN = 57381, SPELL_BLAUMEUX_UNYIELDING_PAIN = 57381,
// Zeliek // Zeliek
SPELL_ZELIEK_HOLY_WRATH_10 = 28883, SPELL_ZELIEK_HOLY_WRATH = 28883,
SPELL_ZELIEK_HOLY_WRATH_25 = 57466, SPELL_ZELIEK_HOLY_BOLT = 57376,
SPELL_ZELIEK_HOLY_BOLT_10 = 57376,
SPELL_ZELIEK_HOLY_BOLT_25 = 57465,
SPELL_ZELIEK_CONDEMNATION = 57377, SPELL_ZELIEK_CONDEMNATION = 57377,
// Rivendare // Rivendare
SPELL_RIVENDARE_UNHOLY_SHADOW_10 = 28882, SPELL_RIVENDARE_UNHOLY_SHADOW = 28882,
SPELL_RIVENDARE_UNHOLY_SHADOW_25 = 57369
}; };
enum Events enum Events
@@ -76,15 +70,13 @@ enum FourHorsemen
const uint32 TABLE_SPELL_MARK[4] = {SPELL_MARK_OF_ZELIEK, SPELL_MARK_OF_BLAUMEUX, SPELL_MARK_OF_RIVENDARE, SPELL_MARK_OF_KORTHAZZ}; const uint32 TABLE_SPELL_MARK[4] = {SPELL_MARK_OF_ZELIEK, SPELL_MARK_OF_BLAUMEUX, SPELL_MARK_OF_RIVENDARE, SPELL_MARK_OF_KORTHAZZ};
// PRIMARY SPELL // PRIMARY SPELL
const uint32 TABLE_SPELL_PRIMARY_10[4] = {SPELL_ZELIEK_HOLY_BOLT_10, SPELL_BLAUMEUX_SHADOW_BOLT_10, SPELL_RIVENDARE_UNHOLY_SHADOW_10, SPELL_KORTHAZZ_METEOR_10}; const uint32 TABLE_SPELL_PRIMARY[4] = {SPELL_ZELIEK_HOLY_BOLT, SPELL_BLAUMEUX_SHADOW_BOLT, SPELL_RIVENDARE_UNHOLY_SHADOW, SPELL_KORTHAZZ_METEOR};
const uint32 TABLE_SPELL_PRIMARY_25[4] = {SPELL_ZELIEK_HOLY_BOLT_25, SPELL_BLAUMEUX_SHADOW_BOLT_25, SPELL_RIVENDARE_UNHOLY_SHADOW_25, SPELL_KORTHAZZ_METEOR_25};
// PUNISH // PUNISH
const uint32 TABLE_SPELL_PUNISH[4] = {SPELL_ZELIEK_CONDEMNATION, SPELL_BLAUMEUX_UNYIELDING_PAIN, 0, 0}; const uint32 TABLE_SPELL_PUNISH[4] = {SPELL_ZELIEK_CONDEMNATION, SPELL_BLAUMEUX_UNYIELDING_PAIN, 0, 0};
// SECONDARY SPELL // SECONDARY SPELL
const uint32 TABLE_SPELL_SECONDARY_10[4] = {SPELL_ZELIEK_HOLY_WRATH_10, SPELL_BLAUMEUX_VOID_ZONE_10, 0, 0}; const uint32 TABLE_SPELL_SECONDARY[4] = {SPELL_ZELIEK_HOLY_WRATH, SPELL_BLAUMEUX_VOID_ZONE, 0, 0};
const uint32 TABLE_SPELL_SECONDARY_25[4] = {SPELL_ZELIEK_HOLY_WRATH_25, SPELL_BLAUMEUX_VOID_ZONE_25, 0, 0};
const Position WaypointPositions[12] = const Position WaypointPositions[12] =
{ {
@@ -297,11 +289,11 @@ public:
return; return;
case EVENT_PRIMARY_SPELL: case EVENT_PRIMARY_SPELL:
Talk(SAY_TAUNT); Talk(SAY_TAUNT);
me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId]), false); me->CastSpell(me->GetVictim(), TABLE_SPELL_PRIMARY[horsemanId], false);
events.Repeat(15s); events.Repeat(15s);
return; return;
case EVENT_SECONDARY_SPELL: case EVENT_SECONDARY_SPELL:
me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_SECONDARY_10[horsemanId], TABLE_SPELL_SECONDARY_25[horsemanId]), false); me->CastSpell(me->GetVictim(), TABLE_SPELL_SECONDARY[horsemanId], false);
events.Repeat(15s); events.Repeat(15s);
return; return;
} }
@@ -317,7 +309,7 @@ public:
} }
if (me->IsWithinDistInMap(me->GetVictim(), 45.0f) && me->IsValidAttackTarget(me->GetVictim())) if (me->IsWithinDistInMap(me->GetVictim(), 45.0f) && me->IsValidAttackTarget(me->GetVictim()))
{ {
DoCastVictim(RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId])); DoCastVictim(TABLE_SPELL_PRIMARY[horsemanId]);
} }
else if (!me->IsWithinDistInMap(me->GetVictim(), 45.0f) || !me->IsValidAttackTarget(me->GetVictim())) else if (!me->IsWithinDistInMap(me->GetVictim(), 45.0f) || !me->IsValidAttackTarget(me->GetVictim()))
{ {
@@ -13,10 +13,8 @@ namespace Gluth {
enum Spells enum Spells
{ {
SPELL_MORTAL_WOUND = 25646, SPELL_MORTAL_WOUND = 25646,
SPELL_ENRAGE_10 = 28371, SPELL_ENRAGE = 28371,
SPELL_ENRAGE_25 = 54427, SPELL_DECIMATE = 28374,
SPELL_DECIMATE_10 = 28374,
SPELL_DECIMATE_25 = 54426,
SPELL_DECIMATE_DAMAGE = 28375, SPELL_DECIMATE_DAMAGE = 28375,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_INFECTED_WOUND = 29306, SPELL_INFECTED_WOUND = 29306,
@@ -172,7 +170,7 @@ public:
break; break;
case EVENT_ENRAGE: case EVENT_ENRAGE:
Talk(EMOTE_ENRAGE); Talk(EMOTE_ENRAGE);
me->CastSpell(me, RAID_MODE(SPELL_ENRAGE_10, SPELL_ENRAGE_25), true); me->CastSpell(me, SPELL_ENRAGE, true);
events.Repeat(22s); events.Repeat(22s);
break; break;
case EVENT_MORTAL_WOUND: case EVENT_MORTAL_WOUND:
@@ -181,7 +179,7 @@ public:
break; break;
case EVENT_DECIMATE: case EVENT_DECIMATE:
Talk(EMOTE_DECIMATE); Talk(EMOTE_DECIMATE);
me->CastSpell(me, RAID_MODE(SPELL_DECIMATE_10, SPELL_DECIMATE_25), false); me->CastSpell(me, SPELL_DECIMATE, false);
events.Repeat(RAID_MODE(110s, 90s)); events.Repeat(RAID_MODE(110s, 90s));
break; break;
case EVENT_SUMMON_ZOMBIE: case EVENT_SUMMON_ZOMBIE:
@@ -29,8 +29,7 @@ enum Spells
{ {
// Gothik // Gothik
SPELL_HARVEST_SOUL = 28679, SPELL_HARVEST_SOUL = 28679,
SPELL_SHADOW_BOLT_10 = 29317, SPELL_SHADOW_BOLT = 29317,
SPELL_SHADOW_BOLT_25 = 56405,
// Teleport spells // Teleport spells
SPELL_TELEPORT_DEAD = 28025, SPELL_TELEPORT_DEAD = 28025,
SPELL_TELEPORT_LIVE = 28026, SPELL_TELEPORT_LIVE = 28026,
@@ -255,7 +254,7 @@ public:
std::vector<Player*> tList; std::vector<Player*> tList;
for(Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr) for(Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr)
{ {
if (!me->IsWithinDistInMap(itr->GetSource(), 200.0f, true, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster()) if (!me->IsWithinDistInMap(itr->GetSource(), 200.0f, true, false, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
{ {
continue; continue;
} }
@@ -388,7 +387,7 @@ public:
Talk(SAY_INTRO_4); Talk(SAY_INTRO_4);
break; break;
case EVENT_SHADOW_BOLT: case EVENT_SHADOW_BOLT:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SHADOW_BOLT_10, SPELL_SHADOW_BOLT_25), false); me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false);
events.Repeat(1s); events.Repeat(1s);
break; break;
case EVENT_HARVEST_SOUL: case EVENT_HARVEST_SOUL:
@@ -17,10 +17,8 @@ enum Spells
SPELL_POISON_CLOUD = 28240, SPELL_POISON_CLOUD = 28240,
SPELL_MUTATING_INJECTION = 28169, SPELL_MUTATING_INJECTION = 28169,
SPELL_MUTATING_EXPLOSION = 28206, SPELL_MUTATING_EXPLOSION = 28206,
SPELL_SLIME_SPRAY_10 = 28157, SPELL_SLIME_SPRAY = 28157,
SPELL_SLIME_SPRAY_25 = 54364, SPELL_POISON_CLOUD_DAMAGE_AURA = 28158,
SPELL_POISON_CLOUD_DAMAGE_AURA_10 = 28158,
SPELL_POISON_CLOUD_DAMAGE_AURA_25 = 54362,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_BOMBARD_SLIME = 28280 SPELL_BOMBARD_SLIME = 28280
}; };
@@ -93,14 +91,6 @@ public:
events.ScheduleEvent(EVENT_BERSERK, RAID_MODE(720s, 540s)); events.ScheduleEvent(EVENT_BERSERK, RAID_MODE(720s, 540s));
} }
void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25) && target->IsPlayer())
{
me->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
}
}
void JustSummoned(Creature* cr) override void JustSummoned(Creature* cr) override
{ {
if (cr->GetEntry() == NPC_FALLOUT_SLIME) if (cr->GetEntry() == NPC_FALLOUT_SLIME)
@@ -157,7 +147,7 @@ public:
break; break;
case EVENT_SLIME_SPRAY: case EVENT_SLIME_SPRAY:
Talk(EMOTE_SLIME); Talk(EMOTE_SLIME);
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25), false); me->CastSpell(me->GetVictim(), SPELL_SLIME_SPRAY, false);
events.Repeat(20s); events.Repeat(20s);
break; break;
case EVENT_MUTATING_INJECTION: case EVENT_MUTATING_INJECTION:
@@ -211,7 +201,7 @@ public:
auraVisualTimer += diff; auraVisualTimer += diff;
if (auraVisualTimer >= 1000) if (auraVisualTimer >= 1000)
{ {
me->CastSpell(me, (me->GetMap()->Is25ManRaid() ? SPELL_POISON_CLOUD_DAMAGE_AURA_25 : SPELL_POISON_CLOUD_DAMAGE_AURA_10), true); me->CastSpell(me, SPELL_POISON_CLOUD_DAMAGE_AURA, true);
auraVisualTimer = 0; auraVisualTimer = 0;
} }
} }
@@ -279,6 +269,22 @@ class spell_grobbulus_mutating_injection_aura : public AuraScript
} }
}; };
class spell_grobbulus_slime_spray : public SpellScript
{
PrepareSpellScript(spell_grobbulus_slime_spray);
void HandleHit()
{
if (Unit* target = GetHitUnit())
GetCaster()->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
}
void Register() override
{
OnHit += SpellHitFn(spell_grobbulus_slime_spray::HandleHit);
}
};
} }
@@ -23,8 +23,7 @@ enum Says
enum Spells enum Spells
{ {
SPELL_SPELL_DISRUPTION = 29310, SPELL_SPELL_DISRUPTION = 29310,
SPELL_DECREPIT_FEVER_10 = 29998, SPELL_DECREPIT_FEVER = 29998,
SPELL_DECREPIT_FEVER_25 = 55011,
SPELL_PLAGUE_CLOUD = 29350, SPELL_PLAGUE_CLOUD = 29350,
SPELL_TELEPORT_SELF = 30211 SPELL_TELEPORT_SELF = 30211
}; };
@@ -157,7 +156,7 @@ public:
events.Repeat(10s); events.Repeat(10s);
break; break;
case EVENT_DECEPIT_FEVER: case EVENT_DECEPIT_FEVER:
me->CastSpell(me, RAID_MODE(SPELL_DECREPIT_FEVER_10, SPELL_DECREPIT_FEVER_25), false); me->CastSpell(me, SPELL_DECREPIT_FEVER, false);
events.Repeat(22s, 25s); events.Repeat(22s, 25s);
break; break;
case EVENT_PLAGUE_CLOUD: case EVENT_PLAGUE_CLOUD:
@@ -31,10 +31,8 @@ enum Yells
enum Spells enum Spells
{ {
// Kel'Thzuad // Kel'Thzuad
SPELL_FROST_BOLT_SINGLE_10 = 28478, SPELL_FROST_BOLT_SINGLE = 28478,
SPELL_FROST_BOLT_SINGLE_25 = 55802, SPELL_FROST_BOLT_MULTI = 28479,
SPELL_FROST_BOLT_MULTI_10 = 28479,
SPELL_FROST_BOLT_MULTI_25 = 55807,
SPELL_SHADOW_FISURE = 27810, SPELL_SHADOW_FISURE = 27810,
SPELL_VOID_BLAST = 27812, SPELL_VOID_BLAST = 27812,
SPELL_DETONATE_MANA = 27819, SPELL_DETONATE_MANA = 27819,
@@ -355,11 +353,11 @@ public:
me->CastSpell(me, SPELL_BERSERK, true); me->CastSpell(me, SPELL_BERSERK, true);
break; break;
case EVENT_FROST_BOLT_SINGLE: case EVENT_FROST_BOLT_SINGLE:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_FROST_BOLT_SINGLE_10, SPELL_FROST_BOLT_SINGLE_25), false); me->CastSpell(me->GetVictim(), SPELL_FROST_BOLT_SINGLE, false);
events.Repeat(2s, 10s); events.Repeat(2s, 10s);
break; break;
case EVENT_FROST_BOLT_MULTI: case EVENT_FROST_BOLT_MULTI:
me->CastSpell(me, RAID_MODE(SPELL_FROST_BOLT_MULTI_10, SPELL_FROST_BOLT_MULTI_25), false); me->CastSpell(me, SPELL_FROST_BOLT_MULTI, false);
events.Repeat(15s, 30s); events.Repeat(15s, 30s);
break; break;
case EVENT_SHADOW_FISSURE: case EVENT_SHADOW_FISSURE:
@@ -12,10 +12,8 @@ enum Spells
{ {
SPELL_NECROTIC_AURA = 55593, SPELL_NECROTIC_AURA = 55593,
SPELL_SUMMON_SPORE = 29234, SPELL_SUMMON_SPORE = 29234,
SPELL_DEATHBLOOM_10 = 29865, SPELL_DEATHBLOOM = 29865,
SPELL_DEATHBLOOM_25 = 55053, SPELL_INEVITABLE_DOOM = 29204,
SPELL_INEVITABLE_DOOM_10 = 29204,
SPELL_INEVITABLE_DOOM_25 = 55052,
SPELL_BERSERK = 26662 SPELL_BERSERK = 26662
}; };
@@ -123,11 +121,11 @@ public:
events.Repeat(20s); events.Repeat(20s);
break; break;
case EVENT_DEATHBLOOM: case EVENT_DEATHBLOOM:
me->CastSpell(me, RAID_MODE(SPELL_DEATHBLOOM_10, SPELL_DEATHBLOOM_25), false); me->CastSpell(me, SPELL_DEATHBLOOM, false);
events.Repeat(30s); events.Repeat(30s);
break; break;
case EVENT_INEVITABLE_DOOM: case EVENT_INEVITABLE_DOOM:
me->CastSpell(me, RAID_MODE(SPELL_INEVITABLE_DOOM_10, SPELL_INEVITABLE_DOOM_25), false); me->CastSpell(me, SPELL_INEVITABLE_DOOM, false);
doomCounter++; doomCounter++;
events.Repeat(doomCounter < 6 ? 30s : 15s); events.Repeat(doomCounter < 6 ? 30s : 15s);
break; break;
@@ -148,8 +146,8 @@ public:
{ {
// Calculate the distance between his home position to the gate // Calculate the distance between his home position to the gate
if (me->GetExactDist(me->GetHomePosition().GetPositionX(), if (me->GetExactDist(me->GetHomePosition().GetPositionX(),
me->GetHomePosition().GetPositionY(), me->GetHomePosition().GetPositionY(),
me->GetHomePosition().GetPositionZ()) > 50.0f) me->GetHomePosition().GetPositionZ()) > 50.0f)
{ {
EnterEvadeMode(); EnterEvadeMode();
return false; return false;
@@ -15,14 +15,10 @@ namespace Maexxna {
enum Spells enum Spells
{ {
SPELL_WEB_SPRAY_10 = 29484, SPELL_WEB_SPRAY = 29484,
SPELL_WEB_SPRAY_25 = 54125, SPELL_POISON_SHOCK = 28741,
SPELL_POISON_SHOCK_10 = 28741, SPELL_NECROTIC_POISON = 54121,
SPELL_POISON_SHOCK_25 = 54122, SPELL_FRENZY = 54123,
SPELL_NECROTIC_POISON_10 = 54121,
SPELL_NECROTIC_POISON_25 = 28776,
SPELL_FRENZY_10 = 54123,
SPELL_FRENZY_25 = 54124,
SPELL_WEB_WRAP_STUN = 28622, SPELL_WEB_WRAP_STUN = 28622,
SPELL_WEB_WRAP_SUMMON = 28627, SPELL_WEB_WRAP_SUMMON = 28627,
SPELL_WEB_WRAP_KILL_WEBS = 52512, SPELL_WEB_WRAP_KILL_WEBS = 52512,
@@ -220,15 +216,15 @@ public:
{ {
case EVENT_WEB_SPRAY: case EVENT_WEB_SPRAY:
Talk(EMOTE_WEB_SPRAY); Talk(EMOTE_WEB_SPRAY);
me->CastSpell(me, RAID_MODE(SPELL_WEB_SPRAY_10, SPELL_WEB_SPRAY_25), true); me->CastSpell(me, SPELL_WEB_SPRAY, true);
events.Repeat(40s); events.Repeat(40s);
break; break;
case EVENT_POISON_SHOCK: case EVENT_POISON_SHOCK:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_POISON_SHOCK_10, SPELL_POISON_SHOCK_25), false); me->CastSpell(me->GetVictim(), SPELL_POISON_SHOCK, false);
events.Repeat(10s); events.Repeat(10s);
break; break;
case EVENT_NECROTIC_POISON: case EVENT_NECROTIC_POISON:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_NECROTIC_POISON_10, SPELL_NECROTIC_POISON_25), false); me->CastSpell(me->GetVictim(), SPELL_NECROTIC_POISON, false);
events.Repeat(30s); events.Repeat(30s);
break; break;
case EVENT_SUMMON_SPIDERLINGS: case EVENT_SUMMON_SPIDERLINGS:
@@ -242,7 +238,7 @@ public:
case EVENT_HEALTH_CHECK: case EVENT_HEALTH_CHECK:
if (me->GetHealthPct() < 30) if (me->GetHealthPct() < 30)
{ {
me->CastSpell(me, RAID_MODE(SPELL_FRENZY_10, SPELL_FRENZY_25), true); me->CastSpell(me, SPELL_FRENZY, true);
break; break;
} }
events.Repeat(1s); events.Repeat(1s);
@@ -23,10 +23,8 @@ enum Says
enum Spells enum Spells
{ {
SPELL_CURSE_OF_THE_PLAGUEBRINGER_10 = 29213, SPELL_CURSE_OF_THE_PLAGUEBRINGER = 29213,
SPELL_CURSE_OF_THE_PLAGUEBRINGER_25 = 54835, SPELL_CRIPPLE = 29212,
SPELL_CRIPPLE_10 = 29212,
SPELL_CRIPPLE_25 = 54814,
SPELL_SUMMON_PLAGUED_WARRIORS = 29237, SPELL_SUMMON_PLAGUED_WARRIORS = 29237,
SPELL_TELEPORT = 29216, SPELL_TELEPORT = 29216,
SPELL_TELEPORT_BACK = 29231, SPELL_TELEPORT_BACK = 29231,
@@ -196,7 +194,7 @@ public:
case EVENT_CURSE: case EVENT_CURSE:
if (events.GetPhaseMask() == 0) if (events.GetPhaseMask() == 0)
{ {
me->CastCustomSpell(RAID_MODE(SPELL_CURSE_OF_THE_PLAGUEBRINGER_10, SPELL_CURSE_OF_THE_PLAGUEBRINGER_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false); me->CastCustomSpell(SPELL_CURSE_OF_THE_PLAGUEBRINGER, SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false);
} }
events.Repeat(25s); events.Repeat(25s);
break; break;
@@ -217,7 +215,7 @@ public:
break; break;
case EVENT_BLINK: case EVENT_BLINK:
DoResetThreatList(); DoResetThreatList();
me->CastSpell(me, RAID_MODE(SPELL_CRIPPLE_10, SPELL_CRIPPLE_25), false); me->CastSpell(me, SPELL_CRIPPLE, false);
me->CastSpell(me, SPELL_BLINK, true); me->CastSpell(me, SPELL_BLINK, true);
Talk(EMOTE_BLINK); Talk(EMOTE_BLINK);
events.Repeat(30s); events.Repeat(30s);
@@ -19,8 +19,7 @@ enum Yells
enum Spells enum Spells
{ {
SPELL_HATEFUL_STRIKE_10 = 41926, SPELL_HATEFUL_STRIKE = 41926,
SPELL_HATEFUL_STRIKE_25 = 59192,
SPELL_FRENZY = 28131, SPELL_FRENZY = 28131,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_SLIME_BOLT = 32309 SPELL_SLIME_BOLT = 32309
@@ -144,7 +143,7 @@ public:
} }
if (finalTarget) if (finalTarget)
{ {
me->CastSpell(finalTarget, RAID_MODE(SPELL_HATEFUL_STRIKE_10, SPELL_HATEFUL_STRIKE_25), false); me->CastSpell(finalTarget, SPELL_HATEFUL_STRIKE, false);
} }
events.Repeat(1s); events.Repeat(1s);
break; break;
@@ -22,8 +22,7 @@ enum Says
enum Spells enum Spells
{ {
SPELL_UNBALANCING_STRIKE = 26613, SPELL_UNBALANCING_STRIKE = 26613,
SPELL_DISRUPTING_SHOUT_10 = 55543, SPELL_DISRUPTING_SHOUT = 55543,
SPELL_DISRUPTING_SHOUT_25 = 29107,
SPELL_JAGGED_KNIFE = 55550, SPELL_JAGGED_KNIFE = 55550,
SPELL_HOPELESS = 29125, SPELL_HOPELESS = 29125,
SPELL_TAUNT = 29060 SPELL_TAUNT = 29060
@@ -255,7 +254,7 @@ public:
events.Repeat(20s); events.Repeat(20s);
break; break;
case EVENT_DISRUPTING_SHOUT: case EVENT_DISRUPTING_SHOUT:
me->CastSpell(me, RAID_MODE(SPELL_DISRUPTING_SHOUT_10, SPELL_DISRUPTING_SHOUT_25), false); me->CastSpell(me, SPELL_DISRUPTING_SHOUT, false);
events.Repeat(15s); events.Repeat(15s);
break; break;
case EVENT_JAGGED_KNIFE: case EVENT_JAGGED_KNIFE:
@@ -21,14 +21,11 @@ enum Yells
enum Spells enum Spells
{ {
// Fight // Fight
SPELL_FROST_AURA_10 = 28531, SPELL_FROST_AURA = 28531,
SPELL_FROST_AURA_25 = 55799,
SPELL_CLEAVE = 19983, SPELL_CLEAVE = 19983,
SPELL_TAIL_SWEEP_10 = 55697, SPELL_TAIL_SWEEP = 55697,
SPELL_TAIL_SWEEP_25 = 55696,
SPELL_SUMMON_BLIZZARD = 28560, SPELL_SUMMON_BLIZZARD = 28560,
SPELL_LIFE_DRAIN_10 = 28542, SPELL_LIFE_DRAIN = 28542,
SPELL_LIFE_DRAIN_25 = 55665,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
// Ice block // Ice block
@@ -148,7 +145,7 @@ public:
{ {
BossAI::JustEngagedWith(who); BossAI::JustEngagedWith(who);
EnterCombatSelfFunction(); EnterCombatSelfFunction();
me->CastSpell(me, RAID_MODE(SPELL_FROST_AURA_10, SPELL_FROST_AURA_25), true); me->CastSpell(me, SPELL_FROST_AURA, true);
events.ScheduleEvent(EVENT_BERSERK, 15min); events.ScheduleEvent(EVENT_BERSERK, 15min);
events.ScheduleEvent(EVENT_CLEAVE, 5s); events.ScheduleEvent(EVENT_CLEAVE, 5s);
events.ScheduleEvent(EVENT_TAIL_SWEEP, 10s); events.ScheduleEvent(EVENT_TAIL_SWEEP, 10s);
@@ -246,11 +243,11 @@ public:
events.Repeat(10s); events.Repeat(10s);
return; return;
case EVENT_TAIL_SWEEP: case EVENT_TAIL_SWEEP:
me->CastSpell(me, RAID_MODE(SPELL_TAIL_SWEEP_10, SPELL_TAIL_SWEEP_25), false); me->CastSpell(me, SPELL_TAIL_SWEEP, false);
events.Repeat(10s); events.Repeat(10s);
return; return;
case EVENT_LIFE_DRAIN: case EVENT_LIFE_DRAIN:
me->CastCustomSpell(RAID_MODE(SPELL_LIFE_DRAIN_10, SPELL_LIFE_DRAIN_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false); me->CastCustomSpell(SPELL_LIFE_DRAIN, SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false);
events.Repeat(24s); events.Repeat(24s);
return; return;
case EVENT_BLIZZARD: case EVENT_BLIZZARD:
@@ -46,20 +46,17 @@ enum Spells
SPELL_SHOCK_VISUAL = 28159, SPELL_SHOCK_VISUAL = 28159,
// Stalagg // Stalagg
SPELL_POWER_SURGE_10 = 54529, SPELL_POWER_SURGE = 54529,
SPELL_POWER_SURGE_25 = 28134,
SPELL_STALAGG_CHAIN = 28096, SPELL_STALAGG_CHAIN = 28096,
// Feugen // Feugen
SPELL_STATIC_FIELD_10 = 28135, SPELL_STATIC_FIELD = 28135,
SPELL_STATIC_FIELD_25 = 54528,
SPELL_FEUGEN_CHAIN = 28111, SPELL_FEUGEN_CHAIN = 28111,
// Thaddius // Thaddius
SPELL_POLARITY_SHIFT = 28089, SPELL_POLARITY_SHIFT = 28089,
SPELL_BALL_LIGHTNING = 28299, SPELL_BALL_LIGHTNING = 28299,
SPELL_CHAIN_LIGHTNING_10 = 28167, SPELL_CHAIN_LIGHTNING = 28167,
SPELL_CHAIN_LIGHTNING_25 = 54531,
SPELL_BERSERK = 27680, SPELL_BERSERK = 27680,
SPELL_THADDIUS_VISUAL_LIGHTNING = 28136, SPELL_THADDIUS_VISUAL_LIGHTNING = 28136,
SPELL_THADDIUS_SPAWN_STUN = 28160, SPELL_THADDIUS_SPAWN_STUN = 28160,
@@ -295,16 +292,17 @@ public:
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_STUNNED); me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetControlled(false, UNIT_STATE_ROOT);
events.ScheduleEvent(EVENT_THADDIUS_CHAIN_LIGHTNING, 14s); events.ScheduleEvent(EVENT_THADDIUS_CHAIN_LIGHTNING, 14s);
events.ScheduleEvent(EVENT_THADDIUS_BERSERK, 6min); events.ScheduleEvent(EVENT_THADDIUS_BERSERK, 6min);
events.ScheduleEvent(EVENT_THADDIUS_POLARITY_SHIFT, 30s); events.ScheduleEvent(EVENT_THADDIUS_POLARITY_SHIFT, 20s);
events.ScheduleEvent(EVENT_ALLOW_BALL_LIGHTNING, 5s); events.ScheduleEvent(EVENT_ALLOW_BALL_LIGHTNING, 5s);
return; return;
case EVENT_THADDIUS_BERSERK: case EVENT_THADDIUS_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true); me->CastSpell(me, SPELL_BERSERK, true);
break; break;
case EVENT_THADDIUS_CHAIN_LIGHTNING: case EVENT_THADDIUS_CHAIN_LIGHTNING:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false); me->CastSpell(me->GetVictim(), SPELL_CHAIN_LIGHTNING, false);
events.Repeat(15s); events.Repeat(15s);
break; break;
case EVENT_THADDIUS_POLARITY_SHIFT: case EVENT_THADDIUS_POLARITY_SHIFT:
@@ -484,11 +482,11 @@ public:
switch (events.ExecuteEvent()) switch (events.ExecuteEvent())
{ {
case EVENT_MINION_POWER_SURGE: case EVENT_MINION_POWER_SURGE:
me->CastSpell(me, RAID_MODE(SPELL_POWER_SURGE_10, SPELL_POWER_SURGE_25), false); me->CastSpell(me, SPELL_POWER_SURGE, false);
events.Repeat(19s); events.Repeat(19s);
break; break;
case EVENT_MINION_STATIC_FIELD: case EVENT_MINION_STATIC_FIELD:
me->CastSpell(me, RAID_MODE(SPELL_STATIC_FIELD_10, SPELL_STATIC_FIELD_25), false); me->CastSpell(me, SPELL_STATIC_FIELD, false);
events.Repeat(3s); events.Repeat(3s);
break; break;
case EVENT_MINION_MAGNETIC_PULL: case EVENT_MINION_MAGNETIC_PULL: