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

View File

@@ -24,10 +24,8 @@ enum GuardSays
enum Spells
{
SPELL_IMPALE_10 = 28783,
SPELL_IMPALE_25 = 56090,
SPELL_LOCUST_SWARM_10 = 28785,
SPELL_LOCUST_SWARM_25 = 54021,
SPELL_IMPALE = 28783,
SPELL_LOCUST_SWARM = 28785,
SPELL_SUMMON_CORPSE_SCRABS_5 = 29105,
SPELL_SUMMON_CORPSE_SCRABS_10 = 28864,
SPELL_BERSERK = 26662
@@ -127,12 +125,12 @@ public:
}
ScheduleTimedEvent(15s, [&] {
DoCastRandomTarget(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25));
DoCastRandomTarget(SPELL_IMPALE);
}, 20s);
ScheduleTimedEvent(70s, 2min, [&] {
Talk(EMOTE_LOCUST);
DoCastSelf(RAID_MODE(SPELL_LOCUST_SWARM_10, SPELL_LOCUST_SWARM_25));
DoCastSelf(SPELL_LOCUST_SWARM);
me->m_Events.AddEventAtOffset([&]
{

View File

@@ -19,6 +19,7 @@
#include "CreatureScript.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
#include "SpellMgr.h"
#include "naxxramas.h"

View File

@@ -1,9 +1,10 @@
#ifndef BOSS_FAERLINA_H_
#define BOSS_FAERLINA_H_
#include "ScriptMgr.h"
#include "CreatureScript.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
#include "SpellMgr.h"
#include "naxxramas.h"
namespace Faerlina {
@@ -25,7 +26,6 @@ enum Spells
SPELL_RAIN_OF_FIRE = 28794,
SPELL_FRENZY = 28798,
SPELL_WIDOWS_EMBRACE = 28732,
SPELL_MINION_WIDOWS_EMBRACE = 54097
};
enum Groups
@@ -131,7 +131,7 @@ public:
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);
scheduler.RescheduleGroup(GROUP_FRENZY, 1min);

View File

@@ -22,23 +22,17 @@ enum Spells
SPELL_MARK_OF_ZELIEK = 28835,
SPELL_MARK_DAMAGE = 28836,
// Korth'azz
SPELL_KORTHAZZ_METEOR_10 = 28884,
SPELL_KORTHAZZ_METEOR_25 = 57467,
SPELL_KORTHAZZ_METEOR = 28884,
// Blaumeux
SPELL_BLAUMEUX_SHADOW_BOLT_10 = 57374,
SPELL_BLAUMEUX_SHADOW_BOLT_25 = 57464,
SPELL_BLAUMEUX_VOID_ZONE_10 = 28863,
SPELL_BLAUMEUX_VOID_ZONE_25 = 57463,
SPELL_BLAUMEUX_SHADOW_BOLT = 57374,
SPELL_BLAUMEUX_VOID_ZONE = 28863,
SPELL_BLAUMEUX_UNYIELDING_PAIN = 57381,
// Zeliek
SPELL_ZELIEK_HOLY_WRATH_10 = 28883,
SPELL_ZELIEK_HOLY_WRATH_25 = 57466,
SPELL_ZELIEK_HOLY_BOLT_10 = 57376,
SPELL_ZELIEK_HOLY_BOLT_25 = 57465,
SPELL_ZELIEK_HOLY_WRATH = 28883,
SPELL_ZELIEK_HOLY_BOLT = 57376,
SPELL_ZELIEK_CONDEMNATION = 57377,
// Rivendare
SPELL_RIVENDARE_UNHOLY_SHADOW_10 = 28882,
SPELL_RIVENDARE_UNHOLY_SHADOW_25 = 57369
SPELL_RIVENDARE_UNHOLY_SHADOW = 28882,
};
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};
// 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_25[4] = {SPELL_ZELIEK_HOLY_BOLT_25, SPELL_BLAUMEUX_SHADOW_BOLT_25, SPELL_RIVENDARE_UNHOLY_SHADOW_25, SPELL_KORTHAZZ_METEOR_25};
const uint32 TABLE_SPELL_PRIMARY[4] = {SPELL_ZELIEK_HOLY_BOLT, SPELL_BLAUMEUX_SHADOW_BOLT, SPELL_RIVENDARE_UNHOLY_SHADOW, SPELL_KORTHAZZ_METEOR};
// PUNISH
const uint32 TABLE_SPELL_PUNISH[4] = {SPELL_ZELIEK_CONDEMNATION, SPELL_BLAUMEUX_UNYIELDING_PAIN, 0, 0};
// 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_25[4] = {SPELL_ZELIEK_HOLY_WRATH_25, SPELL_BLAUMEUX_VOID_ZONE_25, 0, 0};
const uint32 TABLE_SPELL_SECONDARY[4] = {SPELL_ZELIEK_HOLY_WRATH, SPELL_BLAUMEUX_VOID_ZONE, 0, 0};
const Position WaypointPositions[12] =
{
@@ -297,11 +289,11 @@ public:
return;
case EVENT_PRIMARY_SPELL:
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);
return;
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);
return;
}
@@ -317,7 +309,7 @@ public:
}
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()))
{

View File

@@ -13,10 +13,8 @@ namespace Gluth {
enum Spells
{
SPELL_MORTAL_WOUND = 25646,
SPELL_ENRAGE_10 = 28371,
SPELL_ENRAGE_25 = 54427,
SPELL_DECIMATE_10 = 28374,
SPELL_DECIMATE_25 = 54426,
SPELL_ENRAGE = 28371,
SPELL_DECIMATE = 28374,
SPELL_DECIMATE_DAMAGE = 28375,
SPELL_BERSERK = 26662,
SPELL_INFECTED_WOUND = 29306,
@@ -172,7 +170,7 @@ public:
break;
case EVENT_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);
break;
case EVENT_MORTAL_WOUND:
@@ -181,7 +179,7 @@ public:
break;
case EVENT_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));
break;
case EVENT_SUMMON_ZOMBIE:

