aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2019-05-23 21:08:29 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-07 00:02:03 +0100
commit5f545f540216d3b94c26e4aeda50c8bb8d5c3d74 (patch)
treef949771047c43242881593e94522783851415e5c /src/server/scripts/Northrend
parent54044bda8219e712eaec6148af4db6523386cc0f (diff)
3.3.5 gameobject summoner (#23289)
* Scripts/Misc: Change IsSummonedBy(Unit*) to IsSummonedBy(WorldObject*) * Scripts/Misc: Fix build * Core/TempSummons: Rename GetSummoner() to GetSummonerUnit() * Core/TempSummons: Add support to TempSummons::GetSummoner() to return GameObject too * Fix build * Core/TempSummons: Allow GameObject to be owner of TempSummon * Core/TempSummons: Add support to SAI for GameObject owner of TempSummon * Scripts/Misc: Fix no-pch build * Core/TempSummons: Implement PR comments (cherry picked from commit 797fba98e95da1236465a15061ec4122d7ec33fe)
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp12
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp6
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp2
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp12
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp7
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp23
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp2
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp8
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp2
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp5
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp12
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp8
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp5
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp2
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp2
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp20
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp4
25 files changed, 86 insertions, 64 deletions
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 1cda08e3a89..35024afece3 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
@@ -898,7 +898,7 @@ class npc_gatewatcher_web_wrap : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
if (TempSummon* meSummon = me->ToTempSummon())
- if (Unit* summoner = meSummon->GetSummoner())
+ if (Unit* summoner = meSummon->GetSummonerUnit())
summoner->RemoveAurasDueToSpell(SPELL_WEB_WRAP_WRAPPED);
}
};
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
index a9c9616ccf4..c5eb2ebf70a 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
@@ -202,7 +202,7 @@ class npc_onyx_flamecaller : public CreatureScript
void EnterEvadeMode(EvadeReason /*why*/) override { }
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
// Let Zarithrian count as summoner.
if (Creature* zarithrian = _instance->GetCreature(DATA_GENERAL_ZARITHRIAN))
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index e6fcd33fbdf..cc6392c6b69 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -1013,7 +1013,7 @@ class npc_meteor_strike_initial : public CreatureScript
}
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
Creature* owner = summoner->ToCreature();
if (!owner)
@@ -1085,7 +1085,7 @@ class npc_meteor_strike : public CreatureScript
}
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
// Let Halion Controller count as summoner.
if (Creature* controller = _instance->GetCreature(DATA_HALION_CONTROLLER))
@@ -1148,7 +1148,7 @@ class npc_meteor_strike_flame : public CreatureScript
_events.ScheduleEvent(EVENT_SPAWN_METEOR_FLAME, Milliseconds(800));
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
// Let Halion Controller count as summoner.
if (Creature* controller = _instance->GetCreature(DATA_HALION_CONTROLLER))
@@ -1225,7 +1225,7 @@ class npc_combustion_consumption : public CreatureScript
}
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
// Let Halion Controller count as summoner
if (Creature* controller = _instance->GetCreature(DATA_HALION_CONTROLLER))
@@ -1276,7 +1276,7 @@ class npc_living_inferno : public CreatureScript
{
npc_living_infernoAI(Creature* creature) : ScriptedAI(creature) { }
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
DoZoneInCombat();
me->CastSpell(me, SPELL_BLAZING_AURA, true);
@@ -1325,7 +1325,7 @@ class npc_living_ember : public CreatureScript
{
npc_living_emberAI(Creature* creature) : ScriptedAI(creature) { }
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
if (InstanceScript* instance = me->GetInstanceScript())
if (Creature* controller = instance->GetCreature(DATA_HALION_CONTROLLER))
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
index 11070f62650..11b36eda06b 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
@@ -487,7 +487,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
if (TempSummon* summ = me->ToTempSummon())
- if (Unit* summoner = summ->GetSummoner())
+ if (Unit* summoner = summ->GetSummonerUnit())
if (summoner->IsAlive())
summoner->GetAI()->SetData(1, 0);
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index d9fbd785ef6..7918d2ec28f 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -231,7 +231,7 @@ class npc_corrupted_soul_fragment : public CreatureScript
instance = me->GetInstanceScript();
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
if (Creature* bronjahm = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BRONJAHM)))
bronjahm->AI()->JustSummoned(me);
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
index 0158caf9936..06940cc0c0e 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
@@ -2180,7 +2180,7 @@ struct npc_escape_event_trash : public ScriptedAI
me->DespawnOrUnsummon();
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
DoZoneInCombat(me);
if (Creature* leader = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_ESCAPE_LEADER)))
@@ -2212,7 +2212,7 @@ class npc_raging_ghoul : public CreatureScript
_events.ScheduleEvent(EVENT_RAGING_GHOUL_JUMP, 5s);
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
me->CastSpell(me, SPELL_RAGING_GHOUL_SPAWN, true);
me->SetReactState(REACT_PASSIVE);
@@ -2278,7 +2278,7 @@ class npc_risen_witch_doctor : public CreatureScript
_events.ScheduleEvent(EVENT_RISEN_WITCH_DOCTOR_CURSE, 7s);
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
me->CastSpell(me, SPELL_RISEN_WITCH_DOCTOR_SPAWN, true);
me->SetReactState(REACT_PASSIVE);
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
index e723d921a44..f32e40b1f3c 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
@@ -244,7 +244,7 @@ class npc_pit_of_saron_icicle : public CreatureScript
me->SetDisplayFromModel(0);
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
_summonerGUID = summoner->GetGUID();
diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
index 09469ca8df9..4797f769b03 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
@@ -247,7 +247,7 @@ public:
target->CastSpell(target, SPELL_SNAKE_WRAP, true);
if (TempSummon* _me = me->ToTempSummon())
- if (Unit* summoner = _me->GetSummoner())
+ if (Unit* summoner = _me->GetSummonerUnit())
if (Creature* sladran = summoner->ToCreature())
sladran->AI()->SetGUID(target->GetGUID(), DATA_SNAKES_WHYD_IT_HAVE_TO_BE_SNAKES);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index a4a31898935..cb02f0df035 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -374,9 +374,10 @@ class npc_coldflame : public CreatureScript
{
}
- void IsSummonedBy(Unit* owner) override
+ void IsSummonedBy(WorldObject* ownerWO) override
{
- if (owner->GetTypeId() != TYPEID_UNIT)
+ Creature* owner = ownerWO->ToCreature();
+ if (!owner)
return;
Position pos;
@@ -450,7 +451,7 @@ class npc_bone_spike : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
if (TempSummon* summ = me->ToTempSummon())
- if (Unit* trapped = summ->GetSummoner())
+ if (Unit* trapped = summ->GetSummonerUnit())
trapped->RemoveAurasDueToSpell(SPELL_IMPALED);
me->DespawnOrUnsummon();
@@ -462,8 +463,11 @@ class npc_bone_spike : public CreatureScript
victim->RemoveAurasDueToSpell(SPELL_IMPALED);
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summonerWO) override
{
+ Unit* summoner = summonerWO->ToUnit();
+ if (!summoner)
+ return;
DoCast(summoner, SPELL_IMPALED);
summoner->CastSpell(me, SPELL_RIDE_VEHICLE, true);
_events.ScheduleEvent(EVENT_FAIL_BONED, 8s);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index 074458eb88f..d30c9e949bc 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -258,8 +258,11 @@ class npc_little_ooze : public CreatureScript
{
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summonerWO) override
{
+ Unit* summoner = summonerWO->ToUnit();
+ if (!summoner)
+ return;
DoCast(me, SPELL_LITTLE_OOZE_COMBINE, true);
DoCast(me, SPELL_WEAK_RADIATING_OOZE, true);
DoCast(me, SPELL_GREEN_ABOMINATION_HITTIN__YA_PROC, true);
@@ -309,7 +312,7 @@ class npc_big_ooze : public CreatureScript
{
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
DoCast(me, SPELL_LARGE_OOZE_COMBINE, true);
DoCast(me, SPELL_LARGE_OOZE_BUFF_COMBINE, 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 74f6d92b9f5..2e7fba50cad 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -1381,7 +1381,7 @@ class npc_raging_spirit : public CreatureScript
DoCast(me, SPELL_PLAGUE_AVOIDANCE, true);
DoCast(me, SPELL_RAGING_SPIRIT_VISUAL, true);
if (TempSummon* summon = me->ToTempSummon())
- if (Unit* summoner = summon->GetSummoner())
+ if (Unit* summoner = summon->GetSummonerUnit())
summoner->CastSpell(me, SPELL_RAGING_SPIRIT_VISUAL_CLONE, true);
DoCast(me, SPELL_BOSS_HITTIN_YA, true);
}
@@ -1399,7 +1399,7 @@ class npc_raging_spirit : public CreatureScript
}
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
// player is the spellcaster so register summon manually
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
@@ -1478,7 +1478,7 @@ class npc_valkyr_shadowguard : public CreatureScript
DoCast(me, SPELL_WINGS_OF_THE_DAMNED, false);
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
_events.Reset();
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 2500ms);
@@ -1628,8 +1628,11 @@ class npc_strangulate_vehicle : public CreatureScript
{
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summonerWO) override
{
+ Unit* summoner = summonerWO->ToUnit();
+ if (!summoner)
+ return;
me->SetFacingToObject(summoner);
DoCast(summoner, SPELL_HARVEST_SOUL_VEHICLE);
_events.Reset();
@@ -1648,7 +1651,7 @@ class npc_strangulate_vehicle : public CreatureScript
if (TempSummon* summ = me->ToTempSummon())
{
- if (Unit* summoner = summ->GetSummoner())
+ if (Unit* summoner = summ->GetSummonerUnit())
{
DoCast(summoner, SPELL_HARVEST_SOUL_TELEPORT_BACK);
summoner->RemoveAurasDueToSpell(SPELL_HARVEST_SOUL_DAMAGE_AURA);
@@ -1675,7 +1678,7 @@ class npc_strangulate_vehicle : public CreatureScript
me->GetMotionMaster()->MoveIdle();
if (TempSummon* summ = me->ToTempSummon())
{
- if (Unit* summoner = summ->GetSummoner())
+ if (Unit* summoner = summ->GetSummonerUnit())
{
summoner->CastSpell(nullptr, SPELL_HARVEST_SOUL_VISUAL, true);
summoner->ExitVehicle(summoner);
@@ -1799,7 +1802,7 @@ class npc_terenas_menethil : public CreatureScript
}
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
_events.Reset();
_events.SetPhase(PHASE_OUTRO);
@@ -1947,7 +1950,7 @@ class npc_spirit_bomb : public CreatureScript
{
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
float destX, destY, destZ;
me->GetPosition(destX, destY);
@@ -2008,7 +2011,7 @@ class npc_broken_frostmourne : public CreatureScript
_events.Reset();
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
_events.SetPhase(PHASE_OUTRO);
_events.ScheduleEvent(EVENT_OUTRO_KNOCK_BACK, 3s, 0, PHASE_OUTRO);
@@ -2824,7 +2827,7 @@ class spell_the_lich_king_vile_spirit_damage_target_search : public SpellScriptL
// this spell has SPELL_AURA_BLOCK_SPELL_FAMILY so every next cast of this
// searcher spell will be blocked
if (TempSummon* summon = GetCaster()->ToTempSummon())
- if (Unit* summoner = summon->GetSummoner())
+ if (Unit* summoner = summon->GetSummonerUnit())
summoner->GetAI()->SetData(DATA_VILE, 1);
GetCaster()->CastSpell(nullptr, SPELL_SPIRIT_BURST, true);
GetCaster()->ToCreature()->DespawnOrUnsummon(3000);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index 9e5d3f808f4..872877d30fb 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -876,7 +876,7 @@ class npc_suppresser : public CreatureScript
_events.Reset();
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)))
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
index f98fbf3e7ae..c6a40453c47 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
@@ -126,7 +126,7 @@ class npc_grobbulus_poison_cloud : public CreatureScript
creature->SetReactState(REACT_PASSIVE);
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
// no visual when casting in ctor or Reset()
DoCast(me, SPELL_POISON_CLOUD_PASSIVE, true);
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 8338dc58aae..15197ea1316 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -1394,7 +1394,7 @@ class npc_scion_of_eternity : public CreatureScript
_events.Reset();
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
_events.ScheduleEvent(EVENT_ARCANE_BARRAGE, 14s, 29s);
}
@@ -1457,7 +1457,7 @@ public:
me->SetReactState(REACT_PASSIVE);
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
if (Creature* creature = summoner->ToCreature())
creature->AI()->SetGUID(me->GetGUID(), DATA_LAST_OVERLOAD_GUID);
@@ -1510,7 +1510,7 @@ public:
{
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
_summoner.Clear();
if (summoner->GetTypeId() == TYPEID_PLAYER)
@@ -1576,7 +1576,7 @@ class npc_static_field : public CreatureScript
{
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
// For some great reason the spell doesn't time it...
me->DespawnOrUnsummon(30*IN_MILLISECONDS);
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
index e40f18549d3..c22c998a11c 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
@@ -207,7 +207,7 @@ public:
_despawntimer = 0;
}
- void IsSummonedBy(Unit* owner) override
+ void IsSummonedBy(WorldObject* owner) override
{
switch (me->GetEntry())
{
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
index b7bc61a937e..7d1e2c605aa 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
@@ -219,7 +219,7 @@ class npc_image_belgaristrasz : public CreatureScript
{
npc_image_belgaristraszAI(Creature* creature) : ScriptedAI(creature) { }
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
if (summoner->GetEntry() == NPC_VAROS)
{
@@ -285,7 +285,7 @@ class npc_ruby_emerald_amber_drake : public CreatureScript
}
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
if (_instance->GetBossState(DATA_EREGOS) == IN_PROGRESS)
if (Creature* eregos = me->FindNearestCreature(NPC_EREGOS, 450.0f, true))
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index e81b5c5e687..b2812209cfc 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -228,9 +228,10 @@ class npc_iron_roots : public CreatureScript
me->SetReactState(REACT_PASSIVE);
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summonerWO) override
{
- if (summoner->GetTypeId() != TYPEID_PLAYER)
+ Player* summoner = summonerWO->ToPlayer();
+ if (!summoner)
return;
// Summoner is a player, who should have root aura on self
summonerGUID = summoner->GetGUID();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index aed33ebfa88..9b904f41709 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -231,8 +231,12 @@ class npc_flash_freeze : public CreatureScript
checkDespawnTimer -= diff;
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summonerWO) override
{
+ Unit* summoner = summonerWO->ToUnit();
+ if (!summoner)
+ return;
+
targetGUID = summoner->GetGUID();
me->SetInCombatWith(summoner);
AddThreat(summoner, 250.0f);
@@ -273,8 +277,12 @@ class npc_ice_block : public CreatureScript
ObjectGuid targetGUID;
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summonerWO) override
{
+ Unit* summoner = summonerWO->ToUnit();
+ if (!summoner)
+ return;
+
targetGUID = summoner->GetGUID();
summoner->AddUnitFlag(UnitFlags(UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED));
summoner->SetControlled(true, UNIT_STATE_ROOT);
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 4b799505340..1214494c3b2 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -1209,7 +1209,7 @@ class npc_guardian_of_yogg_saron : public CreatureScript
DoMeleeAttackIfReady();
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
if (summoner->GetEntry() != NPC_OMINOUS_CLOUD)
return;
@@ -1316,7 +1316,7 @@ class npc_constrictor_tentacle : public CreatureScript
UpdateVictim();
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->JustSummoned(me);
@@ -1580,7 +1580,7 @@ class npc_yogg_saron_keeper : public CreatureScript
{
npc_yogg_saron_keeperAI(Creature* creature) : ScriptedAI(creature) { }
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
DoCast(SPELL_SIMPLE_TELEPORT_KEEPERS);
}
@@ -1703,7 +1703,7 @@ class npc_yogg_saron_illusions : public CreatureScript
{
npc_yogg_saron_illusionsAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
switch (_instance->GetData(DATA_ILLUSION))
{
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
index 81e0db1bb24..7f752fe15c7 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
@@ -88,8 +88,11 @@ class npc_frost_tomb : public CreatureScript
_instance = creature->GetInstanceScript();
}
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summonerWO) override
{
+ Unit* summoner = summonerWO->ToUnit();
+ if (!summoner)
+ return;
DoCast(summoner, SPELL_FROST_TOMB, true);
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index cbc711ed82b..32af5e07c00 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -487,7 +487,7 @@ struct npc_skadi_trashAI : public ScriptedAI
ScheduleTasks();
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
skadi->AI()->JustSummoned(me);
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
index 41bd211d2d4..f6ea3d1df53 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
@@ -149,7 +149,7 @@ struct npc_frozen_orb : public ScriptedAI
{
npc_frozen_orb(Creature* creature) : ScriptedAI(creature) { }
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
DoCastSelf(SPELL_FROZEN_ORB_AURA, true);
DoCastSelf(SPELL_FROZEN_ORB_DMG, true);
diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
index 57ba6383961..c8db2218821 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
@@ -169,7 +169,7 @@ class npc_void_sentry : public CreatureScript
me->SetReactState(REACT_PASSIVE);
}
- void IsSummonedBy(Unit* /*summoner*/) override
+ void IsSummonedBy(WorldObject* /*summoner*/) override
{
me->CastSpell(me, SPELL_SUMMON_VOID_SENTRY_BALL, true);
}
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 9db47c40a6a..f75a097b1a7 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -485,7 +485,7 @@ public:
if (TempSummon* summon = me->ToTempSummon())
if (summon->IsSummon())
- if (Unit* temp = summon->GetSummoner())
+ if (Unit* temp = summon->GetSummonerUnit())
if (Player* player = temp->ToPlayer())
player->KilledMonsterCredit(me->GetEntry());
@@ -1132,7 +1132,7 @@ public:
return;
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
ENSURE_AI(npc_thassarian::npc_thassarianAI, summoner->ToCreature()->AI())->arthasInPosition = true;
}
};
@@ -1164,7 +1164,7 @@ public:
me->AddUnitState(UNIT_STATE_STUNNED);
me->CastSpell(me, SPELL_STUN, true);
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
ENSURE_AI(npc_thassarian::npc_thassarianAI, summoner->ToCreature()->AI())->arlosInPosition = true;
}
};
@@ -1226,7 +1226,7 @@ public:
return;
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
ENSURE_AI(npc_thassarian::npc_thassarianAI, summoner->ToCreature()->AI())->talbotInPosition = true;
}
@@ -1343,7 +1343,7 @@ public:
me->CastSpell(me, SPELL_STUN, true);
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
ENSURE_AI(npc_thassarian::npc_thassarianAI, summoner->GetAI())->leryssaInPosition = true;
bDone = true;
}
@@ -1351,7 +1351,7 @@ public:
{
me->SetStandState(UNIT_STAND_STATE_SIT);
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
summoner->SetStandState(UNIT_STAND_STATE_SIT);
phaseTimer = 1500;
phase = 1;
@@ -1368,7 +1368,7 @@ public:
{
case 1:
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
if (Creature* thassarian = summoner->ToCreature())
thassarian->AI()->Talk(SAY_THASSARIAN_4);
phaseTimer = 5000;
@@ -1381,7 +1381,7 @@ public:
break;
case 3:
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
if (Creature* thassarian = summoner->ToCreature())
thassarian->AI()->Talk(SAY_THASSARIAN_5);
phaseTimer = 5000;
@@ -1394,7 +1394,7 @@ public:
break;
case 5:
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
if (Creature* thassarian = summoner->ToCreature())
thassarian->AI()->Talk(SAY_THASSARIAN_6);
phaseTimer = 5000;
@@ -1408,7 +1408,7 @@ public:
break;
case 7:
if (me->IsSummon())
- if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Unit* summoner = me->ToTempSummon()->GetSummonerUnit())
if (Creature* thassarian = summoner->ToCreature())
{
thassarian->AI()->Talk(SAY_THASSARIAN_7);
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 5e84b9a2a21..3d28c33dace 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -723,7 +723,7 @@ class npc_frostbrood_skytalon : public CreatureScript
EventMap events;
- void IsSummonedBy(Unit* summoner) override
+ void IsSummonedBy(WorldObject* summoner) override
{
me->GetMotionMaster()->MovePoint(POINT_GRAB_DECOY, summoner->GetPositionX(), summoner->GetPositionY(), summoner->GetPositionZ());
}
@@ -735,7 +735,7 @@ class npc_frostbrood_skytalon : public CreatureScript
if (id == POINT_GRAB_DECOY)
if (TempSummon* summon = me->ToTempSummon())
- if (Unit* summoner = summon->GetSummoner())
+ if (Unit* summoner = summon->GetSummonerUnit())
DoCast(summoner, SPELL_GRAB);
}