diff options
-rw-r--r-- | src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp | 29 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h | 24 |
2 files changed, 53 insertions, 0 deletions
diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp index 93771b34584..2a73f5b5c1b 100644 --- a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp +++ b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp @@ -26,6 +26,7 @@ EndScriptData */ #include "GameObject.h" #include "InstanceScript.h" #include "Map.h" +#include "Unit.h" #include "sunken_temple.h" enum Gameobject @@ -47,6 +48,17 @@ enum CreatureIds NPC_MALFURION_STORMRAGE = 15362 }; +static constexpr DungeonEncounterData Encounters[] +{ + { BOSS_AVATAR_OF_HAKKAR, { { 492 } } }, + { BOSS_JAMMALAN_THE_PROPHET, { { 488 } } }, + { BOSS_DREAMSCYTHE, { { 486 } } }, + { BOSS_WEAVER, { { 487 } } }, + { BOSS_MORPHAZ, { { 490 } } }, + { BOSS_HAZZAS, { { 491 } } }, + { BOSS_SHADE_OF_ERANIKUS, { { 493 } } }, +}; + class instance_sunken_temple : public InstanceMapScript { public: @@ -62,6 +74,8 @@ public: instance_sunken_temple_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { SetHeaders(DataHeader); + SetBossNumber(MAX_ENCOUNTER); + LoadDungeonEncounterData(Encounters); State = 0; s1 = false; @@ -89,6 +103,21 @@ public: bool s5; bool s6; + void OnUnitDeath(Unit* unit) override + { + switch (unit->GetEntry()) + { + case NPC_AVATAR_OF_HAKKAR: SetBossState(BOSS_AVATAR_OF_HAKKAR, DONE); break; + case NPC_JAMMALAN_THE_PROPHET: SetBossState(BOSS_JAMMALAN_THE_PROPHET, DONE); break; + case NPC_DREAMSCYTHE: SetBossState(BOSS_DREAMSCYTHE, DONE); break; + case NPC_WEAVER: SetBossState(BOSS_WEAVER, DONE); break; + case NPC_MORPHAZ: SetBossState(BOSS_MORPHAZ, DONE); break; + case NPC_HAZZAS: SetBossState(BOSS_HAZZAS, DONE); break; + case NPC_SHADE_OF_ERANIKUS: SetBossState(BOSS_SHADE_OF_ERANIKUS, DONE); break; + default: break; + } + } + void OnGameObjectCreate(GameObject* go) override { switch (go->GetEntry()) diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h b/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h index af73d4bc5b0..d6ee31f68a8 100644 --- a/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h +++ b/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h @@ -23,6 +23,30 @@ #define STScriptName "instance_sunken_temple" #define DataHeader "ST" +enum STBossIds +{ + BOSS_AVATAR_OF_HAKKAR = 0, + BOSS_JAMMALAN_THE_PROPHET = 1, + BOSS_DREAMSCYTHE = 2, + BOSS_WEAVER = 3, + BOSS_MORPHAZ = 4, + BOSS_HAZZAS = 5, + BOSS_SHADE_OF_ERANIKUS = 6, + + MAX_ENCOUNTER +}; + +enum STCreatureIds +{ + NPC_AVATAR_OF_HAKKAR = 8443, + NPC_JAMMALAN_THE_PROPHET = 5710, + NPC_DREAMSCYTHE = 5721, + NPC_WEAVER = 5720, + NPC_MORPHAZ = 5719, + NPC_HAZZAS = 5722, + NPC_SHADE_OF_ERANIKUS = 5709, +}; + enum STEvents { EVENT_STATE = 1 |