View File

@@ -29,8 +29,7 @@ enum Spells
{
// Gothik
SPELL_HARVEST_SOUL = 28679,
SPELL_SHADOW_BOLT_10 = 29317,
SPELL_SHADOW_BOLT_25 = 56405,
SPELL_SHADOW_BOLT = 29317,
// Teleport spells
SPELL_TELEPORT_DEAD = 28025,
SPELL_TELEPORT_LIVE = 28026,
@@ -255,7 +254,7 @@ public:
std::vector<Player*> tList;
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;
}
@@ -388,7 +387,7 @@ public:
Talk(SAY_INTRO_4);
break;
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);
break;
case EVENT_HARVEST_SOUL:

View File

@@ -17,10 +17,8 @@ enum Spells
SPELL_POISON_CLOUD = 28240,
SPELL_MUTATING_INJECTION = 28169,
SPELL_MUTATING_EXPLOSION = 28206,
SPELL_SLIME_SPRAY_10 = 28157,
SPELL_SLIME_SPRAY_25 = 54364,
SPELL_POISON_CLOUD_DAMAGE_AURA_10 = 28158,
SPELL_POISON_CLOUD_DAMAGE_AURA_25 = 54362,
SPELL_SLIME_SPRAY = 28157,
SPELL_POISON_CLOUD_DAMAGE_AURA = 28158,
SPELL_BERSERK = 26662,
SPELL_BOMBARD_SLIME = 28280
};
@@ -93,14 +91,6 @@ public:
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
{
if (cr->GetEntry() == NPC_FALLOUT_SLIME)
@@ -157,7 +147,7 @@ public:
break;
case EVENT_SLIME_SPRAY:
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);
break;
case EVENT_MUTATING_INJECTION:
@@ -211,7 +201,7 @@ public:
auraVisualTimer += diff;
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;
}
}
@@ -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);
}
};
}

View File

@@ -23,8 +23,7 @@ enum Says
enum Spells
{
SPELL_SPELL_DISRUPTION = 29310,
SPELL_DECREPIT_FEVER_10 = 29998,
SPELL_DECREPIT_FEVER_25 = 55011,
SPELL_DECREPIT_FEVER = 29998,
SPELL_PLAGUE_CLOUD = 29350,
SPELL_TELEPORT_SELF = 30211
};
@@ -157,7 +156,7 @@ public:
events.Repeat(10s);
break;
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);
break;
case EVENT_PLAGUE_CLOUD:

View File

