diff options
| author | Shauren <shauren.trinity@gmail.com> | 2017-05-28 16:34:44 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-05-28 16:34:44 +0200 |
| commit | a0a158b5b851db7e2c16819ec89e913d914a3aba (patch) | |
| tree | e2170b14fe7bba2bf70c30500eb129c6eadc2c20 /src/server/scripts/Kalimdor | |
| parent | d427fed13b49aec1722544b3ca72a0a41160bbe3 (diff) | |
Core/Scripts: Include cleanup
Diffstat (limited to 'src/server/scripts/Kalimdor')
98 files changed, 610 insertions, 434 deletions
diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp index bccaf0e5246..0300eccc116 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp @@ -16,11 +16,12 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" #include "blackfathom_deeps.h" -#include "ScriptedEscortAI.h" +#include "GameObject.h" +#include "InstanceScript.h" #include "Player.h" +#include "ScriptedEscortAI.h" +#include "ScriptedGossip.h" #include "SpellScript.h" enum Spells @@ -74,7 +75,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_blackfathom_deeps_eventAI>(creature); + return GetBlackfathomDeepsAI<npc_blackfathom_deeps_eventAI>(creature); } struct npc_blackfathom_deeps_eventAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h index 98daa49ebb5..41884b0143c 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h @@ -19,6 +19,9 @@ #ifndef BFD_H_ #define BFD_H_ +#include "CreatureAIImpl.h" + +#define BFDScriptName "instance_blackfathom_deeps" #define DataHeader "BFD" uint32 const EncounterCount = 3; @@ -68,4 +71,10 @@ enum BFDGameObjectIds GO_ALTAR_OF_THE_DEEPS = 103016 }; +template<typename AI> +inline AI* GetBlackfathomDeepsAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, BFDScriptName); +} + #endif // BFD_H_ diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp index cee400603e1..56b0f9e2624 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_aku_mai.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "blackfathom_deeps.h" +#include "ScriptedCreature.h" enum Spells { @@ -88,7 +88,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_aku_maiAI>(creature); + return GetBlackfathomDeepsAI<boss_aku_maiAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp index a287751e3cd..e9f6943a9a7 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "blackfathom_deeps.h" +#include "ScriptedCreature.h" enum Spells { @@ -66,7 +66,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_gelihastAI>(creature); + return GetBlackfathomDeepsAI<boss_gelihastAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp index 68d898fb611..2868965f12f 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "blackfathom_deeps.h" +#include "ScriptedCreature.h" enum Spells { @@ -101,7 +101,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_kelrisAI>(creature); + return GetBlackfathomDeepsAI<boss_kelrisAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp index eca757c6177..96b55fdc8e6 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp @@ -24,8 +24,11 @@ SDCategory: Blackfathom Deeps EndScriptData */ #include "ScriptMgr.h" -#include "InstanceScript.h" #include "blackfathom_deeps.h" +#include "Creature.h" +#include "GameObject.h" +#include "InstanceScript.h" +#include "Map.h" const Position LorgusPosition[4] = { @@ -47,7 +50,7 @@ const Position SpawnsLocation[] = class instance_blackfathom_deeps : public InstanceMapScript { public: - instance_blackfathom_deeps() : InstanceMapScript("instance_blackfathom_deeps", 48) { } + instance_blackfathom_deeps() : InstanceMapScript(BFDScriptName, 48) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp index 1f41c7a25e6..91c3744a7e4 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp @@ -16,10 +16,11 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "SpellScript.h" #include "hyjal.h" #include "hyjal_trash.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" +#include "SpellScript.h" enum Spells { @@ -49,7 +50,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_anetheronAI>(creature); + return GetHyjalAI<boss_anetheronAI>(creature); } struct boss_anetheronAI : public hyjal_trashAI @@ -186,7 +187,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_towering_infernalAI>(creature); + return GetHyjalAI<npc_towering_infernalAI>(creature); } struct npc_towering_infernalAI : public ScriptedAI @@ -274,9 +275,7 @@ class spell_anetheron_vampiric_aura : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_VAMPIRIC_AURA_HEAL)) - return false; - return true; + return ValidateSpellInfo({ SPELL_VAMPIRIC_AURA_HEAL }); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index d36e7fda284..38fb4c8a68e 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -24,10 +24,11 @@ SDCategory: Caverns of Time, Mount Hyjal EndScriptData */ #include "ScriptMgr.h" +#include "hyjal.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" #include "ScriptedCreature.h" #include "SpellScript.h" -#include "Player.h" -#include "hyjal.h" enum Texts { @@ -99,7 +100,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_ancient_wispAI>(creature); + return GetHyjalAI<npc_ancient_wispAI>(creature); } struct npc_ancient_wispAI : public ScriptedAI @@ -162,7 +163,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_doomfireAI(creature); + return GetHyjalAI<npc_doomfireAI>(creature); } struct npc_doomfireAI : public ScriptedAI @@ -191,7 +192,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_doomfire_targettingAI(creature); + return GetHyjalAI<npc_doomfire_targettingAI>(creature); } struct npc_doomfire_targettingAI : public ScriptedAI @@ -530,7 +531,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_archimondeAI>(creature); + return GetHyjalAI<boss_archimondeAI>(creature); } }; @@ -546,9 +547,7 @@ class spell_archimonde_drain_world_tree_dummy : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_DRAIN_WORLD_TREE_TRIGGERED)) - return false; - return true; + return ValidateSpellInfo({ SPELL_DRAIN_WORLD_TREE_TRIGGERED }); } void HandleScript(SpellEffIndex /*effIndex*/) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp index e449f19681f..91218ae09c8 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp @@ -16,9 +16,10 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "hyjal.h" #include "hyjal_trash.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" enum Spells { @@ -48,7 +49,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_azgalorAI>(creature); + return GetHyjalAI<boss_azgalorAI>(creature); } struct boss_azgalorAI : public hyjal_trashAI @@ -190,7 +191,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_lesser_doomguardAI>(creature); + return GetHyjalAI<npc_lesser_doomguardAI>(creature); } struct npc_lesser_doomguardAI : public hyjal_trashAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp index 51b32c2f20f..15ecb603ddd 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp @@ -16,11 +16,12 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "SpellAuraEffects.h" -#include "SpellScript.h" #include "hyjal.h" #include "hyjal_trash.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" enum Spells { @@ -49,7 +50,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_kazrogalAI>(creature); + return GetHyjalAI<boss_kazrogalAI>(creature); } struct boss_kazrogalAI : public hyjal_trashAI @@ -206,9 +207,7 @@ class spell_mark_of_kazrogal : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_MARK_DAMAGE)) - return false; - return true; + return ValidateSpellInfo({ SPELL_MARK_DAMAGE }); } void OnPeriodic(AuraEffect const* aurEff) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp index b6891597076..42916c45218 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp @@ -16,9 +16,10 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "hyjal.h" #include "hyjal_trash.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" enum Spells { @@ -44,7 +45,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_rage_winterchillAI>(creature); + return GetHyjalAI<boss_rage_winterchillAI>(creature); } struct boss_rage_winterchillAI : public hyjal_trashAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp index 6c22a3c716e..40f5b3673e9 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp @@ -30,11 +30,11 @@ npc_tyrande_whisperwind EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" #include "hyjalAI.h" -#include "Player.h" +#include "InstanceScript.h" #include "Log.h" +#include "Player.h" +#include "ScriptedGossip.h" #define GOSSIP_ITEM_BEGIN_ALLY "My companions and I are with you, Lady Proudmoore." #define GOSSIP_ITEM_ANETHERON "We are ready for whatever Archimonde might send our way, Lady Proudmoore." @@ -103,27 +103,27 @@ public: CreatureAI* GetAI(Creature* creature) const override { - if (!creature->GetInstanceScript()) - return NULL; - - hyjalAI* ai = new hyjalAI(creature); + if (hyjalAI* ai = GetHyjalAI<hyjalAI>(creature)) + { + ai->Reset(); + ai->EnterEvadeMode(); - ai->Reset(); - ai->EnterEvadeMode(); + ai->Spells[0].SpellId = SPELL_BLIZZARD; + ai->Spells[0].Cooldown = urand(15000, 35000); + ai->Spells[0].TargetType = TARGETTYPE_RANDOM; - ai->Spells[0].SpellId = SPELL_BLIZZARD; - ai->Spells[0].Cooldown = urand(15000, 35000); - ai->Spells[0].TargetType = TARGETTYPE_RANDOM; + ai->Spells[1].SpellId = SPELL_PYROBLAST; + ai->Spells[1].Cooldown = urand(5500, 9500); + ai->Spells[1].TargetType = TARGETTYPE_RANDOM; - ai->Spells[1].SpellId = SPELL_PYROBLAST; - ai->Spells[1].Cooldown = urand(5500, 9500); - ai->Spells[1].TargetType = TARGETTYPE_RANDOM; + ai->Spells[2].SpellId = SPELL_SUMMON_ELEMENTALS; + ai->Spells[2].Cooldown = urand(15000, 45000); + ai->Spells[2].TargetType = TARGETTYPE_SELF; - ai->Spells[2].SpellId = SPELL_SUMMON_ELEMENTALS; - ai->Spells[2].Cooldown = urand(15000, 45000); - ai->Spells[2].TargetType = TARGETTYPE_SELF; + return ai; + } - return ai; + return nullptr; } }; @@ -188,23 +188,23 @@ public: CreatureAI* GetAI(Creature* creature) const override { - if (!creature->GetInstanceScript()) - return NULL; - - hyjalAI* ai = new hyjalAI(creature); + if (hyjalAI* ai = GetHyjalAI<hyjalAI>(creature)) + { + ai->Reset(); + ai->EnterEvadeMode(); - ai->Reset(); - ai->EnterEvadeMode(); + ai->Spells[0].SpellId = SPELL_CHAIN_LIGHTNING; + ai->Spells[0].Cooldown = urand(3000, 8000); + ai->Spells[0].TargetType = TARGETTYPE_VICTIM; - ai->Spells[0].SpellId = SPELL_CHAIN_LIGHTNING; - ai->Spells[0].Cooldown = urand(3000, 8000); - ai->Spells[0].TargetType = TARGETTYPE_VICTIM; + ai->Spells[1].SpellId = SPELL_SUMMON_DIRE_WOLF; + ai->Spells[1].Cooldown = urand(6000, 41000); + ai->Spells[1].TargetType = TARGETTYPE_RANDOM; - ai->Spells[1].SpellId = SPELL_SUMMON_DIRE_WOLF; - ai->Spells[1].Cooldown = urand(6000, 41000); - ai->Spells[1].TargetType = TARGETTYPE_RANDOM; + return ai; + } - return ai; + return nullptr; } }; @@ -216,13 +216,14 @@ public: CreatureAI* GetAI(Creature* creature) const override { - if (!creature->GetInstanceScript()) - return NULL; + if (hyjalAI* ai = GetHyjalAI<hyjalAI>(creature)) + { + ai->Reset(); + ai->EnterEvadeMode(); + return ai; + } - hyjalAI* ai = new hyjalAI(creature); - ai->Reset(); - ai->EnterEvadeMode(); - return ai; + return nullptr; } bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h index caf7d690097..5a12cc0f6e3 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h @@ -19,6 +19,9 @@ #ifndef DEF_HYJAL_H #define DEF_HYJAL_H +#include "CreatureAIImpl.h" + +#define HyjalScriptName "instance_hyjal" #define DataHeader "HY" uint32 const EncounterCount = 5; @@ -93,4 +96,10 @@ enum HYGameobjectIds #define MINRAIDDAMAGE 700000 // minimal damage before trash can drop loot and reputation, resets if faction leader dies +template<typename AI> +inline AI* GetHyjalAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, HyjalScriptName); +} + #endif diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index 52db6e7d9ba..6479dd2cdfe 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -24,15 +24,14 @@ SDCategory: Caverns of Time, Mount Hyjal EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedEscortAI.h" -#include "GridNotifiers.h" -#include "GridNotifiersImpl.h" -#include "Cell.h" #include "CellImpl.h" -#include "Log.h" -#include "hyjalAI.h" +#include "GridNotifiersImpl.h" #include "hyjal_trash.h" +#include "hyjalAI.h" +#include "InstanceScript.h" +#include "Log.h" +#include "ObjectAccessor.h" +#include "TemporarySummon.h" enum Spawns { @@ -651,7 +650,7 @@ void hyjalAI::SpawnVeins() return; for (uint8 i = 0; i < 7; ++i) { - GameObject* gem = me->SummonGameObject(GO_ANCIENT_VEIN, VeinPos[i][0], VeinPos[i][1], VeinPos[i][2], VeinPos[i][3], G3D::Quat(VeinPos[i][4], VeinPos[i][5], VeinPos[i][6], VeinPos[i][7]), 0); + GameObject* gem = me->SummonGameObject(GO_ANCIENT_VEIN, VeinPos[i][0], VeinPos[i][1], VeinPos[i][2], VeinPos[i][3], QuaternionData(VeinPos[i][4], VeinPos[i][5], VeinPos[i][6], VeinPos[i][7]), 0); if (gem) VeinGUID[i]=gem->GetGUID(); } @@ -663,7 +662,7 @@ void hyjalAI::SpawnVeins() return; for (uint8 i = 7; i < 14; ++i) { - GameObject* gem = me->SummonGameObject(GO_ANCIENT_VEIN, VeinPos[i][0], VeinPos[i][1], VeinPos[i][2], VeinPos[i][3], G3D::Quat(VeinPos[i][4], VeinPos[i][5], VeinPos[i][6], VeinPos[i][7]), 0); + GameObject* gem = me->SummonGameObject(GO_ANCIENT_VEIN, VeinPos[i][0], VeinPos[i][1], VeinPos[i][2], VeinPos[i][3], QuaternionData(VeinPos[i][4], VeinPos[i][5], VeinPos[i][6], VeinPos[i][7]), 0); if (gem) VeinGUID[i] = gem->GetGUID(); } @@ -726,7 +725,7 @@ void hyjalAI::UpdateAI(uint32 diff) HideNearPos(me->GetPositionX(), me->GetPositionY()); HideNearPos(5037.76f, -1889.71f); for (uint8 i = 0; i < 92; ++i)//summon fires - me->SummonGameObject(GO_ROARING_FLAME, AllianceFirePos[i][0], AllianceFirePos[i][1], AllianceFirePos[i][2], AllianceFirePos[i][3], G3D::Quat(AllianceFirePos[i][4], AllianceFirePos[i][5], AllianceFirePos[i][6], AllianceFirePos[i][7]), 0); + me->SummonGameObject(GO_ROARING_FLAME, AllianceFirePos[i][0], AllianceFirePos[i][1], AllianceFirePos[i][2], AllianceFirePos[i][3], QuaternionData(AllianceFirePos[i][4], AllianceFirePos[i][5], AllianceFirePos[i][6], AllianceFirePos[i][7]), 0); } else me->SetVisible(true); @@ -739,7 +738,7 @@ void hyjalAI::UpdateAI(uint32 diff) HideNearPos(5563, -2763.19f); HideNearPos(5542.2f, -2629.36f); for (uint8 i = 0; i < 65; ++i)//summon fires - me->SummonGameObject(GO_ROARING_FLAME, HordeFirePos[i][0], HordeFirePos[i][1], HordeFirePos[i][2], HordeFirePos[i][3], G3D::Quat(HordeFirePos[i][4], HordeFirePos[i][5], HordeFirePos[i][6], HordeFirePos[i][7]), 0); + me->SummonGameObject(GO_ROARING_FLAME, HordeFirePos[i][0], HordeFirePos[i][1], HordeFirePos[i][2], HordeFirePos[i][3], QuaternionData(HordeFirePos[i][4], HordeFirePos[i][5], HordeFirePos[i][6], HordeFirePos[i][7]), 0); } else me->SetVisible(true); @@ -1016,7 +1015,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) { case 0://alliance for (uint8 i = 0; i < 92; ++i)//summon fires - me->SummonGameObject(GO_ROARING_FLAME, AllianceFirePos[i][0], AllianceFirePos[i][1], AllianceFirePos[i][2], AllianceFirePos[i][3], G3D::Quat(AllianceFirePos[i][4], AllianceFirePos[i][5], AllianceFirePos[i][6], AllianceFirePos[i][7]), 0); + me->SummonGameObject(GO_ROARING_FLAME, AllianceFirePos[i][0], AllianceFirePos[i][1], AllianceFirePos[i][2], AllianceFirePos[i][3], QuaternionData(AllianceFirePos[i][4], AllianceFirePos[i][5], AllianceFirePos[i][6], AllianceFirePos[i][7]), 0); for (uint8 i = 0; i < 25; ++i)//summon 25 ghouls { @@ -1057,7 +1056,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) break; case 1://horde for (uint8 i = 0; i < 65; ++i)//summon fires - me->SummonGameObject(GO_ROARING_FLAME, HordeFirePos[i][0], HordeFirePos[i][1], HordeFirePos[i][2], HordeFirePos[i][3], G3D::Quat(HordeFirePos[i][4], HordeFirePos[i][5], HordeFirePos[i][6], HordeFirePos[i][7]), 0); + me->SummonGameObject(GO_ROARING_FLAME, HordeFirePos[i][0], HordeFirePos[i][1], HordeFirePos[i][2], HordeFirePos[i][3], QuaternionData(HordeFirePos[i][4], HordeFirePos[i][5], HordeFirePos[i][6], HordeFirePos[i][7]), 0); for (uint8 i = 0; i < 26; ++i)//summon infernals { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp index bc204ed6c53..32b90c6bfc9 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp @@ -16,10 +16,12 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "hyjal.h" #include "hyjal_trash.h" #include "hyjalAI.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" +#include "TemporarySummon.h" enum Spells { @@ -523,7 +525,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_giant_infernalAI>(creature); + return GetHyjalAI<npc_giant_infernalAI>(creature); } }; @@ -534,7 +536,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_abominationAI>(creature); + return GetHyjalAI<npc_abominationAI>(creature); } struct npc_abominationAI : public hyjal_trashAI @@ -629,7 +631,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_ghoulAI>(creature); + return GetHyjalAI<npc_ghoulAI>(creature); } struct npc_ghoulAI : public hyjal_trashAI @@ -728,7 +730,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_necromancerAI>(creature); + return GetHyjalAI<npc_necromancerAI>(creature); } struct npc_necromancerAI : public hyjal_trashAI @@ -852,7 +854,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_bansheeAI>(creature); + return GetHyjalAI<npc_bansheeAI>(creature); } struct npc_bansheeAI : public hyjal_trashAI @@ -952,7 +954,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_crypt_fiendAI>(creature); + return GetHyjalAI<npc_crypt_fiendAI>(creature); } struct npc_crypt_fiendAI : public hyjal_trashAI @@ -1038,7 +1040,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_fel_stalkerAI>(creature); + return GetHyjalAI<npc_fel_stalkerAI>(creature); } struct npc_fel_stalkerAI : public hyjal_trashAI @@ -1124,7 +1126,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_frost_wyrmAI>(creature); + return GetHyjalAI<npc_frost_wyrmAI>(creature); } struct npc_frost_wyrmAI : public hyjal_trashAI @@ -1172,7 +1174,7 @@ public: float x, y, z; me->GetPosition(x, y, z); - z = me->GetMap()->GetHeight(me->GetPhases(), x, y, z); + me->UpdateGroundPositionZ(x, y, z); me->GetMotionMaster()->MovePoint(0, x, y, z); me->SetPosition(x, y, z, 0); } @@ -1244,7 +1246,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_gargoyleAI>(creature); + return GetHyjalAI<npc_gargoyleAI>(creature); } struct npc_gargoyleAI : public hyjal_trashAI @@ -1290,7 +1292,7 @@ public: { float x, y, z; me->GetPosition(x, y, z); - z = me->GetMap()->GetHeight(me->GetPhases(), x, y, z); + me->UpdateGroundPositionZ(x, y, z); me->GetMotionMaster()->MovePoint(0, x, y, z); me->SetPosition(x, y, z, 0); hyjal_trashAI::JustDied(killer); @@ -1382,7 +1384,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new alliance_riflemanAI(creature); + return GetHyjalAI<alliance_riflemanAI>(creature); } struct alliance_riflemanAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp index 39dfcabc6ea..8e7e0f4b246 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp @@ -24,10 +24,13 @@ SDCategory: Caverns of Time, Mount Hyjal EndScriptData */ #include "ScriptMgr.h" -#include "InstanceScript.h" -#include "ScriptedCreature.h" +#include "Creature.h" +#include "CreatureAI.h" +#include "GameObject.h" #include "hyjal.h" +#include "InstanceScript.h" #include "Log.h" +#include "Map.h" /* Battle of Mount Hyjal encounters: 0 - Rage Winterchill event @@ -51,7 +54,7 @@ ObjectData const creatureData[] = class instance_hyjal : public InstanceMapScript { public: - instance_hyjal() : InstanceMapScript("instance_hyjal", 534) { } + instance_hyjal() : InstanceMapScript(HyjalScriptName, 534) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp index 93fc93f348e..470d5f7f90c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp @@ -24,8 +24,8 @@ SDCategory: Script Data End */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "culling_of_stratholme.h" +#include "ScriptedCreature.h" enum Spells { @@ -114,7 +114,7 @@ class boss_epoch : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_epochAI>(creature); + return GetCullingOfStratholmeAI<boss_epochAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp index 1a7452732f9..5ea544a3f1b 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "culling_of_stratholme.h" +#include "ScriptedCreature.h" enum Spells { @@ -104,7 +104,7 @@ class boss_infinite_corruptor : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_infinite_corruptorAI>(creature); + return GetCullingOfStratholmeAI<boss_infinite_corruptorAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp index 1c05b82d06b..1e24c9780e6 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp @@ -24,9 +24,11 @@ SDCategory: Script Data End */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "culling_of_stratholme.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" #include "Player.h" +#include "ScriptedCreature.h" enum Spells { @@ -64,7 +66,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_mal_ganisAI>(creature); + return GetCullingOfStratholmeAI<boss_mal_ganisAI>(creature); } struct boss_mal_ganisAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp index e4252ab7e7a..11de41f5c74 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "culling_of_stratholme.h" +#include "ScriptedCreature.h" enum Spells { @@ -99,7 +99,7 @@ class boss_meathook : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_meathookAI>(creature); + return GetCullingOfStratholmeAI<boss_meathookAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp index cb512c02cf4..3030f50a74c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "culling_of_stratholme.h" +#include "ScriptedCreature.h" enum Spells { @@ -120,7 +120,7 @@ class boss_salramm : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_salrammAI>(creature); + return GetCullingOfStratholmeAI<boss_salrammAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index 9de4194c733..f28c9e06e79 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -16,13 +16,16 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" #include "culling_of_stratholme.h" -#include "ScriptedEscortAI.h" +#include "GameObject.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" #include "PassiveAI.h" #include "Player.h" +#include "ScriptedEscortAI.h" +#include "ScriptedGossip.h" #include "SpellInfo.h" +#include "TemporarySummon.h" enum Says { @@ -343,7 +346,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_arthasAI>(creature); + return GetCullingOfStratholmeAI<npc_arthasAI>(creature); } struct npc_arthasAI : public npc_escortAI @@ -1256,7 +1259,7 @@ class npc_crate_helper : public CreatureScript instance->SetData(DATA_CRATE_COUNT, instance->GetData(DATA_CRATE_COUNT) + 1); if (GameObject* crate = me->FindNearestGameObject(GO_SUSPICIOUS_CRATE, 5.0f)) { - crate->SummonGameObject(GO_PLAGUED_CRATE, *crate, G3D::Quat(), DAY); + crate->SummonGameObject(GO_PLAGUED_CRATE, *crate, QuaternionData(), DAY); crate->Delete(); } } @@ -1268,7 +1271,7 @@ class npc_crate_helper : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new npc_crate_helperAI(creature); + return GetCullingOfStratholmeAI<npc_crate_helperAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h index 0cd1a7a6459..b6c93aa939e 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h @@ -18,8 +18,11 @@ #ifndef DEF_CULLING_OF_STRATHOLME_H #define DEF_CULLING_OF_STRATHOLME_H -#define DataHeader "CS" +#include "CreatureAIImpl.h" + #define CoSScriptName "instance_culling_of_stratholme" +#define DataHeader "CS" + uint32 const EncounterCount = 5; enum CSDataTypes @@ -100,4 +103,10 @@ enum CSInstanceEvents EVENT_INFINITE_TIMER = 1 }; +template<typename AI> +inline AI* GetCullingOfStratholmeAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, CoSScriptName); +} + #endif diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp index 116a04e4291..ef56283f024 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp @@ -16,12 +16,15 @@ */ #include "ScriptMgr.h" -#include "InstanceScript.h" -#include "CreatureTextMgr.h" +#include "Creature.h" +#include "CreatureAI.h" #include "culling_of_stratholme.h" -#include "Player.h" +#include "EventMap.h" +#include "GameObject.h" +#include "InstanceScript.h" +#include "Map.h" #include "TemporarySummon.h" -#include "SpellInfo.h" +#include "WorldStatePackets.h" /* Culling of Stratholme encounters: 0 - Meathook diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index e23d81aab67..be1e8eefc73 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -24,8 +24,9 @@ SDCategory: Caverns of Time, Old Hillsbrad Foothills EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" +#include "InstanceScript.h" #include "old_hillsbrad.h" +#include "ScriptedCreature.h" /*###################### # boss_captain_skarloc # @@ -54,7 +55,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_captain_skarlocAI>(creature); + return GetOldHillsbradAI<boss_captain_skarlocAI>(creature); } struct boss_captain_skarlocAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp index 2625434b09a..06b876a3f92 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp @@ -24,8 +24,9 @@ SDCategory: Caverns of Time, Old Hillsbrad Foothills EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" +#include "InstanceScript.h" #include "old_hillsbrad.h" +#include "ScriptedCreature.h" /*################### # boss_epoch_hunter # @@ -52,7 +53,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_epoch_hunterAI>(creature); + return GetOldHillsbradAI<boss_epoch_hunterAI>(creature); } struct boss_epoch_hunterAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp index f3b302497da..f5b2743b487 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp @@ -24,7 +24,8 @@ SDCategory: Caverns of Time, Old Hillsbrad Foothills EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" +#include "GameObject.h" +#include "InstanceScript.h" #include "old_hillsbrad.h" #include "ScriptedEscortAI.h" @@ -101,7 +102,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_lieutenant_drakeAI(creature); + return GetOldHillsbradAI<boss_lieutenant_drakeAI>(creature); } struct boss_lieutenant_drakeAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp index ee798819ee6..01c3d39fbe0 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp @@ -24,11 +24,12 @@ SDCategory: Caverns of Time, Old Hillsbrad Foothills EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" +#include "Creature.h" #include "InstanceScript.h" +#include "Log.h" +#include "Map.h" #include "old_hillsbrad.h" #include "Player.h" -#include "Log.h" #define MAX_ENCOUNTER 6 @@ -44,7 +45,7 @@ EndScriptData */ class instance_old_hillsbrad : public InstanceMapScript { public: - instance_old_hillsbrad() : InstanceMapScript("instance_old_hillsbrad", 560) { } + instance_old_hillsbrad() : InstanceMapScript(OHScriptName, 560) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { @@ -74,14 +75,9 @@ public: { Map::PlayerList const& players = instance->GetPlayers(); - if (!players.isEmpty()) - { - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* player = itr->GetSource()) - return player; - } - } + for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + if (Player* player = itr->GetSource()) + return player; TC_LOG_DEBUG("scripts", "Instance Old Hillsbrad: GetPlayerInMap, but PlayerList is empty!"); return NULL; @@ -91,14 +87,9 @@ public: { Map::PlayerList const& players = instance->GetPlayers(); - if (!players.isEmpty()) - { - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* player = itr->GetSource()) - player->KilledMonsterCredit(LODGE_QUEST_TRIGGER); - } - } + for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + if (Player* player = itr->GetSource()) + player->KilledMonsterCredit(LODGE_QUEST_TRIGGER); } void OnCreatureCreate(Creature* creature) override diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 898d780b8b0..c96aacef21b 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -30,11 +30,12 @@ npc_taretha EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" -#include "ScriptedEscortAI.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" #include "old_hillsbrad.h" #include "Player.h" +#include "ScriptedEscortAI.h" +#include "ScriptedGossip.h" enum Erozion { @@ -187,7 +188,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_thrall_old_hillsbradAI>(creature); + return GetOldHillsbradAI<npc_thrall_old_hillsbradAI>(creature); } bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override @@ -565,7 +566,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_tarethaAI>(creature); + return GetOldHillsbradAI<npc_tarethaAI>(creature); } bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h index ac5abaf9fb8..b7f36987542 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h @@ -19,6 +19,9 @@ #ifndef DEF_OLD_HILLSBRAD_H #define DEF_OLD_HILLSBRAD_H +#include "CreatureAIImpl.h" + +#define OHScriptName "instance_old_hillsbrad" #define DataHeader "OH" enum OHDataTypes @@ -41,5 +44,13 @@ enum OHWorldStateIds WORLD_STATE_OH = 2436 }; + +template<typename AI> +inline AI* GetOldHillsbradAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, OHScriptName); +} + + #endif diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp index 17b51ddb22f..30e07fbbde5 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp @@ -24,6 +24,7 @@ Category: Caverns of Time, The Dark Portal */ #include "ScriptMgr.h" +#include "InstanceScript.h" #include "ScriptedCreature.h" #include "the_black_morass.h" @@ -141,7 +142,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_aeonusAI>(creature); + return GetBlackMorassAI<boss_aeonusAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp index 55482fd37d6..f7fc518d2ef 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp @@ -24,6 +24,7 @@ Category: Caverns of Time, The Black Morass */ #include "ScriptMgr.h" +#include "InstanceScript.h" #include "ScriptedCreature.h" #include "the_black_morass.h" @@ -147,7 +148,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_chrono_lord_dejaAI>(creature); + return GetBlackMorassAI<boss_chrono_lord_dejaAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp index 3ad05a79065..7006fcc4e50 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp @@ -24,6 +24,7 @@ Category: Caverns of Time, The Black Morass */ #include "ScriptMgr.h" +#include "InstanceScript.h" #include "ScriptedCreature.h" #include "the_black_morass.h" @@ -145,7 +146,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_temporusAI>(creature); + return GetBlackMorassAI<boss_temporusAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index 81990a81fb3..bc64a7bc959 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -24,13 +24,14 @@ Category: Caverns of Time, The Black Morass */ #include "ScriptMgr.h" +#include "EventMap.h" #include "InstanceScript.h" -#include "the_black_morass.h" +#include "Log.h" +#include "Map.h" #include "Player.h" -#include "TemporarySummon.h" #include "SpellInfo.h" -#include "ScriptedCreature.h" -#include "Log.h" +#include "the_black_morass.h" +#include "TemporarySummon.h" enum Misc { @@ -72,7 +73,7 @@ enum EventIds class instance_the_black_morass : public InstanceMapScript { public: - instance_the_black_morass() : InstanceMapScript("instance_the_black_morass", 269) { } + instance_the_black_morass() : InstanceMapScript(TBMScriptName, 269) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp index e164b6ca2fa..36ce378f575 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -30,12 +30,14 @@ npc_saat EndContentData */ #include "ScriptMgr.h" +#include "InstanceScript.h" +#include "Log.h" +#include "ObjectAccessor.h" +#include "Player.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" -#include "the_black_morass.h" -#include "Player.h" #include "SpellInfo.h" -#include "Log.h" +#include "the_black_morass.h" enum MedivhBm { @@ -71,7 +73,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_medivh_bmAI>(creature); + return GetBlackMorassAI<npc_medivh_bmAI>(creature); } struct npc_medivh_bmAI : public ScriptedAI @@ -265,7 +267,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_time_riftAI>(creature); + return GetBlackMorassAI<npc_time_riftAI>(creature); } struct npc_time_riftAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h index db477757f09..5423058685a 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h @@ -19,6 +19,9 @@ #ifndef DEF_THEBLACKMORASS_H #define DEF_THEBLACKMORASS_H +#include "CreatureAIImpl.h" + +#define TBMScriptName "instance_the_black_morass" #define DataHeader "TBM" uint32 const EncounterCount = 2; @@ -65,5 +68,11 @@ enum TBMCreatureIds NPC_INFINITE_VANQUISHER = 18995 }; +template<typename AI> +inline AI* GetBlackMorassAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, TBMScriptName); +} + #endif diff --git a/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp index 22ee9fb6bea..f997bcf7460 100644 --- a/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp +++ b/src/server/scripts/Kalimdor/DireMaul/instance_dire_maul.cpp @@ -24,6 +24,7 @@ gets instead the deserter debuff. #include "ScriptMgr.h" #include "InstanceScript.h" +#include "Map.h" // Bosses (East) // 0 - Pusillin diff --git a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp index d6933f03032..508b010542e 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp @@ -15,17 +15,17 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ObjectMgr.h" #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "PassiveAI.h" -#include "SpellScript.h" -#include "MoveSplineInit.h" -#include "Cell.h" #include "CellImpl.h" -#include "GridNotifiers.h" -#include "GridNotifiersImpl.h" +#include "DB2Stores.h" #include "firelands.h" +#include "GridNotifiersImpl.h" +#include "ObjectAccessor.h" +#include "PassiveAI.h" +#include "ScriptedCreature.h" +#include "SpellInfo.h" +#include "SpellScript.h" +#include "TemporarySummon.h" enum Texts { @@ -245,7 +245,7 @@ class npc_harbinger_of_flame : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new npc_harbinger_of_flameAI(creature); + return GetFirelandsAI<npc_harbinger_of_flameAI>(creature); } }; @@ -347,7 +347,7 @@ class npc_blazing_monstrosity : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new npc_blazing_monstrosityAI(creature); + return GetFirelandsAI<npc_blazing_monstrosityAI>(creature); } }; @@ -387,7 +387,7 @@ class npc_molten_barrage : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new npc_molten_barrageAI(creature); + return GetFirelandsAI<npc_molten_barrageAI>(creature); } }; @@ -490,7 +490,7 @@ class npc_egg_pile : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new npc_egg_pileAI(creature); + return GetFirelandsAI<npc_egg_pileAI>(creature); } }; @@ -541,17 +541,14 @@ class spell_alysrazor_turn_monstrosity : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_GENERIC_DUMMY_CAST)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_KNOCKBACK_RIGHT)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_KNOCKBACK_LEFT)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_KNOCKBACK_FORWARD)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_KNOCKBACK_BACK)) - return false; - return true; + return ValidateSpellInfo( + { + SPELL_GENERIC_DUMMY_CAST, + SPELL_KNOCKBACK_RIGHT, + SPELL_KNOCKBACK_LEFT, + SPELL_KNOCKBACK_FORWARD, + SPELL_KNOCKBACK_BACK + }); } void KnockBarrage(SpellEffIndex effIndex) @@ -670,9 +667,7 @@ class spell_alysrazor_fieroblast : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_FIRE_IT_UP)) - return false; - return true; + return ValidateSpellInfo({ SPELL_FIRE_IT_UP }); } void FireItUp() diff --git a/src/server/scripts/Kalimdor/Firelands/firelands.cpp b/src/server/scripts/Kalimdor/Firelands/firelands.cpp new file mode 100644 index 00000000000..092ff5c3b2a --- /dev/null +++ b/src/server/scripts/Kalimdor/Firelands/firelands.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "firelands.h" +#include "Creature.h" +#include "CreatureAI.h" + +bool DelayedAttackStartEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) +{ + _owner->AI()->DoZoneInCombat(_owner, 200.0f); + return true; +} diff --git a/src/server/scripts/Kalimdor/Firelands/firelands.h b/src/server/scripts/Kalimdor/Firelands/firelands.h index d160bbdef65..59fa43baeec 100644 --- a/src/server/scripts/Kalimdor/Firelands/firelands.h +++ b/src/server/scripts/Kalimdor/Firelands/firelands.h @@ -18,8 +18,10 @@ #ifndef FIRELANDS_H_ #define FIRELANDS_H_ -#include "Map.h" -#include "CreatureAI.h" +#include "CreatureAIImpl.h" +#include "EventProcessor.h" + +class Creature; #define DataHeader "FL" #define FirelandsScriptName "instance_firelands" @@ -52,24 +54,16 @@ class DelayedAttackStartEvent : public BasicEvent public: DelayedAttackStartEvent(Creature* owner) : _owner(owner) { } - bool Execute(uint64 /*e_time*/, uint32 /*p_time*/) override - { - _owner->AI()->DoZoneInCombat(_owner, 200.0f); - return true; - } + bool Execute(uint64 /*e_time*/, uint32 /*p_time*/) override; private: Creature* _owner; }; -template<class AI> -CreatureAI* GetFirelandsAI(Creature* creature) +template<typename AI> +inline AI* GetFirelandsAI(Creature* creature) { - if (InstanceMap* instance = creature->GetMap()->ToInstanceMap()) - if (instance->GetInstanceScript()) - if (instance->GetScriptId() == sObjectMgr->GetScriptId(FirelandsScriptName)) - return new AI(creature); - return NULL; + return GetInstanceAI<AI>(creature, FirelandsScriptName); } #endif // FIRELANDS_H_ diff --git a/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp b/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp index e5edb9af6fa..da1fe55d2a5 100644 --- a/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp +++ b/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp @@ -16,8 +16,10 @@ */ #include "ScriptMgr.h" -#include "InstanceScript.h" +#include "Creature.h" #include "firelands.h" +#include "InstanceScript.h" +#include "Map.h" class instance_firelands : public InstanceMapScript { diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp index 9e0c6a12e17..9efa74edd4f 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp @@ -15,15 +15,15 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ObjectMgr.h" #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "SpellScript.h" -#include "SpellAuraEffects.h" #include "GridNotifiers.h" -#include "Player.h" -#include "ObjectAccessor.h" #include "halls_of_origination.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" +#include "Player.h" +#include "ScriptedCreature.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" enum Texts { @@ -289,7 +289,7 @@ class npc_omega_stance : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new npc_omega_stanceAI(creature); + return GetHallsOfOriginationAI<npc_omega_stanceAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp index 587c210bf50..bdf4e6e3c0a 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp @@ -15,15 +15,15 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ObjectMgr.h" #include "ScriptMgr.h" +#include "halls_of_origination.h" +#include "InstanceScript.h" +#include "Player.h" #include "ScriptedCreature.h" -#include "SpellScript.h" #include "SpellAuraEffects.h" -#include "Player.h" +#include "SpellScript.h" +#include "TemporarySummon.h" #include "Weather.h" -#include "WorldSession.h" -#include "halls_of_origination.h" enum Texts { @@ -107,6 +107,7 @@ public: for (std::list<Creature*>::iterator itr = units.begin(); itr != units.end(); ++itr) (*itr)->DespawnOrUnsummon(); + units.clear(); GetCreatureListWithEntryInGrid(units, me, NPC_JEWELED_SCARAB, 100.0f); for (std::list<Creature*>::iterator itr = units.begin(); itr != units.end(); ++itr) (*itr)->DespawnOrUnsummon(); diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp index 0aa63f2811b..c8c4c57bac7 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp @@ -15,14 +15,15 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ObjectMgr.h" #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "SpellScript.h" -#include "SpellAuraEffects.h" #include "GridNotifiers.h" -#include "Player.h" #include "halls_of_origination.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" +#include "Player.h" +#include "ScriptedCreature.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" enum Texts { diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h b/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h index 9a252662e9e..43b54694841 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h @@ -18,6 +18,8 @@ #ifndef HALLS_OF_ORIGINATION_H #define HALLS_OF_ORIGINATION_H +#include "CreatureAIImpl.h" + #define DataHeader "HOO" #define HoOScriptName "instance_halls_of_origination" @@ -114,14 +116,10 @@ enum HOOGlobalActions ACTION_OMEGA_TRIGGER, }; -template<class AI> -CreatureAI* GetHallsOfOriginationAI(Creature* creature) +template<typename AI> +inline AI* GetHallsOfOriginationAI(Creature* creature) { - if (InstanceMap* instance = creature->GetMap()->ToInstanceMap()) - if (instance->GetInstanceScript()) - if (instance->GetScriptId() == sObjectMgr->GetScriptId(HoOScriptName)) - return new AI(creature); - return NULL; + return GetInstanceAI<AI>(creature, HoOScriptName); } #endif // HALLS_OF_ORIGINATION_H diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp index 37f79658906..047f3ae9836 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp @@ -24,6 +24,7 @@ SDCategory: Maraudon EndScriptData */ #include "ScriptMgr.h" +#include "maraudon.h" #include "ScriptedCreature.h" enum Spells @@ -40,7 +41,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_landslideAI(creature); + return GetMaraudonAI<boss_landslideAI>(creature); } struct boss_landslideAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp index 51065ed35d4..a163dea9765 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp @@ -24,6 +24,7 @@ SDCategory: Maraudon EndScriptData */ #include "ScriptMgr.h" +#include "maraudon.h" #include "ScriptedCreature.h" enum Spells @@ -39,7 +40,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_noxxionAI(creature); + return GetMaraudonAI<boss_noxxionAI>(creature); } struct boss_noxxionAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp index e5b98337883..c8116fe027b 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp @@ -24,7 +24,7 @@ SDCategory: Maraudon EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" +#include "maraudon.h" #include "ScriptedCreature.h" enum Spells @@ -42,7 +42,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_ptheradrasAI(creature); + return GetMaraudonAI<boss_ptheradrasAI>(creature); } struct boss_ptheradrasAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp index b3e3552b4d5..35d5760605f 100644 --- a/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp @@ -24,11 +24,13 @@ gets instead the deserter debuff. #include "ScriptMgr.h" #include "InstanceScript.h" +#include "Map.h" +#include "maraudon.h" class instance_maraudon : public InstanceMapScript { public: - instance_maraudon() : InstanceMapScript("instance_maraudon", 349) { } + instance_maraudon() : InstanceMapScript(MaraudonScriptName, 349) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/Maraudon/maraudon.h b/src/server/scripts/Kalimdor/Maraudon/maraudon.h new file mode 100644 index 00000000000..a60deb6b081 --- /dev/null +++ b/src/server/scripts/Kalimdor/Maraudon/maraudon.h @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef maraudon_h__ +#define maraudon_h__ + +#include "CreatureAIImpl.h" + +#define MaraudonScriptName "instance_maraudon" + +template<typename AI> +inline AI* GetMaraudonAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, MaraudonScriptName); +} + +#endif // maraudon_h__ diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index 1da2fcb45c3..049ab5ef45e 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -26,12 +26,14 @@ SDCategory: Onyxia's Lair EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "Cell.h" #include "CellImpl.h" -#include "GridNotifiers.h" +#include "CreatureAIImpl.h" #include "GridNotifiersImpl.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" #include "onyxias_lair.h" +#include "ScriptedCreature.h" +#include "TemporarySummon.h" enum Yells { @@ -492,7 +494,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_onyxiaAI>(creature); + return GetInstanceAI<boss_onyxiaAI>(creature, OLScriptName); } }; diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp index a0dfec7d722..e7472e1abd4 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp @@ -23,11 +23,11 @@ SDCategory: Onyxia's Lair EndScriptData */ #include "ScriptMgr.h" -#include "InstanceScript.h" -#include "Cell.h" +#include "AreaBoundary.h" #include "CellImpl.h" -#include "GridNotifiers.h" #include "GridNotifiersImpl.h" +#include "InstanceScript.h" +#include "Map.h" #include "onyxias_lair.h" #include "TemporarySummon.h" @@ -39,7 +39,7 @@ BossBoundaryData const boundaries = class instance_onyxias_lair : public InstanceMapScript { public: - instance_onyxias_lair() : InstanceMapScript("instance_onyxias_lair", 249) { } + instance_onyxias_lair() : InstanceMapScript(OLScriptName, 249) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h b/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h index ba931c86ccd..d9d86dce711 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h +++ b/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h @@ -18,6 +18,7 @@ #ifndef DEF_ONYXIAS_LAIR_H #define DEF_ONYXIAS_LAIR_H +#define OLScriptName "instance_onyxias_lair" #define DataHeader "OL" uint32 const EncounterCount = 1; diff --git a/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp b/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp index c49d6b296ec..ba00eb87728 100644 --- a/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp +++ b/src/server/scripts/Kalimdor/RagefireChasm/instance_ragefire_chasm.cpp @@ -24,6 +24,7 @@ gets instead the deserter debuff. #include "ScriptMgr.h" #include "InstanceScript.h" +#include "Map.h" class instance_ragefire_chasm : public InstanceMapScript { diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp index ffb75543d84..2c531662492 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "razorfen_downs.h" +#include "ScriptedCreature.h" enum Say { @@ -151,7 +151,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_amnennar_the_coldbringerAI(creature); + return GetRazorfenDownsAI<boss_amnennar_the_coldbringerAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp index 553375db4f8..4cd75637854 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "razorfen_downs.h" +#include "ScriptedCreature.h" enum Say { @@ -97,7 +97,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_gluttonAI(creature); + return GetRazorfenDownsAI<boss_gluttonAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp index 2f6e469f257..a2294e120b0 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "razorfen_downs.h" +#include "ScriptedCreature.h" enum Say { @@ -129,7 +129,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_mordresh_fire_eyeAI(creature); + return GetRazorfenDownsAI<boss_mordresh_fire_eyeAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp index 2ad263d325b..c4b521a0130 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "razorfen_downs.h" +#include "ScriptedCreature.h" enum Spells { @@ -100,7 +100,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_tuten_kashAI(creature); + return GetRazorfenDownsAI<boss_tuten_kashAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp index 24cb88a071c..d485d6f7802 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp @@ -28,14 +28,14 @@ npc_henry_stern EndContentData */ #include "ScriptMgr.h" +#include "CellImpl.h" +#include "GridNotifiersImpl.h" +#include "InstanceScript.h" +#include "Player.h" +#include "razorfen_downs.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" -#include "razorfen_downs.h" -#include "Player.h" -#include "GridNotifiers.h" -#include "GridNotifiersImpl.h" -#include "Cell.h" -#include "CellImpl.h" +#include "TemporarySummon.h" /*### ## npc_belnistrasz for Quest 3525 "Extinguishing the Idol" @@ -204,7 +204,7 @@ public: case EVENT_COMPLETE: { DoCast(me, SPELL_IDOM_ROOM_CAMERA_SHAKE); - me->SummonGameObject(GO_BELNISTRASZS_BRAZIER, 2577.196f, 947.0781f, 53.16757f, 2.356195f, G3D::Quat(0.f, 0.f, 0.9238796f, 0.3826832f), 3600); + me->SummonGameObject(GO_BELNISTRASZS_BRAZIER, 2577.196f, 947.0781f, 53.16757f, 2.356195f, QuaternionData(0.f, 0.f, 0.9238796f, 0.3826832f), 3600); std::list<WorldObject*> ClusterList; Trinity::AllWorldObjectsInRange objects(me, 50.0f); Trinity::WorldObjectListSearcher<Trinity::AllWorldObjectsInRange> searcher(me, ClusterList, objects); @@ -255,7 +255,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_belnistraszAI>(creature); + return GetRazorfenDownsAI<npc_belnistraszAI>(creature); } }; @@ -293,7 +293,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_idol_room_spawnerAI>(creature); + return GetRazorfenDownsAI<npc_idol_room_spawnerAI>(creature); } }; @@ -363,7 +363,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_tomb_creatureAI>(creature); + return GetRazorfenDownsAI<npc_tomb_creatureAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h index 2501b399d11..fd6f687afb3 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h @@ -18,6 +18,8 @@ #ifndef DEF_RAZORFEN_DOWNS_H #define DEF_RAZORFEN_DOWNS_H +#include "CreatureAIImpl.h" + #define RFDScriptName "instance_razorfen_downs" #define DataHeader "RFD" @@ -61,8 +63,8 @@ enum RFDGameObjectIds GO_BELNISTRASZS_BRAZIER = 152097 }; -template<class AI> -AI* GetRazorfenDownsAI(Creature* creature) +template<typename AI> +inline AI* GetRazorfenDownsAI(Creature* creature) { return GetInstanceAI<AI>(creature, RFDScriptName); } diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp index dc0bbd57255..8f704f906ce 100644 --- a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp +++ b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp @@ -24,17 +24,18 @@ SDCategory: Razorfen Kraul EndScriptData */ #include "ScriptMgr.h" +#include "GameObject.h" #include "InstanceScript.h" -#include "razorfen_kraul.h" -#include "Player.h" #include "Log.h" +#include "Map.h" +#include "razorfen_kraul.h" #define WARD_KEEPERS_NR 2 class instance_razorfen_kraul : public InstanceMapScript { public: - instance_razorfen_kraul() : InstanceMapScript("instance_razorfen_kraul", 47) { } + instance_razorfen_kraul() : InstanceMapScript(RFKScriptName, 47) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { @@ -52,18 +53,6 @@ public: ObjectGuid DoorWardGUID; int WardKeeperDeath; - Player* GetPlayerInMap() - { - Map::PlayerList const& players = instance->GetPlayers(); - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) - { - if (Player* player = itr->GetSource()) - return player; - } - TC_LOG_DEBUG("scripts", "Instance Razorfen Kraul: GetPlayerInMap, but PlayerList is empty!"); - return NULL; - } - void OnGameObjectCreate(GameObject* go) override { switch (go->GetEntry()) diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.cpp b/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.cpp index 1cf97e8e6dc..c8ba60f7aef 100644 --- a/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.cpp +++ b/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.cpp @@ -17,11 +17,11 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedEscortAI.h" -#include "razorfen_kraul.h" -#include "Player.h" +#include "GameObject.h" #include "PetAI.h" +#include "Player.h" +#include "razorfen_kraul.h" +#include "ScriptedEscortAI.h" #include "SpellScript.h" enum Willix @@ -132,7 +132,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_willixAI(creature); + return GetRazorfenKraulAI<npc_willixAI>(creature); } }; @@ -151,7 +151,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_snufflenose_gopherAI(creature); + return GetRazorfenKraulAI<npc_snufflenose_gopherAI>(creature); } struct npc_snufflenose_gopherAI : public PetAI diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h b/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h index 1de42a0bb3a..f8bb926baff 100644 --- a/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h +++ b/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h @@ -19,7 +19,17 @@ #ifndef DEF_RAZORFEN_KRAUL_H #define DEF_RAZORFEN_KRAUL_H +#include "CreatureAIImpl.h" + +#define RFKScriptName "instance_razorfen_kraul" #define DataHeader "RFK" #define EVENT_WARD_KEEPER 1 + +template<typename AI> +inline AI* GetRazorfenKraulAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, RFKScriptName); +} + #endif diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp index 23247e0ba06..aa383be1443 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp @@ -17,9 +17,11 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "Player.h" +#include "InstanceScript.h" +#include "Map.h" +#include "ObjectAccessor.h" #include "ruins_of_ahnqiraj.h" +#include "ScriptedCreature.h" enum Spells { @@ -241,7 +243,7 @@ class boss_ayamiss : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_ayamissAI>(creature); + return GetAQ20AI<boss_ayamissAI>(creature); } }; @@ -259,14 +261,13 @@ class npc_hive_zara_larva : public CreatureScript void MovementInform(uint32 type, uint32 id) override { - if (type == POINT_MOTION_TYPE) - if (id == POINT_PARALYZE) - if (Player* target = ObjectAccessor::GetPlayer(*me, _instance->GetGuidData(DATA_PARALYZED))) + if (type == POINT_MOTION_TYPE && id == POINT_PARALYZE) + if (Unit* target = ObjectAccessor::GetUnit(*me, _instance->GetGuidData(DATA_PARALYZED))) + if (target->GetTypeId() == TYPEID_PLAYER) DoCast(target, SPELL_FEED); // Omnomnom } void MoveInLineOfSight(Unit* who) override - { if (_instance->GetBossState(DATA_AYAMISS) == IN_PROGRESS) return; @@ -295,7 +296,7 @@ class npc_hive_zara_larva : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_hive_zara_larvaAI>(creature); + return GetAQ20AI<npc_hive_zara_larvaAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp index 735463744d7..88097b1ec30 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp @@ -17,9 +17,11 @@ */ #include "ScriptMgr.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" +#include "ruins_of_ahnqiraj.h" #include "ScriptedCreature.h" #include "SpellScript.h" -#include "ruins_of_ahnqiraj.h" enum Emotes { @@ -77,7 +79,7 @@ class boss_buru : public CreatureScript BossAI::EnterEvadeMode(why); for (ObjectGuid eggGuid : Eggs) - if (Creature* egg = me->GetMap()->GetCreature(eggGuid)) + if (Creature* egg = ObjectAccessor::GetCreature(*me, eggGuid)) egg->Respawn(); Eggs.clear(); @@ -161,7 +163,7 @@ class boss_buru : public CreatureScript events.ScheduleEvent(EVENT_CREEPING_PLAGUE, 6000); break; case EVENT_RESPAWN_EGG: - if (Creature* egg = me->GetMap()->GetCreature(*Eggs.begin())) + if (Creature* egg = ObjectAccessor::GetCreature(*me, Eggs.front())) { egg->Respawn(); Eggs.pop_front(); @@ -189,7 +191,7 @@ class boss_buru : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new boss_buruAI(creature); + return GetAQ20AI<boss_buruAI>(creature); } }; @@ -208,7 +210,7 @@ class npc_buru_egg : public CreatureScript void EnterCombat(Unit* attacker) override { - if (Creature* buru = me->GetMap()->GetCreature(_instance->GetGuidData(DATA_BURU))) + if (Creature* buru = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_BURU))) if (!buru->IsInCombat()) buru->AI()->AttackStart(attacker); } @@ -216,7 +218,7 @@ class npc_buru_egg : public CreatureScript void JustSummoned(Creature* who) override { if (who->GetEntry() == NPC_HATCHLING) - if (Creature* buru = me->GetMap()->GetCreature(_instance->GetGuidData(DATA_BURU))) + if (Creature* buru = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_BURU))) if (Unit* target = buru->AI()->SelectTarget(SELECT_TARGET_RANDOM)) who->AI()->AttackStart(target); } @@ -227,7 +229,7 @@ class npc_buru_egg : public CreatureScript DoCastAOE(SPELL_EXPLODE_2, true); // Unknown purpose DoCast(me, SPELL_SUMMON_HATCHLING, true); - if (Creature* buru = me->GetMap()->GetCreature(_instance->GetGuidData(DATA_BURU))) + if (Creature* buru = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_BURU))) if (boss_buru::boss_buruAI* buruAI = dynamic_cast<boss_buru::boss_buruAI*>(buru->AI())) buruAI->ManageRespawn(me->GetGUID()); } @@ -237,7 +239,7 @@ class npc_buru_egg : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_buru_eggAI>(creature); + return GetAQ20AI<npc_buru_eggAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp index 1e8db0f104c..3d208c4fd1b 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp @@ -15,11 +15,11 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ObjectMgr.h" #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ruins_of_ahnqiraj.h" #include "CreatureTextMgr.h" +#include "InstanceScript.h" +#include "ruins_of_ahnqiraj.h" +#include "ScriptedCreature.h" enum Spells { @@ -83,7 +83,7 @@ class boss_kurinnaxx : public CreatureScript void JustDied(Unit* /*killer*/) override { _JustDied(); - if (Creature* Ossirian = me->GetMap()->GetCreature(instance->GetGuidData(DATA_OSSIRIAN))) + if (Creature* Ossirian = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_OSSIRIAN))) sCreatureTextMgr->SendChat(Ossirian, SAY_KURINAXX_DEATH, NULL, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_ZONE); } @@ -136,7 +136,7 @@ class boss_kurinnaxx : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_kurinnaxxAI>(creature); + return GetAQ20AI<boss_kurinnaxxAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp index 9f214eb5e12..0c3dc662dde 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp @@ -16,8 +16,8 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "ruins_of_ahnqiraj.h" +#include "ScriptedCreature.h" enum Texts { @@ -183,7 +183,7 @@ class boss_moam : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new boss_moamAI(creature); + return GetAQ20AI<boss_moamAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp index 8a111f1de10..beca6e88156 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp @@ -15,14 +15,16 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "ScriptMgr.h" +#include "GameObject.h" +#include "InstanceScript.h" #include "MiscPackets.h" #include "Player.h" #include "ruins_of_ahnqiraj.h" #include "ScriptedCreature.h" -#include "ScriptMgr.h" #include "SpellInfo.h" +#include "TemporarySummon.h" #include "Weather.h" -#include "WorldPacket.h" enum Texts { @@ -118,7 +120,8 @@ class boss_ossirian : public CreatureScript if (spell->Id == SpellWeakness[i]) { me->RemoveAurasDueToSpell(SPELL_SUPREME); - ((TempSummon*)caster)->UnSummon(); + if (Creature* creatureCaster = caster->ToCreature()) + creatureCaster->DespawnOrUnsummon(); SpawnNextCrystal(); } } @@ -187,10 +190,10 @@ class boss_ossirian : public CreatureScript if (CrystalIterator == NUM_CRYSTALS) CrystalIterator = 0; - if (Creature* Trigger = me->GetMap()->SummonCreature(NPC_OSSIRIAN_TRIGGER, CrystalCoordinates[CrystalIterator])) + if (Creature* Trigger = me->SummonCreature(NPC_OSSIRIAN_TRIGGER, CrystalCoordinates[CrystalIterator])) { TriggerGUID = Trigger->GetGUID(); - if (GameObject* Crystal = Trigger->SummonGameObject(GO_OSSIRIAN_CRYSTAL, CrystalCoordinates[CrystalIterator], G3D::Quat(), uint32(-1))) + if (GameObject* Crystal = Trigger->SummonGameObject(GO_OSSIRIAN_CRYSTAL, CrystalCoordinates[CrystalIterator], QuaternionData(), uint32(-1))) { CrystalGUID = Crystal->GetGUID(); ++CrystalIterator; @@ -269,7 +272,7 @@ class boss_ossirian : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_ossirianAI>(creature); + return GetAQ20AI<boss_ossirianAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp index 5fd456c0295..1ab55c301ba 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp @@ -15,10 +15,9 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ObjectMgr.h" #include "ScriptMgr.h" -#include "ScriptedCreature.h" #include "ruins_of_ahnqiraj.h" +#include "ScriptedCreature.h" enum Yells { @@ -130,7 +129,7 @@ class boss_rajaxx : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new boss_rajaxxAI(creature); + return GetAQ20AI<boss_rajaxxAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp index 2c3e23f4dd4..8a24b8bdaf3 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp @@ -16,13 +16,15 @@ */ #include "ScriptMgr.h" +#include "Creature.h" #include "InstanceScript.h" +#include "Map.h" #include "ruins_of_ahnqiraj.h" class instance_ruins_of_ahnqiraj : public InstanceMapScript { public: - instance_ruins_of_ahnqiraj() : InstanceMapScript("instance_ruins_of_ahnqiraj", 509) { } + instance_ruins_of_ahnqiraj() : InstanceMapScript(AQ20ScriptName, 509) { } struct instance_ruins_of_ahnqiraj_InstanceMapScript : public InstanceScript { diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h index 944c2768b9d..42da5d7cf7c 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h @@ -18,6 +18,9 @@ #ifndef DEF_RUINS_OF_AHNQIRAJ_H #define DEF_RUINS_OF_AHNQIRAJ_H +#include "CreatureAIImpl.h" + +#define AQ20ScriptName "instance_ruins_of_ahnqiraj" #define DataHeader "AQR" enum AQRDataTypes @@ -57,4 +60,10 @@ enum AQRGameObjectIds GO_OSSIRIAN_CRYSTAL = 180619 }; +template<typename AI> +inline AI* GetAQ20AI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, AQ20ScriptName); +} + #endif diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index 8fd8e42e554..5558fb1c70f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -24,8 +24,11 @@ SDCategory: Temple of Ahn'Qiraj EndScriptData */ #include "ScriptMgr.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" #include "ScriptedCreature.h" #include "temple_of_ahnqiraj.h" +#include "TemporarySummon.h" enum Spells { @@ -48,7 +51,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_kriAI>(creature); + return GetAQ40AI<boss_kriAI>(creature); } struct boss_kriAI : public ScriptedAI @@ -147,7 +150,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_vemAI>(creature); + return GetAQ40AI<boss_vemAI>(creature); } struct boss_vemAI : public ScriptedAI @@ -242,7 +245,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_yaujAI>(creature); + return GetAQ40AI<boss_yaujAI>(creature); } struct boss_yaujAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index b77d317ba01..992d05720e1 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -24,9 +24,13 @@ SDCategory: Temple of Ahn'Qiraj EndScriptData */ #include "ScriptMgr.h" +#include "InstanceScript.h" +#include "Map.h" +#include "MapReference.h" +#include "ObjectAccessor.h" #include "ScriptedCreature.h" #include "temple_of_ahnqiraj.h" -#include "Player.h" +#include "TemporarySummon.h" /* * This is a 2 phases events. Here follows an explanation of the main events and transition between phases and sub-phases. @@ -153,7 +157,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<eye_of_cthunAI>(creature); + return GetAQ40AI<eye_of_cthunAI>(creature); } struct eye_of_cthunAI : public ScriptedAI @@ -453,7 +457,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<cthunAI>(creature); + return GetAQ40AI<cthunAI>(creature); } struct cthunAI : public ScriptedAI @@ -891,7 +895,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new eye_tentacleAI(creature); + return GetAQ40AI<eye_tentacleAI>(creature); } struct eye_tentacleAI : public ScriptedAI @@ -969,7 +973,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new claw_tentacleAI(creature); + return GetAQ40AI<claw_tentacleAI>(creature); } struct claw_tentacleAI : public ScriptedAI @@ -1083,7 +1087,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new giant_claw_tentacleAI(creature); + return GetAQ40AI<giant_claw_tentacleAI>(creature); } struct giant_claw_tentacleAI : public ScriptedAI @@ -1207,7 +1211,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new giant_eye_tentacleAI(creature); + return GetAQ40AI<giant_eye_tentacleAI>(creature); } struct giant_eye_tentacleAI : public ScriptedAI @@ -1273,7 +1277,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new flesh_tentacleAI(creature); + return GetAQ40AI<flesh_tentacleAI>(creature); } struct flesh_tentacleAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index 011cf1509a5..e03bbe211c5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -25,6 +25,8 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "temple_of_ahnqiraj.h" +#include "TemporarySummon.h" #define SOUND_SENTENCE_YOU 8588 #define SOUND_SERVE_TO 8589 @@ -48,7 +50,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_fankrissAI(creature); + return GetAQ40AI<boss_fankrissAI>(creature); } struct boss_fankrissAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp index 45a61cecd47..d0912023709 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp @@ -25,6 +25,7 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "temple_of_ahnqiraj.h" enum Huhuran { @@ -46,7 +47,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_huhuranAI(creature); + return GetAQ40AI<boss_huhuranAI>(creature); } struct boss_huhuranAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index daf9e3eb535..3c9956adeae 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -43,7 +43,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_ouroAI(creature); + return GetAQ40AI<boss_ouroAI>(creature); } struct boss_ouroAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 006d6377b42..8d1e8ad302e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -25,6 +25,7 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "temple_of_ahnqiraj.h" enum Sartura { @@ -48,7 +49,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new boss_sarturaAI(creature); + return GetAQ40AI<boss_sarturaAI>(creature); } struct boss_sarturaAI : public ScriptedAI @@ -198,7 +199,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_sartura_royal_guardAI(creature); + return GetAQ40AI<npc_sartura_royal_guardAI>(creature); } struct npc_sartura_royal_guardAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index 1cbdaf7b18d..2163ea31ab2 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -81,7 +81,7 @@ class boss_skeram : public CreatureScript { ScriptedAI::EnterEvadeMode(why); if (me->IsSummon()) - ((TempSummon*)me)->UnSummon(); + me->DespawnOrUnsummon(); } void JustSummoned(Creature* creature) override @@ -199,25 +199,10 @@ class boss_skeram : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new boss_skeramAI(creature); + return GetAQ40AI<boss_skeramAI>(creature); } }; -class PlayerOrPetCheck -{ - public: - bool operator()(WorldObject* object) const - { - if (object->GetTypeId() == TYPEID_PLAYER) - return false; - - if (Creature* creature = object->ToCreature()) - return !creature->IsPet(); - - return true; - } -}; - class spell_skeram_arcane_explosion : public SpellScriptLoader { public: @@ -229,7 +214,10 @@ class spell_skeram_arcane_explosion : public SpellScriptLoader void FilterTargets(std::list<WorldObject*>& targets) { - targets.remove_if(PlayerOrPetCheck()); + targets.remove_if([](WorldObject* target) + { + return target->GetTypeId() != TYPEID_PLAYER && (target->GetTypeId() != TYPEID_UNIT || !target->ToUnit()->IsPet()); + }); } void Register() override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 924888219d0..c70bede36ed 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -395,7 +395,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_veknilashAI>(creature); + return GetAQ40AI<boss_veknilashAI>(creature); } struct boss_veknilashAI : public boss_twinemperorsAI @@ -483,7 +483,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_veklorAI>(creature); + return GetAQ40AI<boss_veklorAI>(creature); } struct boss_veklorAI : public boss_twinemperorsAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index 1d41e808bc9..c8102675ac5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -16,9 +16,12 @@ */ #include "ScriptMgr.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" #include "ScriptedCreature.h" #include "SpellInfo.h" #include "temple_of_ahnqiraj.h" +#include "TemporarySummon.h" enum Spells { @@ -255,7 +258,7 @@ class boss_viscidus : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return new boss_viscidusAI(creature); + return GetAQ40AI<boss_viscidusAI>(creature); } }; @@ -272,10 +275,9 @@ class npc_glob_of_viscidus : public CreatureScript { InstanceScript* Instance = me->GetInstanceScript(); - if (Creature* Viscidus = me->GetMap()->GetCreature(Instance->GetGuidData(DATA_VISCIDUS))) + if (Creature* Viscidus = ObjectAccessor::GetCreature(*me, Instance->GetGuidData(DATA_VISCIDUS))) { - if (BossAI* ViscidusAI = dynamic_cast<BossAI*>(Viscidus->GetAI())) - ViscidusAI->SummonedCreatureDespawn(me); + Viscidus->AI()->SummonedCreatureDespawn(me); if (Viscidus->IsAlive() && Viscidus->GetHealthPct() < 5.0f) { @@ -304,7 +306,7 @@ class npc_glob_of_viscidus : public CreatureScript CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_glob_of_viscidusAI>(creature); + return GetAQ40AI<npc_glob_of_viscidusAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp index 054844c9c2f..51bc8a27550 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -24,13 +24,15 @@ SDCategory: Temple of Ahn'Qiraj EndScriptData */ #include "ScriptMgr.h" +#include "Creature.h" #include "InstanceScript.h" +#include "Map.h" #include "temple_of_ahnqiraj.h" class instance_temple_of_ahnqiraj : public InstanceMapScript { public: - instance_temple_of_ahnqiraj() : InstanceMapScript("instance_temple_of_ahnqiraj", 531) { } + instance_temple_of_ahnqiraj() : InstanceMapScript(AQ40ScriptName, 531) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp index 9a8bfff933f..cf987d35289 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp @@ -24,17 +24,11 @@ SDCategory: Temple of Ahn'Qiraj EndScriptData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "WorldPacket.h" - -#include "Item.h" -#include "Player.h" -#include "Spell.h" - -#include "Cell.h" #include "CellImpl.h" -#include "GridNotifiers.h" #include "GridNotifiersImpl.h" +#include "ObjectAccessor.h" +#include "ScriptedCreature.h" +#include "temple_of_ahnqiraj.h" enum Spells { @@ -66,7 +60,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new aqsentinelAI(creature); + return GetAQ40AI<aqsentinelAI>(creature); } struct aqsentinelAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index 58e75af6276..bff449e9d82 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -19,6 +19,9 @@ #ifndef DEF_TEMPLE_OF_AHNQIRAJ_H #define DEF_TEMPLE_OF_AHNQIRAJ_H +#include "CreatureAIImpl.h" + +#define AQ40ScriptName "instance_temple_of_ahnqiraj" #define DataHeader "AQT" enum AQTDataTypes @@ -62,4 +65,10 @@ enum AQTCreatures NPC_VEKNILASH = 15275 }; +template<typename AI> +inline AI* GetAQ40AI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, AQ40ScriptName); +} + #endif diff --git a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp index c5a360258c6..44448706a25 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp @@ -23,9 +23,11 @@ SDComment: Everything seems to work, still need some checking SDCategory: Wailing Caverns EndScriptData */ -#include "Log.h" -#include "InstanceScript.h" #include "ScriptMgr.h" +#include "Creature.h" +#include "InstanceScript.h" +#include "Log.h" +#include "Map.h" #include "wailing_caverns.h" #define MAX_ENCOUNTER 9 @@ -33,7 +35,7 @@ EndScriptData */ class instance_wailing_caverns : public InstanceMapScript { public: - instance_wailing_caverns() : InstanceMapScript("instance_wailing_caverns", 43) { } + instance_wailing_caverns() : InstanceMapScript(WCScriptName, 43) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp index 7f9710d504f..27b096e3561 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp @@ -27,11 +27,11 @@ EndScriptData */ EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" +#include "InstanceScript.h" +#include "Player.h" #include "ScriptedGossip.h" #include "ScriptedEscortAI.h" #include "wailing_caverns.h" -#include "Player.h" /*###### ## npc_disciple_of_naralex @@ -81,7 +81,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_disciple_of_naralexAI>(creature); + return GetWailingCavernsAI<npc_disciple_of_naralexAI>(creature); } bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h index 1b655815934..d0757964c85 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h @@ -19,6 +19,9 @@ #ifndef DEF_WAILING_CAVERNS_H #define DEF_WAILING_CAVERNS_H +#include "CreatureAIImpl.h" + +#define WCScriptName "instance_wailing_caverns" #define DataHeader "WC" enum WCDataTypes @@ -37,4 +40,10 @@ enum WCDataTypes DATA_NARALEX = 3679, }; +template<typename AI> +inline AI* GetWailingCavernsAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, WCScriptName); +} + #endif diff --git a/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp b/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp index 424803ae2ca..0fd0ffa8c41 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp @@ -21,6 +21,7 @@ Category: Tanaris, ZulFarrak */ #include "ScriptMgr.h" +#include "InstanceScript.h" #include "ScriptedCreature.h" #include "zulfarrak.h" @@ -157,7 +158,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_zum_rahAI>(creature); + return GetZulFarrakAI<boss_zum_rahAI>(creature); } }; diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp index cafd9a8c917..695d99872e9 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp @@ -16,10 +16,11 @@ */ #include "ScriptMgr.h" +#include "GameObject.h" #include "InstanceScript.h" -#include "zulfarrak.h" -#include "Player.h" +#include "Map.h" #include "TemporarySummon.h" +#include "zulfarrak.h" enum Misc { @@ -99,7 +100,7 @@ float Spawnsway[2][3] = class instance_zulfarrak : public InstanceMapScript { public: - instance_zulfarrak() : InstanceMapScript("instance_zulfarrak", 209) { } + instance_zulfarrak() : InstanceMapScript(ZFScriptName, 209) { } InstanceScript* GetInstanceScript(InstanceMap* map) const override { @@ -328,9 +329,11 @@ public: if (pyramidSpawns[i][0] == (float)wave) { Position pos = {pyramidSpawns[i][2], pyramidSpawns[i][3], 8.87f, 0}; - TempSummon* ts = instance->SummonCreature(uint32(pyramidSpawns[i][1]), pos); - ts->GetMotionMaster()->MoveRandom(10); - addsAtBase.push_back(ts->GetGUID()); + if (TempSummon* ts = instance->SummonCreature(uint32(pyramidSpawns[i][1]), pos)) + { + ts->GetMotionMaster()->MoveRandom(10); + addsAtBase.push_back(ts->GetGUID()); + } } } } @@ -359,7 +362,7 @@ public: void SendAddsUpStairs(uint32 count) { //pop a add from list, send him up the stairs... - for (uint32 addCount = 0; addCount<count && !addsAtBase.empty(); addCount++) + for (uint32 addCount = 0; addCount < count && !addsAtBase.empty(); addCount++) { if (Creature* add = instance->GetCreature(*addsAtBase.begin())) { diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index 5b419b0217a..c30d956bcc4 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -29,10 +29,13 @@ npc_weegli_blastfuse EndContentData */ #include "ScriptMgr.h" +#include "GameObject.h" +#include "InstanceScript.h" +#include "ObjectAccessor.h" +#include "Player.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" #include "zulfarrak.h" -#include "Player.h" /*###### ## npc_sergeant_bly @@ -97,7 +100,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_sergeant_blyAI>(creature); + return GetZulFarrakAI<npc_sergeant_blyAI>(creature); } struct npc_sergeant_blyAI : public ScriptedAI @@ -141,7 +144,7 @@ public: { case 1: //weegli doesn't fight - he goes & blows up the door - if (Creature* pWeegli = instance->instance->GetCreature(instance->GetGuidData(ENTRY_WEEGLI))) + if (Creature* pWeegli = ObjectAccessor::GetCreature(*me, instance->GetGuidData(ENTRY_WEEGLI))) pWeegli->AI()->DoAction(0); Talk(SAY_1); Text_Timer = 5000; @@ -300,7 +303,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_weegli_blastfuseAI>(creature); + return GetZulFarrakAI<npc_weegli_blastfuseAI>(creature); } struct npc_weegli_blastfuseAI : public ScriptedAI diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h index cb38db2c55c..bc6ed4441a2 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h @@ -19,6 +19,9 @@ #ifndef DEF_ZF_H #define DEF_ZF_H +#include "CreatureAIImpl.h" + +#define ZFScriptName "instance_zulfarrak" #define DataHeader "ZF" enum ZFEntries @@ -54,4 +57,10 @@ enum ZFPyramidPhases PYRAMID_KILLED_ALL_TROLLS, }; +template<typename AI> +inline AI* GetZulFarrakAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, ZFScriptName); +} + #endif
\ No newline at end of file diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index 6a06ff3f7be..e9337d3e4ee 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -33,12 +33,13 @@ npc_death_ravager EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedEscortAI.h" -#include "ScriptedGossip.h" #include "CellImpl.h" #include "GridNotifiersImpl.h" #include "Log.h" +#include "ObjectAccessor.h" +#include "ScriptedEscortAI.h" +#include "ScriptedGossip.h" +#include "TemporarySummon.h" /*###### ## npc_draenei_survivor diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index 04da6aa74aa..f1aec9a37be 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -27,14 +27,14 @@ EndScriptData */ npc_webbed_creature EndContentData */ -#include "Player.h" -#include "Group.h" -#include "GridNotifiersImpl.h" #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedEscortAI.h" -#include "PassiveAI.h" #include "CellImpl.h" +#include "GridNotifiersImpl.h" +#include "Group.h" +#include "ObjectAccessor.h" +#include "PassiveAI.h" +#include "Player.h" +#include "ScriptedEscortAI.h" /*###### ## npc_webbed_creature @@ -499,7 +499,7 @@ public: _explosivesGuids.clear(); for (uint8 i = 0; i != MAX_EXPLOSIVES; ++i) { - if (GameObject* explosive = me->SummonGameObject(GO_DRAENEI_EXPLOSIVES_1, ExplosivesPos[0][i], G3D::Quat(), 0)) + if (GameObject* explosive = me->SummonGameObject(GO_DRAENEI_EXPLOSIVES_1, ExplosivesPos[0][i], QuaternionData(), 0)) _explosivesGuids.push_back(explosive->GetGUID()); } me->HandleEmoteCommand(EMOTE_ONESHOT_NONE); // reset anim state @@ -595,7 +595,7 @@ public: _explosivesGuids.clear(); for (uint8 i = 0; i != MAX_EXPLOSIVES; ++i) { - if (GameObject* explosive = me->SummonGameObject(GO_DRAENEI_EXPLOSIVES_2, ExplosivesPos[1][i], G3D::Quat(), 0)) + if (GameObject* explosive = me->SummonGameObject(GO_DRAENEI_EXPLOSIVES_2, ExplosivesPos[1][i], QuaternionData(), 0)) _explosivesGuids.push_back(explosive->GetGUID()); } Talk(SAY_LEGOSO_15); diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp index 3a3d045cb06..a1a6b2d5329 100644 --- a/src/server/scripts/Kalimdor/zone_durotar.cpp +++ b/src/server/scripts/Kalimdor/zone_durotar.cpp @@ -135,12 +135,16 @@ class spell_voodoo : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_BREW) || !sSpellMgr->GetSpellInfo(SPELL_GHOSTLY) || - !sSpellMgr->GetSpellInfo(SPELL_HEX1) || !sSpellMgr->GetSpellInfo(SPELL_HEX2) || - !sSpellMgr->GetSpellInfo(SPELL_HEX3) || !sSpellMgr->GetSpellInfo(SPELL_GROW) || - !sSpellMgr->GetSpellInfo(SPELL_LAUNCH)) - return false; - return true; + return ValidateSpellInfo( + { + SPELL_BREW, + SPELL_GHOSTLY, + SPELL_HEX1, + SPELL_HEX2, + SPELL_HEX3, + SPELL_GROW, + SPELL_LAUNCH + }); } void HandleDummy(SpellEffIndex /*effIndex*/) diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp index dbc46b60a93..bb5ca8716e8 100644 --- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp @@ -28,6 +28,7 @@ EndContentData */ #include "ScriptMgr.h" #include "Player.h" +#include "QuestDef.h" #include "ScriptedEscortAI.h" #include "ScriptedGossip.h" #include "SpellInfo.h" @@ -247,9 +248,7 @@ class spell_ooze_zap : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_OOZE_ZAP)) - return false; - return true; + return ValidateSpellInfo({ SPELL_OOZE_ZAP }); } SpellCastResult CheckRequirement() @@ -294,9 +293,7 @@ class spell_ooze_zap_channel_end : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_OOZE_ZAP_CHANNEL_END)) - return false; - return true; + return ValidateSpellInfo({ SPELL_OOZE_ZAP_CHANNEL_END }); } void HandleDummy(SpellEffIndex effIndex) @@ -330,9 +327,7 @@ class spell_energize_aoe : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_ENERGIZED)) - return false; - return true; + return ValidateSpellInfo({ SPELL_ENERGIZED }); } void FilterTargets(std::list<WorldObject*>& targets) diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 81481b54a73..afece0568de 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -36,10 +36,14 @@ go_wind_stone EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" +#include "CreatureAIImpl.h" +#include "GameObject.h" #include "Group.h" #include "Player.h" +#include "ObjectAccessor.h" +#include "ScriptedCreature.h" +#include "ScriptedGossip.h" +#include "TemporarySummon.h" /*##### # Quest: A Pawn on the Eternal Board @@ -505,11 +509,11 @@ public: DoCast(player, SPELL_CALL_PRISMATIC_BARRIER, true); break; case 37: - me->SummonGameObject(GO_GATE_OF_AHN_QIRAJ, Position(-8130.f, 1525.f, 17.5f, 0.f), G3D::Quat(), 0); + me->SummonGameObject(GO_GATE_OF_AHN_QIRAJ, Position(-8130.f, 1525.f, 17.5f, 0.f), QuaternionData(), 0); break; case 38: DoCast(player, SPELL_CALL_GLYPHS_OF_WARDING, true); - me->SummonGameObject(GO_GLYPH_OF_AHN_QIRAJ, Position(-8130.f, 1525.f, 17.5f, 0.f), G3D::Quat(), 0); + me->SummonGameObject(GO_GLYPH_OF_AHN_QIRAJ, Position(-8130.f, 1525.f, 17.5f, 0.f), QuaternionData(), 0); break; case 39: Talk(ANACHRONOS_SAY_5, Fandral); @@ -518,7 +522,7 @@ public: Fandral->CastSpell(me, SPELL_CALL_ANCIENTS, true); break; case 41: - Fandral->SummonGameObject(GO_ROOTS_OF_AHN_QIRAJ, Position(-8130.f, 1525.f, 17.5f, 0.f), G3D::Quat(), 0); + Fandral->SummonGameObject(GO_ROOTS_OF_AHN_QIRAJ, Position(-8130.f, 1525.f, 17.5f, 0.f), QuaternionData(), 0); Fandral->AI()->Talk(FANDRAL_SAY_3); break; case 42: diff --git a/src/server/scripts/Kalimdor/zone_tanaris.cpp b/src/server/scripts/Kalimdor/zone_tanaris.cpp index c1880995732..4c074407025 100644 --- a/src/server/scripts/Kalimdor/zone_tanaris.cpp +++ b/src/server/scripts/Kalimdor/zone_tanaris.cpp @@ -29,12 +29,11 @@ npc_OOX17 EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" +#include "ObjectAccessor.h" +#include "Player.h" #include "ScriptedEscortAI.h" #include "ScriptedFollowerAI.h" -#include "Player.h" -#include "WorldSession.h" +#include "ScriptedGossip.h" /*###### ## npc_aquementas diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index 5045c1efe8a..88d776d887d 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -28,11 +28,12 @@ npc_wizzlecrank_shredder EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" -#include "ScriptedEscortAI.h" +#include "ObjectAccessor.h" #include "Player.h" +#include "ScriptedEscortAI.h" +#include "ScriptedGossip.h" #include "SpellInfo.h" +#include "TemporarySummon.h" /*###### ## npc_beaten_corpse diff --git a/src/server/scripts/Kalimdor/zone_winterspring.cpp b/src/server/scripts/Kalimdor/zone_winterspring.cpp index 687740ce559..8d87d82e4a7 100644 --- a/src/server/scripts/Kalimdor/zone_winterspring.cpp +++ b/src/server/scripts/Kalimdor/zone_winterspring.cpp @@ -30,10 +30,11 @@ go_elune_fire EndContentData */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" -#include "ScriptedEscortAI.h" +#include "GameObject.h" #include "Player.h" +#include "ScriptedEscortAI.h" +#include "ScriptedGossip.h" +#include "TemporarySummon.h" #include "WorldSession.h" /*###### |
