diff options
| author | Shauren <shauren.trinity@gmail.com> | 2011-03-21 19:00:56 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2011-03-21 19:00:56 +0100 |
| commit | 99104ab5764354192aff3447584ac8e6e38c8635 (patch) | |
| tree | e2a3d1350469ad23c2b62e5382a3174e82e70942 /src | |
| parent | 1fc5905b89d0fe05ea07ff6215078776f150a46a (diff) | |
Scripts/Icecrown Citadel: Replace instance check with a safer one, this way if failed the creature is not idle
Diffstat (limited to 'src')
11 files changed, 80 insertions, 158 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index 070c5f31726..2c34b5bad74 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -75,7 +75,7 @@ struct ScriptedAI : public CreatureAI void SpellHit(Unit* /*caster*/, SpellEntry const* /*spell*/) {} // Called when spell hits a target - void SpellHitTarget(Unit * /*target*/, SpellEntry const* /*spell*/) {} + void SpellHitTarget(Unit* /*target*/, SpellEntry const* /*spell*/) {} //Called at waypoint reached or PointMovement end void MovementInform(uint32 /*type*/, uint32 /*id*/) {} 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 29de713b5cf..45274a71208 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -181,14 +181,6 @@ class boss_blood_council_controller : public CreatureScript { } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { events.Reset(); @@ -370,7 +362,7 @@ class boss_blood_council_controller : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_blood_council_controllerAI(creature); + return GetIcecrownCitadelAI<boss_blood_council_controllerAI>(creature); } }; @@ -393,9 +385,7 @@ class boss_prince_keleseth_icc : public CreatureScript if (data->curhealth) spawnHealth = data->curhealth; - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) + if (!me->isDead()) JustRespawned(); me->SetReactState(REACT_DEFENSIVE); @@ -569,7 +559,7 @@ class boss_prince_keleseth_icc : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_prince_kelesethAI(creature); + return GetIcecrownCitadelAI<boss_prince_kelesethAI>(creature); } }; @@ -594,9 +584,7 @@ class boss_prince_taldaram_icc : public CreatureScript if (data->curhealth) spawnHealth = data->curhealth; - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) + if (!me->isDead()) JustRespawned(); me->SetReactState(REACT_DEFENSIVE); @@ -776,7 +764,7 @@ class boss_prince_taldaram_icc : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_prince_taldaramAI(creature); + return GetIcecrownCitadelAI<boss_prince_taldaramAI>(creature); } }; @@ -799,9 +787,7 @@ class boss_prince_valanar_icc : public CreatureScript if (data->curhealth) spawnHealth = data->curhealth; - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) + if (!me->isDead()) JustRespawned(); me->SetReactState(REACT_DEFENSIVE); @@ -1000,7 +986,7 @@ class boss_prince_valanar_icc : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_prince_valanarAI(creature); + return GetIcecrownCitadelAI<boss_prince_valanarAI>(creature); } }; @@ -1017,14 +1003,6 @@ class npc_blood_queen_lana_thel : public CreatureScript instance = creature->GetInstanceScript(); } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { events.Reset(); @@ -1101,7 +1079,7 @@ class npc_blood_queen_lana_thel : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_blood_queen_lana_thelAI(creature); + return GetIcecrownCitadelAI<npc_blood_queen_lana_thelAI>(creature); } }; @@ -1186,7 +1164,7 @@ class npc_ball_of_flame : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_ball_of_flameAI(creature); + return GetIcecrownCitadelAI<npc_ball_of_flameAI>(creature); } }; @@ -1253,7 +1231,7 @@ class npc_kinetic_bomb : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_kinetic_bombAI(creature); + return GetIcecrownCitadelAI<npc_kinetic_bombAI>(creature); } }; @@ -1351,7 +1329,7 @@ class npc_dark_nucleus : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_dark_nucleusAI(creature); + return GetIcecrownCitadelAI<npc_dark_nucleusAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index ba75653ee7c..b38448d9f19 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -132,14 +132,6 @@ class boss_blood_queen_lana_thel : public CreatureScript { } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { _Reset(); @@ -472,7 +464,7 @@ class boss_blood_queen_lana_thel : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_blood_queen_lana_thelAI(creature); + return GetIcecrownCitadelAI<boss_blood_queen_lana_thelAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 262f7d516bb..66d3755ec6f 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -248,14 +248,6 @@ class boss_deathbringer_saurfang : public CreatureScript fallenChampionCount = 0; } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { _Reset(); @@ -550,7 +542,7 @@ class boss_deathbringer_saurfang : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_deathbringer_saurfangAI(creature); + return GetIcecrownCitadelAI<boss_deathbringer_saurfangAI>(creature); } }; @@ -592,11 +584,8 @@ class npc_high_overlord_saurfang_icc : public CreatureScript Talk(SAY_INTRO_HORDE_1); events.SetPhase(PHASE_INTRO_H); events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H); - if (instance) - { - deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG); - instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true); - } + deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG); + instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true); if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) deathbringer->AI()->DoAction(PHASE_INTRO_H); break; @@ -769,7 +758,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_high_overlord_saurfangAI(creature); + return GetIcecrownCitadelAI<npc_high_overlord_saurfangAI>(creature); } }; @@ -810,11 +799,8 @@ class npc_muradin_bronzebeard_icc : public CreatureScript me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); Talk(SAY_INTRO_ALLIANCE_1); events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 2500+17500+9500, 0, PHASE_INTRO_A); - if (instance) - { - deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG); - instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true); - } + deathbringerSaurfangGUID = instance->GetData64(DATA_DEATHBRINGER_SAURFANG); + instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), true); if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) deathbringer->AI()->DoAction(PHASE_INTRO_A); break; @@ -923,7 +909,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_muradin_bronzebeard_iccAI(creature); + return GetIcecrownCitadelAI<npc_muradin_bronzebeard_iccAI>(creature); } }; @@ -968,7 +954,7 @@ class npc_saurfang_event : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_saurfang_eventAI(creature); + return GetIcecrownCitadelAI<npc_saurfang_eventAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index b9237db5d39..3a0de0d7fc4 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -87,14 +87,6 @@ class boss_festergut : public CreatureScript gasDummyGUID = 0; } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { _Reset(); @@ -281,7 +273,7 @@ class boss_festergut : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_festergutAI(creature); + return GetIcecrownCitadelAI<boss_festergutAI>(creature); } }; @@ -337,8 +329,7 @@ class npc_stinky_icc : public CreatureScript void JustDied(Unit* /*who*/) { - uint64 festergutGUID = instance ? instance->GetData64(DATA_FESTERGUT) : 0; - if (Creature* festergut = me->GetCreature(*me, festergutGUID)) + if (Creature* festergut = me->GetCreature(*me, instance->GetData64(DATA_FESTERGUT))) if (festergut->isAlive()) festergut->AI()->Talk(SAY_STINKY_DEAD); } @@ -350,7 +341,7 @@ class npc_stinky_icc : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_stinky_iccAI(creature); + return GetIcecrownCitadelAI<npc_stinky_iccAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index 8102d026cd7..6b5ab146e4b 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -220,14 +220,6 @@ class boss_lady_deathwhisper : public CreatureScript dominateMindCount = RAID_MODE<uint8>(0, 1, 1, 3); } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { _Reset(); @@ -628,7 +620,7 @@ class boss_lady_deathwhisper : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_lady_deathwhisperAI(creature); + return GetIcecrownCitadelAI<boss_lady_deathwhisperAI>(creature); } }; @@ -707,7 +699,7 @@ class npc_cult_fanatic : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_cult_fanaticAI(creature); + return GetIcecrownCitadelAI<npc_cult_fanaticAI>(creature); } }; @@ -793,7 +785,7 @@ class npc_cult_adherent : public CreatureScript CreatureAI* GetAI(Creature* pCreature) const { - return new npc_cult_adherentAI(pCreature); + return GetIcecrownCitadelAI<npc_cult_adherentAI>(pCreature); } }; @@ -833,7 +825,7 @@ class npc_vengeful_shade : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_vengeful_shadeAI(creature); + return GetIcecrownCitadelAI<npc_vengeful_shadeAI>(creature); } }; @@ -953,7 +945,7 @@ class npc_darnavan : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_darnavanAI(creature); + return GetIcecrownCitadelAI<npc_darnavanAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index f3b7605e179..e709b3a53e7 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -93,14 +93,6 @@ class boss_lord_marrowgar : public CreatureScript boneSlice = false; } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { _Reset(); @@ -260,7 +252,7 @@ class boss_lord_marrowgar : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_lord_marrowgarAI(creature); + return GetIcecrownCitadelAI<boss_lord_marrowgarAI>(creature); } }; @@ -334,7 +326,7 @@ class npc_coldflame : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_coldflameAI(creature); + return GetIcecrownCitadelAI<npc_coldflameAI>(creature); } }; @@ -392,7 +384,7 @@ class npc_bone_spike : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_bone_spikeAI(creature); + return GetIcecrownCitadelAI<npc_bone_spikeAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 464c90a553a..4b60b306048 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -190,14 +190,6 @@ class boss_professor_putricide : public CreatureScript phase = PHASE_NONE; } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { if (!(events.GetPhaseMask() & PHASE_MASK_NOT_SELF)) @@ -690,7 +682,7 @@ class boss_professor_putricide : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_professor_putricideAI(creature); + return GetIcecrownCitadelAI<boss_professor_putricideAI>(creature); } }; @@ -751,7 +743,7 @@ class npc_volatile_ooze : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_volatile_oozeAI(creature); + return GetIcecrownCitadelAI<npc_volatile_oozeAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 26946f9ab25..51060932f56 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -88,14 +88,6 @@ class boss_rotface : public CreatureScript infectionCooldown = 14000; } - void InitializeAI() - { - if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName)) - me->IsAIEnabled = false; - else if (!me->isDead()) - Reset(); - } - void Reset() { _Reset(); @@ -237,7 +229,7 @@ class boss_rotface : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new boss_rotfaceAI(creature); + return GetIcecrownCitadelAI<boss_rotfaceAI>(creature); } }; @@ -287,7 +279,7 @@ class npc_little_ooze : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_little_oozeAI(creature); + return GetIcecrownCitadelAI<npc_little_oozeAI>(creature); } }; @@ -298,7 +290,7 @@ class npc_big_ooze : public CreatureScript struct npc_big_oozeAI : public ScriptedAI { - npc_big_oozeAI(Creature* creature) : ScriptedAI(creature) + npc_big_oozeAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript()) { } @@ -311,16 +303,14 @@ class npc_big_ooze : public CreatureScript DoCast(me, SPELL_GREEN_ABOMINATION_HITTIN__YA_PROC, true); events.ScheduleEvent(EVENT_STICKY_OOZE, 5000); // register in Rotface's summons - not summoned with Rotface as owner - if (InstanceScript* instance = me->GetInstanceScript()) - if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) - rotface->AI()->JustSummoned(me); + if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) + rotface->AI()->JustSummoned(me); } void JustDied(Unit* /*killer*/) { - if (InstanceScript* instance = me->GetInstanceScript()) - if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) - rotface->AI()->SummonedCreatureDespawn(me); + if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) + rotface->AI()->SummonedCreatureDespawn(me); me->DespawnOrUnsummon(); } @@ -355,11 +345,12 @@ class npc_big_ooze : public CreatureScript private: EventMap events; + InstanceScript* instance; }; CreatureAI* GetAI(Creature* creature) const { - return new npc_big_oozeAI(creature); + return GetIcecrownCitadelAI<npc_big_oozeAI>(creature); } }; @@ -414,8 +405,7 @@ class npc_precious_icc : public CreatureScript void JustDied(Unit* /*who*/) { - uint64 rotfaceGUID = instance ? instance->GetData64(DATA_ROTFACE) : 0; - if (Creature* rotface = Unit::GetCreature(*me, rotfaceGUID)) + if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) if (rotface->isAlive()) rotface->AI()->Talk(SAY_PRECIOUS_DIES); } @@ -427,7 +417,7 @@ class npc_precious_icc : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_precious_iccAI(creature); + return GetIcecrownCitadelAI<npc_precious_iccAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index cc5f53f4f53..32420c9261d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -31,36 +31,36 @@ enum Texts { // Highlord Tirion Fordring (at Light's Hammer) - SAY_TIRION_INTRO_1 = 0, - SAY_TIRION_INTRO_2 = 1, - SAY_TIRION_INTRO_3 = 2, - SAY_TIRION_INTRO_4 = 3, - SAY_TIRION_INTRO_H_5 = 4, - SAY_TIRION_INTRO_A_5 = 5, + SAY_TIRION_INTRO_1 = 0, + SAY_TIRION_INTRO_2 = 1, + SAY_TIRION_INTRO_3 = 2, + SAY_TIRION_INTRO_4 = 3, + SAY_TIRION_INTRO_H_5 = 4, + SAY_TIRION_INTRO_A_5 = 5, // The Lich King (at Light's Hammer) - SAY_LK_INTRO_1 = 0, - SAY_LK_INTRO_2 = 1, - SAY_LK_INTRO_3 = 2, - SAY_LK_INTRO_4 = 3, - SAY_LK_INTRO_5 = 4, + SAY_LK_INTRO_1 = 0, + SAY_LK_INTRO_2 = 1, + SAY_LK_INTRO_3 = 2, + SAY_LK_INTRO_4 = 3, + SAY_LK_INTRO_5 = 4, // Highlord Bolvar Fordragon (at Light's Hammer) - SAY_BOLVAR_INTRO_1 = 0, + SAY_BOLVAR_INTRO_1 = 0, // High Overlord Saurfang (at Light's Hammer) - SAY_SAURFANG_INTRO_1 = 15, - SAY_SAURFANG_INTRO_2 = 16, - SAY_SAURFANG_INTRO_3 = 17, - SAY_SAURFANG_INTRO_4 = 18, + SAY_SAURFANG_INTRO_1 = 15, + SAY_SAURFANG_INTRO_2 = 16, + SAY_SAURFANG_INTRO_3 = 17, + SAY_SAURFANG_INTRO_4 = 18, // Muradin Bronzebeard (at Light's Hammer) - SAY_MURADIN_INTRO_1 = 13, - SAY_MURADIN_INTRO_2 = 14, - SAY_MURADIN_INTRO_3 = 15, + SAY_MURADIN_INTRO_1 = 13, + SAY_MURADIN_INTRO_2 = 14, + SAY_MURADIN_INTRO_3 = 15, // Rotting Frost Giant - EMOTE_DEATH_PLAGUE_WARNING = 0, + EMOTE_DEATH_PLAGUE_WARNING = 0, }; enum Spells @@ -152,9 +152,6 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript // of The Damned SAI void SetData(uint32 type, uint32 data) { - if (!instance) - return; - if (type == DATA_DAMNED_KILLS && data == 1) { if (++_damnedKills == 2) @@ -338,7 +335,7 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_highlord_tirion_fordringAI(creature); + return GetIcecrownCitadelAI<npc_highlord_tirion_fordringAI>(creature); } }; @@ -410,7 +407,7 @@ class npc_rotting_frost_giant : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_rotting_frost_giantAI(creature); + return GetIcecrownCitadelAI<npc_rotting_frost_giantAI>(creature); } }; @@ -459,7 +456,7 @@ class npc_frost_freeze_trap : public CreatureScript CreatureAI* GetAI(Creature* creature) const { - return new npc_frost_freeze_trapAI(creature); + return GetIcecrownCitadelAI<npc_frost_freeze_trapAI>(creature); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index 9016fc95a48..4fd10463dcc 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -19,6 +19,8 @@ #define ICECROWN_CITADEL_H_ #include "SpellScript.h" +#include "Map.h" +#include "Creature.h" #define ICCScriptName "instance_icecrown_citadel" @@ -370,4 +372,14 @@ class spell_trigger_spell_from_caster : public SpellScriptLoader uint32 _triggerId; }; +template<class AI> +CreatureAI* GetIcecrownCitadelAI(Creature* creature) +{ + if (InstanceMap* instance = creature->GetMap()->ToInstanceMap()) + if (instance->GetInstanceScript()) + if (instance->GetScriptId() == GetScriptId(ICCScriptName)) + return new AI(creature); + return NULL; +} + #endif // ICECROWN_CITADEL_H_ |
