diff options
7 files changed, 48 insertions, 61 deletions
diff --git a/sql/updates/world/master/2021_11_09_07_world_2018_09_21_00_world.sql b/sql/updates/world/master/2021_11_09_07_world_2018_09_21_00_world.sql new file mode 100644 index 00000000000..27d043a253a --- /dev/null +++ b/sql/updates/world/master/2021_11_09_07_world_2018_09_21_00_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `areatrigger_scripts` WHERE `entry` = 4052 AND `ScriptName` = 'at_aq_battleguard_sartura'; +INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES +(4052, 'at_aq_battleguard_sartura'); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index 37e4acdd660..1f6bf5d03f0 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -315,11 +315,11 @@ public: switch (urand(0, 2)) { case 0: - if (Creature* kri = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KRI))) + if (Creature* kri = instance->GetCreature(DATA_KRI)) DoCast(kri, SPELL_HEAL); break; case 1: - if (Creature* vem = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VEM))) + if (Creature* vem = instance->GetCreature(DATA_VEM)) DoCast(vem, SPELL_HEAL); break; case 2: diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 9d503546f07..b2a6593382f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -23,8 +23,10 @@ SDCategory: Temple of Ahn'Qiraj EndScriptData */ #include "ScriptMgr.h" +#include "InstanceScript.h" #include "ScriptedCreature.h" #include "temple_of_ahnqiraj.h" +#include "Player.h" enum Sartura { @@ -36,7 +38,7 @@ enum Sartura SPELL_ENRAGE = 28747, //Not sure if right ID. SPELL_ENRAGEHARD = 28798, -//Guard Spell + //Guard Spell SPELL_WHIRLWINDADD = 26038, SPELL_KNOCKBACK = 26027 }; @@ -310,8 +312,28 @@ public: }; +// 4052 +class at_aq_battleguard_sartura : public AreaTriggerScript +{ +public: + at_aq_battleguard_sartura() : AreaTriggerScript("at_aq_battleguard_sartura") { } + + bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool entered) override + { + if (!entered) + return false; + + if (InstanceScript* instance = player->GetInstanceScript()) + if (Creature* sartura = instance->GetCreature(DATA_SARTURA)) + sartura->AI()->AttackStart(player); + + return true; + } +}; + void AddSC_boss_sartura() { new boss_sartura(); new npc_sartura_royal_guard(); + new at_aq_battleguard_sartura(); } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 98dc6db9924..2a09bbad92e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -110,7 +110,7 @@ struct boss_twinemperorsAI : public ScriptedAI Creature* GetOtherBoss() { - return ObjectAccessor::GetCreature(*me, instance->GetGuidData(IAmVeklor() ? DATA_VEKNILASH : DATA_VEKLOR)); + return instance->GetCreature(IAmVeklor() ? DATA_VEKNILASH : DATA_VEKLOR); } void DamageTaken(Unit* /*done_by*/, uint32 &damage) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index bd26a4e4d39..5d78d9f4bc9 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -274,9 +274,9 @@ class npc_glob_of_viscidus : public CreatureScript void JustDied(Unit* /*killer*/) override { - InstanceScript* Instance = me->GetInstanceScript(); + InstanceScript* instance = me->GetInstanceScript(); - if (Creature* Viscidus = ObjectAccessor::GetCreature(*me, Instance->GetGuidData(DATA_VISCIDUS))) + if (Creature* Viscidus = instance->GetCreature(DATA_VISCIDUS)) { Viscidus->AI()->SummonedCreatureDespawn(me); 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 50eb304600c..9128b08cc7a 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -27,6 +27,17 @@ EndScriptData */ #include "InstanceScript.h" #include "temple_of_ahnqiraj.h" +ObjectData const creatureData[] = +{ + { NPC_VEM, DATA_VEM }, + { NPC_KRI, DATA_KRI }, + { NPC_VEKLOR, DATA_VEKLOR }, + { NPC_VEKNILASH, DATA_VEKNILASH }, + { NPC_VISCIDUS, DATA_VISCIDUS }, + { NPC_SARTURA, DATA_SARTURA }, + { 0, 0 } // END +}; + class instance_temple_of_ahnqiraj : public InstanceMapScript { public: @@ -42,6 +53,8 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript instance_temple_of_ahnqiraj_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { SetHeaders(DataHeader); + LoadObjectData(creatureData, nullptr); + IsBossDied[0] = false; IsBossDied[1] = false; IsBossDied[2] = false; @@ -54,43 +67,10 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript //If Vem is dead... bool IsBossDied[3]; - //Storing Skeram, Vem and Kri. - ObjectGuid SkeramGUID; - ObjectGuid VemGUID; - ObjectGuid KriGUID; - ObjectGuid VeklorGUID; - ObjectGuid VeknilashGUID; - ObjectGuid ViscidusGUID; - uint32 BugTrioDeathCount; uint32 CthunPhase; - void OnCreatureCreate(Creature* creature) override - { - switch (creature->GetEntry()) - { - case NPC_SKERAM: - SkeramGUID = creature->GetGUID(); - break; - case NPC_VEM: - VemGUID = creature->GetGUID(); - break; - case NPC_KRI: - KriGUID = creature->GetGUID(); - break; - case NPC_VEKLOR: - VeklorGUID = creature->GetGUID(); - break; - case NPC_VEKNILASH: - VeknilashGUID = creature->GetGUID(); - break; - case NPC_VISCIDUS: - ViscidusGUID = creature->GetGUID(); - break; - } - } - bool IsEncounterInProgress() const override { //not active in AQ40 @@ -125,26 +105,6 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript return 0; } - ObjectGuid GetGuidData(uint32 identifier) const override - { - switch (identifier) - { - case DATA_SKERAM: - return SkeramGUID; - case DATA_VEM: - return VemGUID; - case DATA_KRI: - return KriGUID; - case DATA_VEKLOR: - return VeklorGUID; - case DATA_VEKNILASH: - return VeknilashGUID; - case DATA_VISCIDUS: - return ViscidusGUID; - } - return ObjectGuid::Empty; - } // end GetGuidData - void SetData(uint32 type, uint32 data) override { switch (type) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index b70febfb49f..d73946fcd0f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -38,7 +38,8 @@ enum AQTDataTypes DATA_VEKNILASH_DEATH = 11, DATA_BUG_TRIO_DEATH = 14, DATA_CTHUN_PHASE = 20, - DATA_VISCIDUS = 21 + DATA_VISCIDUS = 21, + DATA_SARTURA = 22 }; enum AQTCreatures @@ -61,7 +62,8 @@ enum AQTCreatures NPC_VEM = 15544, NPC_KRI = 15511, NPC_VEKLOR = 15276, - NPC_VEKNILASH = 15275 + NPC_VEKNILASH = 15275, + NPC_SARTURA = 15516 }; template <class AI, class T> |