Scripts/SteamVault: Remove non-selectable flag from access panels once their respective bosses are done
(cherry picked from commit e778ee14163a4989b90025f4d83f897a03ae183d)
This commit is contained in:
@@ -31,21 +31,25 @@ class go_main_chambers_access_panel : public GameObjectScript
|
||||
return false;
|
||||
|
||||
if (go->GetEntry() == GO_ACCESS_PANEL_HYDRO && (instance->GetBossState(DATA_HYDROMANCER_THESPIA) == DONE || instance->GetBossState(DATA_HYDROMANCER_THESPIA) == SPECIAL))
|
||||
{
|
||||
instance->SetBossState(DATA_HYDROMANCER_THESPIA, SPECIAL);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
if (go->GetEntry() == GO_ACCESS_PANEL_MEK && (instance->GetBossState(DATA_MEKGINEER_STEAMRIGGER) == DONE || instance->GetBossState(DATA_MEKGINEER_STEAMRIGGER) == SPECIAL))
|
||||
{
|
||||
instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, SPECIAL);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
ObjectData const gameObjectData[] =
|
||||
{
|
||||
{ GO_ACCESS_PANEL_HYDRO, DATA_ACCESS_PANEL_HYDRO },
|
||||
{ GO_ACCESS_PANEL_MEK, DATA_ACCESS_PANEL_MEK },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
class instance_steam_vault : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
@@ -57,6 +61,7 @@ class instance_steam_vault : public InstanceMapScript
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(EncounterCount);
|
||||
LoadObjectData(nullptr, gameObjectData);
|
||||
|
||||
DistillerState = 0;
|
||||
}
|
||||
@@ -89,6 +94,8 @@ class instance_steam_vault : public InstanceMapScript
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
InstanceScript::OnGameObjectCreate(go);
|
||||
}
|
||||
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
@@ -128,6 +135,9 @@ class instance_steam_vault : public InstanceMapScript
|
||||
switch (type)
|
||||
{
|
||||
case DATA_HYDROMANCER_THESPIA:
|
||||
if (state == DONE)
|
||||
if (GameObject* panel = GetGameObject(DATA_ACCESS_PANEL_HYDRO))
|
||||
panel->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
if (state == SPECIAL)
|
||||
{
|
||||
if (GetBossState(DATA_MEKGINEER_STEAMRIGGER) == SPECIAL)
|
||||
@@ -137,6 +147,9 @@ class instance_steam_vault : public InstanceMapScript
|
||||
}
|
||||
break;
|
||||
case DATA_MEKGINEER_STEAMRIGGER:
|
||||
if (state == DONE)
|
||||
if (GameObject* panel = GetGameObject(DATA_ACCESS_PANEL_MEK))
|
||||
panel->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
if (state == SPECIAL)
|
||||
{
|
||||
if (GetBossState(DATA_HYDROMANCER_THESPIA) == SPECIAL)
|
||||
|
||||
@@ -28,7 +28,11 @@ enum DataTypes
|
||||
DATA_HYDROMANCER_THESPIA = 0,
|
||||
DATA_MEKGINEER_STEAMRIGGER = 1,
|
||||
DATA_WARLORD_KALITHRESH = 2,
|
||||
DATA_DISTILLER = 3
|
||||
DATA_DISTILLER = 3,
|
||||
|
||||
// Additional Data
|
||||
DATA_ACCESS_PANEL_HYDRO = 4,
|
||||
DATA_ACCESS_PANEL_MEK = 5
|
||||
};
|
||||
|
||||
enum CreatureIds
|
||||
|
||||
Reference in New Issue
Block a user