Core/WorldStates: Migrate Wintergrasp worldstates to new system

This commit is contained in:
Shauren authored and Ovahlord committed 2022-10-09 01:15:02 +02:00
1 parent e15fe3378e
commit 8a98cc0205
8 files changed
+150 -131

No files matched your search

@@ -0,0 +1,54 @@
DELETE FROM `world_state` WHERE `ID` IN (3490,3491,3680,3681,3698,3699,3700,3701,3702,3703,3704,3705,3706,3710,3711,3712,3713,3714,3749,3750,3751,3752,3753,3754,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764,3765,3766,3767,3768,3769,3770,3771,3772,3773,3781,3801,3802,3803,4022,4023,4024,4025,4354);
INSERT INTO `world_state` (`ID`,`DefaultValue`,`MapIDs`,`Comment`) VALUES
(3490,0,'571,2118','Wintergrasp - Number of Horde vehicles'),
(3491,0,'571,2118','Wintergrasp - Horde vehicle limit'),
(3680,0,'571,2118','Wintergrasp - Number of Alliance vehicles'),
(3681,0,'571,2118','Wintergrasp - Alliance vehicle limit'),
(3698,0,'571,2138','Wintergrasp - Workshop'),
(3699,0,'571,2138','Wintergrasp - Workshop'),
(3700,0,'571,2138','Wintergrasp - Workshop'),
(3701,0,'571,2138','Wintergrasp - Workshop'),
(3702,0,'571,2138','Wintergrasp - Workshop'),
(3703,0,'571,2138','Wintergrasp - Workshop'),
(3704,0,'571,2138','Wintergrasp - Tower'),
(3705,0,'571,2138','Wintergrasp - Tower'),
(3706,0,'571,2138','Wintergrasp - Tower'),
(3710,0,'571,2118','Wintergrasp - Show timer to battle end'),
(3711,0,'571,2138','Wintergrasp - Keep tower'),
(3712,0,'571,2138','Wintergrasp - Keep tower'),
(3713,0,'571,2138','Wintergrasp - Keep tower'),
(3714,0,'571,2138','Wintergrasp - Keep tower'),
(3749,0,'571,2119','Wintergrasp - Wall'),
(3750,0,'571,2120','Wintergrasp - Wall'),
(3751,0,'571,2121','Wintergrasp - Wall'),
(3752,0,'571,2122','Wintergrasp - Wall'),
(3753,0,'571,2123','Wintergrasp - Wall'),
(3754,0,'571,2124','Wintergrasp - Wall'),
(3755,0,'571,2125','Wintergrasp - Wall'),
(3756,0,'571,2126','Wintergrasp - Wall'),
(3757,0,'571,2127','Wintergrasp - Wall'),
(3758,0,'571,2128','Wintergrasp - Wall'),
(3759,0,'571,2129','Wintergrasp - Wall'),
(3760,0,'571,2130','Wintergrasp - Wall'),
(3761,0,'571,2131','Wintergrasp - Wall'),
(3762,0,'571,2132','Wintergrasp - Wall'),
(3763,0,'571,2138','Wintergrasp - Keep gate'),
(3764,0,'571,2133','Wintergrasp - Wall'),
(3765,0,'571,2134','Wintergrasp - Wall'),
(3766,0,'571,2134','Wintergrasp - Wall'),
(3767,0,'571,2135','Wintergrasp - Wall'),
(3768,0,'571,2134','Wintergrasp - Wall'),
(3769,0,'571,2136','Wintergrasp - Wall'),
(3770,0,'571,2134','Wintergrasp - Wall'),
(3771,0,'571,2134','Wintergrasp - Wall'),
(3772,0,'571,2138','Wintergrasp - Wall'),
(3773,0,'571,2138','Wintergrasp - Relic gate'),
(3781,0,'571,2118','Wintergrasp - Battle end time'),
(3801,0,'571,2118','Wintergrasp - Show timer for next battle'),
(3802,0,'571,2118','Wintergrasp - Defender'),
(3803,0,'571,2118','Wintergrasp - Attacker'),
(4022,0,'571,2118','Wintergrasp - Number of Horde wins as attacker'),
(4023,0,'571,2118','Wintergrasp - Number of Alliance wins as attacker'),
(4024,0,'571,2118','Wintergrasp - Number of Horde wins as defender'),
(4025,0,'571,2118','Wintergrasp - Number of Alliance wins as defender'),
(4354,0,'571,2118','Wintergrasp - Next battle start time');
+2 -3
View File
@@ -346,11 +346,10 @@ void Battlefield::EndBattle(bool endByTimer)
if (!endByTimer)
SetDefenderTeam(GetAttackerTeam());
OnBattleEnd(endByTimer);
// Reset battlefield timer
m_Timer = m_NoWarBattleTime;
SendInitWorldStatesToAll();
OnBattleEnd(endByTimer);
}
void Battlefield::DoPlaySoundToAll(uint32 SoundID)
@@ -247,6 +247,8 @@ class TC_GAME_API Battlefield : public ZoneScript
uint32 GetTypeId() const { return m_TypeId; }
uint32 GetZoneId() const { return m_ZoneId; }
uint32 GetMapId() const { return m_MapId; }
Map* GetMap() const { return m_Map; }
ObjectGuid GetGUID() { return m_Guid; }
void TeamApplyBuff(TeamId team, uint32 spellId, uint32 spellId2 = 0);
@@ -9407,16 +9407,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId)
if (bf && bf->GetTypeId() == BATTLEFIELD_TB)
bf->FillInitialWorldStates(packet);
break;
// Wintergrasp
case AREA_WINTERGRASP:
if (bf && bf->GetTypeId() == BATTLEFIELD_WG)
bf->FillInitialWorldStates(packet);
[[fallthrough]];
default:
packet.Worldstates.emplace_back(0x914, 0x0); // 7
packet.Worldstates.emplace_back(0x913, 0x0); // 8
packet.Worldstates.emplace_back(0x912, 0x0); // 9
packet.Worldstates.emplace_back(0x915, 0x0); // 10
break;
}
@@ -9443,16 +9434,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_WINTERGRASP_ENABLE))
{
if (Battlefield* wg = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG))
{
SendUpdateWorldState(WS_BATTLEFIELD_WG_ACTIVE, wg->IsWarTime() ? 0 : 1);
uint32 timer = wg->IsWarTime() ? 0 : (wg->GetTimer() / 1000); // 0 - Time to next battle
SendUpdateWorldState(WS_BATTLEFIELD_WG_TIME_NEXT_BATTLE, uint32(GameTime::GetGameTime() + timer));
}
}
if (sWorld->getBoolConfig(CONFIG_TOLBARAD_ENABLE))
{
if (Battlefield* tb = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_TB))
+20 -20
View File
@@ -4359,26 +4359,26 @@ enum AreaId : uint32
enum WorldState : uint32
{
WS_BATTLEFIELD_WG_VEHICLE_H = 3490,
WS_BATTLEFIELD_WG_MAX_VEHICLE_H = 3491,
WS_BATTLEFIELD_WG_VEHICLE_A = 3680,
WS_BATTLEFIELD_WG_MAX_VEHICLE_A = 3681,
WS_BATTLEFIELD_WG_WORKSHOP_K_W = 3698,
WS_BATTLEFIELD_WG_WORKSHOP_K_E = 3699,
WS_BATTLEFIELD_WG_WORKSHOP_NW = 3700,
WS_BATTLEFIELD_WG_WORKSHOP_NE = 3701,
WS_BATTLEFIELD_WG_WORKSHOP_SW = 3702,
WS_BATTLEFIELD_WG_WORKSHOP_SE = 3703,
WS_BATTLEFIELD_WG_SHOW_WORLDSTATE = 3710,
WS_BATTLEFIELD_WG_TIME_BATTLE_END = 3781,
WS_BATTLEFIELD_WG_ACTIVE = 3801,
WS_BATTLEFIELD_WG_DEFENDER = 3802,
WS_BATTLEFIELD_WG_ATTACKER = 3803,
WS_BATTLEFIELD_WG_ATTACKED_H = 4022,
WS_BATTLEFIELD_WG_ATTACKED_A = 4023,
WS_BATTLEFIELD_WG_DEFENDED_H = 4024,
WS_BATTLEFIELD_WG_DEFENDED_A = 4025,
WS_BATTLEFIELD_WG_TIME_NEXT_BATTLE = 4354,
WS_BATTLEFIELD_WG_VEHICLE_H = 3490,
WS_BATTLEFIELD_WG_MAX_VEHICLE_H = 3491,
WS_BATTLEFIELD_WG_VEHICLE_A = 3680,
WS_BATTLEFIELD_WG_MAX_VEHICLE_A = 3681,
WS_BATTLEFIELD_WG_WORKSHOP_K_W = 3698,
WS_BATTLEFIELD_WG_WORKSHOP_K_E = 3699,
WS_BATTLEFIELD_WG_WORKSHOP_NW = 3700,
WS_BATTLEFIELD_WG_WORKSHOP_NE = 3701,
WS_BATTLEFIELD_WG_WORKSHOP_SW = 3702,
WS_BATTLEFIELD_WG_WORKSHOP_SE = 3703,
WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END = 3710,
WS_BATTLEFIELD_WG_TIME_BATTLE_END = 3781,
WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE = 3801,
WS_BATTLEFIELD_WG_DEFENDER = 3802,
WS_BATTLEFIELD_WG_ATTACKER = 3803,
WS_BATTLEFIELD_WG_ATTACKED_H = 4022,
WS_BATTLEFIELD_WG_ATTACKED_A = 4023,
WS_BATTLEFIELD_WG_DEFENDED_H = 4024,
WS_BATTLEFIELD_WG_DEFENDED_A = 4025,
WS_BATTLEFIELD_WG_TIME_NEXT_BATTLE = 4354,
WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW = 5385,
WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW = 5384,
@@ -34,6 +34,7 @@
#include "Random.h"
#include "ScriptMgr.h"
#include "World.h"
#include "WorldStateMgr.h"
#include "WorldStatePackets.h"
const uint32 TBFactions[BG_TEAMS_COUNT] = { 1610, 1732 };
@@ -672,6 +673,8 @@ void BattlefieldTB::OnBattleEnd(bool endByTimer)
warnedFiveMinutes = false;
warnedTwoMinutes = false;
warnedOneMinute = false;
sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_NoWarBattleTime / IN_MILLISECONDS, m_Map);
};
void BattlefieldTB::UpdateNPCsAndGameObjects()
@@ -39,6 +39,7 @@
#include "TemporarySummon.h"
#include "World.h"
#include "WorldSession.h"
#include "WorldStateMgr.h"
#include "WorldStatePackets.h"
struct BfWGCoordGY
@@ -445,15 +446,16 @@ bool BattlefieldWG::SetupBattlefield()
SetGraveyardNumber(BATTLEFIELD_WG_GRAVEYARD_MAX);
// Load from db
if ((sWorld->getWorldState(WS_BATTLEFIELD_WG_ACTIVE) == 0) && (sWorld->getWorldState(WS_BATTLEFIELD_WG_DEFENDER) == 0)
&& (sWorld->getWorldState(ClockWorldState[0]) == 0))
if (sWorld->getWorldState(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE) == 0
&& sWorld->getWorldState(WS_BATTLEFIELD_WG_DEFENDER) == 0
&& sWorld->getWorldState(ClockWorldState[0]) == 0)
{
sWorld->setWorldState(WS_BATTLEFIELD_WG_ACTIVE, uint64(false));
sWorld->setWorldState(WS_BATTLEFIELD_WG_DEFENDER, uint64(urand(0, 1)));
sWorld->setWorldState(ClockWorldState[0], uint64(m_NoWarBattleTime));
sWorld->setWorldState(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 0);
sWorld->setWorldState(WS_BATTLEFIELD_WG_DEFENDER, urand(0, 1));
sWorld->setWorldState(ClockWorldState[0], m_NoWarBattleTime);
}
m_isActive = sWorld->getWorldState(WS_BATTLEFIELD_WG_ACTIVE) != 0;
m_isActive = sWorld->getWorldState(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE) == 0;
m_DefenderTeam = TeamId(sWorld->getWorldState(WS_BATTLEFIELD_WG_DEFENDER));
m_Timer = sWorld->getWorldState(ClockWorldState[0]);
@@ -463,10 +465,20 @@ bool BattlefieldWG::SetupBattlefield()
m_Timer = m_RestartAfterCrash;
}
SetData(BATTLEFIELD_WG_DATA_WON_A, uint32(sWorld->getWorldState(WS_BATTLEFIELD_WG_ATTACKED_A)));
SetData(BATTLEFIELD_WG_DATA_DEF_A, uint32(sWorld->getWorldState(WS_BATTLEFIELD_WG_DEFENDED_A)));
SetData(BATTLEFIELD_WG_DATA_WON_H, uint32(sWorld->getWorldState(WS_BATTLEFIELD_WG_ATTACKED_H)));
SetData(BATTLEFIELD_WG_DATA_DEF_H, uint32(sWorld->getWorldState(WS_BATTLEFIELD_WG_DEFENDED_H)));
auto loadSavedWorldState = [&](int32 id)
{
sWorldStateMgr->SetValue(id, sWorld->getWorldState(id), m_Map);
};
loadSavedWorldState(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE);
loadSavedWorldState(WS_BATTLEFIELD_WG_DEFENDER);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_ATTACKER, GetAttackerTeam(), m_Map);
sWorldStateMgr->SetValue(ClockWorldState[0], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
sWorldStateMgr->SetValue(ClockWorldState[1], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
loadSavedWorldState(WS_BATTLEFIELD_WG_ATTACKED_A);
loadSavedWorldState(WS_BATTLEFIELD_WG_DEFENDED_A);
loadSavedWorldState(WS_BATTLEFIELD_WG_ATTACKED_H);
loadSavedWorldState(WS_BATTLEFIELD_WG_DEFENDED_H);
for (uint8 i = 0; i < BATTLEFIELD_WG_GRAVEYARD_MAX; i++)
{
@@ -548,13 +560,18 @@ bool BattlefieldWG::Update(uint32 diff)
bool m_return = Battlefield::Update(diff);
if (m_saveTimer <= diff)
{
sWorld->setWorldState(WS_BATTLEFIELD_WG_ACTIVE, m_isActive);
auto saveWorldState = [&](int32 id)
{
sWorld->setWorldState(id, sWorldStateMgr->GetValue(id, m_Map));
};
sWorld->setWorldState(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, !m_isActive);
sWorld->setWorldState(WS_BATTLEFIELD_WG_DEFENDER, m_DefenderTeam);
sWorld->setWorldState(ClockWorldState[0], m_Timer);
sWorld->setWorldState(WS_BATTLEFIELD_WG_ATTACKED_A, GetData(BATTLEFIELD_WG_DATA_WON_A));
sWorld->setWorldState(WS_BATTLEFIELD_WG_DEFENDED_A, GetData(BATTLEFIELD_WG_DATA_DEF_A));
sWorld->setWorldState(WS_BATTLEFIELD_WG_ATTACKED_H, GetData(BATTLEFIELD_WG_DATA_WON_H));
sWorld->setWorldState(WS_BATTLEFIELD_WG_DEFENDED_H, GetData(BATTLEFIELD_WG_DATA_DEF_H));
saveWorldState(WS_BATTLEFIELD_WG_ATTACKED_A);
saveWorldState(WS_BATTLEFIELD_WG_DEFENDED_A);
saveWorldState(WS_BATTLEFIELD_WG_ATTACKED_H);
saveWorldState(WS_BATTLEFIELD_WG_DEFENDED_H);
m_saveTimer = 60 * IN_MILLISECONDS;
}
else
@@ -577,6 +594,11 @@ void BattlefieldWG::OnBattleStart()
else
TC_LOG_ERROR("bg.battlefield", "WG: Failed to spawn titan relic.");
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_ATTACKER, GetAttackerTeam(), m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_DEFENDER, GetDefenderTeam(), m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 0, m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END, 1, m_Map);
sWorldStateMgr->SetValue(ClockWorldState[0], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
// Update tower visibility and update faction
for (auto itr = CanonList.begin(); itr != CanonList.end(); ++itr)
@@ -655,12 +677,22 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer)
relic->RemoveFromWorld();
m_titansRelicGUID.Clear();
// successful defense
if (endByTimer)
UpdateData(GetDefenderTeam() == TEAM_HORDE ? BATTLEFIELD_WG_DATA_DEF_H : BATTLEFIELD_WG_DATA_DEF_A, 1);
// successful attack (note that teams have already been swapped, so defender team is the one who won)
else
UpdateData(GetDefenderTeam() == TEAM_HORDE ? BATTLEFIELD_WG_DATA_WON_H : BATTLEFIELD_WG_DATA_WON_A, 1);
// update win statistics
{
int32 worldStateId;
// successful defense
if (endByTimer)
worldStateId = GetDefenderTeam() == TEAM_HORDE ? WS_BATTLEFIELD_WG_DEFENDED_H : WS_BATTLEFIELD_WG_DEFENDED_A;
// successful attack (note that teams have already been swapped, so defender team is the one who won)
else
worldStateId = GetDefenderTeam() == TEAM_HORDE ? WS_BATTLEFIELD_WG_ATTACKED_H : WS_BATTLEFIELD_WG_ATTACKED_A;
sWorldStateMgr->SetValue(worldStateId, sWorldStateMgr->GetValue(worldStateId, m_Map) + 1, m_Map);
}
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 1, m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END, 0, m_Map);
sWorldStateMgr->SetValue(ClockWorldState[1], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
// Remove turret
for (auto itr = CanonList.begin(); itr != CanonList.end(); ++itr)
@@ -1141,43 +1173,6 @@ uint32 BattlefieldWG::GetData(uint32 data) const
return Battlefield::GetData(data);
}
void BattlefieldWG::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
{
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_DEFENDED_A, GetData(BATTLEFIELD_WG_DATA_DEF_A));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_DEFENDED_H, GetData(BATTLEFIELD_WG_DATA_DEF_H));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_ATTACKED_A, GetData(BATTLEFIELD_WG_DATA_WON_A));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_ATTACKED_H, GetData(BATTLEFIELD_WG_DATA_WON_H));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_ATTACKER, GetAttackerTeam());
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_DEFENDER, GetDefenderTeam());
// Note: cleanup these two, their names look awkward
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_ACTIVE, IsWarTime() ? 0 : 1);
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_SHOW_WORLDSTATE, IsWarTime() ? 1 : 0);
for (uint32 itr = 0; itr < 2; ++itr)
packet.Worldstates.emplace_back(ClockWorldState[itr], int32(GameTime::GetGameTime()) + int32(m_Timer) / int32(1000));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_VEHICLE_H));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_MAX_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_VEHICLE_A));
packet.Worldstates.emplace_back(WS_BATTLEFIELD_WG_MAX_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A));
for (BfWGGameObjectBuilding* building : BuildingsInZone)
building->FillInitialWorldStates(packet);
for (WintergraspWorkshop* workshop : Workshops)
workshop->FillInitialWorldStates(packet);
}
void BattlefieldWG::SendInitWorldStatesToAll()
{
for (uint8 team = 0; team < BG_TEAMS_COUNT; ++team)
for (auto itr = m_players[team].begin(); itr != m_players[team].end(); ++itr)
if (Player* player = ObjectAccessor::FindPlayer(*itr))
SendInitWorldStatesTo(player);
}
void BattlefieldWG::BrokenWallOrTower(TeamId team, BfWGGameObjectBuilding* building)
{
if (team == GetDefenderTeam())
@@ -1224,7 +1219,7 @@ void BattlefieldWG::UpdatedDestroyedTowerCount(TeamId team)
m_Timer = 0;
else
m_Timer -= 600000;
SendInitWorldStatesToAll();
sWorldStateMgr->SetValue(ClockWorldState[0], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, m_Map);
}
}
else // Keep tower
@@ -1282,10 +1277,10 @@ void BattlefieldWG::UpdateDamagedTowerCount(TeamId team)
// Update vehicle count WorldState to player
void BattlefieldWG::UpdateVehicleCountWG()
{
SendUpdateWorldState(WS_BATTLEFIELD_WG_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_VEHICLE_H));
SendUpdateWorldState(WS_BATTLEFIELD_WG_MAX_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H));
SendUpdateWorldState(WS_BATTLEFIELD_WG_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_VEHICLE_A));
SendUpdateWorldState(WS_BATTLEFIELD_WG_MAX_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A));
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_VEHICLE_H), m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_MAX_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H), m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_VEHICLE_A), m_Map);
sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_MAX_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A), m_Map);
}
void BattlefieldWG::UpdateTenacity()
@@ -1421,7 +1416,7 @@ void BfWGGameObjectBuilding::Rebuild()
// Update worldstate
_state = WintergraspGameObjectState(BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT - (_teamControl * 3));
_wg->SendUpdateWorldState(_worldState, _state);
sWorldStateMgr->SetValue(_worldState, _state, _wg->GetMap());
}
UpdateCreatureAndGo();
build->SetFaction(WintergraspFaction[_teamControl]);
@@ -1432,7 +1427,7 @@ void BfWGGameObjectBuilding::Damaged()
{
// Update worldstate
_state = WintergraspGameObjectState(BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DAMAGE - (_teamControl * 3));
_wg->SendUpdateWorldState(_worldState, _state);
sWorldStateMgr->SetValue(_worldState, _state, _wg->GetMap());
// Send warning message
if (_staticTowerInfo)
@@ -1456,7 +1451,7 @@ void BfWGGameObjectBuilding::Destroyed()
{
// Update worldstate
_state = WintergraspGameObjectState(BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY - (_teamControl * 3));
_wg->SendUpdateWorldState(_worldState, _state);
sWorldStateMgr->SetValue(_worldState, _state, _wg->GetMap());
// Warn players
if (_staticTowerInfo)
@@ -1511,6 +1506,7 @@ void BfWGGameObjectBuilding::Init(GameObject* go)
}
_state = WintergraspGameObjectState(sWorld->getWorldState(_worldState));
sWorldStateMgr->SetValue(_worldState, _state, _wg->GetMap());
switch (_state)
{
case BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_INTACT:
@@ -1728,11 +1724,6 @@ void BfWGGameObjectBuilding::UpdateTurretAttack(bool disable)
}
}
void BfWGGameObjectBuilding::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& data)
{
data.Worldstates.emplace_back(uint32(_worldState), uint32(_state));
}
void BfWGGameObjectBuilding::Save()
{
sWorld->setWorldState(_worldState, _state);
@@ -1768,7 +1759,7 @@ void WintergraspWorkshop::GiveControlTo(TeamId teamId, bool init /*= false*/)
{
// Updating worldstate
_state = BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT;
_wg->SendUpdateWorldState(_staticInfo->WorldStateId, _state);
sWorldStateMgr->SetValue(_staticInfo->WorldStateId, _state, _wg->GetMap());
// Warning message
if (!init)
@@ -1786,7 +1777,7 @@ void WintergraspWorkshop::GiveControlTo(TeamId teamId, bool init /*= false*/)
{
// Update worldstate
_state = BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT;
_wg->SendUpdateWorldState(_staticInfo->WorldStateId, _state);
sWorldStateMgr->SetValue(_staticInfo->WorldStateId, _state, _wg->GetMap());
// Warning message
if (!init)
@@ -1813,11 +1804,6 @@ void WintergraspWorkshop::UpdateGraveyardAndWorkshop()
GiveControlTo(_wg->GetDefenderTeam(), true);
}
void WintergraspWorkshop::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& data)
{
data.Worldstates.emplace_back(uint32(_staticInfo->WorldStateId), uint32(_state));
}
void WintergraspWorkshop::Save()
{
sWorld->setWorldState(_staticInfo->WorldStateId, _state);
+5 -11
View File
@@ -96,10 +96,6 @@ enum WintergraspData
BATTLEFIELD_WG_DATA_MAX_VEHICLE_H,
BATTLEFIELD_WG_DATA_VEHICLE_A,
BATTLEFIELD_WG_DATA_VEHICLE_H,
BATTLEFIELD_WG_DATA_WON_A,
BATTLEFIELD_WG_DATA_DEF_A,
BATTLEFIELD_WG_DATA_WON_H,
BATTLEFIELD_WG_DATA_DEF_H,
BATTLEFIELD_WG_DATA_MAX,
BATTLEFIELD_WG_MAPID = 571 // Northrend
@@ -245,7 +241,7 @@ class BattlefieldWG : public Battlefield
* - Teleport if it needed
* - Update worldstate
* - Update tenacity
* \param player: Player who accepted invite
* \param player : Player who accepted invite
*/
void OnPlayerJoinWar(Player* player) override;
@@ -338,8 +334,10 @@ class BattlefieldWG : public Battlefield
void UpdateVehicleCountWG();
void UpdateCounterVehicle(bool init);
void SendInitWorldStatesToAll() override;
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*data*/) override;
// 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;
@@ -547,8 +545,6 @@ public:
void UpdateTurretAttack(bool disable);
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& data);
void Save();
};
@@ -574,8 +570,6 @@ public:
void UpdateGraveyardAndWorkshop();
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*data*/);
void Save();
};