diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp index 5ec64023d..645347300 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp @@ -19,6 +19,12 @@ #include "ScriptMgr.h" #include "steam_vault.h" +enum MainChambersAccessPanelSays +{ + SAY_FAINT_ECHO = 0, + SAY_LOUD_RUMBLE = 1 +}; + class go_main_chambers_access_panel : public GameObjectScript { public: @@ -28,11 +34,16 @@ public: { if (InstanceScript* instance = go->GetInstanceScript()) { + Creature* doorController = instance->GetCreature(DATA_DOOR_CONTROLLER); if (go->GetEntry() == GO_ACCESS_PANEL_HYDRO) { if (instance->GetBossState(DATA_HYDROMANCER_THESPIA) == DONE) { go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); + if (doorController && doorController->IsAIEnabled) + { + doorController->AI()->Talk(SAY_FAINT_ECHO); + } } } else @@ -40,12 +51,31 @@ public: if (instance->GetBossState(DATA_MEKGINEER_STEAMRIGGER) == DONE) { go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); + if (doorController && doorController->IsAIEnabled) + { + doorController->AI()->Talk(SAY_FAINT_ECHO); + } } } if (instance->GetBossState(DATA_HYDROMANCER_THESPIA) == DONE && instance->GetBossState(DATA_MEKGINEER_STEAMRIGGER) == DONE) { - if (GameObject* mainGate = instance->GetGameObject(DATA_MAIN_CHAMBERS_DOOR)) + if (doorController) + { + if (doorController->IsAIEnabled) + { + doorController->AI()->Talk(SAY_LOUD_RUMBLE); + } + + doorController->m_Events.AddEventAtOffset([instance]() + { + if (GameObject* mainGate = instance->GetGameObject(DATA_MAIN_CHAMBERS_DOOR)) + { + instance->HandleGameObject(ObjectGuid::Empty, true, mainGate); + } + }, 4s); + } + else if (GameObject* mainGate = instance->GetGameObject(DATA_MAIN_CHAMBERS_DOOR)) { instance->HandleGameObject(ObjectGuid::Empty, true, mainGate); } @@ -60,7 +90,8 @@ public: ObjectData const creatureData[] = { - { NPC_MEKGINEER_STEAMRIGGER, DATA_MEKGINEER_STEAMRIGGER } + { NPC_MEKGINEER_STEAMRIGGER, DATA_MEKGINEER_STEAMRIGGER }, + { NPC_DOOR_CONTROLLER, DATA_DOOR_CONTROLLER } }; ObjectData const objectData[] = diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h index d34aff65f..71e384e2f 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h @@ -36,7 +36,8 @@ enum steamVault DATA_ACCESS_PANEL_HYDROMANCER = 4, DATA_ACCESS_PANEL_MEKGINEER = 5, - DATA_MAIN_CHAMBERS_DOOR = 6 + DATA_MAIN_CHAMBERS_DOOR = 6, + DATA_DOOR_CONTROLLER = 7 }; enum steamVaultNPCGO @@ -47,6 +48,7 @@ enum steamVaultNPCGO NPC_MEKGINEER_STEAMRIGGER = 17796, NPC_WARLORD_KALITHRESH = 17798, + NPC_DOOR_CONTROLLER = 20926 }; template