mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 09:17:18 +00:00
fix(Scripts/Steamvault): Improved Door Controller event. (#15580)
Fixes #15547
This commit is contained in:
@@ -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[] =
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user