From b4ecbe315474dba3100bce4544a0c6ba50435440 Mon Sep 17 00:00:00 2001 From: Keader Date: Mon, 28 Jan 2019 17:13:59 -0300 Subject: [PATCH] Scripts/Temple of Ahn Qiraj: Scripted doors of AQ40 Doors added in https://github.com/TrinityCore/TrinityCore/commit/1ba09572b5a49d5cd247cdca47109d3325ec12f3 # Conflicts: # src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp # src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp # src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp # src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp # src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h --- .../TempleOfAhnQiraj/boss_bug_trio.cpp | 34 ++++---------- .../Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp | 14 ++---- .../TempleOfAhnQiraj/boss_fankriss.cpp | 9 ++-- .../TempleOfAhnQiraj/boss_huhuran.cpp | 9 ++-- .../Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp | 6 ++- .../TempleOfAhnQiraj/boss_sartura.cpp | 7 ++- .../TempleOfAhnQiraj/boss_twinemperors.cpp | 13 ++---- .../TempleOfAhnQiraj/boss_viscidus.cpp | 1 + .../instance_temple_of_ahnqiraj.cpp | 14 +++++- .../TempleOfAhnQiraj/temple_of_ahnqiraj.h | 46 +++++++++++++------ 10 files changed, 77 insertions(+), 76 deletions(-) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index 6ddb44b7c32..cc532c476ff 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -48,12 +48,11 @@ class boss_kri : public CreatureScript public: boss_kri() : CreatureScript("boss_kri") { } - 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() @@ -66,8 +65,6 @@ public: Death = false; } - InstanceScript* instance; - uint32 Cleave_Timer; uint32 ToxicVolley_Timer; uint32 Check_Timer; @@ -78,11 +75,9 @@ public: void Reset() override { Initialize(); + _Reset(); } - void JustEngagedWith(Unit* /*who*/) override - { - } void JustDied(Unit* /*killer*/) override { @@ -146,12 +141,11 @@ class boss_vem : public CreatureScript public: boss_vem() : CreatureScript("boss_vem") { } - 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() @@ -163,8 +157,6 @@ public: Enraged = false; } - InstanceScript* instance; - uint32 Charge_Timer; uint32 KnockBack_Timer; uint32 Enrage_Timer; @@ -174,6 +166,7 @@ public: void Reset() override { Initialize(); + _Reset(); } void JustDied(Unit* /*killer*/) override @@ -184,10 +177,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 @@ -238,12 +227,11 @@ class boss_yauj : public CreatureScript public: boss_yauj() : CreatureScript("boss_yauj") { } - 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() @@ -255,8 +243,6 @@ public: VemDead = false; } - InstanceScript* instance; - uint32 Heal_Timer; uint32 Fear_Timer; uint32 Check_Timer; @@ -284,10 +270,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 e93d47e1fca..a1fe2f4d598 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -453,14 +453,12 @@ class boss_cthun : public CreatureScript public: boss_cthun() : CreatureScript("boss_cthun") { } - 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() @@ -485,8 +483,6 @@ public: StomachEnterTarget.Clear(); //Target to be teleported to stomach } - InstanceScript* instance; - //Out of combat whisper timer uint32 WisperTimer; @@ -514,6 +510,7 @@ public: void Reset() override { Initialize(); + _Reset(); //Clear players in stomach and outside Stomach_Map.clear(); @@ -526,11 +523,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 bd38cf400c0..cc7093e066d 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -47,9 +47,9 @@ class boss_fankriss : public CreatureScript public: boss_fankriss() : CreatureScript("boss_fankriss") { } - 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(); } @@ -68,6 +68,7 @@ public: void Reset() override { Initialize(); + _Reset(); } void SummonSpawn(Unit* victim) @@ -97,10 +98,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 1495e82e909..dbc47acd1c9 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp @@ -48,9 +48,9 @@ public: return new 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(); } @@ -81,10 +81,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 2a4dda759a4..5fda688aad5 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 new 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 507e799f306..691ff5c31a0 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -50,9 +50,9 @@ public: return new 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(); } @@ -87,16 +87,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 4f2099c7ce7..332f15b2bc8 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 6ffcb5eeed9..8ac2420a477 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 1758b9212b7..23242ee5ac7 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,16 @@ EndScriptData */ #include "InstanceScript.h" #include "temple_of_ahnqiraj.h" + +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: @@ -34,9 +44,11 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript struct instance_temple_of_ahnqiraj_InstanceMapScript : public InstanceScript { - instance_temple_of_ahnqiraj_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { 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 b70febfb49f..3fb91d0f6c4 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -23,22 +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_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 @@ -64,6 +75,13 @@ enum AQTCreatures NPC_VEKNILASH = 15275 }; +enum ObjectsAQ40 +{ + AQ40_DOOR_1 = 180634, + AQ40_DOOR_2 = 180635, + AQ40_DOOR_3 = 180636 +}; + template inline AI* GetAQ40AI(T* obj) {