@@ -31,10 +31,8 @@ enum Yells
enum Spells
{
// Kel'Thzuad
SPELL_FROST_BOLT_SINGLE_10 = 28478,
SPELL_FROST_BOLT_SINGLE_25 = 55802,
SPELL_FROST_BOLT_MULTI_10 = 28479,
SPELL_FROST_BOLT_MULTI_25 = 55807,
SPELL_FROST_BOLT_SINGLE = 28478,
SPELL_FROST_BOLT_MULTI = 28479,
SPELL_SHADOW_FISURE = 27810,
SPELL_VOID_BLAST = 27812,
SPELL_DETONATE_MANA = 27819,
@@ -355,11 +353,11 @@ public:
me->CastSpell(me, SPELL_BERSERK, true);
break;
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);
break;
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);
break;
case EVENT_SHADOW_FISSURE:

View File

@@ -12,10 +12,8 @@ enum Spells
{
SPELL_NECROTIC_AURA = 55593,
SPELL_SUMMON_SPORE = 29234,
SPELL_DEATHBLOOM_10 = 29865,
SPELL_DEATHBLOOM_25 = 55053,
SPELL_INEVITABLE_DOOM_10 = 29204,
SPELL_INEVITABLE_DOOM_25 = 55052,
SPELL_DEATHBLOOM = 29865,
SPELL_INEVITABLE_DOOM = 29204,
SPELL_BERSERK = 26662
};
@@ -123,11 +121,11 @@ public:
events.Repeat(20s);
break;
case EVENT_DEATHBLOOM:
me->CastSpell(me, RAID_MODE(SPELL_DEATHBLOOM_10, SPELL_DEATHBLOOM_25), false);
me->CastSpell(me, SPELL_DEATHBLOOM, false);
events.Repeat(30s);
break;
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++;
events.Repeat(doomCounter < 6 ? 30s : 15s);
break;
@@ -148,8 +146,8 @@ public:
{
// Calculate the distance between his home position to the gate
if (me->GetExactDist(me->GetHomePosition().GetPositionX(),
me->GetHomePosition().GetPositionY(),
me->GetHomePosition().GetPositionZ()) > 50.0f)
me->GetHomePosition().GetPositionY(),
me->GetHomePosition().GetPositionZ()) > 50.0f)
{
EnterEvadeMode();
return false;

View File

@@ -15,14 +15,10 @@ namespace Maexxna {
enum Spells
{
SPELL_WEB_SPRAY_10 = 29484,
SPELL_WEB_SPRAY_25 = 54125,
SPELL_POISON_SHOCK_10 = 28741,
SPELL_POISON_SHOCK_25 = 54122,
SPELL_NECROTIC_POISON_10 = 54121,
SPELL_NECROTIC_POISON_25 = 28776,
SPELL_FRENZY_10 = 54123,
SPELL_FRENZY_25 = 54124,
SPELL_WEB_SPRAY = 29484,
SPELL_POISON_SHOCK = 28741,
SPELL_NECROTIC_POISON = 54121,
SPELL_FRENZY = 54123,
SPELL_WEB_WRAP_STUN = 28622,
SPELL_WEB_WRAP_SUMMON = 28627,
SPELL_WEB_WRAP_KILL_WEBS = 52512,
@@ -220,15 +216,15 @@ public:
{
case EVENT_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);
break;
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);
break;
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);
break;
case EVENT_SUMMON_SPIDERLINGS:
@@ -242,7 +238,7 @@ public:
case EVENT_HEALTH_CHECK:
if (me->GetHealthPct() < 30)
{
me->CastSpell(me, RAID_MODE(SPELL_FRENZY_10, SPELL_FRENZY_25), true);
me->CastSpell(me, SPELL_FRENZY, true);
break;
}
events.Repeat(1s);

View File

@@ -23,10 +23,8 @@ enum Says
enum Spells
{
SPELL_CURSE_OF_THE_PLAGUEBRINGER_10 = 29213,
SPELL_CURSE_OF_THE_PLAGUEBRINGER_25 = 54835,
SPELL_CRIPPLE_10 = 29212,
SPELL_CRIPPLE_25 = 54814,
SPELL_CURSE_OF_THE_PLAGUEBRINGER = 29213,
SPELL_CRIPPLE = 29212,
SPELL_SUMMON_PLAGUED_WARRIORS = 29237,
SPELL_TELEPORT = 29216,
SPELL_TELEPORT_BACK = 29231,
@@ -196,7 +194,7 @@ public:
case EVENT_CURSE:
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);
break;
@@ -217,7 +215,7 @@ public:
break;
case EVENT_BLINK:
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);
Talk(EMOTE_BLINK);
events.Repeat(30s);

