fix(Scripts/Steamvault): Improved Door Controller event. (#15580)

Fixes #15547
This commit is contained in:
UltraNix
2023-03-29 06:28:42 +02:00
committed by GitHub
parent d4f8134b3b
commit fa249abb55
2 changed files with 36 additions and 3 deletions

View File

@@ -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[] =

View File

@@ -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 <class AI, class T>