aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/EasternKingdoms')
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp40
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp46
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp4
19 files changed, 120 insertions, 82 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
index 2a164bd4899..943484303f3 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp
@@ -123,9 +123,9 @@ public:
instance->SetBossState(DATA_PYROGAURD_EMBERSEER, DONE);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ENCAGE_EMBERSEER)
+ if (spellInfo->Id == SPELL_ENCAGE_EMBERSEER)
{
if (!me->GetAuraCount(SPELL_ENCAGED_EMBERSEER))
{
@@ -134,7 +134,7 @@ public:
}
}
- if (spell->Id == SPELL_EMBERSEER_GROWING_TRIGGER)
+ if (spellInfo->Id == SPELL_EMBERSEER_GROWING_TRIGGER)
{
if (me->GetAuraCount(SPELL_EMBERSEER_GROWING_TRIGGER) == 10)
Talk(EMOTE_TEN_STACK);
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp
index 3e11a414454..e05535fb9a4 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp
@@ -222,12 +222,12 @@ public:
std::bind(&BossAI::DoMeleeAttackIfReady, this));
}
- void SpellHit(Unit* /*source*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Mechanic == MECHANIC_DISARM)
+ if (spellInfo->Mechanic == MECHANIC_DISARM)
Talk(SAY_DISARMED);
- if (spell->Id == SPELL_MOUNT)
+ if (spellInfo->Id == SPELL_MOUNT)
{
if (Creature* midnight = ObjectAccessor::GetCreature(*me, _midnightGUID))
{
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
index ea01e96025c..1446559daa5 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
@@ -154,9 +154,9 @@ public:
creature->AI()->KilledUnit(who);
}
- void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_INFERNAL_RELAY)
+ if (spellInfo->Id == SPELL_INFERNAL_RELAY)
{
me->SetDisplayId(me->GetNativeDisplayId());
me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
index 112c81409c0..640c9302239 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
@@ -499,7 +499,7 @@ public:
DrinkInturrupted = true;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
//We only care about interrupt effects and only if they are durring a spell currently being cast
if (!spellInfo->HasEffect(SPELL_EFFECT_INTERRUPT_CAST) || !me->IsNonMeleeSpellCast(false))
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp
index 5761c180729..fdd33a4bca9 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp
@@ -92,9 +92,9 @@ public:
Talk(SAY_AGGRO);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_BROKEN_PACT)
+ if (spellInfo->Id == SPELL_BROKEN_PACT)
events.ScheduleEvent(EVENT_SUMMON_KILREK, 32s);
}
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
index 7c6fb0e4689..29a879b49a3 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp
@@ -372,9 +372,9 @@ public:
me->DespawnOrUnsummon();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* Spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if ((Spell->SchoolMask == SPELL_SCHOOL_MASK_FIRE) && (!(rand32() % 10)))
+ if ((spellInfo->SchoolMask == SPELL_SCHOOL_MASK_FIRE) && (!(rand32() % 10)))
{
/*
if (not direct damage(aoe, dot))
@@ -1136,9 +1136,9 @@ public:
me->DespawnOrUnsummon();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* Spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (Spell->Id == SPELL_DRINK_POISON)
+ if (spellInfo->Id == SPELL_DRINK_POISON)
{
Talk(SAY_JULIANNE_DEATH01);
DrinkPoisonTimer = 2500;
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
index 2104ee537d9..d7747fa4676 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
@@ -217,13 +217,17 @@ struct boss_felblood_kaelthas : public BossAI
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ switch (spellInfo->Id)
{
case SPELL_GRAVITY_LAPSE_INITIAL:
{
- DoCast(target, gravityLapseTeleportSpells[_gravityLapseTargetCount], true);
+ DoCast(unitTarget, gravityLapseTeleportSpells[_gravityLapseTargetCount], true);
uint32 gravityLapseDamageSpell = SPELL_GRAVITY_LAPSE_DAMAGE;
target->m_Events.AddEventAtOffset([target, gravityLapseDamageSpell]()
{
@@ -235,8 +239,8 @@ struct boss_felblood_kaelthas : public BossAI
break;
}
case SPELL_CLEAR_FLIGHT:
- target->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_FLY);
- target->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_DAMAGE);
+ unitTarget->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_FLY);
+ unitTarget->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_DAMAGE);
break;
default:
break;
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index 6ad9f9d265c..9b9d5808e71 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -577,12 +577,12 @@ public:
me->AddUnitFlag(UNIT_FLAG_SWIMMING);
}
- void SpellHit(Unit* pCaster, SpellInfo const* pSpell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (!m_bIsDuelInProgress && pSpell->Id == SPELL_DUEL)
+ if (!m_bIsDuelInProgress && spellInfo->Id == SPELL_DUEL)
{
- m_uiDuelerGUID = pCaster->GetGUID();
- Talk(SAY_DUEL, pCaster);
+ m_uiDuelerGUID = caster->GetGUID();
+ Talk(SAY_DUEL, caster);
m_bIsDuelInProgress = true;
}
}
@@ -758,9 +758,9 @@ struct npc_dark_rider_of_acherus : public ScriptedAI
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_DESPAWN_HORSE && target->GetGUID() == _horseGUID)
+ if (spellInfo->Id == SPELL_DESPAWN_HORSE && target->GetGUID() == _horseGUID)
if (Creature* creature = target->ToCreature())
creature->DespawnOrUnsummon(2s);
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
index 800d63776d3..2effc6e0da3 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
@@ -205,7 +205,7 @@ struct npc_wisp_invis : public ScriptedAI
DoCastSelf(_firstSpell);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_HEADLESS_HORSEMAN___WISP_FLIGHT_PORT && _creatureType == 4)
me->SetDisplayId(DISPLAYID_INVIS_WISP_MAN);
@@ -327,17 +327,21 @@ struct npc_head : public ScriptedAI
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
if (!_withBody)
return;
- if (spell->Id == SPELL_HEADLESS_HORSEMAN_CLIMAX___SEND_HEAD)
+ if (spellInfo->Id == SPELL_HEADLESS_HORSEMAN_CLIMAX___SEND_HEAD)
{
_withBody = false;
if (!_bodyGUID)
- _bodyGUID = caster->GetGUID();
+ _bodyGUID = unitCaster->GetGUID();
me->RemoveAllAuras();
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
@@ -348,9 +352,9 @@ struct npc_head : public ScriptedAI
DoTalk(SAY_LOST_HEAD);
- _scheduler.Schedule(2s, [caster, this](TaskContext /*context*/)
+ _scheduler.Schedule(2s, [unitCaster, this](TaskContext /*context*/)
{
- me->GetMotionMaster()->MoveFleeing(caster);
+ me->GetMotionMaster()->MoveFleeing(unitCaster);
});
}
}
@@ -609,10 +613,14 @@ struct boss_headless_horseman : public ScriptedAI
head->AI()->SetData(DATA_HEAD_TALK, SAY_PLAYER_DEATH);
}
- void SpellHitTarget(Unit* unit, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_CONFLAGRATION && unit->HasAura(SPELL_CONFLAGRATION))
- DoTalk(SAY_CONFLAGRATION, unit);
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ if (spellInfo->Id == SPELL_CONFLAGRATION && unitTarget->HasAura(SPELL_CONFLAGRATION))
+ DoTalk(SAY_CONFLAGRATION, unitTarget);
}
void JustDied(Unit* /*killer*/) override
@@ -633,8 +641,12 @@ struct boss_headless_horseman : public ScriptedAI
}
}
- void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
if (_withHead)
return;
@@ -652,8 +664,8 @@ struct boss_headless_horseman : public ScriptedAI
DoTalk(SAY_REJOINED);
DoCastSelf(SPELL_HEADLESS_HORSEMAN_CLIMAX___HEAD_VISUAL);
- caster->GetMotionMaster()->Clear();
- caster->GetMotionMaster()->MoveFollow(me, 6.f, 0.f);
+ unitCaster->GetMotionMaster()->Clear();
+ unitCaster->GetMotionMaster()->MoveFollow(me, 6.f, 0.f);
switch (_phase)
{
@@ -830,9 +842,9 @@ struct npc_pulsing_pumpkin : public ScriptedAI
me->AddUnitFlag(UNIT_FLAG_STUNNED);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SPROUTING)
+ if (spellInfo->Id == SPELL_SPROUTING)
{
_sprouted = true;
me->RemoveAllAuras();
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
index f6a17c53a2f..3f2c21135c6 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
@@ -181,10 +181,10 @@ public:
damage = 0;
}
- void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
// Casted from Whitemane
- if (spell->Id == SPELL_SCARLET_RESURRECTION)
+ if (spellInfo->Id == SPELL_SCARLET_RESURRECTION)
{
scheduler.Schedule(3s, [this](TaskContext /*context*/)
{
@@ -400,7 +400,7 @@ public:
});
}
- void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
if (target->GetEntry() == NPC_MOGRAINE && spellInfo->Id == SPELL_SCARLET_RESURRECTION)
MograineResurrected();
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp
index 1e957500085..5c18c1e1c6c 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp
@@ -249,9 +249,9 @@ class boss_archmage_arugal : public CreatureScript
Talk(SAY_SLAY);
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ARUGAL_CURSE)
+ if (spellInfo->Id == SPELL_ARUGAL_CURSE)
Talk(SAY_TRANSFORM);
}
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp
index 5702f0b68be..92da0c408a3 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp
+++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp
@@ -156,9 +156,9 @@ struct npc_summoned_skeleton : public ScriptedAI
{
npc_summoned_skeleton(Creature* creature) : ScriptedAI(creature) { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_DEATH_PACT_2)
+ if (spellInfo->Id == SPELL_DEATH_PACT_2)
DoCastSelf(SPELL_DEATH_PACT_3, true);
}
};
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp
index cc4275cf622..2634441d8b4 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp
+++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp
@@ -146,9 +146,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (Tagged || spell->Id != SPELL_EGAN_BLASTER)
+ if (Tagged || spellInfo->Id != SPELL_EGAN_BLASTER)
return;
Player* player = caster->ToPlayer();
@@ -242,9 +242,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (!Tagged && spell->Id == SPELL_EGAN_BLASTER)
+ if (!Tagged && spellInfo->Id == SPELL_EGAN_BLASTER)
Tagged = true;
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
index 21824b23ced..c47024e7f7d 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
@@ -161,18 +161,22 @@ public:
me->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ switch (spellInfo->Id)
{
case SPELL_SHADOW_BLADES:
case SPELL_SHADOW_NOVA:
case SPELL_CONFOUNDING_BLOW:
case SPELL_SHADOW_FURY:
- HandleTouchedSpells(target, SPELL_DARK_TOUCHED);
+ HandleTouchedSpells(unitTarget, SPELL_DARK_TOUCHED);
break;
case SPELL_CONFLAGRATION:
- HandleTouchedSpells(target, SPELL_FLAME_TOUCHED);
+ HandleTouchedSpells(unitTarget, SPELL_FLAME_TOUCHED);
break;
}
}
@@ -437,19 +441,23 @@ public:
me->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ switch (spellInfo->Id)
{
case SPELL_BLAZE:
- target->CastSpell(target, SPELL_BLAZE_SUMMON, true);
+ target->CastSpell(unitTarget, SPELL_BLAZE_SUMMON, true);
break;
case SPELL_CONFLAGRATION:
case SPELL_FLAME_SEAR:
- HandleTouchedSpells(target, SPELL_FLAME_TOUCHED);
+ HandleTouchedSpells(unitTarget, SPELL_FLAME_TOUCHED);
break;
case SPELL_SHADOW_NOVA:
- HandleTouchedSpells(target, SPELL_DARK_TOUCHED);
+ HandleTouchedSpells(unitTarget, SPELL_DARK_TOUCHED);
break;
}
}
@@ -674,19 +682,25 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ switch (spellInfo->Id)
{
case SPELL_SHADOW_FURY:
case SPELL_DARK_STRIKE:
- if (!target->HasAura(SPELL_DARK_FLAME))
+ if (!unitTarget->HasAura(SPELL_DARK_FLAME))
{
- if (target->HasAura(SPELL_FLAME_TOUCHED))
+ if (unitTarget->HasAura(SPELL_FLAME_TOUCHED))
{
- target->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
- target->CastSpell(target, SPELL_DARK_FLAME, true);
- } else target->CastSpell(target, SPELL_DARK_TOUCHED, true);
+ unitTarget->RemoveAurasDueToSpell(SPELL_FLAME_TOUCHED);
+ unitTarget->CastSpell(unitTarget, SPELL_DARK_FLAME, true);
+ }
+ else
+ unitTarget->CastSpell(unitTarget, SPELL_DARK_TOUCHED, true);
}
break;
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
index 06daddd4086..22bbe3f3a16 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
@@ -198,26 +198,30 @@ public:
instance->SetBossState(DATA_FELMYST, DONE);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
// workaround for linked aura
/*if (spell->Id == SPELL_VAPOR_FORCE)
{
caster->CastSpell(caster, SPELL_VAPOR_TRIGGER, true);
}*/
// workaround for mind control
- if (spell->Id == SPELL_FOG_INFORM)
+ if (spellInfo->Id == SPELL_FOG_INFORM)
{
float x, y, z;
- caster->GetPosition(x, y, z);
+ unitCaster->GetPosition(x, y, z);
if (Unit* summon = me->SummonCreature(NPC_DEAD, x, y, z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
{
- summon->SetMaxHealth(caster->GetMaxHealth());
- summon->SetHealth(caster->GetMaxHealth());
+ summon->SetMaxHealth(unitCaster->GetMaxHealth());
+ summon->SetHealth(unitCaster->GetMaxHealth());
summon->CastSpell(summon, SPELL_FOG_CHARM, true);
summon->CastSpell(summon, SPELL_FOG_CHARM2, true);
}
- Unit::DealDamage(me, caster, caster->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false);
+ Unit::DealDamage(me, unitCaster, unitCaster->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false);
}
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
index b68a4e1b85e..d5d97000f8d 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
@@ -473,12 +473,16 @@ struct boss_sathrovarr : public BossAI
kalecgos->AI()->EnterEvadeMode(why);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_TAP_CHECK_DAMAGE)
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_TAP_CHECK_DAMAGE)
{
DoCastSelf(SPELL_TELEPORT_BACK, true);
- Unit::Kill(caster, me);
+ Unit::Kill(unitCaster, me);
}
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
index d209fdac0bd..7bd73347679 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
@@ -353,9 +353,9 @@ public:
summon->m_Events.AddEvent(new VoidSpawnSummon(summon), summon->m_Events.CalculateTime(1500));
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_OPEN_ALL_PORTALS:
DoCastAOE(SPELL_OPEN_PORTAL, true);
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
index 4436e4a9b49..cd806150d53 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
@@ -128,7 +128,7 @@ class boss_archaedas : public CreatureScript
me->SetControlled(false, UNIT_STATE_ROOT);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
// Being woken up from the altar, start the awaken sequence
if (spellInfo->Id == SPELL_ARCHAEDAS_AWAKEN)
@@ -279,7 +279,7 @@ class npc_archaedas_minions : public CreatureScript
bAmIAwake = true;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
// time to wake up, start animation
if (spellInfo->Id == SPELL_ARCHAEDAS_AWAKEN)
diff --git a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp
index 9b0d1220ebe..46e17f3fa06 100644
--- a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp
@@ -57,7 +57,7 @@ public:
_tapped = false;
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spell) override
{
if (_tapped)
return;
@@ -151,7 +151,7 @@ public:
me->SetHealth(me->CountPctFromMaxHealth(_percentHP));
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spell) override
{
if (!_hitBySpell)
{