View File

@@ -19,8 +19,7 @@ enum Yells
enum Spells
{
SPELL_HATEFUL_STRIKE_10 = 41926,
SPELL_HATEFUL_STRIKE_25 = 59192,
SPELL_HATEFUL_STRIKE = 41926,
SPELL_FRENZY = 28131,
SPELL_BERSERK = 26662,
SPELL_SLIME_BOLT = 32309
@@ -144,7 +143,7 @@ public:
}
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);
break;

View File

@@ -22,8 +22,7 @@ enum Says
enum Spells
{
SPELL_UNBALANCING_STRIKE = 26613,
SPELL_DISRUPTING_SHOUT_10 = 55543,
SPELL_DISRUPTING_SHOUT_25 = 29107,
SPELL_DISRUPTING_SHOUT = 55543,
SPELL_JAGGED_KNIFE = 55550,
SPELL_HOPELESS = 29125,
SPELL_TAUNT = 29060
@@ -255,7 +254,7 @@ public:
events.Repeat(20s);
break;
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);
break;
case EVENT_JAGGED_KNIFE:

View File

@@ -21,14 +21,11 @@ enum Yells
enum Spells
{
// Fight
SPELL_FROST_AURA_10 = 28531,
SPELL_FROST_AURA_25 = 55799,
SPELL_FROST_AURA = 28531,
SPELL_CLEAVE = 19983,
SPELL_TAIL_SWEEP_10 = 55697,
SPELL_TAIL_SWEEP_25 = 55696,
SPELL_TAIL_SWEEP = 55697,
SPELL_SUMMON_BLIZZARD = 28560,
SPELL_LIFE_DRAIN_10 = 28542,
SPELL_LIFE_DRAIN_25 = 55665,
SPELL_LIFE_DRAIN = 28542,
SPELL_BERSERK = 26662,
// Ice block
@@ -148,7 +145,7 @@ public:
{
BossAI::JustEngagedWith(who);
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_CLEAVE, 5s);
events.ScheduleEvent(EVENT_TAIL_SWEEP, 10s);
@@ -246,11 +243,11 @@ public:
events.Repeat(10s);
return;
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);
return;
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);
return;
case EVENT_BLIZZARD:

View File

@@ -46,20 +46,17 @@ enum Spells
SPELL_SHOCK_VISUAL = 28159,
// Stalagg
SPELL_POWER_SURGE_10 = 54529,
SPELL_POWER_SURGE_25 = 28134,
SPELL_POWER_SURGE = 54529,
SPELL_STALAGG_CHAIN = 28096,
// Feugen
SPELL_STATIC_FIELD_10 = 28135,
SPELL_STATIC_FIELD_25 = 54528,
SPELL_STATIC_FIELD = 28135,
SPELL_FEUGEN_CHAIN = 28111,
// Thaddius
SPELL_POLARITY_SHIFT = 28089,
SPELL_BALL_LIGHTNING = 28299,
SPELL_CHAIN_LIGHTNING_10 = 28167,
SPELL_CHAIN_LIGHTNING_25 = 54531,
SPELL_CHAIN_LIGHTNING = 28167,
SPELL_BERSERK = 27680,
SPELL_THADDIUS_VISUAL_LIGHTNING = 28136,
SPELL_THADDIUS_SPAWN_STUN = 28160,
@@ -295,16 +292,17 @@ public:
me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_STUNNED);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetControlled(false, UNIT_STATE_ROOT);
events.ScheduleEvent(EVENT_THADDIUS_CHAIN_LIGHTNING, 14s);
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);
return;
case EVENT_THADDIUS_BERSERK:
me->CastSpell(me, SPELL_BERSERK, true);
break;
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);
break;
case EVENT_THADDIUS_POLARITY_SHIFT:
@@ -484,11 +482,11 @@ public:
switch (events.ExecuteEvent())
{
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);
break;
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);
break;
case EVENT_MINION_MAGNETIC_PULL: