diff options
author | Keader <keader.android@gmail.com> | 2019-01-28 17:13:59 -0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-11-23 00:39:17 +0100 |
commit | 5c48cac6f9e22653a463655d322f2b6506e65131 (patch) | |
tree | 26632a667740c851c0ead106be24d74d9b8625e2 | |
parent | 3027458338a4b3679b4a938d00be2c1bbbd56786 (diff) |
Scripts/Temple of Ahn Qiraj: Scripted doors of AQ40
Doors added in https://github.com/TrinityCore/TrinityCore/commit/1ba09572b5a49d5cd247cdca47109d3325ec12f3
(cherry picked from commit 06078e30c6f1d6e2ab1dcecbba15127b07b32bb7)
10 files changed, 76 insertions, 77 deletions
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index 1f6bf5d03f0..3e3a249fe19 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -53,12 +53,11 @@ public: return GetAQ40AI<boss_kriAI>(creature); } - struct boss_kriAI : public ScriptedAI + struct boss_kriAI : public BossAI { - boss_kriAI(Creature* creature) : ScriptedAI(creature) + boss_kriAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO) { Initialize(); - instance = creature->GetInstanceScript(); } void Initialize() @@ -71,8 +70,6 @@ public: Death = false; } - InstanceScript* instance; - uint32 Cleave_Timer; uint32 ToxicVolley_Timer; uint32 Check_Timer; @@ -83,11 +80,9 @@ public: void Reset() override { Initialize(); + _Reset(); } - void JustEngagedWith(Unit* /*who*/) override - { - } void JustDied(Unit* /*killer*/) override { @@ -152,12 +147,11 @@ public: return GetAQ40AI<boss_vemAI>(creature); } - struct boss_vemAI : public ScriptedAI + struct boss_vemAI : public BossAI { - boss_vemAI(Creature* creature) : ScriptedAI(creature) + boss_vemAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO) { Initialize(); - instance = creature->GetInstanceScript(); } void Initialize() @@ -169,8 +163,6 @@ public: Enraged = false; } - InstanceScript* instance; - uint32 Charge_Timer; uint32 KnockBack_Timer; uint32 Enrage_Timer; @@ -180,6 +172,7 @@ public: void Reset() override { Initialize(); + _Reset(); } void JustDied(Unit* /*killer*/) override @@ -190,10 +183,6 @@ public: instance->SetData(DATA_BUG_TRIO_DEATH, 1); } - void JustEngagedWith(Unit* /*who*/) override - { - } - void UpdateAI(uint32 diff) override { //Return since we have no target @@ -245,12 +234,11 @@ public: return GetAQ40AI<boss_yaujAI>(creature); } - struct boss_yaujAI : public ScriptedAI + struct boss_yaujAI : public BossAI { - boss_yaujAI(Creature* creature) : ScriptedAI(creature) + boss_yaujAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO) { Initialize(); - instance = creature->GetInstanceScript(); } void Initialize() @@ -262,8 +250,6 @@ public: VemDead = false; } - InstanceScript* instance; - uint32 Heal_Timer; uint32 Fear_Timer; uint32 Check_Timer; @@ -291,10 +277,6 @@ public: } } - void JustEngagedWith(Unit* /*who*/) override - { - } - void UpdateAI(uint32 diff) override { //Return since we have no target diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index 11415bff291..9f7f47791c5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -459,14 +459,12 @@ public: return GetAQ40AI<cthunAI>(creature); } - struct cthunAI : public ScriptedAI + struct cthunAI : public BossAI { - cthunAI(Creature* creature) : ScriptedAI(creature) + cthunAI(Creature* creature) : BossAI(creature, DATA_CTHUN) { Initialize(); SetCombatMovement(false); - - instance = creature->GetInstanceScript(); } void Initialize() @@ -491,8 +489,6 @@ public: StomachEnterTarget.Clear(); //Target to be teleported to stomach } - InstanceScript* instance; - //Out of combat whisper timer uint32 WisperTimer; @@ -520,6 +516,7 @@ public: void Reset() override { Initialize(); + _Reset(); //Clear players in stomach and outside Stomach_Map.clear(); @@ -532,11 +529,6 @@ public: instance->SetData(DATA_CTHUN_PHASE, PHASE_NOT_STARTED); } - void JustEngagedWith(Unit* /*who*/) override - { - DoZoneInCombat(); - } - void SpawnEyeTentacle(float x, float y) { Creature* Spawned = DoSpawnCreature(NPC_EYE_TENTACLE, x, y, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 500); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index 9d6abb66649..20b9aebe304 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -52,9 +52,9 @@ public: return GetAQ40AI<boss_fankrissAI>(creature); } - struct boss_fankrissAI : public ScriptedAI + struct boss_fankrissAI : public BossAI { - boss_fankrissAI(Creature* creature) : ScriptedAI(creature) + boss_fankrissAI(Creature* creature) : BossAI(creature, DATA_FRANKRIS) { Initialize(); } @@ -73,6 +73,7 @@ public: void Reset() override { Initialize(); + _Reset(); } void SummonSpawn(Unit* victim) @@ -102,10 +103,6 @@ public: Spawn->AI()->AttackStart(victim); } - void JustEngagedWith(Unit* /*who*/) override - { - } - void UpdateAI(uint32 diff) override { //Return since we have no target diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp index ea6b7533993..5503c4f80f2 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp @@ -49,9 +49,9 @@ public: return GetAQ40AI<boss_huhuranAI>(creature); } - struct boss_huhuranAI : public ScriptedAI + struct boss_huhuranAI : public BossAI { - boss_huhuranAI(Creature* creature) : ScriptedAI(creature) + boss_huhuranAI(Creature* creature) : BossAI(creature, DATA_HUHURAN) { Initialize(); } @@ -82,10 +82,7 @@ public: void Reset() override { Initialize(); - } - - void JustEngagedWith(Unit* /*who*/) override - { + _Reset(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index 5f63b7c3578..650e564a2bc 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -45,9 +45,9 @@ public: return GetAQ40AI<boss_ouroAI>(creature); } - struct boss_ouroAI : public ScriptedAI + struct boss_ouroAI : public BossAI { - boss_ouroAI(Creature* creature) : ScriptedAI(creature) + boss_ouroAI(Creature* creature) : BossAI(creature, DATA_OURO) { Initialize(); } @@ -78,11 +78,13 @@ public: void Reset() override { Initialize(); + _Reset(); } void JustEngagedWith(Unit* /*who*/) override { DoCastVictim(SPELL_BIRTH); + _JustEngagedWith(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 8c4becc0050..98248c95ce8 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -53,9 +53,9 @@ public: return GetAQ40AI<boss_sarturaAI>(creature); } - struct boss_sarturaAI : public ScriptedAI + struct boss_sarturaAI : public BossAI { - boss_sarturaAI(Creature* creature) : ScriptedAI(creature) + boss_sarturaAI(Creature* creature) : BossAI(creature, DATA_SARTURA) { Initialize(); } @@ -90,16 +90,19 @@ public: void Reset() override { Initialize(); + _Reset(); } void JustEngagedWith(Unit* /*who*/) override { Talk(SAY_AGGRO); + _JustEngagedWith(); } void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); + _JustDied(); } void KilledUnit(Unit* /*victim*/) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 2a09bbad92e..3963d9c8664 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -63,14 +63,11 @@ enum Misc TELEPORTTIME = 30000 }; - - -struct boss_twinemperorsAI : public ScriptedAI +struct boss_twinemperorsAI : public BossAI { - boss_twinemperorsAI(Creature* creature): ScriptedAI(creature) + boss_twinemperorsAI(Creature* creature): BossAI(creature, DATA_TWIN_EMPERORS) { Initialize(); - instance = creature->GetInstanceScript(); } void Initialize() @@ -87,8 +84,6 @@ struct boss_twinemperorsAI : public ScriptedAI EnrageTimer = 15 * 60000; } - InstanceScript* instance; - uint32 Heal_Timer; uint32 Teleport_Timer; bool AfterTeleport; @@ -106,6 +101,7 @@ struct boss_twinemperorsAI : public ScriptedAI { Initialize(); me->ClearUnitState(UNIT_STATE_STUNNED); + _Reset(); } Creature* GetOtherBoss() @@ -142,6 +138,7 @@ struct boss_twinemperorsAI : public ScriptedAI } if (!DontYellWhenDead) // I hope AI is not threaded DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_DEATH : SOUND_VN_DEATH); + _JustDied(); } void KilledUnit(Unit* /*victim*/) override @@ -151,7 +148,7 @@ struct boss_twinemperorsAI : public ScriptedAI void JustEngagedWith(Unit* who) override { - DoZoneInCombat(); + _JustEngagedWith(); Creature* pOtherBoss = GetOtherBoss(); if (pOtherBoss) { diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index 5d78d9f4bc9..4b1afc100c4 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -204,6 +204,7 @@ class boss_viscidus : public CreatureScript { DoCast(me, SPELL_VISCIDUS_SUICIDE); summons.DespawnAll(); + _JustDied(); } void UpdateAI(uint32 diff) override 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 9128b08cc7a..8e33bbe0573 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -38,6 +38,16 @@ ObjectData const creatureData[] = { 0, 0 } // END }; + +DoorData const doorData[] = +{ + { AQ40_DOOR_1, DATA_SARTURA, DOOR_TYPE_PASSAGE }, + { AQ40_DOOR_1, DATA_HUHURAN, DOOR_TYPE_PASSAGE }, + { AQ40_DOOR_2, DATA_TWIN_EMPERORS, DOOR_TYPE_PASSAGE }, + { AQ40_DOOR_3, DATA_SKERAM, DOOR_TYPE_PASSAGE }, + { 0, 0, DOOR_TYPE_ROOM } // END +}; + class instance_temple_of_ahnqiraj : public InstanceMapScript { public: @@ -54,7 +64,8 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript { SetHeaders(DataHeader); LoadObjectData(creatureData, nullptr); - + SetBossNumber(EncounterCount); + LoadDoorData(doorData); IsBossDied[0] = false; IsBossDied[1] = false; IsBossDied[2] = false; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index d73946fcd0f..b8c4793ec78 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -23,23 +23,33 @@ #define AQ40ScriptName "instance_temple_of_ahnqiraj" #define DataHeader "AQT" +uint32 const EncounterCount = 9; + enum AQTDataTypes { - DATA_SKERAM = 1, - DATA_KRI = 2, - DATA_VEM = 3, - DATA_VEMISDEAD = 4, - DATA_VEM_DEATH = 5, - DATA_VEKLOR = 6, - DATA_VEKLORISDEAD = 7, - DATA_VEKLOR_DEATH = 8, - DATA_VEKNILASH = 9, - DATA_VEKNILASHISDEAD = 10, - DATA_VEKNILASH_DEATH = 11, - DATA_BUG_TRIO_DEATH = 14, - DATA_CTHUN_PHASE = 20, - DATA_VISCIDUS = 21, - DATA_SARTURA = 22 + DATA_SKERAM = 0, + DATA_SARTURA = 1, + DATA_FRANKRIS = 2, + DATA_HUHURAN = 3, + DATA_TWIN_EMPERORS = 4, + DATA_CTHUN = 5, + DATA_BUG_TRIO = 6, + DATA_VISCIDUS = 7, + DATA_OURO = 8, + + // Others + DATA_KRI = 9, + DATA_VEM = 10, + DATA_VEMISDEAD = 11, + DATA_VEM_DEATH = 12, + DATA_VEKLOR = 13, + DATA_VEKLORISDEAD = 14, + DATA_VEKLOR_DEATH = 15, + DATA_VEKNILASH = 16, + DATA_VEKNILASHISDEAD = 17, + DATA_VEKNILASH_DEATH = 18, + DATA_BUG_TRIO_DEATH = 19, + DATA_CTHUN_PHASE = 20 }; enum AQTCreatures @@ -66,6 +76,13 @@ enum AQTCreatures NPC_SARTURA = 15516 }; +enum ObjectsAQ40 +{ + AQ40_DOOR_1 = 180634, + AQ40_DOOR_2 = 180635, + AQ40_DOOR_3 = 180636 +}; + template <class AI, class T> inline AI* GetAQ40AI(T* obj) { |