aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2022_06_27_00_world.sql55
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp20
-rw-r--r--src/server/game/Battlefield/Battlefield.h11
-rw-r--r--src/server/game/Entities/Player/Player.cpp31
-rw-r--r--src/server/game/Entities/Player/Player.h1
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h4
-rw-r--r--src/server/game/World/WorldStates/WorldStateMgr.cpp1
-rw-r--r--src/server/scripts/Battlefield/BattlefieldTB.cpp281
-rw-r--r--src/server/scripts/Battlefield/BattlefieldTB.h8
-rw-r--r--src/server/scripts/Battlefield/BattlefieldWG.cpp7
-rw-r--r--src/server/scripts/Battlefield/BattlefieldWG.h5
-rw-r--r--src/server/scripts/Commands/cs_bf.cpp1
12 files changed, 152 insertions, 273 deletions
diff --git a/sql/updates/world/master/2022_06_27_00_world.sql b/sql/updates/world/master/2022_06_27_00_world.sql
new file mode 100644
index 00000000000..1b533f24d72
--- /dev/null
+++ b/sql/updates/world/master/2022_06_27_00_world.sql
@@ -0,0 +1,55 @@
+DELETE FROM `world_state` WHERE `ID` IN (5332,5333,5334,5344,5346,5347,5348,5349,5350,5384,5385,5387,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5451,5452,5453,5454,5455,5456,5469,5470,5546,5547,5684);
+INSERT INTO `world_state` (`ID`, `DefaultValue`, `MapIDs`, `AreaIDs`, `ScriptName`, `Comment`) VALUES
+(5332, 0, '732', '5095,5389', '', 'Tol Barad - Next battle start time'),
+(5333, 0, '732', '5095', '', 'Tol Barad - Battle end time'),
+(5334, 0, '732', '5095,5389', '', 'Tol Barad - Controlling faction'),
+(5344, 0, '732', '5095', '', 'Tol Barad - In progress'),
+(5346, 0, '732', '5095', '', 'Tol Barad - Show timer to battle end'),
+(5347, 0, '732', '5095', '', 'Tol Barad - Number of destroyed towers'),
+(5348, 0, '732', '5095', '', 'Tol Barad - Number of captured buildings'),
+(5349, 0, '732', '5095', '', 'Tol Barad - Show number of captured buildings'),
+(5350, 0, '732', '5095', '', 'Tol Barad - Show number of destroyed towers'),
+(5384, 0, '732', '5095,5389', '', 'Tol Barad - Show if Horde is controlling'),
+(5385, 0, '732', '5095,5389', '', 'Tol Barad - Show if Alliance is controlling'),
+(5387, 0, '732', '5095,5389', '', 'Tol Barad - Show timer for next battle'),
+(5418, 0, '732', '5095', '', 'Tol Barad - Ironclad Garrison controlled by Horde'),
+(5419, 0, '732', '5095', '', 'Tol Barad - Ironclad Garrison being captured by Horde'),
+(5420, 0, '732', '5095', '', 'Tol Barad - Ironclad Garrison neutral'),
+(5421, 0, '732', '5095', '', 'Tol Barad - Ironclad Garrison being captured by Alliance'),
+(5422, 0, '732', '5095', '', 'Tol Barad - Ironclad Garrison controlled by Alliance'),
+(5423, 0, '732', '5095', '', 'Tol Barad - Warden\'s Vigil controlled by Horde'),
+(5424, 0, '732', '5095', '', 'Tol Barad - Warden\'s Vigil being captured by Horde'),
+(5425, 0, '732', '5095', '', 'Tol Barad - Warden\'s Vigil neutral'),
+(5426, 0, '732', '5095', '', 'Tol Barad - Warden\'s Vigil being captured by Alliance'),
+(5427, 0, '732', '5095', '', 'Tol Barad - Warden\'s Vigil controlled by Alliance'),
+(5428, 0, '732', '5095', '', 'Tol Barad - Slagworks controlled by Horde'),
+(5429, 0, '732', '5095', '', 'Tol Barad - Slagworks being captured by Horde'),
+(5430, 0, '732', '5095', '', 'Tol Barad - Slagworks neutral'),
+(5431, 0, '732', '5095', '', 'Tol Barad - Slagworks being captured by Alliance'),
+(5432, 0, '732', '5095', '', 'Tol Barad - Slagworks controlled by Alliance'),
+(5433, 0, '732', '5095', '', 'Tol Barad - West Spire Horde controlled'),
+(5434, 0, '732', '5095', '', 'Tol Barad - West Spire Horde controlled, damaged'),
+(5435, 0, '732', '5095', '', 'Tol Barad - West Spire destroyed'),
+(5436, 0, '732', '5095', '', 'Tol Barad - West Spire Alliance controlled'),
+(5437, 0, '732', '5095', '', 'Tol Barad - West Spire Alliance controlled, damaged'),
+(5438, 0, '732', '5095', '', 'Tol Barad - South Spire Horde controlled'),
+(5439, 0, '732', '5095', '', 'Tol Barad - South Spire Horde controlled, damaged'),
+(5440, 0, '732', '5095', '', 'Tol Barad - South Spire destroyed'),
+(5441, 0, '732', '5095', '', 'Tol Barad - South Spire Alliance controlled'),
+(5442, 0, '732', '5095', '', 'Tol Barad - South Spire Alliance controlled, damaged'),
+(5443, 0, '732', '5095', '', 'Tol Barad - East Spire Horde controlled'),
+(5444, 0, '732', '5095', '', 'Tol Barad - East Spire Horde controlled, damaged'),
+(5445, 0, '732', '5095', '', 'Tol Barad - East Spire destroyed'),
+(5446, 0, '732', '5095', '', 'Tol Barad - East Spire Alliance controlled'),
+(5447, 0, '732', '5095', '', 'Tol Barad - East Spire Alliance controlled, damaged'),
+(5451, 0, '732', '5095', '', 'Tol Barad - East Spire uncontrolled'),
+(5452, 0, '732', '5095', '', 'Tol Barad - East Spire damaged'),
+(5453, 0, '732', '5095', '', 'Tol Barad - West Spire uncontrolled'),
+(5454, 0, '732', '5095', '', 'Tol Barad - West Spire damaged'),
+(5455, 0, '732', '5095', '', 'Tol Barad - South Spire uncontrolled'),
+(5456, 0, '732', '5095', '', 'Tol Barad - South Spire damaged'),
+(5469, 0, '732', '5095', '', 'Tol Barad - Baradin Hold controlled by Horde'),
+(5470, 0, '732', '5095', '', 'Tol Barad - Baradin Hold controlled by Alliance'),
+(5546, 0, '732', '5095,5389', '', 'Tol Barad - Show if Alliance is attacking'),
+(5547, 0, '732', '5095,5389', '', 'Tol Barad - Show if Horde is attacking'),
+(5684, 0, '732', '5095', '', 'Tol Barad - Preparation');
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index 3e9d81ca6d3..75166c6beeb 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -454,26 +454,6 @@ void Battlefield::SendWarning(uint8 id, WorldObject const* target /*= nullptr*/)
sCreatureTextMgr->SendChat(stalker, id, target);
}
-void Battlefield::SendInitWorldStatesTo(Player* player)
-{
- WorldPackets::WorldState::InitWorldStates packet;
- packet.MapID = m_MapId;
- packet.AreaID = m_ZoneId;
- packet.SubareaID = player->GetAreaId();
- FillInitialWorldStates(packet);
-
- player->SendDirectMessage(packet.Write());
-}
-
-void Battlefield::SendUpdateWorldState(uint32 variable, uint32 value, bool hidden /*= false*/)
-{
- WorldPackets::WorldState::UpdateWorldState worldstate;
- worldstate.VariableID = variable;
- worldstate.Value = value;
- worldstate.Hidden = hidden;
- BroadcastPacketToZone(worldstate.Write());
-}
-
void Battlefield::AddCapturePoint(BfCapturePoint* cp)
{
Battlefield::BfCapturePointMap::iterator i = m_capturePoints.find(cp->GetCapturePointEntry());
diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h
index ac535fbe49a..09fddd04750 100644
--- a/src/server/game/Battlefield/Battlefield.h
+++ b/src/server/game/Battlefield/Battlefield.h
@@ -99,8 +99,6 @@ class TC_GAME_API BfCapturePoint
virtual ~BfCapturePoint() { }
- virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) { }
-
// Send world state update to all players present
void SendUpdateWorldState(uint32 field, uint32 value);
@@ -224,11 +222,6 @@ class TC_GAME_API Battlefield : public ZoneScript
/// Call this to init the Battlefield
virtual bool SetupBattlefield() { return true; }
- void SendInitWorldStatesTo(Player* player);
-
- /// Update data of a worldstate to all players present in zone
- void SendUpdateWorldState(uint32 variable, uint32 value, bool hidden = false);
-
/**
* \brief Called every time for update bf data and time
* - Update timer for start/end battle
@@ -346,10 +339,6 @@ class TC_GAME_API Battlefield : public ZoneScript
virtual void DoCompleteOrIncrementAchievement(uint32 /*achievement*/, Player* /*player*/, uint8 /*incrementNumber = 1*/) { }
- /// Send all worldstate data to all player in zone.
- virtual void SendInitWorldStatesToAll() = 0;
- virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) = 0;
-
/// Return if we can use mount in battlefield
bool CanFlyIn() { return !m_isActive; }
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 6d7eead1e2b..e4dc5573c5c 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -9206,7 +9206,6 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId)
Battleground* battleground = GetBattleground();
OutdoorPvP* outdoorPvP = sOutdoorPvPMgr->GetOutdoorPvPToZoneId(zoneId);
InstanceScript* instance = GetInstanceScript();
- Battlefield* battlefield = sBattlefieldMgr->GetBattlefieldToZoneId(zoneId);
TC_LOG_DEBUG("network", "Player::SendInitWorldStates: Sending SMSG_INIT_WORLD_STATES for Map: %u, Zone: %u", mapId, zoneId);
@@ -9787,27 +9786,12 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId)
if (battleground && battleground->GetTypeID(true) == BATTLEGROUND_BFG)
battleground->FillInitialWorldStates(packet);
break;
- case 5389: // Tol Barad Peninsula
- if (sWorld->getBoolConfig(CONFIG_TOLBARAD_ENABLE))
- {
- packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW));
- packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW));
- packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW));
- packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW));
- packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW));
- }
- break;
- case 5095: // Tol Barad
- if (battlefield && battlefield->GetTypeId() == BATTLEFIELD_TB)
- battlefield->FillInitialWorldStates(packet);
- break;
default:
break;
}
SendDirectMessage(packet.Write());
SendBGWeekendWorldStates();
- SendBattlefieldWorldStates();
}
void Player::SendBGWeekendWorldStates() const
@@ -9825,21 +9809,6 @@ void Player::SendBGWeekendWorldStates() const
}
}
-void Player::SendBattlefieldWorldStates() const
-{
- /// Send misc stuff that needs to be sent on every login, like the battle timers.
- if (sWorld->getBoolConfig(CONFIG_TOLBARAD_ENABLE))
- {
- if (Battlefield* tb = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_TB))
- {
- SendUpdateWorldState(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, uint32(tb->GetDefenderTeam() + 1));
- uint32 timer = tb->GetTimer() / 1000;
- SendUpdateWorldState(WS_BATTLEFIELD_TB_TIME_BATTLE_END, uint32(tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
- SendUpdateWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, uint32(!tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
- }
- }
-}
-
void Player::SetBindPoint(ObjectGuid guid) const
{
WorldPackets::Misc::BinderConfirm packet(guid);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index ffb20f35682..ae34c91f697 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2353,7 +2353,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void SendUpdateWorldState(uint32 variable, uint32 value, bool hidden = false) const;
void SendDirectMessage(WorldPacket const* data) const;
void SendBGWeekendWorldStates() const;
- void SendBattlefieldWorldStates() const;
void SendAurasForTarget(Unit* target) const;
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 71cb2db2d29..29d05a81b3c 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -7788,10 +7788,6 @@ enum WorldState : uint32
WS_BATTLEFIELD_TB_STATE_PREPARATIONS = 5684,
WS_BATTLEFIELD_TB_STATE_BATTLE = 5344,
- WS_BATTLEFIELD_TB_PROGRESS_SHOW = 5376,
- WS_BATTLEFIELD_TB_PROGRESS = 5377, // 0 horde, 100 alliance
- WS_BATTLEFIELD_TB_PROGRESS_PERCENT_GREY = 5378,
-
WS_BATTLEFIELD_TB_KEEP_HORDE = 5469,
WS_BATTLEFIELD_TB_KEEP_ALLIANCE = 5470,
diff --git a/src/server/game/World/WorldStates/WorldStateMgr.cpp b/src/server/game/World/WorldStates/WorldStateMgr.cpp
index 9867b3a0123..8049ee0ca2f 100644
--- a/src/server/game/World/WorldStates/WorldStateMgr.cpp
+++ b/src/server/game/World/WorldStates/WorldStateMgr.cpp
@@ -213,7 +213,6 @@ void WorldStateMgr::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSt
continue;
}
-
initWorldStates.Worldstates.emplace_back(worldStateId, value);
}
}
diff --git a/src/server/scripts/Battlefield/BattlefieldTB.cpp b/src/server/scripts/Battlefield/BattlefieldTB.cpp
index 4d55ea35d85..24db1cb7559 100644
--- a/src/server/scripts/Battlefield/BattlefieldTB.cpp
+++ b/src/server/scripts/Battlefield/BattlefieldTB.cpp
@@ -37,7 +37,6 @@
#include "TemporarySummon.h"
#include "World.h"
#include "WorldStateMgr.h"
-#include "WorldStatePackets.h"
BattlefieldTB::~BattlefieldTB() { }
@@ -91,8 +90,16 @@ bool BattlefieldTB::SetupBattlefield()
// Set defender team
SetDefenderTeam(TeamId(sWorld->getWorldState(WS_BATTLEFIELD_TB_FACTION_CONTROLLING) - 1));
- // Just to save world states
- SendInitWorldStatesToAll();
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 1, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, GetDefenderTeam() + 1, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_ALLIANCE, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_HORDE, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, m_Map);
+
+ SaveWorldStateValues();
// Create capture points
for (uint8 i = 0; i < TB_BASE_COUNT; i++)
@@ -181,8 +188,7 @@ bool BattlefieldTB::Update(uint32 diff)
if (m_saveTimer <= diff)
{
- if (!IsWarTime())
- sWorld->setWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, m_Timer);
+ SaveWorldStateValues();
m_saveTimer = 60 * IN_MILLISECONDS;
}
else
@@ -195,8 +201,6 @@ void BattlefieldTB::OnPlayerEnterZone(Player* player)
{
if (!m_isActive)
RemoveAurasFromPlayer(player);
-
- SendInitWorldStatesTo(player);
}
void BattlefieldTB::OnPlayerLeaveZone(Player* player)
@@ -212,8 +216,12 @@ void BattlefieldTB::OnPlayerJoinWar(Player* player)
player->SetPvP(true);
// Bonus damage buff for attackers
- if (player->GetTeamId() == GetAttackerTeam() && GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED) > 0)
- player->CastSpell(player, SPELL_TOWER_ATTACK_BONUS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
+ if (player->GetTeamId() == GetAttackerTeam())
+ {
+ int32 towersDestroyed = sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, m_Map);
+ if (towersDestroyed > 0)
+ player->CastSpell(player, SPELL_TOWER_ATTACK_BONUS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, towersDestroyed));
+ }
}
void BattlefieldTB::OnPlayerLeaveWar(Player* player)
@@ -229,165 +237,18 @@ void BattlefieldTB::RemoveAurasFromPlayer(Player* player)
player->RemoveAurasDueToSpell(SPELL_TB_SPIRITUAL_IMMUNITY);
}
-// 62 fields, [7]-[68]
-void BattlefieldTB::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
+void BattlefieldTB::SaveWorldStateValues()
{
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW), int32(IsWarTime() && GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW), int32(IsWarTime() && GetAttackerTeam() == TEAM_HORDE ? 1 : 0));
-
- // Not sure if TB
- //packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_9_UNKNOWN), int32(1));
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_SOUTH_DAMAGED_NEUTRAL), int32(0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_SOUTH_INTACT_NEUTRAL), int32(0));
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_PROGRESS_SHOW), int32(0));
-
- // Buildings/bases
- for (BfCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr)
- {
- uint8 i = TB_BASE_COUNT;
- switch (itr->second->GetCapturePointEntry())
- {
- case GO_CAPTURE_POINT_NORTH_A_DEFENDING:
- case GO_CAPTURE_POINT_NORTH_H_DEFENDING:
- i = TB_BASE_IRONCLAD_GARRISON;
- break;
- case GO_CAPTURE_POINT_EAST_A_DEFENDING:
- case GO_CAPTURE_POINT_EAST_H_DEFENDING:
- i = TB_BASE_SLAGWORKS;
- break;
- case GO_CAPTURE_POINT_WEST_A_DEFENDING:
- case GO_CAPTURE_POINT_WEST_H_DEFENDING:
- i = TB_BASE_WARDENS_VIGIL;
- break;
- default:
- continue;
- }
-
- TeamId team = TEAM_NEUTRAL;
- bool controlled = false;
- bool capturing = false;
-
- switch (itr->second->GetObjectiveState())
- {
- case BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE:
- case BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE:
- controlled = true;
- team = itr->second->GetTeamId();
- break;
- case BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
- case BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
- team = TEAM_ALLIANCE;
- capturing = true;
- break;
- case BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
- case BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
- team = TEAM_HORDE;
- capturing = true;
- break;
- default:
- team = TEAM_NEUTRAL;
- break;
- }
-
- packet.Worldstates.emplace_back(uint32(TBCapturePoints[i].wsControlled[TEAM_ALLIANCE]), int32(team == TEAM_ALLIANCE && controlled ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBCapturePoints[i].wsCapturing[TEAM_ALLIANCE]), int32(team == TEAM_ALLIANCE && capturing ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBCapturePoints[i].wsNeutral), int32(team == TEAM_NEUTRAL ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBCapturePoints[i].wsCapturing[TEAM_HORDE]), int32(team == TEAM_HORDE && capturing ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBCapturePoints[i].wsControlled[TEAM_HORDE]), int32(team == TEAM_HORDE && controlled ? 1 : 0));
- }
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW), int32(GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW), int32(IsWarTime() ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED), int32(GetData(BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED)));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TOWERS_DESTROYED), int32(0));
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW), int32(IsWarTime() ? 1 : 0));
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_STATE_BATTLE), int32(IsWarTime() ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_STATE_PREPARATIONS), int32(GetState() == BATTLEFIELD_WARMUP ? 1 : 0));
-
- // Not sure if TB
- //packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_35_UNKNOWN), int32(0));
- //packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_36_UNKNOWN), int32(0));
- //packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_37_UNKNOWN), int32(0));
-
- // Unused tower icons
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_WEST_DAMAGED_NEUTRAL), int32(0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_WEST_INTACT_NEUTRAL), int32(0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_EAST_DAMAGED_NEUTRAL), int32(0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_EAST_INTACT_NEUTRAL), int32(0));
-
- // Towers/spires
- for (uint8 i = 0; i < TB_TOWERS_COUNT; i++)
- {
- // Find gameobject
- for (ObjectGuid guid : Towers)
- {
- GameObject* tower = GetGameObject(guid);
- if (!tower || tower->GetEntry() != TBTowers[i].entry)
- continue;
-
- TeamId team = GetDefenderTeam(); // 0-false -> alliance; 1-true -> horde
- bool intact = tower->GetDestructibleState() == GO_DESTRUCTIBLE_INTACT;
- bool damaged = tower->GetDestructibleState() == GO_DESTRUCTIBLE_DAMAGED;
- bool destroyed = tower->GetDestructibleState() == GO_DESTRUCTIBLE_DESTROYED;
-
- packet.Worldstates.emplace_back(uint32(TBTowers[i].wsIntact[TEAM_ALLIANCE]), int32(!team && intact ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBTowers[i].wsDamaged[TEAM_ALLIANCE]), int32(!team && damaged ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBTowers[i].wsDestroyed), int32(destroyed ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBTowers[i].wsDamaged[TEAM_HORDE]), int32(team && damaged ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(TBTowers[i].wsIntact[TEAM_HORDE]), int32(team && intact ? 1 : 0));
- }
- }
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW), int32(!IsWarTime() ? 1 : 0));
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_BATTLE_END), int32(IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE), int32(!IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
-
- // Not sure if TB
- //packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_65_UNKNOWN), int32(0));
- //packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_66_UNKNOWN), int32(0));
-
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_KEEP_ALLIANCE), int32(GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
- packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_KEEP_HORDE), int32(GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
-}
-
-void BattlefieldTB::SendInitWorldStatesToAll()
-{
- // Save
+ sWorld->setWorldState(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, uint32(GetDefenderTeam()));
sWorld->setWorldState(WS_BATTLEFIELD_TB_STATE_BATTLE, uint32(IsWarTime() ? 1 : 0));
- sWorld->setWorldState(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, uint32(!IsWarTime() && GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
- sWorld->setWorldState(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, uint32(!IsWarTime() && GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
- sWorld->setWorldState(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, uint32(IsWarTime() && GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0));
- sWorld->setWorldState(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, uint32(IsWarTime() && GetAttackerTeam() == TEAM_HORDE ? 1 : 0));
sWorld->setWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, uint32(!IsWarTime() ? m_Timer : 0));
- sWorld->setWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, uint32(!IsWarTime() ? 1 : 0));
-
- // Tol Barad
- for (uint8 team = 0; team < PVP_TEAMS_COUNT; team++)
- for (ObjectGuid const& guid : m_players[team])
- if (Player* player = ObjectAccessor::FindPlayer(guid))
- SendInitWorldStatesTo(player);
-
- // Tol Barad Peninsula
- Map::PlayerList const& players = m_Map->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- if (Player* player = itr->GetSource()->ToPlayer())
- if (player->GetZoneId() == 5389) // ZONE_TOL_BARAD_PENINSULA
- player->SendInitWorldStates(5389, player->GetAreaId());
}
void BattlefieldTB::OnStartGrouping()
{
UpdateNPCsAndGameObjects();
- SendUpdateWorldState(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, uint32(1));
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, 1, m_Map);
// Teleport players out of questing area
for (uint8 team = 0; team < PVP_TEAMS_COUNT; ++team)
@@ -397,18 +258,45 @@ void BattlefieldTB::OnStartGrouping()
player->CastSpell(player, TBQuestAreas[m_iCellblockRandom].teleportSpell, true);
// Should we also teleport players out of Baradin Hold underground area?
-};
+}
void BattlefieldTB::OnBattleStart()
{
- SetData(BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED, uint32(0));
SetData(BATTLEFIELD_TB_DATA_TOWERS_INTACT, uint32(3));
- SetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED, uint32(0));
UpdateNPCsAndGameObjects();
- SendInitWorldStatesToAll();
-};
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW, 1, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, GetAttackerTeam() == TEAM_HORDE ? 1 : 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW, 1, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW, 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_STATE_BATTLE, 1, m_Map);
+
+ // Towers/spires
+ for (uint8 i = 0; i < TB_TOWERS_COUNT; i++)
+ {
+ sWorldStateMgr->SetValue(TBTowers[i].wsIntact[GetDefenderTeam()], 1, m_Map);
+ sWorldStateMgr->SetValue(TBTowers[i].wsDamaged[GetDefenderTeam()], 0, m_Map);
+ sWorldStateMgr->SetValue(TBTowers[i].wsDestroyed, 0, m_Map);
+ sWorldStateMgr->SetValue(TBTowers[i].wsDamaged[GetAttackerTeam()], 0, m_Map);
+ sWorldStateMgr->SetValue(TBTowers[i].wsIntact[GetAttackerTeam()], 0, m_Map);
+ }
+}
void BattlefieldTB::OnBattleEnd(bool endByTimer)
{
@@ -444,8 +332,25 @@ void BattlefieldTB::OnBattleEnd(bool endByTimer)
warnedTwoMinutes = false;
warnedOneMinute = false;
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW, 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 1, m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_NoWarBattleTime / IN_MILLISECONDS, m_Map);
-};
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, GetDefenderTeam() + 1, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_ALLIANCE, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, m_Map);
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_HORDE, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW, 0, m_Map);
+
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_STATE_BATTLE, 0, m_Map);
+}
void BattlefieldTB::UpdateNPCsAndGameObjects()
{
@@ -573,7 +478,7 @@ void BattlefieldTB::UpdateNPCsAndGameObjects()
for (uint8 i = 0; i < BATTLEFIELD_TB_GRAVEYARD_MAX; i++)
if (BfGraveyard* graveyard = GetGraveyardById(i))
graveyard->GiveControlTo(!IsWarTime() || TBGraveyards[i].defenderControls ? GetDefenderTeam() : GetAttackerTeam());
-};
+}
void BattlefieldTB::OnCreatureCreate(Creature* creature)
{
@@ -630,7 +535,7 @@ void BattlefieldTB::OnCreatureCreate(Creature* creature)
default:
break;
}
-};
+}
void BattlefieldTB::OnGameObjectCreate(GameObject* go)
{
@@ -671,7 +576,7 @@ void BattlefieldTB::OnGameObjectCreate(GameObject* go)
default:
break;
}
-};
+}
void BattlefieldTB::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject* /*invoker*/)
{
@@ -722,8 +627,8 @@ void BattlefieldTB::TowerDamaged(TBTowerId tbTowerId)
SetData(BATTLEFIELD_TB_DATA_TOWERS_INTACT, GetData(BATTLEFIELD_TB_DATA_TOWERS_INTACT) - 1);
- SendUpdateWorldState(uint32(TBTowers[tbTowerId].wsIntact[GetDefenderTeam()]), int32(0));
- SendUpdateWorldState(uint32(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()]), int32(1));
+ sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsIntact[GetDefenderTeam()], 0, m_Map);
+ sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()], 1, m_Map);
TeamCastSpell(GetAttackerTeam(), SPELL_REWARD_TOWER_DAMAGED);
}
@@ -735,21 +640,21 @@ void BattlefieldTB::TowerDestroyed(TBTowerId tbTowerId)
// Add 5 minute bonus time
m_Timer += m_BonusTime;
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
- SendUpdateWorldState(WS_BATTLEFIELD_TB_TIME_BATTLE_END, uint32(GameTime::GetGameTime() + (m_Timer / 1000)));
+ SendWarning(TBTowers[tbTowerId].textDestroyed);
- SendWarning(TBTowers[tbTowerId].textDamaged);
-
- SetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED, GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED) + 1);
- SendUpdateWorldState(uint32(WS_BATTLEFIELD_TB_TOWERS_DESTROYED), int32(GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW, 1, m_Map);
+ int32 towersDestroyed = sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, m_Map) + 1;
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, towersDestroyed, m_Map);
- SendUpdateWorldState(uint32(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()]), int32(0));
- SendUpdateWorldState(uint32(TBTowers[tbTowerId].wsDestroyed), int32(1));
+ sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()], 0, m_Map);
+ sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsDestroyed, 1, m_Map);
// Attack bonus buff
for (ObjectGuid const& guid : m_PlayersInWar[GetAttackerTeam()])
if (Player* player = ObjectAccessor::FindPlayer(guid))
- player->CastSpell(player, SPELL_TOWER_ATTACK_BONUS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
+ player->CastSpell(player, SPELL_TOWER_ATTACK_BONUS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, towersDestroyed));
// Honor reward
TeamCastSpell(GetAttackerTeam(), SPELL_REWARD_TOWER_DESTROYED);
@@ -763,8 +668,7 @@ void BattlefieldTB::UpdateCapturedBaseCount()
if (itr->second->GetTeamId() == GetAttackerTeam())
numCapturedBases += 1;
- SetData(BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED, numCapturedBases);
- SendUpdateWorldState(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, uint32(numCapturedBases));
+ sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, numCapturedBases, m_Map);
// Check if attackers won
if (numCapturedBases == TB_BASE_COUNT)
@@ -800,8 +704,11 @@ TolBaradCapturePoint::TolBaradCapturePoint(BattlefieldTB* battlefield, TeamId te
m_State = teamInControl == TEAM_ALLIANCE ? BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE : BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE;
}
-void TolBaradCapturePoint::ChangeTeam(TeamId /*oldTeam*/)
+void TolBaradCapturePoint::SendChangePhase()
{
+ if (m_OldState == m_State)
+ return;
+
// Find out index
uint8 iBase = TB_BASE_COUNT;
for (uint8 i = 0; i < TB_BASE_COUNT; i++)
@@ -816,15 +723,15 @@ void TolBaradCapturePoint::ChangeTeam(TeamId /*oldTeam*/)
{
case BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE:
case BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE:
- SendUpdateWorldState(TBCapturePoints[iBase].wsControlled[GetTeamId()], uint32(0));
+ sWorldStateMgr->SetValue(TBCapturePoints[iBase].wsControlled[GetTeamId()], 0, m_Bf->GetMap());
break;
case BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
case BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
- SendUpdateWorldState(TBCapturePoints[iBase].wsCapturing[TEAM_ALLIANCE], uint32(0));
+ sWorldStateMgr->SetValue(TBCapturePoints[iBase].wsCapturing[TEAM_ALLIANCE], 0, m_Bf->GetMap());
break;
case BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
case BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
- SendUpdateWorldState(TBCapturePoints[iBase].wsCapturing[TEAM_HORDE], uint32(0));
+ sWorldStateMgr->SetValue(TBCapturePoints[iBase].wsCapturing[TEAM_HORDE], 0, m_Bf->GetMap());
break;
default:
break;
@@ -836,21 +743,21 @@ void TolBaradCapturePoint::ChangeTeam(TeamId /*oldTeam*/)
case BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE:
case BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE:
m_Bf->SendWarning(TBCapturePoints[iBase].textGained[GetTeamId()]);
- SendUpdateWorldState(TBCapturePoints[iBase].wsControlled[GetTeamId()], uint32(1));
+ sWorldStateMgr->SetValue(TBCapturePoints[iBase].wsControlled[GetTeamId()], 1, m_Bf->GetMap());
GetCapturePointGo()->SetGoArtKit(GetTeamId() == TEAM_ALLIANCE ? TB_GO_ARTKIT_FLAG_ALLIANCE : TB_GO_ARTKIT_FLAG_HORDE);
break;
case BF_CAPTUREPOINT_OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
m_Bf->SendWarning(TBCapturePoints[iBase].textLost[TEAM_HORDE]);
[[fallthrough]];
case BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
- SendUpdateWorldState(TBCapturePoints[iBase].wsCapturing[TEAM_ALLIANCE], uint32(1));
+ sWorldStateMgr->SetValue(TBCapturePoints[iBase].wsCapturing[TEAM_ALLIANCE], 1, m_Bf->GetMap());
GetCapturePointGo()->SetGoArtKit(TB_GO_ARTKIT_FLAG_NONE);
break;
case BF_CAPTUREPOINT_OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
m_Bf->SendWarning(TBCapturePoints[iBase].textLost[TEAM_ALLIANCE]);
[[fallthrough]];
case BF_CAPTUREPOINT_OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
- SendUpdateWorldState(TBCapturePoints[iBase].wsCapturing[TEAM_HORDE], uint32(1));
+ sWorldStateMgr->SetValue(TBCapturePoints[iBase].wsCapturing[TEAM_HORDE], 1, m_Bf->GetMap());
GetCapturePointGo()->SetGoArtKit(TB_GO_ARTKIT_FLAG_NONE);
break;
default:
diff --git a/src/server/scripts/Battlefield/BattlefieldTB.h b/src/server/scripts/Battlefield/BattlefieldTB.h
index d6079e8cd9d..ac181bde5d9 100644
--- a/src/server/scripts/Battlefield/BattlefieldTB.h
+++ b/src/server/scripts/Battlefield/BattlefieldTB.h
@@ -31,9 +31,7 @@ enum TolBaradInfo
enum TolBaradData
{
- BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED,
BATTLEFIELD_TB_DATA_TOWERS_INTACT,
- BATTLEFIELD_TB_DATA_TOWERS_DESTROYED,
BATTLEFIELD_TB_DATA_MAX,
};
@@ -541,7 +539,7 @@ class TolBaradCapturePoint : public BfCapturePoint
public:
TolBaradCapturePoint(BattlefieldTB* battlefield, TeamId teamInControl);
- void ChangeTeam(TeamId /*oldteam*/) override;
+ void SendChangePhase() override;
};
/* ##################### *
@@ -577,9 +575,7 @@ class BattlefieldTB : public Battlefield
bool SetupBattlefield() override;
- void SendInitWorldStatesToAll() override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
- void UpdateWorldStates();
+ void SaveWorldStateValues();
void HandleKill(Player* killer, Unit* victim) override;
//void OnUnitDeath(Unit* unit) override;
diff --git a/src/server/scripts/Battlefield/BattlefieldWG.cpp b/src/server/scripts/Battlefield/BattlefieldWG.cpp
index deff3280c15..f064d8ee919 100644
--- a/src/server/scripts/Battlefield/BattlefieldWG.cpp
+++ b/src/server/scripts/Battlefield/BattlefieldWG.cpp
@@ -24,9 +24,9 @@
#include "BattlefieldMgr.h"
#include "Battleground.h"
#include "CreatureTextMgr.h"
+#include "DB2Stores.h"
#include "GameObject.h"
#include "GameTime.h"
-#include "DB2Stores.h"
#include "Log.h"
#include "MapManager.h"
#include "ObjectAccessor.h"
@@ -39,7 +39,6 @@
#include "World.h"
#include "WorldSession.h"
#include "WorldStateMgr.h"
-#include "WorldStatePackets.h"
struct BfWGCoordGY
{
@@ -636,7 +635,6 @@ void BattlefieldWG::OnBattleStart()
player->GetPosition(x, y, z);
if (5500 > x && x > 5392 && y < 2880 && y > 2800 && z < 480)
player->TeleportTo(571, 5349.8686f, 2838.481f, 409.240f, 0.046328f);
- SendInitWorldStatesTo(player);
}
}
}
@@ -1119,7 +1117,6 @@ void BattlefieldWG::OnPlayerJoinWar(Player* player)
if (GetData(BATTLEFIELD_WG_DATA_BROKEN_TOWER_ATT) > 0)
player->SetAuraStack(SPELL_TOWER_CONTROL, player, GetData(BATTLEFIELD_WG_DATA_BROKEN_TOWER_ATT));
}
- SendInitWorldStatesTo(player);
}
void BattlefieldWG::OnPlayerLeaveWar(Player* player)
@@ -1157,8 +1154,6 @@ void BattlefieldWG::OnPlayerEnterZone(Player* player)
RemoveAurasFromPlayer(player);
player->AddAura(m_DefenderTeam == TEAM_HORDE ? SPELL_HORDE_CONTROL_PHASE_SHIFT : SPELL_ALLIANCE_CONTROL_PHASE_SHIFT, player);
- // Send worldstate to player
- SendInitWorldStatesTo(player);
}
uint32 BattlefieldWG::GetData(uint32 data) const
diff --git a/src/server/scripts/Battlefield/BattlefieldWG.h b/src/server/scripts/Battlefield/BattlefieldWG.h
index d2593b5e569..ff17967f01f 100644
--- a/src/server/scripts/Battlefield/BattlefieldWG.h
+++ b/src/server/scripts/Battlefield/BattlefieldWG.h
@@ -325,11 +325,6 @@ class BattlefieldWG : public Battlefield
void UpdateVehicleCountWG();
void UpdateCounterVehicle(bool init);
- // TODO: delete
- void SendInitWorldStatesToAll() override { }
- // TODO: delete
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) override { }
-
void HandleKill(Player* killer, Unit* victim) override;
void OnUnitDeath(Unit* unit) override;
void HandlePromotion(Player* killer, Unit* killed);
diff --git a/src/server/scripts/Commands/cs_bf.cpp b/src/server/scripts/Commands/cs_bf.cpp
index f51dc57cf36..55d9ecc68d7 100644
--- a/src/server/scripts/Commands/cs_bf.cpp
+++ b/src/server/scripts/Commands/cs_bf.cpp
@@ -127,7 +127,6 @@ public:
return false;
bf->SetTimer(time * IN_MILLISECONDS);
- bf->SendInitWorldStatesToAll();
if (battleId == 1)
handler->SendGlobalGMSysMessage("Wintergrasp (Command timer used)");