aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorForesterDev <11771800+ForesterDev@users.noreply.github.com>2020-06-07 11:22:13 +0300
committerShauren <shauren.trinity@gmail.com>2022-01-06 20:46:25 +0100
commit3171cd3fa9dbcec43f5d70b74ab2f54a2aa44173 (patch)
tree838c54078c04b1fdae4ec1aac6fdc70ebdae45b2 /src/server/scripts/Northrend
parentf0242d4ec7857a18145dd0a9965fcb8526e981c8 (diff)
Core/AI: refactor SpellHit and SpellHitTarget. (#24691)
* Core/AI: refactor SpellHit and SpellHitTarget. - now caster/target is WorldObject instead of Unit - remove SpellHitByGameObject / SpellHitTargetGameObject (handled by SpellHit / SpellHitTarget) - rename parameters in scripts according parent methods * Restore logic in Algalon script * Changed check for REMORSELESS_WINTER hit to avoid dublicate call, because it has TARGET_UNIT_CASTER for effects 0/1 and TARGET_GAMEOBJECT_SRC_AREA for effect 2 * Fix build after merge (cherry picked from commit e3b232fe0e5c21a87d3fe71813e9d750259823f1)
Diffstat (limited to 'src/server/scripts/Northrend')
-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.cpp42
-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.cpp7
-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
57 files changed, 344 insertions, 274 deletions
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 3b6c5828ac5..58b13ee4701 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
@@ -111,9 +111,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 7ecb762775e..64eec2981e0 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->AddUnitFlag(UnitFlags(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 6d2e270e819..5cbb464765d 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -309,7 +309,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);
@@ -494,9 +494,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 fcfaa3632d8..7aa07290872 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 b63f16cdb71..224ba8c25cf 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
@@ -221,9 +221,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 eaaf52bb5ce..d556818d1fb 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
@@ -126,7 +126,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 d79ef91a1d8..631d6f120c7 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -544,9 +544,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 3b02a7274e4..303602c006f 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -414,7 +414,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())
{
@@ -422,7 +422,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);
@@ -443,9 +443,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();
}
@@ -715,9 +715,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]);
@@ -922,9 +922,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]);
@@ -1004,9 +1004,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 27cb145629d..4666aeba426 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -160,10 +160,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 3cb361ac63a..c25728b6bdf 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -459,9 +459,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());
}
@@ -628,9 +628,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);
@@ -735,9 +735,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);
@@ -828,9 +828,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 94717c7dbd2..9992a599a7b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -726,9 +726,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 == _hitTargetSpellId)
+ if (!_newTargetSelectTimer && spellInfo->Id == _hitTargetSpellId)
{
_newTargetSelectTimer = 1000;
// go passive until next target selection
@@ -745,9 +745,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 a0304bb468e..7dec66feb4b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -172,9 +172,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 8acc449bbe7..ff48f2635cc 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -439,10 +439,14 @@ 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
{
- if (spell->Id == 70127)
- if (Aura const* mysticBuffet = target->GetAura(spell->Id))
+ Unit* unitTarget = target->ToUnit();
+ if (!unitTarget)
+ return;
+
+ if (spellInfo->Id == 70127)
+ if (Aura const* mysticBuffet = unitTarget->GetAura(spellInfo->Id))
_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 21d447ccb28..766dbc50304 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
@@ -414,9 +414,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);
@@ -436,17 +436,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);
@@ -874,9 +878,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);
@@ -901,7 +905,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 54d56a0b884..d7a8e89c0f2 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -792,15 +792,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);
@@ -1205,11 +1202,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 481cf48f034..4efcceff275 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -378,9 +378,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 b9024af2849..7f8fb391876 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -740,9 +740,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 19982f0e869..0f4532378c8 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 47287928c80..e44371b464c 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -46,31 +46,25 @@ enum Spells
/* baron */
SPELL_BARON_MARK = 28834,
- SPELL_UNHOLY_SHADOW = 28882,
/* thane */
SPELL_THANE_MARK = 28832,
- SPELL_METEOR = 28884,
/* lady */
- SPELL_SHADOW_BOLT = 57374,
SPELL_LADY_MARK = 28833,
- SPELL_VOID_ZONE = 28863,
SPELL_UNYIELDING_PAIN = 57381,
/* sir */
- SPELL_HOLY_BOLT = 57376,
SPELL_SIR_MARK = 28835,
- SPELL_HOLY_WRATH = 28883,
SPELL_CONDEMNATION = 57377
};
-#define SPELL_HELPER_UNHOLY_SHADOW RAID_MODE<uint32>(28882, 57369) // Rivendare: Unholy Shadow
-#define SPELL_HELPER_METEOR RAID_MODE<uint32>(28884, 57467) // Korth'azz: Meteor
-#define SPELL_HELPER_SHADOW_BOLT RAID_MODE<uint32>(57374, 57464) // Blaumeux : Shadow Bolt
-#define SPELL_HELPER_VOID_ZONE RAID_MODE<uint32>(28863, 57463) // Blaumeux : Void Zone
-#define SPELL_HELPER_HOLY_BOLT RAID_MODE<uint32>(57376, 57465) // Zeliek : Holy Bolt
-#define SPELL_HELPER_HOLY_WRATH RAID_MODE<uint32>(28883, 57466) // Zeliek: Holy Wrath
+#define SPELL_UNHOLY_SHADOW RAID_MODE<uint32>(28882, 57369) // Rivendare: Unholy Shadow
+#define SPELL_METEOR RAID_MODE<uint32>(28884, 57467) // Korth'azz: Meteor
+#define SPELL_SHADOW_BOLT RAID_MODE<uint32>(57374, 57464) // Blaumeux : Shadow Bolt
+#define SPELL_VOID_ZONE RAID_MODE<uint32>(28863, 57463) // Blaumeux : Void Zone
+#define SPELL_HOLY_BOLT RAID_MODE<uint32>(57376, 57465) // Zeliek : Holy Bolt
+#define SPELL_HOLY_WRATH RAID_MODE<uint32>(28883, 57466) // Zeliek: Holy Wrath
enum Actions
{
@@ -439,7 +433,7 @@ class boss_four_horsemen_baron : public CreatureScript
events.Repeat(Seconds(12));
break;
case EVENT_UNHOLYSHADOW:
- DoCastVictim(SPELL_HELPER_UNHOLY_SHADOW);
+ DoCastVictim(SPELL_UNHOLY_SHADOW);
events.Repeat(randtime(Seconds(10), Seconds(30)));
break;
}
@@ -450,9 +444,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_HELPER_UNHOLY_SHADOW)
+ if (spellInfo->Id == SPELL_UNHOLY_SHADOW)
Talk(SAY_SPECIAL);
}
};
@@ -513,7 +507,7 @@ class boss_four_horsemen_thane : public CreatureScript
case EVENT_METEOR:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 20.0f, true))
{
- DoCast(target, SPELL_HELPER_METEOR);
+ DoCast(target, SPELL_METEOR);
_shouldSay = true;
}
events.Repeat(randtime(Seconds(13), Seconds(17)));
@@ -526,9 +520,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_HELPER_METEOR)
+ if (_shouldSay && spellInfo->Id == SPELL_METEOR)
{
Talk(SAY_SPECIAL);
_shouldSay = false;
@@ -588,7 +582,7 @@ class boss_four_horsemen_lady : public CreatureScript
case EVENT_VOIDZONE:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45.0f, true))
{
- DoCast(target, SPELL_HELPER_VOID_ZONE, true);
+ DoCast(target, SPELL_VOID_ZONE, true);
Talk(SAY_SPECIAL);
}
events.Repeat(randtime(Seconds(12), Seconds(18)));
@@ -600,7 +594,7 @@ class boss_four_horsemen_lady : public CreatureScript
return;
if (Unit* target = SelectTarget(SELECT_TARGET_MINDISTANCE, 0, 45.0f, true))
- DoCast(target, SPELL_HELPER_SHADOW_BOLT);
+ DoCast(target, SPELL_SHADOW_BOLT);
else
{
DoCastAOE(SPELL_UNYIELDING_PAIN);
@@ -658,7 +652,7 @@ class boss_four_horsemen_sir : public CreatureScript
case EVENT_HOLYWRATH:
if (Unit* target = SelectTarget(SELECT_TARGET_MINDISTANCE, 0, 45.0f, true))
{
- DoCast(target, SPELL_HELPER_HOLY_WRATH, true);
+ DoCast(target, SPELL_HOLY_WRATH, true);
_shouldSay = true;
}
events.Repeat(randtime(Seconds(10), Seconds(18)));
@@ -670,7 +664,7 @@ class boss_four_horsemen_sir : public CreatureScript
return;
if (Unit* target = SelectTarget(SELECT_TARGET_MINDISTANCE, 0, 45.0f, true))
- DoCast(target, SPELL_HELPER_HOLY_BOLT);
+ DoCast(target, SPELL_HOLY_BOLT);
else
{
DoCastAOE(SPELL_CONDEMNATION);
@@ -678,9 +672,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_HELPER_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 045f47bafcf..8d3186510a8 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
@@ -909,12 +909,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 ea123ca992d..85e9fc14c98 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
@@ -65,9 +65,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 f568aa836b7..8e8b8c03585 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -279,9 +279,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 229d08ff336..75c8d5bad47 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 15172e682b8..ba7367b9488 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_MASK_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 19a71ccf656..53483222e0a 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 c7933fc602c..3cba17226ce 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -627,16 +627,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);
}
@@ -1028,9 +1028,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)))
{
@@ -1479,12 +1479,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 558c878990d..7c85a112068 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
@@ -296,7 +296,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 42b0047a12d..773132afba2 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 adc76ed213b..1f8c4996076 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
@@ -265,10 +265,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 b1535ef9e99..94f25c86336 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 de429ffedf2..8e69dbd9256 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -52,9 +52,10 @@ enum Spells
// Molten Golem
SPELL_BLAST_WAVE = 23113,
SPELL_IMMOLATION_STRIKE = 52433,
- SPELL_SHATTER = 52429,
};
+#define SPELL_SHATTER DUNGEON_MODE<uint32>(52429,59527)
+
enum Events
{
EVENT_PAUSE = 1,
@@ -440,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 == SPELL_SHATTER)
+ if (spellInfo->Id == SPELL_SHATTER)
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 2d3972208c3..b2d101565ca 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->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, 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 b6654134c07..4066be2f034 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -333,16 +333,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;
}
@@ -478,15 +478,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))
{
@@ -908,9 +912,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 cbbf40cb14f..e71c0efacbd 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 ee6ce37bbcd..d085f830a42 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 ab19d140553..8c98934e08d 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -969,9 +969,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 687cfb9dd67..4f79b562e3f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -1036,10 +1036,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 79f3731eb5e..4de47589379 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -496,9 +496,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))
@@ -1450,9 +1450,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 ec831bfcd17..1c82686cb32 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -524,7 +524,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)
{
@@ -537,9 +537,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;
}
@@ -1576,7 +1576,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 20ef0952791..752bb7f4262 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -736,12 +736,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);
@@ -947,10 +947,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 32af5e07c00..aaa13484d75 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -446,9 +446,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 363ab89f5ed..2157779fd25 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 384a26f8a91..c883d735d22 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 4e06922cf2e..ef419123100 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->RemoveUnitFlag(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 d776e0a5245..4925c379d97 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 4190f6685c5..991c63a7754 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -1313,18 +1313,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;
}
@@ -1418,10 +1421,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 6ea26a2ce8e..3f17d2b3bc5 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -538,9 +538,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());
@@ -624,9 +624,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 f85844228ca..27e825d885a 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -298,13 +298,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);
@@ -495,13 +499,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
@@ -616,9 +623,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->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToPC(true);
@@ -908,7 +915,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 d0702789a66..e0df74454f9 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;
@@ -574,16 +574,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 e5ec9d5a6ad..19f12b9100c 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -226,15 +226,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;
}
@@ -751,7 +755,7 @@ public:
}
}
- void SpellHit(Unit* caster, SpellInfo const* spellInfo) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
if (!_playerGuid.IsEmpty() || 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 7bc4aac1b53..a9a5d83a362 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);
+ }
}
}
};