diff options
author | Lighto <chaosua2008@gmail.com> | 2018-09-25 18:18:28 +0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-11-11 21:38:36 +0100 |
commit | e79cb1da2cd8b905d2103df548e298656684c9dd (patch) | |
tree | 718816b9a1d0824820876f4c32a7b27ed5d6fccf /src | |
parent | ebf8f46aed96f4c10673e4f07ff8aabaad15a35c (diff) |
Wintergrasp Fix Collision Wall work: Open / Close collision wall when battle started/ended (#22342)
* Open / Close collision wall when battle started/ended
(cherry picked from commit c4e561ee130f0cb77b33f11cddecd56a455f8d63)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.cpp | 20 | ||||
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.h | 1 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 16a579a868b..86523f17ed2 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -652,6 +652,12 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) relic->RemoveFromWorld(); m_titansRelicGUID.Clear(); + // change collision wall state closed + for (BfWGGameObjectBuilding* building : BuildingsInZone) + { + building->RebuildGate(); + } + // successful defense if (endByTimer) UpdateData(GetDefenderTeam() == TEAM_HORDE ? BATTLEFIELD_WG_DATA_DEF_H : BATTLEFIELD_WG_DATA_DEF_A, 1); @@ -1424,7 +1430,7 @@ void BfWGGameObjectBuilding::Rebuild() build->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true); if (build->GetEntry() == GO_WINTERGRASP_VAULT_GATE) if (GameObject* go = build->FindNearestGameObject(GO_WINTERGRASP_KEEP_COLLISION_WALL, 50.0f)) - go->SetGoState(GO_STATE_READY); + go->SetGoState(GO_STATE_ACTIVE); // Update worldstate _state = WintergraspGameObjectState(BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT - (_teamControl * 3)); @@ -1435,6 +1441,18 @@ void BfWGGameObjectBuilding::Rebuild() } } +void BfWGGameObjectBuilding::RebuildGate() +{ + if (GameObject* build = _wg->GetGameObject(_buildGUID)) + { + if (build->IsDestructibleBuilding() && build->GetEntry() == GO_WINTERGRASP_VAULT_GATE) + { + if (GameObject* go = build->FindNearestGameObject(GO_WINTERGRASP_KEEP_COLLISION_WALL, 50.0f)) + go->SetGoState(GO_STATE_READY); //not GO_STATE_ACTIVE + } + } +} + void BfWGGameObjectBuilding::Damaged() { // Update worldstate diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 0559e91fe94..c88e5556a0a 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -572,6 +572,7 @@ public: ObjectGuid const& GetGUID() const { return _buildGUID; } void Rebuild(); + void RebuildGate(); // Called when associated gameobject is damaged void Damaged(); |