diff options
Diffstat (limited to 'src/server/scripts/EasternKingdoms')
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) { |
