aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLighto <chaosua2008@gmail.com>2018-09-25 18:18:28 +0300
committerShauren <shauren.trinity@gmail.com>2021-11-11 21:38:36 +0100
commite79cb1da2cd8b905d2103df548e298656684c9dd (patch)
tree718816b9a1d0824820876f4c32a7b27ed5d6fccf /src
parentebf8f46aed96f4c10673e4f07ff8aabaad15a35c (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.cpp20
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.h1
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();