diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index e9eae1f61..d07c35d6a 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -476,9 +476,19 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) m_PlayersInWar[TEAM_HORDE].clear(); if (!endByTimer) // win alli/horde + { + uint32 const worldStateId = GetDefenderTeam() == TEAM_ALLIANCE ? WORLDSTATE_ALLIANCE_KEEP_CAPTURED : WORLDSTATE_HORDE_KEEP_CAPTURED; + sWorld->setWorldState(worldStateId, sWorld->getWorldState(worldStateId) + 1); + SendWarning((GetDefenderTeam() == TEAM_ALLIANCE) ? BATTLEFIELD_WG_TEXT_WIN_KEEP : (BATTLEFIELD_WG_TEXT_WIN_KEEP + 2)); + } else // defend alli/horde + { + uint32 const worldStateId = GetDefenderTeam() == TEAM_ALLIANCE ? WORLDSTATE_ALLIANCE_KEEP_DEFENDED : WORLDSTATE_HORDE_KEEP_DEFENDED; + sWorld->setWorldState(worldStateId, sWorld->getWorldState(worldStateId) + 1); + SendWarning((GetDefenderTeam() == TEAM_ALLIANCE) ? BATTLEFIELD_WG_TEXT_DEFEND_KEEP : (BATTLEFIELD_WG_TEXT_DEFEND_KEEP + 2)); + } } // ******************************************************* @@ -898,6 +908,11 @@ void BattlefieldWG::FillInitialWorldStates(WorldPacket& data) data << uint32(BATTLEFIELD_WG_WORLD_STATE_VEHICLE_A) << uint32(GetData(BATTLEFIELD_WG_DATA_VEHICLE_A)); data << uint32(BATTLEFIELD_WG_WORLD_STATE_MAX_VEHICLE_A) << GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A); + data << uint32(WORLDSTATE_HORDE_KEEP_CAPTURED) << uint32(sWorld->getWorldState(WORLDSTATE_HORDE_KEEP_CAPTURED)); + data << uint32(WORLDSTATE_HORDE_KEEP_DEFENDED) << uint32(sWorld->getWorldState(WORLDSTATE_HORDE_KEEP_DEFENDED)); + data << uint32(WORLDSTATE_ALLIANCE_KEEP_CAPTURED) << uint32(sWorld->getWorldState(WORLDSTATE_ALLIANCE_KEEP_CAPTURED)); + data << uint32(WORLDSTATE_ALLIANCE_KEEP_DEFENDED) << uint32(sWorld->getWorldState(WORLDSTATE_ALLIANCE_KEEP_DEFENDED)); + for (GameObjectBuilding::const_iterator itr = BuildingsInZone.begin(); itr != BuildingsInZone.end(); ++itr) data << (*itr)->m_WorldState << (*itr)->m_State; @@ -913,7 +928,7 @@ void BattlefieldWG::SendInitWorldStatesTo(Player* player) data << uint32(m_MapId); data << uint32(m_ZoneId); data << uint32(0); - data << uint16(10 + BuildingsInZone.size() + WorkshopsList.size()); // Number of fields + data << uint16(14 + BuildingsInZone.size() + WorkshopsList.size()); // Number of fields FillInitialWorldStates(data); diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 162bd6299..d0058d9a9 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -523,7 +523,11 @@ enum WintergraspWorldstates WORLDSTATE_WORKSHOP_SE = 3703, WORLDSTATE_WORKSHOP_SW = 3702, WORLDSTATE_WORKSHOP_K_W = 3698, - WORLDSTATE_WORKSHOP_K_E = 3699 + WORLDSTATE_WORKSHOP_K_E = 3699, + WORLDSTATE_HORDE_KEEP_CAPTURED = 4022, + WORLDSTATE_HORDE_KEEP_DEFENDED = 4024, + WORLDSTATE_ALLIANCE_KEEP_CAPTURED = 4023, + WORLDSTATE_ALLIANCE_KEEP_DEFENDED = 4025, }; // TODO: Handle this with creature_text ?