From 787f0ae204597fc270debc37258ab09294bec510 Mon Sep 17 00:00:00 2001 From: Angelo Venturini Date: Sun, 21 Aug 2022 10:59:45 -0300 Subject: [PATCH] refactor(Scripts/TempleOfAhnQiraj): Temple of Ahn Qiraj header (#12749) * refactor(Core/TempleOfAhnQiraj): Temple of Ahn Qiraj header * remove ouro leftovers --- .../Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp | 26 ++++++------ .../Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp | 7 ---- .../TempleOfAhnQiraj/boss_twinemperors.cpp | 9 +--- .../instance_temple_of_ahnqiraj.cpp | 3 +- .../TempleOfAhnQiraj/temple_of_ahnqiraj.h | 41 +++++++++++-------- 5 files changed, 39 insertions(+), 47 deletions(-) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index 778daca97..b9dd0cbff 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -142,12 +142,10 @@ public: //Kick out position const Position KickPos = { -8545.0f, 1984.0f, -96.0f, 0.0f}; -struct boss_eye_of_cthun : public ScriptedAI +struct boss_eye_of_cthun : public BossAI { - boss_eye_of_cthun(Creature* creature) : ScriptedAI(creature), _summons(creature) + boss_eye_of_cthun(Creature* creature) : BossAI(creature, DATA_CTHUN), _summons(creature) { - instance = creature->GetInstanceScript(); - SetCombatMovement(false); } @@ -176,13 +174,18 @@ struct boss_eye_of_cthun : public ScriptedAI _summons.DespawnAll(); _scheduler.CancelAll(); + + BossAI::Reset(); } - void EnterCombat(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override { } + + void EnterCombat(Unit* who) override { DoZoneInCombat(); ScheduleTasks(); instance->SetData(DATA_CTHUN_PHASE, PHASE_EYE_GREEN_BEAM); + BossAI::EnterCombat(who); } void MoveInLineOfSight(Unit* who) override @@ -388,8 +391,6 @@ struct boss_eye_of_cthun : public ScriptedAI } private: - InstanceScript* instance; - //Dark Glare phase uint32 DarkGlareTick; float DarkGlareAngle; @@ -400,17 +401,13 @@ private: SummonList _summons; }; -struct boss_cthun : public ScriptedAI +struct boss_cthun : public BossAI { - boss_cthun(Creature* creature) : ScriptedAI(creature) + boss_cthun(Creature* creature) : BossAI(creature, DATA_CTHUN) { SetCombatMovement(false); - - instance = creature->GetInstanceScript(); } - InstanceScript* instance; - //Out of combat whisper timer uint32 WisperTimer; @@ -784,9 +781,10 @@ struct boss_cthun : public ScriptedAI } } - void JustDied(Unit* /*killer*/) override + void JustDied(Unit* killer) override { instance->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_DONE); + BossAI::JustDied(killer); } void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index 974620cb8..02688a101 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -242,9 +242,6 @@ struct boss_ouro : public BossAI { DoCastSelf(SPELL_OURO_SUBMERGE_VISUAL); me->DespawnOrUnsummon(1000); - // Remove after the header file is sorted with the bosses first. - if (Creature* ouroSpawner = instance->GetCreature(DATA_OURO_SPAWNER)) - ouroSpawner->Respawn(); instance->SetBossState(DATA_OURO, FAIL); if (GameObject* base = me->FindNearestGameObject(GO_SANDWORM_BASE, 200.f)) base->DespawnOrUnsummon(); @@ -348,10 +345,6 @@ struct npc_dirt_mound : ScriptedAI if (_instance) { _instance->SetBossState(DATA_OURO, FAIL); - - // Remove after the header file is sorted with the bosses first. - if (Creature* ouroSpawner = _instance->GetCreature(DATA_OURO_SPAWNER)) - ouroSpawner->Respawn(); } if (GameObject* base = me->FindNearestGameObject(GO_SANDWORM_BASE, 200.f)) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 33b32fa44..1b5922a36 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -62,14 +62,9 @@ enum Misc TELEPORTTIME = 30000 }; -struct boss_twinemperorsAI : public ScriptedAI +struct boss_twinemperorsAI : public BossAI { - boss_twinemperorsAI(Creature* creature): ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; + boss_twinemperorsAI(Creature* creature): BossAI(creature, DATA_TWIN_EMPERORS) { } uint32 Heal_Timer; uint32 Teleport_Timer; 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 215e4c790..28500c59f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -49,6 +49,7 @@ public: instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map) { LoadObjectData(creatureData, nullptr); + SetBossNumber(MAX_BOSS_NUMBER); } //If Vem is dead... @@ -193,7 +194,7 @@ public: case DATA_OURO: if (state == FAIL) { - if (Creature* ouroSpawner = GetCreature(DATA_OURO)) + if (Creature* ouroSpawner = GetCreature(DATA_OURO_SPAWNER)) ouroSpawner->Respawn(); } break; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index 9301c9503..2137e3162 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -25,25 +25,30 @@ enum DataTypes { DATA_SKERAM = 1, - DATA_KRI = 2, - DATA_VEM = 3, - DATA_YAUJ = 4, - DATA_BUG_TRIO = 5, - DATA_VEKLOR = 6, - DATA_VEKLORISDEAD = 7, - DATA_VEKLOR_DEATH = 8, - DATA_VEKNILASH = 9, - DATA_VEKNILASHISDEAD = 10, - DATA_VEKNILASH_DEATH = 11, - DATA_FANKRISS = 12, - DATA_OURO = 13, - DATA_OURO_SPAWNER = 14, - DATA_BUG_TRIO_DEATH = 15, - DATA_CTHUN_PHASE = 20, - DATA_VISCIDUS = 21, - DATA_SARTURA = 22, + DATA_BUG_TRIO = 2, + DATA_SARTURA = 3, + DATA_FANKRISS = 4, + DATA_VISCIDUS = 5, + DATA_HUHURAN = 6, + DATA_TWIN_EMPERORS = 7, + DATA_OURO = 8, + DATA_CTHUN = 9, - DATA_EYE_OF_CTHUN = 23 + MAX_BOSS_NUMBER = 10, + + DATA_KRI = 10, + DATA_VEM = 11, + DATA_YAUJ = 12, + DATA_BUG_TRIO_DEATH = 13, + DATA_OURO_SPAWNER = 14, + DATA_VEKLOR = 15, + DATA_VEKLORISDEAD = 16, + DATA_VEKLOR_DEATH = 17, + DATA_VEKNILASH = 18, + DATA_VEKNILASHISDEAD = 19, + DATA_VEKNILASH_DEATH = 20, + DATA_CTHUN_PHASE = 21, + DATA_EYE_OF_CTHUN = 22 }; enum Creatures