aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/AI/CoreAI/GameObjectAI.h6
-rw-r--r--src/server/game/AI/CreatureAI.h6
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp22
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h10
-rw-r--r--src/server/game/Spells/Spell.cpp20
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp4
-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.cpp8
-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.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp10
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp6
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp38
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp4
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp4
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp6
-rw-r--r--src/server/scripts/Kalimdor/zone_darkshore.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_desolace.cpp16
-rw-r--r--src/server/scripts/Kalimdor/zone_durotar.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_moonglade.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_the_barrens.cpp4
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp4
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp4
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp22
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp6
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp10
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp4
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp2
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp20
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp10
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp16
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp10
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp24
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp15
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp4
-rw-r--r--src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp12
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp8
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp47
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp16
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp2
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp16
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp26
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp12
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp8
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp4
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp4
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp8
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp4
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp23
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp8
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp31
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp26
-rw-r--r--src/server/scripts/Northrend/zone_sholazar_basin.cpp8
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp14
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp41
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp10
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp4
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp4
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp2
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_gruul.cpp6
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp4
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp4
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp4
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp22
-rw-r--r--src/server/scripts/Outland/zone_nagrand.cpp12
-rw-r--r--src/server/scripts/Outland/zone_netherstorm.cpp5
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp31
-rw-r--r--src/server/scripts/Pet/pet_dk.cpp6
-rw-r--r--src/server/scripts/World/boss_emerald_dragons.cpp4
-rw-r--r--src/server/scripts/World/npcs_special.cpp18
116 files changed, 625 insertions, 520 deletions
diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h
index 218113fef20..233d5da657c 100644
--- a/src/server/game/AI/CoreAI/GameObjectAI.h
+++ b/src/server/game/AI/CoreAI/GameObjectAI.h
@@ -87,12 +87,10 @@ class TC_GAME_API GameObjectAI
virtual void EventInform(uint32 /*eventId*/) { }
// Called when hit by a spell
- virtual void SpellHit(Unit* /*caster*/, SpellInfo const* /*spellInfo*/) { }
- virtual void SpellHitByGameObject(GameObject* /*caster*/, SpellInfo const* /*spellInfo*/) { }
+ virtual void SpellHit(WorldObject* /*caster*/, SpellInfo const* /*spellInfo*/) { }
// Called when spell hits a target
- virtual void SpellHitTarget(Unit* /*target*/, SpellInfo const* /*spellInfo*/) { }
- virtual void SpellHitTargetGameObject(GameObject* /*target*/, SpellInfo const* /*spellInfo*/) { }
+ virtual void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* /*spellInfo*/) { }
// Called when the gameobject summon successfully other creature
virtual void JustSummoned(Creature* /*summon*/) { }
diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h
index fae81fdd4b8..8c25331172d 100644
--- a/src/server/game/AI/CreatureAI.h
+++ b/src/server/game/AI/CreatureAI.h
@@ -138,12 +138,10 @@ class TC_GAME_API CreatureAI : public UnitAI
virtual void SummonedCreatureDies(Creature* /*summon*/, Unit* /*killer*/) { }
// Called when hit by a spell
- virtual void SpellHit(Unit* /*caster*/, SpellInfo const* /*spellInfo*/) { }
- virtual void SpellHitByGameObject(GameObject* /*caster*/, SpellInfo const* /*spellInfo*/) { }
+ virtual void SpellHit(WorldObject* /*caster*/, SpellInfo const* /*spellInfo*/) { }
// Called when spell hits a target
- virtual void SpellHitTarget(Unit* /*target*/, SpellInfo const* /*spellInfo*/) { }
- virtual void SpellHitTargetGameObject(GameObject* /*target*/, SpellInfo const* /*spellInfo*/) { }
+ virtual void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* /*spellInfo*/) { }
// Called when a spell cast gets interrupted
virtual void OnSpellCastInterrupt(SpellInfo const* /*spell*/) { }
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index c06ed6690ed..7a766468a76 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -613,24 +613,14 @@ void SmartAI::AttackStart(Unit* who)
}
}
-void SmartAI::SpellHit(Unit* unit, SpellInfo const* spellInfo)
+void SmartAI::SpellHit(WorldObject* caster, SpellInfo const* spellInfo)
{
- GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT, unit, 0, 0, false, spellInfo);
+ GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT, caster->ToUnit(), 0, 0, false, spellInfo, caster->ToGameObject());
}
-void SmartAI::SpellHitByGameObject(GameObject* object, SpellInfo const* spellInfo)
+void SmartAI::SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo)
{
- GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT, nullptr, 0, 0, false, spellInfo, object);
-}
-
-void SmartAI::SpellHitTarget(Unit* target, SpellInfo const* spellInfo)
-{
- GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT_TARGET, target, 0, 0, false, spellInfo);
-}
-
-void SmartAI::SpellHitTargetGameObject(GameObject* target, SpellInfo const* spellInfo)
-{
- GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT_TARGET, nullptr, 0, 0, false, spellInfo, target);
+ GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT_TARGET, target->ToUnit(), 0, 0, false, spellInfo, target->ToGameObject());
}
void SmartAI::DamageTaken(Unit* doneBy, uint32& damage)
@@ -1100,9 +1090,9 @@ void SmartGameObjectAI::EventInform(uint32 eventId)
GetScript()->ProcessEventsFor(SMART_EVENT_GO_EVENT_INFORM, nullptr, eventId);
}
-void SmartGameObjectAI::SpellHit(Unit* unit, SpellInfo const* spellInfo)
+void SmartGameObjectAI::SpellHit(WorldObject* caster, SpellInfo const* spellInfo)
{
- GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT, unit, 0, 0, false, spellInfo);
+ GetScript()->ProcessEventsFor(SMART_EVENT_SPELLHIT, caster->ToUnit(), 0, 0, false, spellInfo);
}
void SmartGameObjectAI::JustSummoned(Creature* creature)
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index dac0bd51456..8e6afd8eccf 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -98,12 +98,10 @@ class TC_GAME_API SmartAI : public CreatureAI
void MoveInLineOfSight(Unit* who) override;
// Called when hit by a spell
- void SpellHit(Unit* unit, SpellInfo const* spellInfo) override;
- void SpellHitByGameObject(GameObject* object, SpellInfo const* spellInfo) override;
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override;
// Called when spell hits a target
- void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override;
- void SpellHitTargetGameObject(GameObject* object, SpellInfo const* spellInfo) override;
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override;
// Called at any Damage from any attacker (before damage apply)
void DamageTaken(Unit* doneBy, uint32& damage) override;
@@ -269,7 +267,9 @@ class TC_GAME_API SmartGameObjectAI : public GameObjectAI
void OnGameEvent(bool start, uint16 eventId) override;
void OnLootStateChanged(uint32 state, Unit* unit) override;
void EventInform(uint32 eventId) override;
- void SpellHit(Unit* unit, SpellInfo const* spellInfo) override;
+
+ // Called when hit by a spell
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override;
// Called when the gameobject summon successfully other creature
void JustSummoned(Creature* creature) override;
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index c75e60f6bd3..b6c7a94aa68 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -2534,12 +2534,7 @@ void Spell::TargetInfo::DoDamageAndTriggers(Spell* spell)
//AI functions
if (Creature* cHitTarget = _spellHitTarget->ToCreature())
if (CreatureAI* hitTargetAI = cHitTarget->AI())
- {
- if (spell->m_caster->GetTypeId() == TYPEID_GAMEOBJECT)
- hitTargetAI->SpellHitByGameObject(spell->m_caster->ToGameObject(), spell->m_spellInfo);
- else
- hitTargetAI->SpellHit(spell->m_caster->ToUnit(), spell->m_spellInfo);
- }
+ hitTargetAI->SpellHit(spell->m_caster, spell->m_spellInfo);
if (spell->m_caster->GetTypeId() == TYPEID_UNIT && spell->m_caster->ToCreature()->IsAIEnabled())
spell->m_caster->ToCreature()->AI()->SpellHitTarget(_spellHitTarget, spell->m_spellInfo);
@@ -2583,19 +2578,14 @@ void Spell::GOTargetInfo::DoTargetSpellHit(Spell* spell, uint8 effIndex)
spell->HandleEffects(nullptr, nullptr, go, effIndex, SPELL_EFFECT_HANDLE_HIT_TARGET);
- //AI functions
+ // AI functions
if (go->AI())
- {
- if (spell->m_caster->GetTypeId() == TYPEID_GAMEOBJECT)
- go->AI()->SpellHitByGameObject(spell->m_caster->ToGameObject(), spell->m_spellInfo);
- else
- go->AI()->SpellHit(spell->m_caster->ToUnit(), spell->m_spellInfo);
- }
+ go->AI()->SpellHit(spell->m_caster, spell->m_spellInfo);
if (spell->m_caster->GetTypeId() == TYPEID_UNIT && spell->m_caster->ToCreature()->IsAIEnabled())
- spell->m_caster->ToCreature()->AI()->SpellHitTargetGameObject(go, spell->m_spellInfo);
+ spell->m_caster->ToCreature()->AI()->SpellHitTarget(go, spell->m_spellInfo);
else if (spell->m_caster->GetTypeId() == TYPEID_GAMEOBJECT && spell->m_caster->ToGameObject()->AI())
- spell->m_caster->ToGameObject()->AI()->SpellHitTargetGameObject(go, spell->m_spellInfo);
+ spell->m_caster->ToGameObject()->AI()->SpellHitTarget(go, spell->m_spellInfo);
spell->CallScriptOnHitHandlers();
spell->CallScriptAfterHitHandlers();
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 1c33719aa5c..4b8a78933de 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/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp
index d2e59177be3..4550c6ec198 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp
@@ -85,10 +85,10 @@ struct boss_the_beast : public BossAI
me->GetMotionMaster()->MovePath(BEAST_MOVEMENT_ID, true);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- if (spell->Effects[i].IsEffect(SPELL_EFFECT_SKINNING))
+ if (spellInfo->Effects[i].IsEffect(SPELL_EFFECT_SKINNING))
if (!me->IsAlive()) // can that even happen?
DoCastAOE(SPELL_FINKLE_IS_EINHORN, true);
}
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 2309b4a5e3f..77f7edc16c0 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->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
me->SetFlag(UNIT_FIELD_FLAGS, 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 a8c2c89cbac..324a82f0a06 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp
@@ -478,12 +478,12 @@ public:
DrinkInturrupted = true;
}
- void SpellHit(Unit* /*pAttacker*/, SpellInfo const* Spell) 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 ((Spell->Effects[0].Effect != SPELL_EFFECT_INTERRUPT_CAST &&
- Spell->Effects[1].Effect != SPELL_EFFECT_INTERRUPT_CAST &&
- Spell->Effects[2].Effect != SPELL_EFFECT_INTERRUPT_CAST) || !me->IsNonMeleeSpellCast(false))
+ if ((spellInfo->Effects[0].Effect != SPELL_EFFECT_INTERRUPT_CAST &&
+ spellInfo->Effects[1].Effect != SPELL_EFFECT_INTERRUPT_CAST &&
+ spellInfo->Effects[2].Effect != SPELL_EFFECT_INTERRUPT_CAST) || !me->IsNonMeleeSpellCast(false))
return;
//Interrupt effect
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 6b09acea438..b5b546d5e0b 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 41717966e0a..dedeb2aebb9 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp
@@ -218,13 +218,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]()
{
@@ -236,8 +240,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 19513b177f7..38d328892b5 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -571,12 +571,12 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, 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;
}
}
@@ -752,9 +752,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 cbd65529da0..6e93fcdaef0 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
@@ -206,7 +206,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);
@@ -328,17 +328,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->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -349,9 +353,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);
});
}
}
@@ -610,10 +614,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
@@ -634,8 +642,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;
@@ -653,8 +665,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)
{
@@ -831,9 +843,9 @@ struct npc_pulsing_pumpkin : public ScriptedAI
me->SetFlag(UNIT_FIELD_FLAGS, 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 9f7ac20331d..f00a7c1c3db 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp
@@ -182,10 +182,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*/)
{
@@ -401,7 +401,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 0c3c37d4c43..0a0744080d1 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp
@@ -244,9 +244,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 50f2b0d4085..6a3d40ef67c 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->RemoveFlag(UNIT_DYNAMIC_FLAGS, 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->RemoveFlag(UNIT_DYNAMIC_FLAGS, 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 58b76ecd122..b7f7b41c4a8 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 1e3670cffd5..83d84a99eaf 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
@@ -474,12 +474,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 c0034cebb38..9633e9458e2 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 f0f4c4f3d19..2c29edfb8f6 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp
@@ -128,10 +128,10 @@ class boss_archaedas : public CreatureScript
me->SetControlled(false, UNIT_STATE_ROOT);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
// Being woken up from the altar, start the awaken sequence
- if (spell->Id == SPELL_ARCHAEDAS_AWAKEN)
+ if (spellInfo->Id == SPELL_ARCHAEDAS_AWAKEN)
{
Talk(SAY_AGGRO);
iAwakenTimer = 4000;
@@ -279,10 +279,10 @@ class npc_archaedas_minions : public CreatureScript
bAmIAwake = true;
}
- void SpellHit(Unit * /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
// time to wake up, start animation
- if (spell->Id == SPELL_ARCHAEDAS_AWAKEN)
+ if (spellInfo->Id == SPELL_ARCHAEDAS_AWAKEN)
{
iAwakenTimer = 5000;
bWakingUp = true;
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
index f0c8327de53..f0d930cefd1 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
@@ -135,9 +135,9 @@ class boss_halazzi : public CreatureScript
damage = 0;
}
- void SpellHit(Unit*, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_TRANSFORM_SPLIT2)
+ if (spellInfo->Id == SPELL_TRANSFORM_SPLIT2)
EnterPhase(PHASE_HUMAN);
}
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
index 8f0eee9e7d1..ff42de1e54b 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
@@ -444,10 +444,10 @@ class npc_janalai_firebomb : public CreatureScript
void Reset() override { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_FIRE_BOMB_THROW)
- DoCast(me, SPELL_FIRE_BOMB_DUMMY, true);
+ if (spellInfo->Id == SPELL_FIRE_BOMB_THROW)
+ DoCastSelf(SPELL_FIRE_BOMB_DUMMY, true);
}
void JustEngagedWith(Unit* /*who*/) override { }
@@ -670,9 +670,9 @@ class npc_janalai_egg : public CreatureScript
void UpdateAI(uint32 /*diff*/) override { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_HATCH_EGG)
+ if (spellInfo->Id == SPELL_HATCH_EGG)
DoCast(SPELL_SUMMON_HATCHLING);
}
};
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
index 62a8238881c..367b64cc3c5 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
@@ -582,10 +582,14 @@ class npc_zuljin_vortex : public CreatureScript
void JustEngagedWith(Unit* /*target*/) override { }
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ZAP_INFORM)
- DoCast(caster, SPELL_ZAP_DAMAGE, true);
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_ZAP_INFORM)
+ DoCast(unitCaster, SPELL_ZAP_DAMAGE, true);
}
void UpdateAI(uint32 /*diff*/) override
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
index 1c52aefd14e..b9d5fe7da42 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
@@ -206,9 +206,9 @@ class npc_harrison_jones : public CreatureScript
return false;
}
- void SpellHit(Unit*, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_COSMETIC_SPEAR_THROW)
+ if (spellInfo->Id == SPELL_COSMETIC_SPEAR_THROW)
{
me->RemoveAllAuras();
me->SetEntry(NPC_HARRISON_JONES_2);
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
index c16c9a51fce..2261fa84bb3 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
@@ -375,10 +375,14 @@ class npc_zulian_prowler : public CreatureScript
me->RemoveAura(SPELL_SNEAK_RANK_1_2);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_MARK_OF_ARLOKK_TRIGGER) // Should only hit if line of sight
- me->Attack(caster, true);
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_MARK_OF_ARLOKK_TRIGGER) // Should only hit if line of sight
+ me->Attack(unitCaster, true);
}
void JustDied(Unit* /*killer*/) override
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp
index c5c5b272603..fcf9c1b54a0 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp
@@ -127,9 +127,9 @@ class boss_epoch : public CreatureScript
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* info) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (info->Id == SPELL_TIME_STEP_DUMMY && me->IsHostileTo(target))
+ if (spellInfo->Id == SPELL_TIME_STEP_DUMMY && me->IsHostileTo(target))
{
_stepTargets.push_back(target->GetGUID());
events.RescheduleEvent(EVENT_TIME_STEP, Milliseconds(500));
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp
index 3286e02d707..f2dbe13b2c0 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp
@@ -69,9 +69,9 @@ class boss_infinite_corruptor : public CreatureScript
DoCastAOE(SPELL_CORRUPTION_OF_TIME_CHANNEL); // implicitly targets the Guardian
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_CORRUPTION_OF_TIME_CHANNEL)
+ if (spellInfo->Id == SPELL_CORRUPTION_OF_TIME_CHANNEL)
target->CastSpell(target, SPELL_CORRUPTION_OF_TIME_TARGET, true);
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index 8915d92953a..1a783bff081 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -1407,9 +1407,9 @@ public:
current = candidate;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (!_crateRevealed && spell->Id == SPELL_ARCANE_DISRUPTION)
+ if (!_crateRevealed && spellInfo->Id == SPELL_ARCANE_DISRUPTION)
{
_crateRevealed = true;
if (InstanceScript* instance = me->GetInstanceScript())
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
index 4b3fd8490fa..6051f721fe3 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
@@ -140,15 +140,15 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (SpellCorrupt_Timer)
return;
- if (spell->Id == SPELL_CORRUPT_AEONUS)
+ if (spellInfo->Id == SPELL_CORRUPT_AEONUS)
SpellCorrupt_Timer = 1000;
- if (spell->Id == SPELL_CORRUPT)
+ if (spellInfo->Id == SPELL_CORRUPT)
SpellCorrupt_Timer = 3000;
}
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
index 8c6551c14d5..9e843abb17b 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
@@ -196,14 +196,14 @@ public:
Talk(SAY_KILL);
}
- void SpellHit(Unit* /*pCaster*/, SpellInfo const* Spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (Spell->Id == SPELL_BREATH_EAST_TO_WEST ||
- Spell->Id == SPELL_BREATH_WEST_TO_EAST ||
- Spell->Id == SPELL_BREATH_SE_TO_NW ||
- Spell->Id == SPELL_BREATH_NW_TO_SE ||
- Spell->Id == SPELL_BREATH_SW_TO_NE ||
- Spell->Id == SPELL_BREATH_NE_TO_SW)
+ if (spellInfo->Id == SPELL_BREATH_EAST_TO_WEST ||
+ spellInfo->Id == SPELL_BREATH_WEST_TO_EAST ||
+ spellInfo->Id == SPELL_BREATH_SE_TO_NW ||
+ spellInfo->Id == SPELL_BREATH_NW_TO_SE ||
+ spellInfo->Id == SPELL_BREATH_SW_TO_NE ||
+ spellInfo->Id == SPELL_BREATH_NE_TO_SW)
{
PointData = GetMoveData();
MovePoint = PointData->LocIdEnd;
@@ -274,20 +274,20 @@ public:
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* Spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
//Workaround - Couldn't find a way to group this spells (All Eruption)
- if (((Spell->Id >= 17086 && Spell->Id <= 17095) ||
- (Spell->Id == 17097) ||
- (Spell->Id >= 18351 && Spell->Id <= 18361) ||
- (Spell->Id >= 18564 && Spell->Id <= 18576) ||
- (Spell->Id >= 18578 && Spell->Id <= 18607) ||
- (Spell->Id == 18609) ||
- (Spell->Id >= 18611 && Spell->Id <= 18628) ||
- (Spell->Id >= 21132 && Spell->Id <= 21133) ||
- (Spell->Id >= 21135 && Spell->Id <= 21139) ||
- (Spell->Id >= 22191 && Spell->Id <= 22202) ||
- (Spell->Id >= 22267 && Spell->Id <= 22268)) &&
+ if (((spellInfo->Id >= 17086 && spellInfo->Id <= 17095) ||
+ (spellInfo->Id == 17097) ||
+ (spellInfo->Id >= 18351 && spellInfo->Id <= 18361) ||
+ (spellInfo->Id >= 18564 && spellInfo->Id <= 18576) ||
+ (spellInfo->Id >= 18578 && spellInfo->Id <= 18607) ||
+ (spellInfo->Id == 18609) ||
+ (spellInfo->Id >= 18611 && spellInfo->Id <= 18628) ||
+ (spellInfo->Id >= 21132 && spellInfo->Id <= 21133) ||
+ (spellInfo->Id >= 21135 && spellInfo->Id <= 21139) ||
+ (spellInfo->Id >= 22191 && spellInfo->Id <= 22202) ||
+ (spellInfo->Id >= 22267 && spellInfo->Id <= 22268)) &&
(target->GetTypeId() == TYPEID_PLAYER))
{
instance->SetData(DATA_SHE_DEEP_BREATH_MORE, FAIL);
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
index f6c1f2f4e16..5998cdf84d1 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
@@ -124,11 +124,11 @@ class boss_ossirian : public CreatureScript
Initialize();
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
for (uint8 i = 0; i < NUM_WEAKNESS; ++i)
{
- if (spell->Id == SpellWeakness[i])
+ if (spellInfo->Id == SpellWeakness[i])
{
me->RemoveAurasDueToSpell(SPELL_SUPREME);
// Despawn used crystal
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
index d13e37c06c2..1b7601837fe 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
@@ -167,13 +167,13 @@ struct boss_twinemperorsAI : public BossAI
}
}
- void SpellHit(Unit* caster, SpellInfo const* entry) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
if (caster == me)
return;
Creature* pOtherBoss = GetOtherBoss();
- if (entry->Id != SPELL_HEAL_BROTHER || !pOtherBoss)
+ if (spellInfo->Id != SPELL_HEAL_BROTHER || !pOtherBoss)
return;
// add health so we keep same percentage for both brothers
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
index 37cf18f92d0..9d00ada5b46 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
@@ -151,9 +151,9 @@ class boss_viscidus : public CreatureScript
Talk(EMOTE_CRACK);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if ((spell->GetSchoolMask() & SPELL_SCHOOL_MASK_FROST) && _phase == PHASE_FROST && me->GetHealthPct() > 5.0f)
+ if ((spellInfo->GetSchoolMask() & SPELL_SCHOOL_MASK_FROST) && _phase == PHASE_FROST && me->GetHealthPct() > 5.0f)
{
++_hitcounter;
diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
index 2d9e29efc44..a8a4971d861 100644
--- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
+++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
@@ -111,16 +111,16 @@ public:
}
}
- void SpellHit(Unit* Caster, SpellInfo const* Spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (Spell->SpellFamilyFlags[2] & 0x080000000)
+ if (spellInfo->SpellFamilyFlags[2] & 0x080000000)
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
me->SetStandState(UNIT_STAND_STATE_STAND);
DoCast(me, SPELL_STUNNED, true);
- pCaster = Caster->GetGUID();
+ pCaster = caster->GetGUID();
SayThanksTimer = 5000;
}
diff --git a/src/server/scripts/Kalimdor/zone_darkshore.cpp b/src/server/scripts/Kalimdor/zone_darkshore.cpp
index 1102fab6a24..000ba01e291 100644
--- a/src/server/scripts/Kalimdor/zone_darkshore.cpp
+++ b/src/server/scripts/Kalimdor/zone_darkshore.cpp
@@ -101,9 +101,9 @@ public:
}
}
- void SpellHit(Unit* /*pCaster*/, SpellInfo const* pSpell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (HasFollowState(STATE_FOLLOW_INPROGRESS | STATE_FOLLOW_PAUSED) && pSpell->Id == SPELL_AWAKEN)
+ if (HasFollowState(STATE_FOLLOW_INPROGRESS | STATE_FOLLOW_PAUSED) && spellInfo->Id == SPELL_AWAKEN)
ClearSleeping();
}
diff --git a/src/server/scripts/Kalimdor/zone_desolace.cpp b/src/server/scripts/Kalimdor/zone_desolace.cpp
index 8cdd1b1efd2..35b3f79b431 100644
--- a/src/server/scripts/Kalimdor/zone_desolace.cpp
+++ b/src/server/scripts/Kalimdor/zone_desolace.cpp
@@ -74,14 +74,18 @@ public:
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_KODO_KOMBO_ITEM)
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_KODO_KOMBO_ITEM)
{
- if (!(caster->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) || me->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF))
+ if (!(unitCaster->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) || me->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF))
&& (me->GetEntry() == NPC_AGED_KODO || me->GetEntry() == NPC_DYING_KODO || me->GetEntry() == NPC_ANCIENT_KODO))
{
- caster->CastSpell(caster, SPELL_KODO_KOMBO_PLAYER_BUFF, true);
+ unitCaster->CastSpell(unitCaster, SPELL_KODO_KOMBO_PLAYER_BUFF, true);
DoCast(me, SPELL_KODO_KOMBO_DESPAWN_BUFF, true);
me->UpdateEntry(NPC_TAMED_KODO);
@@ -91,12 +95,12 @@ public:
EngagementOver();
- me->GetMotionMaster()->MoveFollow(caster, PET_FOLLOW_DIST, me->GetFollowAngle());
+ me->GetMotionMaster()->MoveFollow(unitCaster, PET_FOLLOW_DIST, me->GetFollowAngle());
me->setActive(true);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
}
- else if (spell->Id == SPELL_KODO_KOMBO_GOSSIP)
+ else if (spellInfo->Id == SPELL_KODO_KOMBO_GOSSIP)
{
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp
index 2c892c1d25a..99d87fc0bd9 100644
--- a/src/server/scripts/Kalimdor/zone_durotar.cpp
+++ b/src/server/scripts/Kalimdor/zone_durotar.cpp
@@ -341,9 +341,9 @@ class npc_troll_volunteer : public CreatureScript
me->DespawnOrUnsummon();
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_AOE_TURNIN && caster->GetEntry() == NPC_URUZIN && !_complete)
+ if (spellInfo->Id == SPELL_AOE_TURNIN && caster->GetEntry() == NPC_URUZIN && !_complete)
{
_complete = true; // Preventing from giving credit twice
DoCast(me, SPELL_TURNIN);
diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp
index 327ddbd7960..82496ea1df7 100644
--- a/src/server/scripts/Kalimdor/zone_moonglade.cpp
+++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp
@@ -442,9 +442,9 @@ public:
DoCast(SPELL_OMEN_SUMMON_SPOTLIGHT);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ELUNE_CANDLE)
+ if (spellInfo->Id == SPELL_ELUNE_CANDLE)
{
if (me->HasAura(SPELL_OMEN_STARFALL))
me->RemoveAurasDueToSpell(SPELL_OMEN_STARFALL);
diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
index e9f62fca787..5448fa8362e 100644
--- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp
+++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
@@ -192,9 +192,9 @@ public:
me->HandleEmoteCommand(EMOTE_ONESHOT_SALUTE);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_FLARE || spell->Id == SPELL_FOLLY)
+ if (spellInfo->Id == SPELL_FLARE || spellInfo->Id == SPELL_FOLLY)
{
++FlareCount;
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
index e694fb12f03..7b721ea82bd 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
@@ -109,9 +109,9 @@ public:
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_INSANITY)
+ if (spellInfo->Id == SPELL_INSANITY)
{
// Not good target or too many players
if (target->GetTypeId() != TYPEID_PLAYER || insanityHandled > 4)
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
index 33950ef4363..dc938fbb71a 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
@@ -361,9 +361,9 @@ public:
}
}
- void SpellHit(Unit* /*whose*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SUBMERGE)
+ if (spellInfo->Id == SPELL_SUBMERGE)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->RemoveAurasDueToSpell(SPELL_LEECHING_SWARM);
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
index 09350e9f091..00d176bfe9d 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
@@ -294,15 +294,15 @@ class boss_krik_thir : public CreatureScript
DoMeleeAttackIfReady();
}
- void SpellHit(Unit* /*whose*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SUBBOSS_AGGRO_TRIGGER)
+ if (spellInfo->Id == SPELL_SUBBOSS_AGGRO_TRIGGER)
DoZoneInCombat();
}
- void SpellHitTarget(Unit* /*who*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SUBBOSS_AGGRO_TRIGGER)
+ if (spellInfo->Id == SPELL_SUBBOSS_AGGRO_TRIGGER)
Talk(SAY_SEND_GROUP);
}
@@ -381,9 +381,9 @@ struct npc_gatewatcher_petAI : public ScriptedAI
JustEngagedWith(who);
}
- void SpellHit(Unit* /*whose*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SUBBOSS_AGGRO_TRIGGER)
+ if (spellInfo->Id == SPELL_SUBBOSS_AGGRO_TRIGGER)
DoZoneInCombat();
}
@@ -753,10 +753,14 @@ class npc_anub_ar_skirmisher : public CreatureScript
DoMeleeAttackIfReady();
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_CHARGE && target)
- DoCast(target, SPELL_FIXATE_TRIGGER);
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ if (spellInfo->Id == SPELL_CHARGE)
+ DoCast(unitTarget, SPELL_FIXATE_TRIGGER);
}
};
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index dd8e4958c83..b069f8285dc 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -308,7 +308,7 @@ class boss_halion : public CreatureScript
}
}
- void SpellHit(Unit* /*who*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_TWILIGHT_MENDING)
Talk(SAY_REGENERATE);
@@ -492,9 +492,9 @@ class boss_twilight_halion : public CreatureScript
}
}
- void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_TWILIGHT_DIVISION:
if (Creature* controller = instance->GetCreature(DATA_HALION_CONTROLLER))
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
index 791b66a1785..4be58562cfe 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
@@ -643,7 +643,7 @@ struct npc_open_portal_target_toc : public ScriptedAI
me->SetDisableGravity(true);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_OPEN_PORTAL)
{
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
index ba9aba5d3d1..5b74ecb3bca 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
@@ -222,9 +222,9 @@ class boss_devourer_of_souls : public CreatureScript
}
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == H_SPELL_PHANTOM_BLAST)
+ if (spellInfo->Id == H_SPELL_PHANTOM_BLAST)
threeFaced = false;
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
index 18a211e0553..0a143b0c48d 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
@@ -171,11 +171,15 @@ class boss_garfrost : public CreatureScript
events.ScheduleEvent(EVENT_RESUME_ATTACK, 5s);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_PERMAFROST_HELPER)
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ if (spellInfo->Id == SPELL_PERMAFROST_HELPER)
{
- if (Aura* aura = target->GetAura(SPELL_PERMAFROST_HELPER))
+ if (Aura* aura = unitTarget->GetAura(SPELL_PERMAFROST_HELPER))
_permafrostStack = std::max<uint32>(_permafrostStack, aura->GetStackAmount());
}
}
diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
index 73dab15acbf..0dbec20cf86 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
@@ -346,9 +346,9 @@ class boss_drakkari_elemental : public CreatureScript
me->DespawnOrUnsummon();
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_MERGE)
+ if (spellInfo->Id == SPELL_MERGE)
{
if (Creature* colossus = target->ToCreature())
{
diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
index d7c3b7a95f4..d9333de0ba0 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
@@ -174,7 +174,7 @@ class boss_gal_darah : public CreatureScript
Talk(SAY_SLAY);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_TRANSFORM_BACK)
me->RemoveAurasDueToSpell(SPELL_TRANSFORM_RHINO);
diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
index f4f6837b454..102ea3a85a9 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
@@ -125,7 +125,7 @@ class boss_moorabi : public CreatureScript
Talk(SAY_DEATH);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_TRANSFORMATION)
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index 6a73202bf91..7231a724ea1 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -545,9 +545,9 @@ struct BloodPrincesBossAI : public BossAI
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SelectInvocationSpell())
+ if (spellInfo->Id == SelectInvocationSpell())
DoAction(ACTION_CAST_INVOCATION);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index cf78955688a..9c6fd50a7ee 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -415,7 +415,7 @@ class boss_deathbringer_saurfang : public CreatureScript
instance->HandleGameObject(instance->GetGuidData(GO_SAURFANG_S_DOOR), false);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
if (target->GetTransport())
{
@@ -423,7 +423,7 @@ class boss_deathbringer_saurfang : public CreatureScript
return;
}
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_MARK_OF_THE_FALLEN_CHAMPION:
Talk(SAY_MARK_OF_THE_FALLEN_CHAMPION);
@@ -444,9 +444,9 @@ class boss_deathbringer_saurfang : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_BLOOD_LINK_POWER)
+ if (spellInfo->Id == SPELL_BLOOD_LINK_POWER)
if (Aura* bloodPower = me->GetAura(SPELL_BLOOD_POWER))
bloodPower->RecalculateAmountOfEffects();
}
@@ -716,9 +716,9 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_GRIP_OF_AGONY)
+ if (spellInfo->Id == SPELL_GRIP_OF_AGONY)
{
me->SetDisableGravity(true);
me->GetMotionMaster()->MovePoint(POINT_CHOKE, chokePos[0]);
@@ -923,9 +923,9 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_GRIP_OF_AGONY)
+ if (spellInfo->Id == SPELL_GRIP_OF_AGONY)
{
me->SetDisableGravity(true);
me->GetMotionMaster()->MovePoint(POINT_CHOKE, chokePos[0]);
@@ -1005,9 +1005,9 @@ class npc_saurfang_event : public CreatureScript
_index = data;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_GRIP_OF_AGONY)
+ if (spellInfo->Id == SPELL_GRIP_OF_AGONY)
{
me->SetDisableGravity(true);
me->GetMotionMaster()->MovePoint(POINT_CHOKE, chokePos[_index]);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index 444008478c5..ce7b9f60e11 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -162,10 +162,14 @@ class boss_festergut : public CreatureScript
Talk(SAY_KILL);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == PUNGENT_BLIGHT_HELPER)
- target->RemoveAurasDueToSpell(INOCULATED_HELPER);
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ if (spellInfo->Id == PUNGENT_BLIGHT_HELPER)
+ unitTarget->RemoveAurasDueToSpell(INOCULATED_HELPER);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 30714723d1a..451ea8a1785 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -460,9 +460,9 @@ class boss_lady_deathwhisper : public CreatureScript
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SUMMON_SPIRITS)
+ if (spellInfo->Id == SPELL_SUMMON_SPIRITS)
_nextVengefulShadeTargetGUID.push_back(target->GetGUID());
}
@@ -629,9 +629,9 @@ class npc_cult_fanatic : public CreatureScript
});
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_DARK_TRANSFORMATION_T:
me->InterruptNonMeleeSpells(true);
@@ -736,9 +736,9 @@ class npc_cult_adherent : public CreatureScript
});
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_DARK_EMPOWERMENT_T:
me->UpdateEntry(NPC_EMPOWERED_ADHERENT);
@@ -829,9 +829,9 @@ class npc_vengeful_shade : public CreatureScript
_targetGUID = guid;
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_VENGEFUL_BLAST:
case SPELL_VENGEFUL_BLAST_25N:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 8c7d8527012..851c561c662 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -728,9 +728,9 @@ class npc_putricide_oozeAI : public ScriptedAI
npc_putricide_oozeAI(Creature* creature, uint32 auraSpellId, uint32 hitTargetSpellId) : ScriptedAI(creature),
_auraSpellId(auraSpellId), _hitTargetSpellId(hitTargetSpellId), _newTargetSelectTimer(0), _instance(creature->GetInstanceScript()) { }
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (!_newTargetSelectTimer && spell->Id == sSpellMgr->GetSpellIdForDifficulty(_hitTargetSpellId, me))
+ if (!_newTargetSelectTimer && spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(_hitTargetSpellId, me))
{
_newTargetSelectTimer = 1000;
// go passive until next target selection
@@ -747,9 +747,9 @@ class npc_putricide_oozeAI : public ScriptedAI
DoCastAOE(_auraSpellId, true);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_TEAR_GAS_CREATURE)
+ if (spellInfo->Id == SPELL_TEAR_GAS_CREATURE)
_newTargetSelectTimer = 1000;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index 933753007dc..1fe1dd21cf6 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -173,9 +173,9 @@ class boss_rotface : public CreatureScript
professor->AI()->EnterEvadeMode();
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SLIME_SPRAY)
+ if (spellInfo->Id == SPELL_SLIME_SPRAY)
Talk(SAY_SLIME_SPRAY);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index f6445deb21c..85fc93f32f9 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -437,11 +437,15 @@ class boss_sindragosa : public CreatureScript
summon->AI()->JustDied(summon);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
if (uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(70127, me))
- if (spellId == spell->Id)
- if (Aura const* mysticBuffet = target->GetAura(spell->Id))
+ if (spellId == spellInfo->Id)
+ if (Aura const* mysticBuffet = unitTarget->GetAura(spellId))
_mysticBuffetStack = std::max<uint8>(_mysticBuffetStack, mysticBuffet->GetStackAmount());
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
index eb46b84e6f4..9b2cf55a48d 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
@@ -427,9 +427,9 @@ struct boss_sister_svalna : public BossAI
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_HURL_SPEAR && me->HasAura(SPELL_AETHER_SHIELD))
+ if (spellInfo->Id == SPELL_HURL_SPEAR && me->HasAura(SPELL_AETHER_SHIELD))
{
me->RemoveAurasDueToSpell(SPELL_AETHER_SHIELD);
Talk(EMOTE_SVALNA_BROKEN_SHIELD, caster);
@@ -449,17 +449,21 @@ struct boss_sister_svalna : public BossAI
me->SetHover(false);
}
- 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_IMPALING_SPEAR_KILL:
- Unit::Kill(me, target);
+ Unit::Kill(me, unitTarget);
break;
case SPELL_IMPALING_SPEAR:
- if (TempSummon* summon = target->SummonCreature(NPC_IMPALING_SPEAR, *target))
+ if (TempSummon* summon = unitTarget->SummonCreature(NPC_IMPALING_SPEAR, *unitTarget))
{
- Talk(EMOTE_SVALNA_IMPALE, target);
+ Talk(EMOTE_SVALNA_IMPALE, unitTarget);
CastSpellExtraArgs args;
args.AddSpellBP0(1);
summon->CastSpell(target, VEHICLE_SPELL_RIDE_HARDCODED, args);
@@ -887,9 +891,9 @@ public:
Reset();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_REVIVE_CHAMPION && !IsUndead)
+ if (spellInfo->Id == SPELL_REVIVE_CHAMPION && !IsUndead)
{
IsUndead = true;
me->setDeathState(JUST_RESPAWNED);
@@ -914,7 +918,7 @@ public:
Talk(SAY_CAPTAIN_RESURRECTED);
me->UpdateEntry(newEntry, me->GetCreatureData());
- DoCast(me, SPELL_UNDEATH, true);
+ DoCastSelf(SPELL_UNDEATH, true);
}
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
index 0167e562928..a2098d0450e 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -815,15 +815,12 @@ class boss_the_lich_king : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_HARVESTED_SOUL && me->IsInCombat() && !IsHeroic())
+ if (spellInfo->Id == SPELL_HARVESTED_SOUL && me->IsInCombat() && !IsHeroic())
Talk(SAY_LK_FROSTMOURNE_KILL);
- }
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
- {
- if (spell->Id == REMORSELESS_WINTER_1 || spell->Id == REMORSELESS_WINTER_2)
+ if (spellInfo->Id == REMORSELESS_WINTER_1 || spellInfo->Id == REMORSELESS_WINTER_2)
{
me->GetMap()->SetZoneOverrideLight(AREA_ICECROWN_CITADEL, LIGHT_DEFAULT, LIGHT_SNOWSTORM, 5000);
me->GetMap()->SetZoneWeather(AREA_ICECROWN_CITADEL, WEATHER_STATE_LIGHT_SNOW, 0.5f);
@@ -1228,11 +1225,11 @@ class npc_tirion_fordring_tft : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ICE_LOCK)
+ if (spellInfo->Id == SPELL_ICE_LOCK)
me->SetFacingTo(3.085098f);
- else if (spell->Id == SPELL_BROKEN_FROSTMOURNE_KNOCK)
+ else if (spellInfo->Id == SPELL_BROKEN_FROSTMOURNE_KNOCK)
me->LoadEquipment(1); // remove glow on ashbringer
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index aa89aa7ae79..42cd6edee74 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -377,9 +377,9 @@ class boss_valithria_dreamwalker : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_DREAM_SLIP)
+ if (spellInfo->Id == SPELL_DREAM_SLIP)
{
DoCastSelf(SPELL_CLEAR_ALL);
DoCastSelf(SPELL_REPUTATION_BOSS_KILL, true);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 1749f91448d..8f2ae7543fe 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -746,9 +746,9 @@ struct npc_icc_orb_controller : public ScriptedAI
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ORB_CONTROLLER_ACTIVE)
+ if (spellInfo->Id == SPELL_ORB_CONTROLLER_ACTIVE)
if (GameObject* orb = me->FindNearestGameObject(GO_EMPOWERING_BLOOD_ORB, 5.0f))
orb->AI()->SetGUID(caster->GetGUID(), DATA_GUID);
}
diff --git a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp b/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp
index d42cf6a3164..dc318e78645 100644
--- a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp
+++ b/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp
@@ -68,10 +68,14 @@ public:
_events.ScheduleEvent(EVENT_CRUSHING_LEAP, 15s);
}
- void SpellHit(Unit* caster, SpellInfo const* /*spell*/) override
+ void SpellHit(WorldObject* caster, SpellInfo const* /*spellInfo*/) override
{
- if (caster->IsVehicle())
- Unit::Kill(me, caster);
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (unitCaster->IsVehicle())
+ Unit::Kill(me, unitCaster);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
index 8fb3897c717..54e137c666c 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
@@ -124,13 +124,17 @@ class boss_faerlina : public CreatureScript
Talk(SAY_DEATH);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_WIDOWS_EMBRACE_HELPER)
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_WIDOWS_EMBRACE_HELPER)
{
++_frenzyDispels;
Talk(EMOTE_WIDOW_EMBRACE, caster);
- Unit::Kill(me, caster);
+ Unit::Kill(me, unitCaster);
}
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
index c5595dfaaae..f1b85633494 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -443,9 +443,9 @@ class boss_four_horsemen_baron : public CreatureScript
DoMeleeAttackIfReady();
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_UNHOLY_SHADOW)
+ if (spellInfo->Id == SPELL_UNHOLY_SHADOW)
Talk(SAY_SPECIAL);
}
};
@@ -519,9 +519,9 @@ class boss_four_horsemen_thane : public CreatureScript
DoMeleeAttackIfReady();
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (_shouldSay && spell->Id == SPELL_METEOR)
+ if (_shouldSay && spellInfo->Id == SPELL_METEOR)
{
Talk(SAY_SPECIAL);
_shouldSay = false;
@@ -671,9 +671,9 @@ class boss_four_horsemen_sir : public CreatureScript
}
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (_shouldSay && spell->Id == SPELL_HOLY_WRATH)
+ if (_shouldSay && spellInfo->Id == SPELL_HOLY_WRATH)
{
Talk(SAY_SPECIAL);
_shouldSay = false;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
index 0d7ca73ccde..c73d8a0bcda 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
@@ -914,12 +914,10 @@ public:
return nullptr;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
- {
- if (!spell)
- return;
- switch (spell->Id)
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
+ {
+ switch (spellInfo->Id)
{
case SPELL_ANCHOR_1_TRAINEE:
DoCastAOE(SPELL_ANCHOR_2_TRAINEE, true);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
index 89cb80b5386..b5cbc646523 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
@@ -63,9 +63,9 @@ class boss_grobbulus : public CreatureScript
events.ScheduleEvent(EVENT_BERSERK, 12min);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SLIME_SPRAY)
+ if (spellInfo->Id == SPELL_SLIME_SPRAY)
me->SummonCreature(NPC_FALLOUT_SLIME, *target, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT);
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
index 6fd230ce7dd..d0d0a909ad0 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -280,9 +280,9 @@ public:
damage = 0;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_CHAINS_DUMMY)
+ if (spellInfo->Id == SPELL_CHAINS_DUMMY)
{
Talk(SAY_CHAINS);
std::list<Unit*> targets;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
index c02db311140..9cd9a9aca6b 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
@@ -99,9 +99,9 @@ public:
Talk(SAY_SLAY);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_UNDERSTUDY_TAUNT)
+ if (spellInfo->Id == SPELL_UNDERSTUDY_TAUNT)
Talk(SAY_TAUNTED, caster);
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
index 4eca760017d..e9940dc185c 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
@@ -187,12 +187,16 @@ class boss_sapphiron : public CreatureScript
EnterPhaseGround(true);
}
- 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_CHECK_RESISTS:
- if (target && target->GetResistance(SPELL_SCHOOL_FROST) > MAX_FROST_RESISTANCE)
+ if (unitTarget->GetResistance(SPELL_SCHOOL_FROST) > MAX_FROST_RESISTANCE)
_canTheHundredClub = false;
break;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 27f50380123..e0a8eac329b 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -599,35 +599,36 @@ public:
refreshBeam = true;
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (!caster)
+ Creature* creatureCaster = caster->ToCreature();
+ if (!creatureCaster)
return;
- if (spell->Id != SPELL_STALAGG_TESLA_PERIODIC)
+
+ if (spellInfo->Id != SPELL_STALAGG_TESLA_PERIODIC)
return;
if (!isFeignDeath && me->IsInCombat() && !me->GetHomePosition().IsInDist(me, OVERLOAD_DISTANCE))
{
if (!isOverloading)
{
isOverloading = true;
- caster->SetImmuneToPC(false);
- if (Creature* creatureCaster = caster->ToCreature())
- creatureCaster->AI()->Talk(EMOTE_TESLA_LINK_BREAKS);
+ creatureCaster->SetImmuneToPC(false);
+ creatureCaster->AI()->Talk(EMOTE_TESLA_LINK_BREAKS);
me->RemoveAura(SPELL_STALAGG_CHAIN_VISUAL);
}
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
{
- caster->CastStop(SPELL_TESLA_SHOCK);
- caster->CastSpell(target, SPELL_TESLA_SHOCK,true);
+ creatureCaster->CastStop(SPELL_TESLA_SHOCK);
+ creatureCaster->CastSpell(target, SPELL_TESLA_SHOCK,true);
}
}
else if (isOverloading || refreshBeam)
{
isOverloading = false;
refreshBeam = false;
- caster->CastStop();
- caster->CastSpell(me, SPELL_STALAGG_CHAIN_VISUAL, true);
- caster->SetImmuneToPC(true);
+ creatureCaster->CastStop();
+ creatureCaster->CastSpell(me, SPELL_STALAGG_CHAIN_VISUAL, true);
+ creatureCaster->SetImmuneToPC(true);
}
}
@@ -848,35 +849,37 @@ public:
refreshBeam = true;
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (!caster)
+ Creature* creatureCaster = caster->ToCreature();
+ if (!creatureCaster)
return;
- if (spell->Id != SPELL_FEUGEN_TESLA_PERIODIC)
+
+ if (spellInfo->Id != SPELL_FEUGEN_TESLA_PERIODIC)
return;
+
if (!isFeignDeath && me->IsInCombat() && !me->GetHomePosition().IsInDist(me, OVERLOAD_DISTANCE))
{
if (!isOverloading)
{
isOverloading = true;
- caster->SetImmuneToPC(false);
- if (Creature* creatureCaster = caster->ToCreature())
- creatureCaster->AI()->Talk(EMOTE_TESLA_LINK_BREAKS);
+ creatureCaster->SetImmuneToPC(false);
+ creatureCaster->AI()->Talk(EMOTE_TESLA_LINK_BREAKS);
me->RemoveAura(SPELL_STALAGG_CHAIN_VISUAL);
}
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
- caster->CastStop(SPELL_TESLA_SHOCK);
- caster->CastSpell(target, SPELL_TESLA_SHOCK,true);
+ creatureCaster->CastStop(SPELL_TESLA_SHOCK);
+ creatureCaster->CastSpell(target, SPELL_TESLA_SHOCK,true);
}
}
else if (isOverloading || refreshBeam)
{
isOverloading = false;
refreshBeam = false;
- caster->CastStop();
- caster->CastSpell(me, SPELL_FEUGEN_CHAIN_VISUAL, true);
- caster->SetImmuneToPC(true);
+ creatureCaster->CastStop();
+ creatureCaster->CastSpell(me, SPELL_FEUGEN_CHAIN_VISUAL, true);
+ creatureCaster->SetImmuneToPC(true);
}
}
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index d0ccc5f482f..3d2014c05ce 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -629,16 +629,16 @@ public:
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_POWER_SPARK_MALYGOS)
+ if (spellInfo->Id == SPELL_POWER_SPARK_MALYGOS)
{
if (Creature* creature = caster->ToCreature())
creature->DespawnOrUnsummon();
Talk(SAY_BUFF_SPARK);
}
- else if (spell->Id == SPELL_MALYGOS_BERSERK)
+ else if (spellInfo->Id == SPELL_MALYGOS_BERSERK)
Talk(EMOTE_HIT_BERSERKER_TIMER);
}
@@ -1023,9 +1023,9 @@ public:
_instance = creature->GetInstanceScript();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_PORTAL_OPENED)
+ if (spellInfo->Id == SPELL_PORTAL_OPENED)
{
if (Creature* malygos = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_MALYGOS)))
{
@@ -1474,12 +1474,12 @@ public:
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ARCANE_BOMB_TRIGGER)
+ if (spellInfo->Id == SPELL_ARCANE_BOMB_TRIGGER)
{
DoCastAOE(SPELL_ARCANE_BOMB_KNOCKBACK_DAMAGE, true);
- DoCast(me, SPELL_ARCANE_OVERLOAD_1, true);
+ DoCastSelf(SPELL_ARCANE_OVERLOAD_1, true);
}
}
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
index c04c3728a06..bd34252bc75 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
@@ -295,7 +295,7 @@ class boss_urom : public CreatureScript
EngagementOver();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
switch (spellInfo->Id)
{
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index faa6f0166e7..46ded908314 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -203,9 +203,9 @@ class npc_azure_ring_captain : public CreatureScript
me->SetReactState(REACT_AGGRESSIVE);
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ICE_BEAM)
+ if (spellInfo->Id == SPELL_ICE_BEAM)
{
target->CastSpell(target, SPELL_SUMMON_ARCANE_BEAM, true);
me->DespawnOrUnsummon();
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
index c01be422e8e..ce3e86b4e8b 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
@@ -266,10 +266,10 @@ class npc_ruby_emerald_amber_drake : public CreatureScript
Initialize();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
- if (spell->Id == SPELL_GPS)
+ if (spellInfo->Id == SPELL_GPS)
{
if (_instance->GetBossState(DATA_EREGOS) == DONE)
Talk(WHISPER_GPS_END, creator);
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
index 412a9b322fa..8090445ec3c 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
@@ -146,9 +146,9 @@ public:
Talk(SAY_SLAY);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_DISPERSE)
+ if (spellInfo->Id == SPELL_DISPERSE)
{
for (uint8 i = 0; i < DATA_MAX_SPARKS; ++i)
me->CastSpell(me, SPELL_SUMMON_SPARK, true);
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
index 298d6e2f3da..becfe8d3a8c 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -441,10 +441,10 @@ public:
}
}
- void SpellHit(Unit* /*pCaster*/, SpellInfo const* pSpell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
// This is the dummy effect of the spells
- if (pSpell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_SHATTER, me))
+ if (spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_SHATTER, me))
if (me->GetEntry() == NPC_BRITTLE_GOLEM)
me->DespawnOrUnsummon();
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index ad946bbe34e..0f4b427e09e 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -765,14 +765,18 @@ struct npc_living_constellation : public CreatureAI
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id != SPELL_CONSTELLATION_PHASE_EFFECT || caster->GetTypeId() != TYPEID_UNIT)
+ Creature* creatureCaster = caster->ToCreature();
+ if (!creatureCaster)
+ return;
+
+ if (spellInfo->Id != SPELL_CONSTELLATION_PHASE_EFFECT)
return;
_instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_ID_SUPERMASSIVE_START);
- caster->CastSpell(nullptr, SPELL_BLACK_HOLE_CREDIT, TRIGGERED_FULL_MASK);
- DoCast(caster, SPELL_DESPAWN_BLACK_HOLE, TRIGGERED_FULL_MASK);
+ creatureCaster->CastSpell(nullptr, SPELL_BLACK_HOLE_CREDIT, TRIGGERED_FULL_MASK);
+ DoCast(creatureCaster, SPELL_DESPAWN_BLACK_HOLE, TRIGGERED_FULL_MASK);
me->DespawnOrUnsummon(500ms);
}
@@ -825,9 +829,9 @@ struct npc_black_hole : public ScriptedAI
_summons.Summon(summon);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_DESPAWN_BLACK_HOLE)
+ if (spellInfo->Id == SPELL_DESPAWN_BLACK_HOLE)
{
_summons.DespawnAll();
me->DespawnOrUnsummon(1);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index 056c35adc74..ce7cabfde46 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -331,16 +331,16 @@ class boss_flame_leviathan : public CreatureScript
Talk(SAY_DEATH);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_START_THE_ENGINE)
+ if (spellInfo->Id == SPELL_START_THE_ENGINE)
if (Vehicle* vehicleKit = me->GetVehicleKit())
vehicleKit->InstallAllAccessories(false);
- if (spell->Id == SPELL_ELECTROSHOCK)
+ if (spellInfo->Id == SPELL_ELECTROSHOCK)
me->InterruptSpell(CURRENT_CHANNELED_SPELL);
- if (spell->Id == SPELL_OVERLOAD_CIRCUIT)
+ if (spellInfo->Id == SPELL_OVERLOAD_CIRCUIT)
++Shutdown;
}
@@ -476,15 +476,19 @@ class boss_flame_leviathan : public CreatureScript
DoBatteringRamIfReady();
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id != SPELL_PURSUED)
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
return;
- _pursueTarget = target->GetGUID();
- AttackStart(target);
+ if (spellInfo->Id != SPELL_PURSUED)
+ return;
+
+ _pursueTarget = unitTarget->GetGUID();
+ AttackStart(unitTarget);
- for (SeatMap::const_iterator itr = target->GetVehicleKit()->Seats.begin(); itr != target->GetVehicleKit()->Seats.end(); ++itr)
+ for (SeatMap::const_iterator itr = unitTarget->GetVehicleKit()->Seats.begin(); itr != unitTarget->GetVehicleKit()->Seats.end(); ++itr)
{
if (Player* passenger = ObjectAccessor::GetPlayer(*me, itr->second.Passenger.Guid))
{
@@ -906,9 +910,9 @@ class npc_pool_of_tar : public CreatureScript
damage = 0;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->SchoolMask & SPELL_SCHOOL_MASK_FIRE && !me->HasAura(SPELL_BLAZE))
+ if (spellInfo->SchoolMask & SPELL_SCHOOL_MASK_FIRE && !me->HasAura(SPELL_BLAZE))
me->CastSpell(me, SPELL_BLAZE, true);
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index 5478f7c8d73..bf035dde39f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -1505,12 +1505,16 @@ class npc_unstable_sun_beam : public CreatureScript
despawnTimer -= diff;
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (target && spell->Id == SPELL_UNSTABLE_ENERGY)
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ if (spellInfo->Id == SPELL_UNSTABLE_ENERGY)
{
- target->RemoveAurasDueToSpell(SPELL_UNSTABLE_SUN_BEAM);
- target->RemoveAurasDueToSpell(SPELL_UNSTABLE_SUN_BEAM_TRIGGERED);
+ unitTarget->RemoveAurasDueToSpell(SPELL_UNSTABLE_SUN_BEAM);
+ unitTarget->RemoveAurasDueToSpell(SPELL_UNSTABLE_SUN_BEAM_TRIGGERED);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
index 0458f811f92..bf28b7c7301 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -219,9 +219,9 @@ class boss_general_vezax : public CreatureScript
DoMeleeAttackIfReady();
}
- void SpellHitTarget(Unit* who, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_SHADOW_CRASH_HIT)
+ if (target->GetTypeId() == TYPEID_PLAYER && spellInfo->Id == SPELL_SHADOW_CRASH_HIT)
shadowDodger = false;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index 1f7a1a64410..e52b23d1c3f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -967,9 +967,9 @@ class npc_toasty_fire : public CreatureScript
DoCast(me, SPELL_SINGED, true);
}
- void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_BLOCK_OF_ICE || spell->Id == SPELL_ICE_SHARD || spell->Id == SPELL_ICE_SHARD_HIT)
+ if (spellInfo->Id == SPELL_BLOCK_OF_ICE || spellInfo->Id == SPELL_ICE_SHARD || spellInfo->Id == SPELL_ICE_SHARD_HIT)
{
if (GameObject* ToastyFire = me->FindNearestGameObject(GO_TOASTY_FIRE, 1.0f))
me->RemoveGameObject(ToastyFire, true);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index c96c381c7f8..e5bc9080e43 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -1034,10 +1034,10 @@ class boss_vx_001 : public CreatureScript
mimiron->AI()->Talk(events.IsInPhase(PHASE_VX_001) ? SAY_VX001_SLAY : SAY_V07TRON_SLAY);
}
- void SpellHit(Unit* caster, SpellInfo const* /*spellProto*/) override
+ void SpellHit(WorldObject* caster, SpellInfo const* /*spellInfo*/) override
{
if (caster->GetEntry() == NPC_BURST_TARGET && !me->HasUnitState(UNIT_STATE_CASTING))
- DoCast(caster, SPELL_RAPID_BURST);
+ DoCast(caster->ToUnit(), SPELL_RAPID_BURST);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
index 49cbf43e337..2d0c1c31cf6 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -498,9 +498,9 @@ struct boss_razorscale : public BossAI
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_HARPOON_TRIGGER)
+ if (spellInfo->Id == SPELL_HARPOON_TRIGGER)
{
_harpoonHitCount++;
if (_harpoonHitCount == RAID_MODE(2, 4))
@@ -1452,9 +1452,9 @@ struct npc_razorscale_harpoon_fire_state : public ScriptedAI
{
npc_razorscale_harpoon_fire_state(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_FIREBOLT)
+ if (spellInfo->Id == SPELL_FIREBOLT)
{
DoCastSelf(SPELL_HARPOON_FIRE_STATE);
if (Creature* commander = _instance->GetCreature(DATA_EXPEDITION_COMMANDER))
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index 4bdcd3514c4..8144c2b3df2 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -543,7 +543,7 @@ class boss_thorim : public CreatureScript
Talk(SAY_SLAY);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_TOUCH_OF_DOMINION_TRIGGERED)
{
@@ -556,9 +556,9 @@ class boss_thorim : public CreatureScript
}
}
- void SpellHitTarget(Unit* who, SpellInfo const* spellInfo) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (who->GetTypeId() == TYPEID_PLAYER && spellInfo->Id == SPELL_LIGHTNING_RELEASE)
+ if (target->GetTypeId() == TYPEID_PLAYER && spellInfo->Id == SPELL_LIGHTNING_RELEASE)
_dontStandInTheLightning = false;
}
@@ -1595,7 +1595,7 @@ class npc_sif : public CreatureScript
_events.Reset();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_STORMHAMMER_SIF)
{
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index e9743454674..0ab72506086 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -737,12 +737,12 @@ class boss_sara : public CreatureScript
}
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
if (!roll_chance_i(30) || _events.IsInPhase(PHASE_TRANSFORM))
return;
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_SARAS_FERVOR:
Talk(SAY_SARA_FERVOR_HIT);
@@ -948,10 +948,10 @@ class boss_yogg_saron : public CreatureScript
me->AddLootMode(LOOT_MODE_HARD_MODE_1);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
// Val'anyr
- if (spell->Id == SPELL_IN_THE_MAWS_OF_THE_OLD_GOD)
+ if (spellInfo->Id == SPELL_IN_THE_MAWS_OF_THE_OLD_GOD)
me->AddLootMode(32);
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 8158237ac87..5dc99994cd1 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -445,9 +445,9 @@ public:
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_LAUNCH_HARPOON)
+ if (spellInfo->Id == SPELL_LAUNCH_HARPOON)
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
skadi->AI()->DoAction(ACTION_HARPOON_HIT);
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
index 0018069e18b..a2fd2301808 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
@@ -220,7 +220,7 @@ class boss_svala : public CreatureScript
Talk(SAY_DEATH);
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spellInfo) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_RITUAL_STRIKE_EFF_1 && !events.IsInPhase(NORMAL) && !events.IsInPhase(SVALADEAD))
{
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
index 0860a8989bc..25a290cd50f 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
@@ -148,9 +148,9 @@ public:
events.ScheduleEvent(EVENT_ANCESTORS_VENGEANCE, DUNGEON_MODE(60000, 45000), EVENT_GROUP_BASE_SPELLS);
}
- void SpellHitTarget(Unit* who, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_BANE_HIT)
+ if (target->GetTypeId() == TYPEID_PLAYER && spellInfo->Id == SPELL_BANE_HIT)
kingsBane = false;
}
diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
index 18b0016d532..5d262d0eaae 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
@@ -248,13 +248,17 @@ class npc_ichor_globule : public CreatureScript
creature->SetReactState(REACT_PASSIVE);
}
- void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
if (spellInfo->Id == SPELL_WATER_GLOBULE_VISUAL)
{
DoCast(me, SPELL_WATER_GLOBULE_TRANSFORM);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- me->GetMotionMaster()->MoveFollow(caster, 0.0f, 0.0f);
+ me->GetMotionMaster()->MoveFollow(unitCaster, 0.0f, 0.0f);
}
}
diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
index 190c66a9145..026d64d1b39 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
@@ -121,9 +121,9 @@ class boss_xevozz : public CreatureScript
_JustDied();
}
- void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ARCANE_POWER || spell->Id == H_SPELL_ARCANE_POWER)
+ if (spellInfo->Id == SPELL_ARCANE_POWER || spellInfo->Id == H_SPELL_ARCANE_POWER)
Talk(SAY_SUMMON_ENERGY);
}
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 34a0667c147..ba312374f57 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -1314,18 +1314,21 @@ public:
AttackStart(who);
}
- void SpellHit(Unit* pCaster, SpellInfo const* pSpell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (pSpell->Id == SPELL_ARCANE_CHAINS && pCaster->GetTypeId() == TYPEID_PLAYER && !HealthAbovePct(50) && !bEnslaved)
+ Player* playerCaster = caster->ToPlayer();
+ if (!playerCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_ARCANE_CHAINS && !HealthAbovePct(50) && !bEnslaved)
{
EnterEvadeMode(); //We make sure that the npc is not attacking the player!
me->SetReactState(REACT_PASSIVE);
- StartFollow(pCaster->ToPlayer());
+ StartFollow(playerCaster);
me->UpdateEntry(NPC_CAPTURED_BERLY_SORCERER);
DoCast(me, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF, true);
- if (Player* player = pCaster->ToPlayer())
- player->KilledMonsterCredit(NPC_CAPTURED_BERLY_SORCERER);
+ playerCaster->KilledMonsterCredit(NPC_CAPTURED_BERLY_SORCERER);
bEnslaved = true;
}
@@ -1419,10 +1422,14 @@ public:
{
}
- void SpellHit(Unit* unit, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if ((spell->Id == SPELL_NEURAL_NEEDLE || spell->Id == SPELL_PROTOTYPE_NEURAL_NEEDLE) && unit->GetTypeId() == TYPEID_PLAYER)
- GotStinged(unit->ToPlayer(), spell->Id);
+ Player* playerCaster = caster->ToPlayer();
+ if (!playerCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_NEURAL_NEEDLE || spellInfo->Id == SPELL_PROTOTYPE_NEURAL_NEEDLE)
+ GotStinged(playerCaster, spellInfo->Id);
}
void GotStinged(Player* caster, uint32 spellId)
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index b797e50c31d..a167135deda 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -539,9 +539,9 @@ class npc_wyrmrest_defender : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_WYRMREST_DEFENDER_MOUNT:
Talk(WHISPER_MOUNTED, me->GetCharmerOrOwner());
@@ -625,9 +625,9 @@ class npc_torturer_lecraft : public CreatureScript
Talk (SAY_AGGRO, player);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id != SPELL_HIGH_EXECUTORS_BRANDING_IRON)
+ if (spellInfo->Id != SPELL_HIGH_EXECUTORS_BRANDING_IRON)
return;
if (Player* player = caster->ToPlayer())
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
index 0580f6dfb3b..2b530b5207e 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -299,13 +299,17 @@ public:
_gender = Data;
}
- void SpellHit(Unit* Caster, SpellInfo const* Spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (Spell->Id == SPELL_OUTHOUSE_GROANS)
- {
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_OUTHOUSE_GROANS)
+ {
++_counter;
if (_counter < 5)
- DoCast(Caster, SPELL_CAMERA_SHAKE, true);
+ DoCast(unitCaster, SPELL_CAMERA_SHAKE, true);
else
_counter = 0;
DoCast(me, SPELL_DUST_FIELD, true);
@@ -496,13 +500,16 @@ public:
me->DespawnOrUnsummon(_despawnTimer);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_RENEW_SKIRMISHER && caster->GetTypeId() == TYPEID_PLAYER
- && caster->ToPlayer()->GetQuestStatus(QUEST_OVERWHELMED) == QUEST_STATUS_INCOMPLETE)
+ Player* playerCaster = caster->ToPlayer();
+ if (!playerCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_RENEW_SKIRMISHER && playerCaster->GetQuestStatus(QUEST_OVERWHELMED) == QUEST_STATUS_INCOMPLETE)
{
- DoCast(caster, SPELL_KILL_CREDIT);
- Talk(SAY_RANDOM, caster);
+ DoCast(playerCaster, SPELL_KILL_CREDIT);
+ Talk(SAY_RANDOM, playerCaster);
if (me->IsStandState())
me->GetMotionMaster()->MovePoint(1, me->GetPositionX()+7, me->GetPositionY()+7, me->GetPositionZ());
else
@@ -617,9 +624,9 @@ public:
DoMeleeAttackIfReady();
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SMOKE_BOMB && caster->GetTypeId() == TYPEID_PLAYER)
+ if (spellInfo->Id == SPELL_SMOKE_BOMB && caster->GetTypeId() == TYPEID_PLAYER)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(true);
@@ -909,7 +916,7 @@ public:
FinishQuest(false, _faction);
}
- void SpellHit(Unit* caster, SpellInfo const* /*spellInfo*/) override
+ void SpellHit(WorldObject* caster, SpellInfo const* /*spellInfo*/) override
{
if (caster->GetEntry() == NPC_HORDE_LUMBERBOAT || caster->GetEntry() == NPC_ALLIANCE_LUMBERBOAT)
FinishQuest(true, _faction);
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 3d28c33dace..1ea5565ae52 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -234,32 +234,36 @@ class npc_tournament_training_dummy : public CreatureScript
events.RescheduleEvent(EVENT_DUMMY_RESET, 10000);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
switch (me->GetEntry())
{
case NPC_CHARGE_TARGET:
- if (spell->Id == SPELL_PLAYER_CHARGE)
+ if (spellInfo->Id == SPELL_PLAYER_CHARGE)
if (isVulnerable)
- DoCast(caster, SPELL_CHARGE_CREDIT, true);
+ DoCast(unitCaster, SPELL_CHARGE_CREDIT, true);
break;
case NPC_MELEE_TARGET:
- if (spell->Id == SPELL_PLAYER_THRUST)
+ if (spellInfo->Id == SPELL_PLAYER_THRUST)
{
- DoCast(caster, SPELL_MELEE_CREDIT, true);
+ DoCast(unitCaster, SPELL_MELEE_CREDIT, true);
- if (Unit* target = caster->GetVehicleBase())
+ if (Unit* target = unitCaster->GetVehicleBase())
DoCast(target, SPELL_COUNTERATTACK, true);
}
break;
case NPC_RANGED_TARGET:
- if (spell->Id == SPELL_PLAYER_BREAK_SHIELD)
+ if (spellInfo->Id == SPELL_PLAYER_BREAK_SHIELD)
if (isVulnerable)
- DoCast(caster, SPELL_RANGED_CREDIT, true);
+ DoCast(unitCaster, SPELL_RANGED_CREDIT, true);
break;
}
- if (spell->Id == SPELL_PLAYER_BREAK_SHIELD)
+ if (spellInfo->Id == SPELL_PLAYER_BREAK_SHIELD)
if (!me->HasAura(SPELL_CHARGE_DEFEND) && !me->HasAura(SPELL_RANGED_DEFEND))
isVulnerable = true;
}
@@ -756,9 +760,9 @@ class npc_frostbrood_skytalon : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- switch (spell->Id)
+ switch (spellInfo->Id)
{
case SPELL_EXPLOSION:
DoCast(me, SPELL_IMMOLATION);
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
index 137b6de5296..9628a041896 100644
--- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
@@ -304,7 +304,7 @@ public:
sayTimer -= diff;
}
- void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
if (spellInfo->Id != SPELL_OFFER)
return;
@@ -575,16 +575,16 @@ public:
{
npc_haiphoonAI(Creature* creature) : VehicleAI(creature) { }
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
if (target == me)
return;
- if (spell->Id == SPELL_DEVOUR_WIND && me->GetCharmerOrOwnerPlayerOrPlayerItself())
+ if (spellInfo->Id == SPELL_DEVOUR_WIND && me->GetCharmerOrOwnerPlayerOrPlayerItself())
{
me->UpdateEntry(NPC_HAIPHOON_AIR);
}
- else if (spell->Id == SPELL_DEVOUR_WATER && me->GetCharmerOrOwnerPlayerOrPlayerItself())
+ else if (spellInfo->Id == SPELL_DEVOUR_WATER && me->GetCharmerOrOwnerPlayerOrPlayerItself())
{
me->UpdateEntry(NPC_HAIPHOON_WATER);
}
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index 4fa7b575ba2..3ad5cf25fc3 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -225,15 +225,19 @@ public:
me->DespawnOrUnsummon();
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id != SPELL_ICE_LANCE)
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
return;
- if (caster->GetVehicleKit()->GetAvailableSeatCount() != 0)
+ if (spellInfo->Id != SPELL_ICE_LANCE)
+ return;
+
+ if (unitCaster->GetVehicleKit()->GetAvailableSeatCount() != 0)
{
me->CastSpell(me, SPELL_FREE_PRISONER, true);
- me->CastSpell(caster, SPELL_RIDE_DRAKE, true);
+ me->CastSpell(unitCaster, SPELL_RIDE_DRAKE, true);
me->CastSpell(me, SPELL_SHARD_IMPACT, true);
freed = true;
}
@@ -750,7 +754,7 @@ class npc_wild_wyrm : public CreatureScript
}
}
- void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
if (_playerGuid || spellInfo->Id != SPELL_SPEAR_OF_HODIR)
return;
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index 68e64773f33..efd14ab16e0 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -75,27 +75,28 @@ public:
rageclaw->SetFacingToObject(me);
}
- void UnlockRageclaw(Unit* who, Creature* rageclaw)
+ void UnlockRageclaw(Creature* rageclaw)
{
- if (!who)
- return;
-
// pointer check not needed
DoCast(rageclaw, SPELL_FREE_RAGECLAW, true);
me->setDeathState(DEAD);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_UNLOCK_SHACKLE)
+ Player* playerCaster = caster->ToPlayer();
+ if (!playerCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_UNLOCK_SHACKLE)
{
- if (caster->ToPlayer()->GetQuestStatus(QUEST_TROLLS_IS_GONE_CRAZY) == QUEST_STATUS_INCOMPLETE)
+ if (playerCaster->GetQuestStatus(QUEST_TROLLS_IS_GONE_CRAZY) == QUEST_STATUS_INCOMPLETE)
{
if (Creature* rageclaw = ObjectAccessor::GetCreature(*me, _rageclawGUID))
{
- UnlockRageclaw(caster, rageclaw);
- caster->ToPlayer()->KilledMonster(rageclaw->GetCreatureTemplate(), _rageclawGUID);
+ UnlockRageclaw(rageclaw);
+ playerCaster->KilledMonster(rageclaw->GetCreatureTemplate(), _rageclawGUID);
me->RemoveAurasDueToSpell(SPELL_CHAIN_OF_THE_SCURGE_RIGHT);
me->DespawnOrUnsummon();
}
@@ -142,9 +143,9 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_FREE_RAGECLAW)
+ if (spellInfo->Id == SPELL_FREE_RAGECLAW)
{
me->RemoveAurasDueToSpell(SPELL_CHAIN_OF_THE_SCURGE_LEFT);
me->SetStandState(UNIT_STAND_STATE_STAND);
@@ -925,16 +926,22 @@ public:
Reset();
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id != GYMERS_GRAB)
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
return;
- if (Vehicle* veh = caster->GetVehicleKit())
- if (veh->GetAvailableSeatCount() != 0)
+ if (spellInfo->Id != GYMERS_GRAB)
+ return;
+
+ if (Vehicle* veh = unitCaster->GetVehicleKit())
{
- me->CastSpell(caster, RIDE_VEHICLE, true);
- me->CastSpell(caster, HEALING_WINDS, true);
+ if (veh->GetAvailableSeatCount() != 0)
+ {
+ me->CastSpell(caster, RIDE_VEHICLE, true);
+ me->CastSpell(caster, HEALING_WINDS, true);
+ }
}
}
};
diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
index 4aacaf8072f..a8c47ca8cdc 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
@@ -236,9 +236,9 @@ struct boss_shade_of_akama : public BossAI
_DespawnAtEvade();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_AKAMA_SOUL_CHANNEL)
+ if (spellInfo->Id == SPELL_AKAMA_SOUL_CHANNEL)
{
events.ScheduleEvent(EVENT_START_CHANNELERS_AND_SPAWNERS, 1s);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
@@ -247,7 +247,7 @@ struct boss_shade_of_akama : public BossAI
AttackStart(akama);
}
- if (spell->Id == SPELL_AKAMA_SOUL_RETRIEVE)
+ if (spellInfo->Id == SPELL_AKAMA_SOUL_RETRIEVE)
DoCastSelf(SPELL_AKAMA_SOUL_EXPEL_CHANNEL);
}
@@ -381,9 +381,9 @@ struct npc_akama_shade : public ScriptedAI
void EnterEvadeMode(EvadeReason /*why*/) override { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_THREAT && !_isInCombat)
+ if (spellInfo->Id == SPELL_THREAT && !_isInCombat)
{
_isInCombat = true;
me->SetWalk(false);
diff --git a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp
index 16e357a9026..5488ba52c4e 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp
@@ -91,9 +91,9 @@ struct boss_najentus : public BossAI
Talk(SAY_DEATH);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_HURL_SPINE && me->HasAura(SPELL_TIDAL_SHIELD))
+ if (spellInfo->Id == SPELL_HURL_SPINE && me->HasAura(SPELL_TIDAL_SHIELD))
{
me->RemoveAurasDueToSpell(SPELL_TIDAL_SHIELD);
DoCastSelf(SPELL_TIDAL_BURST, true);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
index 7b37cddc7a5..2a52a685f6b 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp
@@ -149,10 +149,10 @@ public:
Talk(SAY_SLAY);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
//hack :(
- if (spell->Id == SPELL_WARLORDS_RAGE_PROC)
+ if (spellInfo->Id == SPELL_WARLORDS_RAGE_PROC)
if (instance->GetData(DATA_DISTILLER) == DONE)
me->RemoveAurasDueToSpell(SPELL_WARLORDS_RAGE_PROC);
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
index bcf6d6fd42b..e71dc723172 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
@@ -513,7 +513,7 @@ struct npc_earthen_ring_flamecaller : public ScriptedAI
DoCastSelf(SPELL_FIND_OPENING_CHANNEL);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
switch (spellInfo->Id)
{
diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
index 1c6d5afead0..da3b9fa92fe 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
@@ -122,11 +122,11 @@ class boss_gruul : public CreatureScript
Talk(SAY_DEATH);
}
- void SpellHitTarget(Unit* target, SpellInfo const* pSpell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
//This to emulate effect1 (77) of SPELL_GROUND_SLAM, knock back to any direction
//It's initially wrong, since this will cause fall damage, which is by comments, not intended.
- if (pSpell->Id == SPELL_GROUND_SLAM)
+ if (spellInfo->Id == SPELL_GROUND_SLAM)
{
if (target->GetTypeId() == TYPEID_PLAYER)
{
@@ -144,7 +144,7 @@ class boss_gruul : public CreatureScript
}
//this part should be in the core
- if (pSpell->Id == SPELL_SHATTER)
+ if (spellInfo->Id == SPELL_SHATTER)
{
/// @todo use eventmap to kill this stuff
//clear this, if we are still performing
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
index 22d0d29af0f..f9829a0f5e9 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp
@@ -111,9 +111,9 @@ class boss_nazan : public CreatureScript
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* entry) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (target && entry->Id == uint32(SPELL_FIREBALL))
+ if (spellInfo->Id == uint32(SPELL_FIREBALL))
me->SummonCreature(NPC_LIQUID_FIRE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 30000);
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
index 3eb07dbfeec..6a0b6f0e2b8 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
@@ -184,9 +184,9 @@ class boss_magtheridon : public CreatureScript
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SHADOW_CAGE)
+ if (spellInfo->Id == SPELL_SHADOW_CAGE)
Talk(SAY_BANISHED);
}
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
index 88319294454..c0ae6c28057 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
@@ -217,9 +217,9 @@ class boss_alar : public CreatureScript
}
}
- void SpellHit(Unit*, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_DIVE_BOMB_VISUAL)
+ if (spellInfo->Id == SPELL_DIVE_BOMB_VISUAL)
{
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
me->SetDisplayId(11686);
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
index 57514b64457..5817e0b2bff 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -358,9 +358,9 @@ struct advisorbase_ai : public ScriptedAI
ScriptedAI::AttackStart(who);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_RESSURECTION)
+ if (spellInfo->Id == SPELL_RESSURECTION)
{
_hasRessurrected = true;
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index 4c01fd9be54..6902ca23507 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -126,9 +126,13 @@ public:
me->DespawnOrUnsummon(1);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_T_PHASE_MODULATOR && caster->GetTypeId() == TYPEID_PLAYER)
+ Player* playerCaster = caster->ToPlayer();
+ if (!playerCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_T_PHASE_MODULATOR)
{
const uint32 entry_list[4] = {ENTRY_PROTO, ENTRY_ADOLE, ENTRY_MATUR, ENTRY_NIHIL};
int cid = rand32() % (4 - 1);
@@ -153,7 +157,7 @@ public:
IsNihil = true;
}
else
- AttackStart(caster);
+ AttackStart(playerCaster);
}
}
}
@@ -843,15 +847,19 @@ class npc_simon_bunny : public CreatureScript
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
// Cast SPELL_BAD_PRESS_DAMAGE with scaled basepoints when the visual hits the target.
// Need Fix: When SPELL_BAD_PRESS_TRIGGER hits target it triggers spell SPELL_BAD_PRESS_DAMAGE by itself
// so player gets damage equal to calculated damage dbc basepoints for SPELL_BAD_PRESS_DAMAGE (~50)
- if (spell->Id == SPELL_BAD_PRESS_TRIGGER)
+ if (spellInfo->Id == SPELL_BAD_PRESS_TRIGGER)
{
- int32 bp = (int32)((float)(fails)*0.33f*target->GetMaxHealth());
- target->CastSpell(target, SPELL_BAD_PRESS_DAMAGE, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(bp));
+ int32 bp = (int32)((float)(fails) * 0.33f * unitTarget->GetMaxHealth());
+ unitTarget->CastSpell(unitTarget, SPELL_BAD_PRESS_DAMAGE, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(bp));
}
}
diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp
index 42273903322..8d244c3b240 100644
--- a/src/server/scripts/Outland/zone_nagrand.cpp
+++ b/src/server/scripts/Outland/zone_nagrand.cpp
@@ -142,9 +142,9 @@ public:
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_CHAIN_LIGHTNING)
+ if (spellInfo->Id == SPELL_CHAIN_LIGHTNING)
{
if (rand32() % 10)
return;
@@ -334,9 +334,9 @@ public:
summoned->AI()->AttackStart(me);
}
- void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_KUR_CHAIN_LIGHTNING)
+ if (spellInfo->Id == SPELL_KUR_CHAIN_LIGHTNING)
{
if (rand32() % 30)
return;
@@ -344,7 +344,7 @@ public:
Talk(SAY_KUR_LIGHTNING);
}
- if (spell->Id == SPELL_KUR_FROST_SHOCK)
+ if (spellInfo->Id == SPELL_KUR_FROST_SHOCK)
{
if (rand32() % 30)
return;
@@ -442,7 +442,7 @@ public:
scheduler.CancelAll();
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_PLANT_WARMAUL_OGRE_BANNER || spellInfo->Id == SPELL_PLANT_KIL_SORROW_BANNER)
bannered = true;
diff --git a/src/server/scripts/Outland/zone_netherstorm.cpp b/src/server/scripts/Outland/zone_netherstorm.cpp
index 8d6c330c385..f121f6df72f 100644
--- a/src/server/scripts/Outland/zone_netherstorm.cpp
+++ b/src/server/scripts/Outland/zone_netherstorm.cpp
@@ -406,11 +406,6 @@ public:
PlayerGUID = who->GetGUID();
}
- //void SpellHit(Unit* /*caster*/, SpellInfo const* /*spell*/) override
- //{
- // DoCast(me, SPELL_DE_MATERIALIZE);
- //}
-
void UpdateAI(uint32 diff) override
{
if (!Materialize)
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index 74b29423c38..47af5874c11 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -162,9 +162,9 @@ public:
caster->AI()->SetData(TYPE_INFERNAL, DATA_DIED);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_SUMMON_INFERNAL)
+ if (spellInfo->Id == SPELL_SUMMON_INFERNAL)
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE);
me->SetImmuneToPC(false);
@@ -250,14 +250,14 @@ public:
Initialize();
}
- void SpellHit(Unit* pCaster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
if (bCanEat || bIsEating)
return;
- if (pCaster->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_PLACE_CARCASS && !me->HasAura(SPELL_JUST_EATEN))
+ if (caster->GetTypeId() == TYPEID_PLAYER && spellInfo->Id == SPELL_PLACE_CARCASS && !me->HasAura(SPELL_JUST_EATEN))
{
- uiPlayerGUID = pCaster->GetGUID();
+ uiPlayerGUID = caster->GetGUID();
bCanEat = true;
}
}
@@ -381,18 +381,19 @@ public:
me->SetDisableGravity(false);
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (!caster)
+ Player* playerCaster = caster->ToPlayer();
+ if (!playerCaster)
return;
- if (caster->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_HIT_FORCE_OF_NELTHARAKU && !Tapped)
+ if (spellInfo->Id == SPELL_HIT_FORCE_OF_NELTHARAKU && !Tapped)
{
Tapped = true;
- PlayerGUID = caster->GetGUID();
+ PlayerGUID = playerCaster->GetGUID();
me->SetFaction(FACTION_FLAYER_HUNTER);
- DoCast(caster, SPELL_FORCE_OF_NELTHARAKU, true);
+ DoCast(playerCaster, SPELL_FORCE_OF_NELTHARAKU, true);
Unit* Dragonmaw = me->FindNearestCreature(NPC_DRAGONMAW_SUBJUGATOR, 50);
if (Dragonmaw)
@@ -401,7 +402,7 @@ public:
AttackStart(Dragonmaw);
}
- me->GetThreatManager().ClearThreat(caster);
+ me->GetThreatManager().ClearThreat(playerCaster);
}
}
@@ -508,12 +509,12 @@ public:
Initialize();
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
if (!caster)
return;
- if (caster->GetTypeId() == TYPEID_PLAYER && spell->Id == 40468 && !Tapped)
+ if (caster->GetTypeId() == TYPEID_PLAYER && spellInfo->Id == 40468 && !Tapped)
{
PlayerGUID = caster->GetGUID();
@@ -1664,9 +1665,9 @@ public:
}
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_WHISTLE)
+ if (spellInfo->Id == SPELL_WHISTLE)
{
if (Creature* boar = me->FindNearestCreature(NPC_BOAR_ENTRY, 30.0f))
{
diff --git a/src/server/scripts/Pet/pet_dk.cpp b/src/server/scripts/Pet/pet_dk.cpp
index b7340c26e39..63aaf99b146 100644
--- a/src/server/scripts/Pet/pet_dk.cpp
+++ b/src/server/scripts/Pet/pet_dk.cpp
@@ -73,13 +73,13 @@ class npc_pet_dk_ebon_gargoyle : public CreatureScript
}
// Fly away when dismissed
- void SpellHit(Unit* source, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id != SPELL_DK_DISMISS_GARGOYLE || !me->IsAlive())
+ if (spellInfo->Id != SPELL_DK_DISMISS_GARGOYLE || !me->IsAlive())
return;
Unit* owner = me->GetOwner();
- if (!owner || owner != source)
+ if (!owner || owner != caster)
return;
// Stop Fighting
diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp
index 93d23db7ca2..98396dfb923 100644
--- a/src/server/scripts/World/boss_emerald_dragons.cpp
+++ b/src/server/scripts/World/boss_emerald_dragons.cpp
@@ -383,9 +383,9 @@ class boss_lethon : public CreatureScript
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_DRAW_SPIRIT && target->GetTypeId() == TYPEID_PLAYER)
+ if (spellInfo->Id == SPELL_DRAW_SPIRIT && target->GetTypeId() == TYPEID_PLAYER)
{
Position targetPos = target->GetPosition();
me->SummonCreature(NPC_SPIRIT_SHADE, targetPos, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 50000);
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index c3704d1aed9..c746b862908 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -818,10 +818,10 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
Player* player = caster->ToPlayer();
- if (!player || !me->IsAlive() || spell->Id != 20804)
+ if (!player || !me->IsAlive() || spellInfo->Id != 20804)
return;
if (player->GetQuestStatus(6624) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(6622) == QUEST_STATUS_INCOMPLETE)
@@ -1024,9 +1024,9 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_LESSER_HEAL_R2 || spell->Id == SPELL_FORTITUDE_R1)
+ if (spellInfo->Id == SPELL_LESSER_HEAL_R2 || spellInfo->Id == SPELL_FORTITUDE_R1)
{
//not while in combat
if (me->IsInCombat())
@@ -1040,16 +1040,16 @@ public:
{
if (quest && player->GetQuestStatus(quest) == QUEST_STATUS_INCOMPLETE)
{
- if (IsHealed && !CanRun && spell->Id == SPELL_FORTITUDE_R1)
+ if (IsHealed && !CanRun && spellInfo->Id == SPELL_FORTITUDE_R1)
{
- Talk(SAY_THANKS, caster);
+ Talk(SAY_THANKS, player);
CanRun = true;
}
- else if (!IsHealed && spell->Id == SPELL_LESSER_HEAL_R2)
+ else if (!IsHealed && spellInfo->Id == SPELL_LESSER_HEAL_R2)
{
- CasterGUID = caster->GetGUID();
+ CasterGUID = player->GetGUID();
me->SetStandState(UNIT_STAND_STATE_STAND);
- Talk(SAY_HEALED, caster);
+ Talk(SAY_HEALED, player);
IsHealed = true;
}
}