aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp166
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.cpp16
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.h17
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp74
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPHP.h2
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp159
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPNA.h2
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp53
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPSI.h4
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp117
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPTF.h22
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp115
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPZM.h5
13 files changed, 218 insertions, 534 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index f243ae0beda..35e777be790 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -9203,7 +9203,6 @@ void Player::SendUpdateWorldState(uint32 variable, uint32 value, bool hidden /*=
void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId)
{
uint32 mapId = GetMapId();
- OutdoorPvP* outdoorPvP = sOutdoorPvPMgr->GetOutdoorPvPToZoneId(zoneId);
TC_LOG_DEBUG("network", "Player::SendInitWorldStates: Sending SMSG_INIT_WORLD_STATES for Map: %u, Zone: %u", mapId, zoneId);
@@ -9232,171 +9231,6 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId)
previousArenaSeason = sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID) - 1;
packet.Worldstates.emplace_back(3901, previousArenaSeason);
- if (mapId == 530) // Outland
- {
- packet.Worldstates.emplace_back(2495, 0); // NA_UI_OUTLAND_01 "Progress: %2494w"
- packet.Worldstates.emplace_back(2493, 15); // NA_UI_GUARDS_MAX
- packet.Worldstates.emplace_back(2491, 15); // NA_UI_GUARDS_LEFT
- }
-
- switch (zoneId)
- {
- case 1: // Dun Morogh
- case 11: // Wetlands
- case 12: // Elwynn Forest
- case 38: // Loch Modan
- case 40: // Westfall
- case 51: // Searing Gorge
- case 1519: // Stormwind City
- case 1537: // Ironforge
- case 2257: // Deeprun Tram
- case 3703: // Shattrath City
- break;
- case 1377: // Silithus
- if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_SI)
- outdoorPvP->FillInitialWorldStates(packet);
- else
- {
- packet.Worldstates.emplace_back(2313, 0); // SI_GATHERED_A
- packet.Worldstates.emplace_back(2314, 0); // SI_GATHERED_H
- packet.Worldstates.emplace_back(2317, 0); // SI_SILITHYST_MAX
- }
- // unknown, aq opening?
- packet.Worldstates.emplace_back(2322, 0); // AQ_SANDWORM_N
- packet.Worldstates.emplace_back(2323, 0); // AQ_SANDWORM_S
- packet.Worldstates.emplace_back(2324, 0); // AQ_SANDWORM_SW
- packet.Worldstates.emplace_back(2325, 0); // AQ_SANDWORM_E
- break;
- case 3483: // Hellfire Peninsula
- if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_HP)
- outdoorPvP->FillInitialWorldStates(packet);
- else
- {
- packet.Worldstates.emplace_back(2490, 1); // add ally tower main gui icon
- packet.Worldstates.emplace_back(2489, 1); // add horde tower main gui icon
- packet.Worldstates.emplace_back(2485, 0); // show neutral broken hill icon
- packet.Worldstates.emplace_back(2484, 1); // show icon above broken hill
- packet.Worldstates.emplace_back(2483, 0); // show ally broken hill icon
- packet.Worldstates.emplace_back(2482, 0); // show neutral overlook icon
- packet.Worldstates.emplace_back(2481, 1); // show the overlook arrow
- packet.Worldstates.emplace_back(2480, 0); // show ally overlook icon
- packet.Worldstates.emplace_back(2478, 0); // horde pvp objectives captured
- packet.Worldstates.emplace_back(2476, 0); // ally pvp objectives captured
- packet.Worldstates.emplace_back(2475, 100); // horde slider grey area
- packet.Worldstates.emplace_back(2474, 50); // horde slider percentage, 100 for ally, 0 for horde
- packet.Worldstates.emplace_back(2473, 0); // horde slider display
- packet.Worldstates.emplace_back(2472, 0); // show the neutral stadium icon
- packet.Worldstates.emplace_back(2471, 0); // show the ally stadium icon
- packet.Worldstates.emplace_back(2470, 1); // show the horde stadium icon
- }
- break;
- case 3518: // Nagrand
- if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_NA)
- outdoorPvP->FillInitialWorldStates(packet);
- else
- {
- packet.Worldstates.emplace_back(2503, 0); // NA_UI_HORDE_GUARDS_SHOW
- packet.Worldstates.emplace_back(2502, 0); // NA_UI_ALLIANCE_GUARDS_SHOW
- packet.Worldstates.emplace_back(2493, 0); // NA_UI_GUARDS_MAX
- packet.Worldstates.emplace_back(2491, 0); // NA_UI_GUARDS_LEFT
- packet.Worldstates.emplace_back(2495, 0); // NA_UI_OUTLAND_01
- packet.Worldstates.emplace_back(2494, 0); // NA_UI_UNK_1
- packet.Worldstates.emplace_back(2497, 0); // NA_UI_UNK_2
- packet.Worldstates.emplace_back(2762, 0); // NA_MAP_WYVERN_NORTH_NEU_H
- packet.Worldstates.emplace_back(2662, 0); // NA_MAP_WYVERN_NORTH_NEU_A
- packet.Worldstates.emplace_back(2663, 0); // NA_MAP_WYVERN_NORTH_H
- packet.Worldstates.emplace_back(2664, 0); // NA_MAP_WYVERN_NORTH_A
- packet.Worldstates.emplace_back(2760, 0); // NA_MAP_WYVERN_SOUTH_NEU_H
- packet.Worldstates.emplace_back(2670, 0); // NA_MAP_WYVERN_SOUTH_NEU_A
- packet.Worldstates.emplace_back(2668, 0); // NA_MAP_WYVERN_SOUTH_H
- packet.Worldstates.emplace_back(2669, 0); // NA_MAP_WYVERN_SOUTH_A
- packet.Worldstates.emplace_back(2761, 0); // NA_MAP_WYVERN_WEST_NEU_H
- packet.Worldstates.emplace_back(2667, 0); // NA_MAP_WYVERN_WEST_NEU_A
- packet.Worldstates.emplace_back(2665, 0); // NA_MAP_WYVERN_WEST_H
- packet.Worldstates.emplace_back(2666, 0); // NA_MAP_WYVERN_WEST_A
- packet.Worldstates.emplace_back(2763, 0); // NA_MAP_WYVERN_EAST_NEU_H
- packet.Worldstates.emplace_back(2659, 0); // NA_MAP_WYVERN_EAST_NEU_A
- packet.Worldstates.emplace_back(2660, 0); // NA_MAP_WYVERN_EAST_H
- packet.Worldstates.emplace_back(2661, 0); // NA_MAP_WYVERN_EAST_A
- packet.Worldstates.emplace_back(2671, 0); // NA_MAP_HALAA_NEUTRAL
- packet.Worldstates.emplace_back(2676, 0); // NA_MAP_HALAA_NEU_A
- packet.Worldstates.emplace_back(2677, 0); // NA_MAP_HALAA_NEU_H
- packet.Worldstates.emplace_back(2672, 0); // NA_MAP_HALAA_HORDE
- packet.Worldstates.emplace_back(2673, 0); // NA_MAP_HALAA_ALLIANCE
- }
- break;
- case 3519: // Terokkar Forest
- if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_TF)
- outdoorPvP->FillInitialWorldStates(packet);
- else
- {
- packet.Worldstates.emplace_back(2625, 0); // TF_UI_CAPTURE_BAR_POS
- packet.Worldstates.emplace_back(2624, 20); // TF_UI_CAPTURE_BAR_NEUTRAL
- packet.Worldstates.emplace_back(2623, 0); // TF_UI_SHOW CAPTURE BAR
- packet.Worldstates.emplace_back(2622, 0); // TF_UI_TOWER_COUNT_H
- packet.Worldstates.emplace_back(2621, 5); // TF_UI_TOWER_COUNT_A
- packet.Worldstates.emplace_back(2620, 0); // TF_UI_TOWERS_CONTROLLED_DISPLAY
- packet.Worldstates.emplace_back(2696, 0); // TF_TOWER_NUM_15 - SE Neutral
- packet.Worldstates.emplace_back(2695, 0); // TF_TOWER_NUM_14 - SE Horde
- packet.Worldstates.emplace_back(2694, 0); // TF_TOWER_NUM_13 - SE Alliance
- packet.Worldstates.emplace_back(2693, 0); // TF_TOWER_NUM_12 - S Neutral
- packet.Worldstates.emplace_back(2692, 0); // TF_TOWER_NUM_11 - S Horde
- packet.Worldstates.emplace_back(2691, 0); // TF_TOWER_NUM_10 - S Alliance
- packet.Worldstates.emplace_back(2690, 0); // TF_TOWER_NUM_09 - NE Neutral
- packet.Worldstates.emplace_back(2689, 0); // TF_TOWER_NUM_08 - NE Horde
- packet.Worldstates.emplace_back(2688, 0); // TF_TOWER_NUM_07 - NE Alliance
- packet.Worldstates.emplace_back(2687, 0); // TF_TOWER_NUM_16 - unk
- packet.Worldstates.emplace_back(2686, 0); // TF_TOWER_NUM_06 - N Neutral
- packet.Worldstates.emplace_back(2685, 0); // TF_TOWER_NUM_05 - N Horde
- packet.Worldstates.emplace_back(2684, 0); // TF_TOWER_NUM_04 - N Alliance
- packet.Worldstates.emplace_back(2683, 0); // TF_TOWER_NUM_03 - NW Alliance
- packet.Worldstates.emplace_back(2682, 0); // TF_TOWER_NUM_02 - NW Horde
- packet.Worldstates.emplace_back(2681, 0); // TF_TOWER_NUM_01 - NW Neutral
- packet.Worldstates.emplace_back(2512, 5); // TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT
- packet.Worldstates.emplace_back(2510, 0); // TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT
- packet.Worldstates.emplace_back(2509, 0); // TF_UI_LOCKED_TIME_HOURS
- packet.Worldstates.emplace_back(2508, 0); // TF_UI_LOCKED_DISPLAY_NEUTRAL
- packet.Worldstates.emplace_back(2768, 0); // TF_UI_LOCKED_DISPLAY_HORDE
- packet.Worldstates.emplace_back(2767, 1); // TF_UI_LOCKED_DISPLAY_ALLIANCE
- }
- break;
- case 3521: // Zangarmarsh
- if (outdoorPvP && outdoorPvP->GetTypeId() == OUTDOOR_PVP_ZM)
- outdoorPvP->FillInitialWorldStates(packet);
- else
- {
- packet.Worldstates.emplace_back(2529, 0); // ZM_UNK_1
- packet.Worldstates.emplace_back(2528, 0); // ZM_UNK_2
- packet.Worldstates.emplace_back(2527, 0); // ZM_UNK_3
- packet.Worldstates.emplace_back(2653, 1); // ZM_WORLDSTATE_UNK_1
- packet.Worldstates.emplace_back(2652, 0); // ZM_MAP_TOWER_EAST_N
- packet.Worldstates.emplace_back(2651, 1); // ZM_MAP_TOWER_EAST_H
- packet.Worldstates.emplace_back(2650, 0); // ZM_MAP_TOWER_EAST_A
- packet.Worldstates.emplace_back(2649, 1); // ZM_MAP_GRAVEYARD_H - Twin spire graveyard horde
- packet.Worldstates.emplace_back(2648, 0); // ZM_MAP_GRAVEYARD_A
- packet.Worldstates.emplace_back(2647, 0); // ZM_MAP_GRAVEYARD_N
- packet.Worldstates.emplace_back(2646, 0); // ZM_MAP_TOWER_WEST_N
- packet.Worldstates.emplace_back(2645, 1); // ZM_MAP_TOWER_WEST_H
- packet.Worldstates.emplace_back(2644, 0); // ZM_MAP_TOWER_WEST_A
- packet.Worldstates.emplace_back(2535, 0); // ZM_UNK_4
- packet.Worldstates.emplace_back(2534, 0); // ZM_UNK_5
- packet.Worldstates.emplace_back(2533, 0); // ZM_UNK_6
- packet.Worldstates.emplace_back(2560, 0); // ZM_UI_TOWER_EAST_N
- packet.Worldstates.emplace_back(2559, 1); // ZM_UI_TOWER_EAST_H
- packet.Worldstates.emplace_back(2558, 0); // ZM_UI_TOWER_EAST_A
- packet.Worldstates.emplace_back(2557, 0); // ZM_UI_TOWER_WEST_N
- packet.Worldstates.emplace_back(2556, 1); // ZM_UI_TOWER_WEST_H
- packet.Worldstates.emplace_back(2555, 0); // ZM_UI_TOWER_WEST_A
- packet.Worldstates.emplace_back(2658, 0); // ZM_MAP_HORDE_FLAG_READY
- packet.Worldstates.emplace_back(2657, 1); // ZM_MAP_HORDE_FLAG_NOT_READY
- packet.Worldstates.emplace_back(2656, 1); // ZM_MAP_ALLIANCE_FLAG_NOT_READY
- packet.Worldstates.emplace_back(2655, 0); // ZM_MAP_ALLIANCE_FLAG_READY
- }
- break;
- default:
- break;
- }
-
SendDirectMessage(packet.Write());
SendBGWeekendWorldStates();
}
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
index fa35c013b72..9e3d02b2d8c 100644
--- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp
+++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
@@ -30,6 +30,7 @@
#include "OutdoorPvPMgr.h"
#include "WorldPacket.h"
#include "WorldSession.h"
+#include "WorldStateMgr.h"
class DefenseMessageBuilder
{
@@ -217,7 +218,7 @@ void OutdoorPvP::DeleteSpawns()
m_capturePoints.clear();
}
-OutdoorPvP::OutdoorPvP() : m_TypeId(0), m_sendUpdate(true), m_map(nullptr) { }
+OutdoorPvP::OutdoorPvP() : m_TypeId(0), m_map(nullptr) { }
OutdoorPvP::~OutdoorPvP()
{
@@ -376,13 +377,14 @@ bool OPvPCapturePoint::Update(uint32 diff)
return false;
}
-void OutdoorPvP::SendUpdateWorldState(uint32 field, uint32 value)
+int32 OutdoorPvP::GetWorldState(int32 worldStateId) const
{
- if (m_sendUpdate)
- for (int i = 0; i < 2; ++i)
- for (GuidSet::iterator itr = m_players[i].begin(); itr != m_players[i].end(); ++itr)
- if (Player* const player = ObjectAccessor::FindPlayer(*itr))
- player->SendUpdateWorldState(field, value);
+ return sWorldStateMgr->GetValue(worldStateId, m_map);
+}
+
+void OutdoorPvP::SetWorldState(int32 worldStateId, int32 value)
+{
+ sWorldStateMgr->SetValue(worldStateId, value, false, m_map);
}
void OPvPCapturePoint::SendUpdateWorldState(uint32 field, uint32 value)
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.h b/src/server/game/OutdoorPvP/OutdoorPvP.h
index 507165d4482..e271cdd595f 100644
--- a/src/server/game/OutdoorPvP/OutdoorPvP.h
+++ b/src/server/game/OutdoorPvP/OutdoorPvP.h
@@ -74,14 +74,6 @@ class Unit;
class WorldPacket;
struct GossipMenuItems;
-namespace WorldPackets
-{
- namespace WorldState
- {
- class InitWorldStates;
- }
-}
-
class TC_GAME_API OPvPCapturePoint
{
public:
@@ -95,8 +87,6 @@ class TC_GAME_API OPvPCapturePoint
OPvPCapturePoint& operator=(OPvPCapturePoint const& right) = delete;
OPvPCapturePoint& operator=(OPvPCapturePoint&& right) = delete;
- virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) { }
-
// send world state update to all players present
void SendUpdateWorldState(uint32 field, uint32 value);
@@ -203,8 +193,6 @@ class TC_GAME_API OutdoorPvP : public ZoneScript
typedef std::map<ObjectGuid::LowType/*spawnId*/, OPvPCapturePoint*> OPvPCapturePointMap;
- virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) { }
-
// called when a player triggers an areatrigger
virtual bool HandleAreaTrigger(Player* /*player*/, uint32 /*trigger*/, bool /*entered*/) { return false; }
@@ -222,7 +210,8 @@ class TC_GAME_API OutdoorPvP : public ZoneScript
void OnCreatureCreate(Creature*) override { }
// send world state update to all players present
- void SendUpdateWorldState(uint32 field, uint32 value);
+ int32 GetWorldState(int32 worldStateId) const;
+ void SetWorldState(int32 worldStateId, int32 value);
// called by OutdoorPvPMgr, updates the objectives and if needed, sends new worldstateui information
virtual bool Update(uint32 diff);
@@ -273,8 +262,6 @@ class TC_GAME_API OutdoorPvP : public ZoneScript
uint32 m_TypeId;
- bool m_sendUpdate;
-
// world state stuff
virtual void SendRemoveWorldStates(Player* /*player*/) { }
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
index 91ffbaca3ec..d6cebc606dd 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp
@@ -27,9 +27,9 @@ uint32 const OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum] = { 3483, 3563, 356
uint32 const HP_CREDITMARKER[HP_TOWER_NUM] = { 19032, 19028, 19029 };
//uint32 const HP_CapturePointEvent_Enter[HP_TOWER_NUM] = { 11404, 11396, 11388 };
//uint32 const HP_CapturePointEvent_Leave[HP_TOWER_NUM] = { 11403, 11395, 11387 };
-uint32 const HP_MAP_N[HP_TOWER_NUM] = { 0x9b5, 0x9b2, 0x9a8 };
-uint32 const HP_MAP_A[HP_TOWER_NUM] = { 0x9b3, 0x9b0, 0x9a7 };
-uint32 const HP_MAP_H[HP_TOWER_NUM] = { 0x9b4, 0x9b1, 0x9a6 };
+uint32 const HP_MAP_N[HP_TOWER_NUM] = { 2485, 2482, 2472 };
+uint32 const HP_MAP_A[HP_TOWER_NUM] = { 2483, 2480, 2471 };
+uint32 const HP_MAP_H[HP_TOWER_NUM] = { 2484, 2481, 2470 };
uint32 const HP_TowerArtKit_A[HP_TOWER_NUM] = { 65, 62, 67 };
uint32 const HP_TowerArtKit_H[HP_TOWER_NUM] = { 64, 61, 68 };
uint32 const HP_TowerArtKit_N[HP_TOWER_NUM] = { 66, 63, 69 };
@@ -126,36 +126,31 @@ bool OutdoorPvPHP::Update(uint32 diff)
TeamCastSpell(TEAM_ALLIANCE, -AllianceBuff);
TeamCastSpell(TEAM_HORDE, -HordeBuff);
}
- SendUpdateWorldState(HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
- SendUpdateWorldState(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
+ SetWorldState(HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
+ SetWorldState(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
}
return changed;
}
void OutdoorPvPHP::SendRemoveWorldStates(Player* player)
{
- player->SendUpdateWorldState(HP_UI_TOWER_DISPLAY_A, 0);
- player->SendUpdateWorldState(HP_UI_TOWER_DISPLAY_H, 0);
- player->SendUpdateWorldState(HP_UI_TOWER_COUNT_H, 0);
- player->SendUpdateWorldState(HP_UI_TOWER_COUNT_A, 0);
-
- for (int i = 0; i < HP_TOWER_NUM; ++i)
+ WorldPackets::WorldState::InitWorldStates initWorldStates;
+ initWorldStates.MapID = player->GetMapId();
+ initWorldStates.AreaID = player->GetZoneId();
+ initWorldStates.SubareaID = player->GetAreaId();
+ initWorldStates.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_A, 0);
+ initWorldStates.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_H, 0);
+ initWorldStates.Worldstates.emplace_back(HP_UI_TOWER_COUNT_H, 0);
+ initWorldStates.Worldstates.emplace_back(HP_UI_TOWER_COUNT_A, 0);
+
+ for (size_t i = 0; i < HP_TOWER_NUM; ++i)
{
- player->SendUpdateWorldState(HP_MAP_N[i], 0);
- player->SendUpdateWorldState(HP_MAP_A[i], 0);
- player->SendUpdateWorldState(HP_MAP_H[i], 0);
+ initWorldStates.Worldstates.emplace_back(HP_MAP_N[i], 0);
+ initWorldStates.Worldstates.emplace_back(HP_MAP_A[i], 0);
+ initWorldStates.Worldstates.emplace_back(HP_MAP_H[i], 0);
}
-}
-void OutdoorPvPHP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- packet.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_A, 1);
- packet.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_H, 1);
- packet.Worldstates.emplace_back(HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
- packet.Worldstates.emplace_back(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
-
- for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr)
- itr->second->FillInitialWorldStates(packet);
+ player->SendDirectMessage(initWorldStates.Write());
}
void OPvPCapturePointHP::ChangeState()
@@ -193,7 +188,7 @@ void OPvPCapturePointHP::ChangeState()
// send world state update
if (field)
{
- m_PvP->SendUpdateWorldState(field, 0);
+ m_PvP->SetWorldState(field, 0);
field = 0;
}
uint32 artkit = 21;
@@ -254,40 +249,13 @@ void OPvPCapturePointHP::ChangeState()
// send world state update
if (field)
- m_PvP->SendUpdateWorldState(field, 1);
+ m_PvP->SetWorldState(field, 1);
// complete quest objective
if (m_State == OBJECTIVESTATE_ALLIANCE || m_State == OBJECTIVESTATE_HORDE)
SendObjectiveComplete(HP_CREDITMARKER[m_TowerType], ObjectGuid::Empty);
}
-void OPvPCapturePointHP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- switch (m_State)
- {
- case OBJECTIVESTATE_ALLIANCE:
- case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
- packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 0);
- packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 1);
- packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 0);
- break;
- case OBJECTIVESTATE_HORDE:
- case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
- packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 0);
- packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 0);
- packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 1);
- break;
- case OBJECTIVESTATE_NEUTRAL:
- case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
- case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
- default:
- packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 1);
- packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 0);
- packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 0);
- break;
- }
-}
-
void OutdoorPvPHP::HandleKillImpl(Player* player, Unit* killed)
{
if (killed->GetTypeId() != TYPEID_PLAYER)
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h
index a6d3b4e5c93..6ce163c9ebc 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h
@@ -61,7 +61,6 @@ class OPvPCapturePointHP : public OPvPCapturePoint
OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type);
void ChangeState() override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
private:
OutdoorPvPHPTowerType m_TowerType;
@@ -78,7 +77,6 @@ class OutdoorPvPHP : public OutdoorPvP
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
bool Update(uint32 diff) override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
void SendRemoveWorldStates(Player* player) override;
void HandleKillImpl(Player* player, Unit* killed) override;
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp
index 9071bd0f238..a0602de0fb0 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp
@@ -252,9 +252,9 @@ void OPvPCapturePointNA::FactionTakeOver(uint32 team)
m_WyvernStateEast = WYVERN_NEU_HORDE;
m_WyvernStateWest = WYVERN_NEU_HORDE;
m_PvP->TeamApplyBuff(TEAM_ALLIANCE, NA_CAPTURE_BUFF);
- m_PvP->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 0);
- m_PvP->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 1);
- m_PvP->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
+ m_PvP->SetWorldState(NA_UI_HORDE_GUARDS_SHOW, 0);
+ m_PvP->SetWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 1);
+ m_PvP->SetWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
m_PvP->SendDefenseMessage(NA_HALAA_GRAVEYARD_ZONE, TEXT_HALAA_TAKEN_ALLIANCE);
}
else
@@ -264,9 +264,9 @@ void OPvPCapturePointNA::FactionTakeOver(uint32 team)
m_WyvernStateEast = WYVERN_NEU_ALLIANCE;
m_WyvernStateWest = WYVERN_NEU_ALLIANCE;
m_PvP->TeamApplyBuff(TEAM_HORDE, NA_CAPTURE_BUFF);
- m_PvP->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 1);
- m_PvP->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
- m_PvP->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
+ m_PvP->SetWorldState(NA_UI_HORDE_GUARDS_SHOW, 1);
+ m_PvP->SetWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
+ m_PvP->SetWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
m_PvP->SendDefenseMessage(NA_HALAA_GRAVEYARD_ZONE, TEXT_HALAA_TAKEN_HORDE);
}
UpdateWyvernRoostWorldState(NA_ROOST_S);
@@ -310,81 +310,38 @@ void OutdoorPvPNA::HandlePlayerLeaveZone(Player* player, uint32 zone)
OutdoorPvP::HandlePlayerLeaveZone(player, zone);
}
-void OutdoorPvPNA::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- m_obj->FillInitialWorldStates(packet);
-}
-
-void OPvPCapturePointNA::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- if (m_ControllingFaction == ALLIANCE)
- {
- packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 0);
- packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 1);
- }
- else if (m_ControllingFaction == HORDE)
- {
- packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 1);
- packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
- }
- else
- {
- packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 0);
- packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
- }
-
- packet.Worldstates.emplace_back(NA_UI_GUARDS_MAX, NA_GUARDS_MAX);
- packet.Worldstates.emplace_back(NA_UI_GUARDS_LEFT, m_GuardsAlive);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_H, (m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_A, (m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_H, (m_WyvernStateNorth & WYVERN_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_A, (m_WyvernStateNorth & WYVERN_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_H, (m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_A, (m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_H, (m_WyvernStateSouth & WYVERN_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_A, (m_WyvernStateSouth & WYVERN_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_H, (m_WyvernStateWest & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_A, (m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_H, (m_WyvernStateWest & WYVERN_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_A, (m_WyvernStateWest & WYVERN_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_H, (m_WyvernStateEast & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_A, (m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_H, (m_WyvernStateEast & WYVERN_HORDE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_A, (m_WyvernStateEast & WYVERN_ALLIANCE) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_HALAA_NEUTRAL, (m_HalaaState & HALAA_N) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_HALAA_NEU_A, (m_HalaaState & HALAA_N_A) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_HALAA_NEU_H, (m_HalaaState & HALAA_N_H) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_HALAA_HORDE, (m_HalaaState & HALAA_H) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(NA_MAP_HALAA_ALLIANCE, (m_HalaaState & HALAA_A) != 0 ? 1 : 0);
-}
-
void OutdoorPvPNA::SendRemoveWorldStates(Player* player)
{
- player->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 0);
- player->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
- player->SendUpdateWorldState(NA_UI_GUARDS_MAX, 0);
- player->SendUpdateWorldState(NA_UI_GUARDS_LEFT, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_A, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_A, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_A, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_A, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_A, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_A, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_A, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_H, 0);
- player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_A, 0);
- player->SendUpdateWorldState(NA_MAP_HALAA_NEUTRAL, 0);
- player->SendUpdateWorldState(NA_MAP_HALAA_NEU_A, 0);
- player->SendUpdateWorldState(NA_MAP_HALAA_NEU_H, 0);
- player->SendUpdateWorldState(NA_MAP_HALAA_HORDE, 0);
- player->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE, 0);
+ WorldPackets::WorldState::InitWorldStates initWorldStates;
+ initWorldStates.MapID = player->GetMapId();
+ initWorldStates.AreaID = player->GetZoneId();
+ initWorldStates.SubareaID = player->GetAreaId();
+ initWorldStates.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 0);
+ initWorldStates.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
+ initWorldStates.Worldstates.emplace_back(NA_UI_GUARDS_MAX, 0);
+ initWorldStates.Worldstates.emplace_back(NA_UI_GUARDS_LEFT, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_HALAA_NEUTRAL, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_HALAA_NEU_A, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_HALAA_NEU_H, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_HALAA_HORDE, 0);
+ initWorldStates.Worldstates.emplace_back(NA_MAP_HALAA_ALLIANCE, 0);
+ player->SendDirectMessage(initWorldStates.Write());
}
bool OutdoorPvPNA::Update(uint32 diff)
@@ -608,7 +565,7 @@ bool OPvPCapturePointNA::Update(uint32 diff)
if (m_GuardsAlive == 0)
m_capturable = true;
// update the guard count for the players in zone
- m_PvP->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
+ m_PvP->SetWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
}
} else m_GuardCheckTimer -= diff;
@@ -671,11 +628,11 @@ void OPvPCapturePointNA::ChangeState()
void OPvPCapturePointNA::UpdateHalaaWorldState()
{
- m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEUTRAL, uint32((m_HalaaState & HALAA_N) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEU_A, uint32((m_HalaaState & HALAA_N_A) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_HALAA_NEU_H, uint32((m_HalaaState & HALAA_N_H) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_HALAA_HORDE, uint32((m_HalaaState & HALAA_H) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE, uint32((m_HalaaState & HALAA_A) != 0));
+ m_PvP->SetWorldState(NA_MAP_HALAA_NEUTRAL, uint32((m_HalaaState & HALAA_N) != 0));
+ m_PvP->SetWorldState(NA_MAP_HALAA_NEU_A, uint32((m_HalaaState & HALAA_N_A) != 0));
+ m_PvP->SetWorldState(NA_MAP_HALAA_NEU_H, uint32((m_HalaaState & HALAA_N_H) != 0));
+ m_PvP->SetWorldState(NA_MAP_HALAA_HORDE, uint32((m_HalaaState & HALAA_H) != 0));
+ m_PvP->SetWorldState(NA_MAP_HALAA_ALLIANCE, uint32((m_HalaaState & HALAA_A) != 0));
}
void OPvPCapturePointNA::UpdateWyvernRoostWorldState(uint32 roost)
@@ -683,28 +640,28 @@ void OPvPCapturePointNA::UpdateWyvernRoostWorldState(uint32 roost)
switch (roost)
{
case NA_ROOST_S:
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_H, uint32((m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_A, uint32((m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_H, uint32((m_WyvernStateSouth & WYVERN_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_A, uint32((m_WyvernStateSouth & WYVERN_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_SOUTH_NEU_H, uint32((m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_SOUTH_NEU_A, uint32((m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_SOUTH_H, uint32((m_WyvernStateSouth & WYVERN_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_SOUTH_A, uint32((m_WyvernStateSouth & WYVERN_ALLIANCE) != 0));
break;
case NA_ROOST_N:
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_H, uint32((m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_A, uint32((m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_H, uint32((m_WyvernStateNorth & WYVERN_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_A, uint32((m_WyvernStateNorth & WYVERN_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_NORTH_NEU_H, uint32((m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_NORTH_NEU_A, uint32((m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_NORTH_H, uint32((m_WyvernStateNorth & WYVERN_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_NORTH_A, uint32((m_WyvernStateNorth & WYVERN_ALLIANCE) != 0));
break;
case NA_ROOST_W:
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_H, uint32((m_WyvernStateWest & WYVERN_NEU_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_A, uint32((m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_H, uint32((m_WyvernStateWest & WYVERN_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_WEST_A, uint32((m_WyvernStateWest & WYVERN_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_WEST_NEU_H, uint32((m_WyvernStateWest & WYVERN_NEU_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_WEST_NEU_A, uint32((m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_WEST_H, uint32((m_WyvernStateWest & WYVERN_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_WEST_A, uint32((m_WyvernStateWest & WYVERN_ALLIANCE) != 0));
break;
case NA_ROOST_E:
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_H, uint32((m_WyvernStateEast & WYVERN_NEU_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_A, uint32((m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_H, uint32((m_WyvernStateEast & WYVERN_HORDE) != 0));
- m_PvP->SendUpdateWorldState(NA_MAP_WYVERN_EAST_A, uint32((m_WyvernStateEast & WYVERN_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_EAST_NEU_H, uint32((m_WyvernStateEast & WYVERN_NEU_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_EAST_NEU_A, uint32((m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_EAST_H, uint32((m_WyvernStateEast & WYVERN_HORDE) != 0));
+ m_PvP->SetWorldState(NA_MAP_WYVERN_EAST_A, uint32((m_WyvernStateEast & WYVERN_ALLIANCE) != 0));
break;
}
}
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
index 593d5c9d730..56eb18ce696 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h
@@ -156,7 +156,6 @@ class OPvPCapturePointNA : public OPvPCapturePoint
bool Update(uint32 diff) override;
void ChangeState() override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go) override;
int32 HandleOpenGo(Player* player, GameObject* go) override;
@@ -192,7 +191,6 @@ class OutdoorPvPNA : public OutdoorPvP
void HandlePlayerEnterZone(Player* player, uint32 zone) override;
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
bool Update(uint32 diff) override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
void SendRemoveWorldStates(Player* player) override;
void HandleKillImpl(Player* player, Unit* killed) override;
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
index 304088585cb..a4c3a15c64e 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
@@ -28,7 +28,7 @@
#include "World.h"
#include "WorldStatePackets.h"
-uint32 const SI_MAX_RESOURCES = 200;
+constexpr int32 SI_MAX_RESOURCES = 200;
uint32 const SI_AREATRIGGER_H = 4168;
uint32 const SI_AREATRIGGER_A = 4162;
uint32 const SI_TURNIN_QUEST_CM_A = 17090;
@@ -40,30 +40,19 @@ uint32 const OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum] = { 1377, 3428, 342
OutdoorPvPSI::OutdoorPvPSI()
{
m_TypeId = OUTDOOR_PVP_SI;
- m_Gathered_A = 0;
- m_Gathered_H = 0;
m_LastController = 0;
}
-void OutdoorPvPSI::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- packet.Worldstates.emplace_back(SI_GATHERED_A, m_Gathered_A);
- packet.Worldstates.emplace_back(SI_GATHERED_H, m_Gathered_H);
- packet.Worldstates.emplace_back(SI_SILITHYST_MAX, SI_MAX_RESOURCES);
-}
-
void OutdoorPvPSI::SendRemoveWorldStates(Player* player)
{
- player->SendUpdateWorldState(SI_GATHERED_A, 0);
- player->SendUpdateWorldState(SI_GATHERED_H, 0);
- player->SendUpdateWorldState(SI_SILITHYST_MAX, 0);
-}
-
-void OutdoorPvPSI::UpdateWorldState()
-{
- SendUpdateWorldState(SI_GATHERED_A, m_Gathered_A);
- SendUpdateWorldState(SI_GATHERED_H, m_Gathered_H);
- SendUpdateWorldState(SI_SILITHYST_MAX, SI_MAX_RESOURCES);
+ WorldPackets::WorldState::InitWorldStates initWorldStates;
+ initWorldStates.MapID = player->GetMapId();
+ initWorldStates.AreaID = player->GetZoneId();
+ initWorldStates.SubareaID = player->GetAreaId();
+ initWorldStates.Worldstates.emplace_back(SI_GATHERED_A, 0);
+ initWorldStates.Worldstates.emplace_back(SI_GATHERED_H, 0);
+ initWorldStates.Worldstates.emplace_back(SI_SILITHYST_MAX, 0);
+ player->SendDirectMessage(initWorldStates.Write());
}
bool OutdoorPvPSI::SetupOutdoorPvP()
@@ -72,6 +61,10 @@ bool OutdoorPvPSI::SetupOutdoorPvP()
for (uint8 i = 0; i < OutdoorPvPSIBuffZonesNum; ++i)
RegisterZone(OutdoorPvPSIBuffZones[i]);
+
+ SetWorldState(SI_GATHERED_A, 0);
+ SetWorldState(SI_GATHERED_H, 0);
+ SetWorldState(SI_SILITHYST_MAX, SI_MAX_RESOURCES);
return true;
}
@@ -103,17 +96,17 @@ bool OutdoorPvPSI::HandleAreaTrigger(Player* player, uint32 trigger, bool /*ente
{
// remove aura
player->RemoveAurasDueToSpell(SI_SILITHYST_FLAG);
- ++ m_Gathered_A;
- if (m_Gathered_A >= SI_MAX_RESOURCES)
+ int32 newScore = GetWorldState(SI_GATHERED_A) + 1;
+ if (newScore >= SI_MAX_RESOURCES)
{
TeamApplyBuff(TEAM_ALLIANCE, SI_CENARION_FAVOR);
/// @todo: confirm this text
sWorld->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetTrinityStringForDBCLocale(LANG_OPVP_SI_CAPTURE_A));
m_LastController = ALLIANCE;
- m_Gathered_A = 0;
- m_Gathered_H = 0;
+ newScore = 0;
+ SetWorldState(SI_GATHERED_H, 0);
}
- UpdateWorldState();
+ SetWorldState(SI_GATHERED_A, newScore);
// reward player
player->CastSpell(player, SI_TRACES_OF_SILITHYST, true);
// add 19 honor
@@ -129,17 +122,17 @@ bool OutdoorPvPSI::HandleAreaTrigger(Player* player, uint32 trigger, bool /*ente
{
// remove aura
player->RemoveAurasDueToSpell(SI_SILITHYST_FLAG);
- ++ m_Gathered_H;
- if (m_Gathered_H >= SI_MAX_RESOURCES)
+ int32 newScore = GetWorldState(SI_GATHERED_H) + 1;
+ if (newScore >= SI_MAX_RESOURCES)
{
TeamApplyBuff(TEAM_HORDE, SI_CENARION_FAVOR);
/// @todo: confirm this text
sWorld->SendZoneText(OutdoorPvPSIBuffZones[0], sObjectMgr->GetTrinityStringForDBCLocale(LANG_OPVP_SI_CAPTURE_H));
m_LastController = HORDE;
- m_Gathered_A = 0;
- m_Gathered_H = 0;
+ SetWorldState(SI_GATHERED_A, 0);
+ newScore = 0;
}
- UpdateWorldState();
+ SetWorldState(SI_GATHERED_H, newScore);
// reward player
player->CastSpell(player, SI_TRACES_OF_SILITHYST, true);
// add 19 honor
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h
index 3f21b407086..61ef6435743 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h
@@ -44,16 +44,12 @@ class OutdoorPvPSI : public OutdoorPvP
void HandlePlayerEnterZone(Player* player, uint32 zone) override;
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
bool Update(uint32 diff) override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
void SendRemoveWorldStates(Player* player) override;
bool HandleAreaTrigger(Player* player, uint32 trigger, bool entered) override;
bool HandleDropFlag(Player* player, uint32 spellId) override;
bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go) override;
- void UpdateWorldState();
private:
- uint32 m_Gathered_A;
- uint32 m_Gathered_H;
uint32 m_LastController;
};
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
index b99aa96816f..48951be2d9c 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp
@@ -56,18 +56,18 @@ go_type const TFCapturePoints[TF_TOWER_NUM] =
struct tf_tower_world_state
{
- uint32 n;
- uint32 h;
- uint32 a;
+ int32 n;
+ int32 h;
+ int32 a;
};
tf_tower_world_state const TFTowerWorldStates[TF_TOWER_NUM] =
{
- { 0xa79, 0xa7a, 0xa7b },
- { 0xa7e, 0xa7d, 0xa7c },
- { 0xa82, 0xa81, 0xa80 },
- { 0xa88, 0xa87, 0xa86 },
- { 0xa85, 0xa84, 0xa83 }
+ { 2681, 2682, 2683 },
+ { 2686, 2685, 2684 },
+ { 2690, 2689, 2688 },
+ { 2696, 2695, 2694 },
+ { 2693, 2692, 2691 }
};
/*
@@ -108,56 +108,39 @@ OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType t
SetCapturePointData(TFCapturePoints[type].entry, TFCapturePoints[type].map, TFCapturePoints[type].pos, TFCapturePoints[type].rot);
}
-void OPvPCapturePointTF::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].n, (m_TowerState & TF_TOWERSTATE_N) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].h, (m_TowerState & TF_TOWERSTATE_H) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].a, (m_TowerState & TF_TOWERSTATE_A) != 0 ? 1 : 0);
-}
-
-void OutdoorPvPTF::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- packet.Worldstates.emplace_back(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
- packet.Worldstates.emplace_back(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
- packet.Worldstates.emplace_back(TF_UI_TOWERS_CONTROLLED_DISPLAY, !m_IsLocked);
- packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
- packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
- packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_HOURS, hours_left);
- packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_NEUTRAL, (m_IsLocked && !m_HordeTowersControlled && !m_AllianceTowersControlled) ? 1 : 0);
- packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_HORDE, (m_IsLocked && (m_HordeTowersControlled > m_AllianceTowersControlled)) ? 1 : 0);
- packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_ALLIANCE, (m_IsLocked && (m_HordeTowersControlled < m_AllianceTowersControlled)) ? 1 : 0);
-
- for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr)
- itr->second->FillInitialWorldStates(packet);
-}
-
void OutdoorPvPTF::SendRemoveWorldStates(Player* player)
{
- player->SendUpdateWorldState(TF_UI_TOWER_COUNT_H, uint32(0));
- player->SendUpdateWorldState(TF_UI_TOWER_COUNT_A, uint32(0));
- player->SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
-
- player->SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, uint32(0));
- player->SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, uint32(0));
- player->SendUpdateWorldState(TF_UI_LOCKED_TIME_HOURS, uint32(0));
-
- player->SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
- player->SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
- player->SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
-
- for (int i = 0; i < TF_TOWER_NUM; ++i)
+ WorldPackets::WorldState::InitWorldStates initWorldStates;
+ initWorldStates.MapID = player->GetMapId();
+ initWorldStates.AreaID = player->GetZoneId();
+ initWorldStates.SubareaID = player->GetAreaId();
+ initWorldStates.Worldstates.emplace_back(TF_UI_TOWER_COUNT_H, 0);
+ initWorldStates.Worldstates.emplace_back(TF_UI_TOWER_COUNT_A, 0);
+ initWorldStates.Worldstates.emplace_back(TF_UI_TOWERS_CONTROLLED_DISPLAY, 0);
+
+ initWorldStates.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, 0);
+ initWorldStates.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, 0);
+ initWorldStates.Worldstates.emplace_back(TF_UI_LOCKED_TIME_HOURS, 0);
+
+ initWorldStates.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_NEUTRAL, 0);
+ initWorldStates.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_HORDE, 0);
+ initWorldStates.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_ALLIANCE, 0);
+
+ for (tf_tower_world_state const& towerWorldStates : TFTowerWorldStates)
{
- player->SendUpdateWorldState(uint32(TFTowerWorldStates[i].n), uint32(0));
- player->SendUpdateWorldState(uint32(TFTowerWorldStates[i].h), uint32(0));
- player->SendUpdateWorldState(uint32(TFTowerWorldStates[i].a), uint32(0));
+ initWorldStates.Worldstates.emplace_back(towerWorldStates.n, 0);
+ initWorldStates.Worldstates.emplace_back(towerWorldStates.h, 0);
+ initWorldStates.Worldstates.emplace_back(towerWorldStates.a, 0);
}
+
+ player->SendDirectMessage(initWorldStates.Write());
}
void OPvPCapturePointTF::UpdateTowerState()
{
- m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].n), uint32((m_TowerState & TF_TOWERSTATE_N) != 0));
- m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].h), uint32((m_TowerState & TF_TOWERSTATE_H) != 0));
- m_PvP->SendUpdateWorldState(uint32(TFTowerWorldStates[m_TowerType].a), uint32((m_TowerState & TF_TOWERSTATE_A) != 0));
+ m_PvP->SetWorldState(TFTowerWorldStates[m_TowerType].n, int32((m_TowerState & TF_TOWERSTATE_N) != 0));
+ m_PvP->SetWorldState(TFTowerWorldStates[m_TowerType].h, int32((m_TowerState & TF_TOWERSTATE_H) != 0));
+ m_PvP->SetWorldState(TFTowerWorldStates[m_TowerType].a, int32((m_TowerState & TF_TOWERSTATE_A) != 0));
}
bool OutdoorPvPTF::Update(uint32 diff)
@@ -170,27 +153,27 @@ bool OutdoorPvPTF::Update(uint32 diff)
{
TeamApplyBuff(TEAM_ALLIANCE, TF_CAPTURE_BUFF);
m_IsLocked = true;
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(1));
- SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
+ SetWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, 0);
+ SetWorldState(TF_UI_LOCKED_DISPLAY_HORDE, 0);
+ SetWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, 1);
+ SetWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, 0);
}
else if (m_HordeTowersControlled == TF_TOWER_NUM)
{
TeamApplyBuff(TEAM_HORDE, TF_CAPTURE_BUFF);
m_IsLocked = true;
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(1));
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
- SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
+ SetWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, 0);
+ SetWorldState(TF_UI_LOCKED_DISPLAY_HORDE, 1);
+ SetWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, 0);
+ SetWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, 0);
}
else
{
TeamCastSpell(TEAM_ALLIANCE, -TF_CAPTURE_BUFF);
TeamCastSpell(TEAM_HORDE, -TF_CAPTURE_BUFF);
}
- SendUpdateWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
- SendUpdateWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
+ SetWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
+ SetWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
}
if (m_IsLocked)
{
@@ -200,10 +183,10 @@ bool OutdoorPvPTF::Update(uint32 diff)
m_LockTimer = TF_LOCK_TIME;
m_LockTimerUpdate = 0;
m_IsLocked = false;
- SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(1));
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
- SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
+ SetWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, 1);
+ SetWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, 0);
+ SetWorldState(TF_UI_LOCKED_DISPLAY_HORDE, 0);
+ SetWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, 0);
}
else
{
@@ -217,9 +200,9 @@ bool OutdoorPvPTF::Update(uint32 diff)
second_digit = minutes_left % 10;
first_digit = minutes_left / 10;
- SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
- SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
- SendUpdateWorldState(TF_UI_LOCKED_TIME_HOURS, hours_left);
+ SetWorldState(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
+ SetWorldState(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
+ SetWorldState(TF_UI_LOCKED_TIME_HOURS, hours_left);
} else m_LockTimerUpdate -= diff;
m_LockTimer -= diff;
}
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h
index d7c384627d1..2aeb1c093e0 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h
@@ -42,16 +42,16 @@ enum OutdoorPvPTF_TowerType
enum TFWorldStates
{
- TF_UI_TOWER_COUNT_H = 0xa3e,
- TF_UI_TOWER_COUNT_A = 0xa3d,
- TF_UI_TOWERS_CONTROLLED_DISPLAY = 0xa3c,
-
- TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT = 0x9d0,
- TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT = 0x9ce,
- TF_UI_LOCKED_TIME_HOURS = 0x9cd,
- TF_UI_LOCKED_DISPLAY_NEUTRAL = 0x9cc,
- TF_UI_LOCKED_DISPLAY_HORDE = 0xad0,
- TF_UI_LOCKED_DISPLAY_ALLIANCE = 0xacf
+ TF_UI_TOWER_COUNT_H = 2622,
+ TF_UI_TOWER_COUNT_A = 2621,
+ TF_UI_TOWERS_CONTROLLED_DISPLAY = 2620,
+
+ TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT = 2512,
+ TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT = 2510,
+ TF_UI_LOCKED_TIME_HOURS = 2509,
+ TF_UI_LOCKED_DISPLAY_NEUTRAL = 2508,
+ TF_UI_LOCKED_DISPLAY_HORDE = 2768,
+ TF_UI_LOCKED_DISPLAY_ALLIANCE = 2767
};
enum TFTowerStates
@@ -68,7 +68,6 @@ class OPvPCapturePointTF : public OPvPCapturePoint
bool Update(uint32 diff) override;
void ChangeState() override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
void UpdateTowerState();
@@ -86,7 +85,6 @@ class OutdoorPvPTF : public OutdoorPvP
void HandlePlayerEnterZone(Player* player, uint32 zone) override;
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
bool Update(uint32 diff) override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
void SendRemoveWorldStates(Player* player) override;
uint32 GetAllianceTowersControlled() const;
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp
index 959371da929..586236cf854 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp
@@ -49,20 +49,20 @@ creature_type const ZM_AllianceFieldScout = { 18581, 530, { 374.395f, 6230.08f,
struct zm_beacon
{
- uint32 ui_tower_n;
- uint32 ui_tower_h;
- uint32 ui_tower_a;
- uint32 map_tower_n;
- uint32 map_tower_h;
- uint32 map_tower_a;
+ int32 ui_tower_n;
+ int32 ui_tower_h;
+ int32 ui_tower_a;
+ int32 map_tower_n;
+ int32 map_tower_h;
+ int32 map_tower_a;
uint32 event_enter;
uint32 event_leave;
};
zm_beacon const ZMBeaconInfo[ZM_NUM_BEACONS] =
{
- { 2560, 2559, 2558, 2652, 2651, 2650, 11807, 11806 },
- { 2557, 2556, 2555, 2646, 2645, 2644, 11805, 11804 }
+ { ZM_UI_TOWER_EAST_N, ZM_UI_TOWER_EAST_H, ZM_UI_TOWER_EAST_A, ZM_MAP_TOWER_EAST_N, ZM_MAP_TOWER_EAST_H, ZM_MAP_TOWER_EAST_A, 11807, 11806 },
+ { ZM_UI_TOWER_WEST_N, ZM_UI_TOWER_WEST_H, ZM_UI_TOWER_WEST_A, ZM_MAP_TOWER_WEST_N, ZM_MAP_TOWER_WEST_H, ZM_MAP_TOWER_WEST_A, 11805, 11804 }
};
uint32 const ZMBeaconCaptureA[ZM_NUM_BEACONS] =
@@ -88,24 +88,14 @@ OPvPCapturePointZM_Beacon::OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconT
SetCapturePointData(ZMCapturePoints[type].entry, ZMCapturePoints[type].map, ZMCapturePoints[type].pos, ZMCapturePoints[type].rot);
}
-void OPvPCapturePointZM_Beacon::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].ui_tower_n, (m_TowerState & ZM_TOWERSTATE_N) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].map_tower_n, (m_TowerState & ZM_TOWERSTATE_N) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].ui_tower_a, (m_TowerState & ZM_TOWERSTATE_A) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].map_tower_a, (m_TowerState & ZM_TOWERSTATE_A) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].ui_tower_h, (m_TowerState & ZM_TOWERSTATE_H) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].map_tower_h, (m_TowerState & ZM_TOWERSTATE_H) != 0 ? 1 : 0);
-}
-
void OPvPCapturePointZM_Beacon::UpdateTowerState()
{
- m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_n), uint32((m_TowerState & ZM_TOWERSTATE_N) != 0));
- m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_n), uint32((m_TowerState & ZM_TOWERSTATE_N) != 0));
- m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_a), uint32((m_TowerState & ZM_TOWERSTATE_A) != 0));
- m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_a), uint32((m_TowerState & ZM_TOWERSTATE_A) != 0));
- m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].ui_tower_h), uint32((m_TowerState & ZM_TOWERSTATE_H) != 0));
- m_PvP->SendUpdateWorldState(uint32(ZMBeaconInfo[m_TowerType].map_tower_h), uint32((m_TowerState & ZM_TOWERSTATE_H) != 0));
+ m_PvP->SetWorldState(ZMBeaconInfo[m_TowerType].ui_tower_n, int32((m_TowerState & ZM_TOWERSTATE_N) != 0));
+ m_PvP->SetWorldState(ZMBeaconInfo[m_TowerType].map_tower_n, int32((m_TowerState & ZM_TOWERSTATE_N) != 0));
+ m_PvP->SetWorldState(ZMBeaconInfo[m_TowerType].ui_tower_a, int32((m_TowerState & ZM_TOWERSTATE_A) != 0));
+ m_PvP->SetWorldState(ZMBeaconInfo[m_TowerType].map_tower_a, int32((m_TowerState & ZM_TOWERSTATE_A) != 0));
+ m_PvP->SetWorldState(ZMBeaconInfo[m_TowerType].ui_tower_h, int32((m_TowerState & ZM_TOWERSTATE_H) != 0));
+ m_PvP->SetWorldState(ZMBeaconInfo[m_TowerType].map_tower_h, int32((m_TowerState & ZM_TOWERSTATE_H) != 0));
}
void OPvPCapturePointZM_Beacon::ChangeState()
@@ -286,25 +276,14 @@ OPvPCapturePointZM_Graveyard::OPvPCapturePointZM_Graveyard(OutdoorPvP* pvp) : OP
void OPvPCapturePointZM_Graveyard::UpdateTowerState()
{
- m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_N, uint32((m_GraveyardState & ZM_GRAVEYARD_N) != 0));
- m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_H, uint32((m_GraveyardState & ZM_GRAVEYARD_H) != 0));
- m_PvP->SendUpdateWorldState(ZM_MAP_GRAVEYARD_A, uint32((m_GraveyardState & ZM_GRAVEYARD_A) != 0));
-
- m_PvP->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_READY, uint32(m_BothControllingFaction == ALLIANCE));
- m_PvP->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_NOT_READY, uint32(m_BothControllingFaction != ALLIANCE));
- m_PvP->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_READY, uint32(m_BothControllingFaction == HORDE));
- m_PvP->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_NOT_READY, uint32(m_BothControllingFaction != HORDE));
-}
+ m_PvP->SetWorldState(ZM_MAP_GRAVEYARD_N, int32((m_GraveyardState & ZM_GRAVEYARD_N) != 0));
+ m_PvP->SetWorldState(ZM_MAP_GRAVEYARD_H, int32((m_GraveyardState & ZM_GRAVEYARD_H) != 0));
+ m_PvP->SetWorldState(ZM_MAP_GRAVEYARD_A, int32((m_GraveyardState & ZM_GRAVEYARD_A) != 0));
-void OPvPCapturePointZM_Graveyard::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_N, (m_GraveyardState & ZM_GRAVEYARD_N) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_H, (m_GraveyardState & ZM_GRAVEYARD_H) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_A, (m_GraveyardState & ZM_GRAVEYARD_A) != 0 ? 1 : 0);
- packet.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_READY, m_BothControllingFaction == ALLIANCE ? 1 : 0);
- packet.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_NOT_READY, m_BothControllingFaction != ALLIANCE ? 1 : 0);
- packet.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_READY, m_BothControllingFaction == HORDE ? 1 : 0);
- packet.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_NOT_READY, m_BothControllingFaction != HORDE ? 1 : 0);
+ m_PvP->SetWorldState(ZM_MAP_ALLIANCE_FLAG_READY, int32(m_BothControllingFaction == ALLIANCE));
+ m_PvP->SetWorldState(ZM_MAP_ALLIANCE_FLAG_NOT_READY, int32(m_BothControllingFaction != ALLIANCE));
+ m_PvP->SetWorldState(ZM_MAP_HORDE_FLAG_READY, int32(m_BothControllingFaction == HORDE));
+ m_PvP->SetWorldState(ZM_MAP_HORDE_FLAG_NOT_READY, int32(m_BothControllingFaction != HORDE));
}
void OPvPCapturePointZM_Graveyard::SetBeaconState(uint32 controlling_faction)
@@ -429,36 +408,32 @@ void OutdoorPvPZM::SetHordeTowersControlled(uint32 count)
m_HordeTowersControlled = count;
}
-void OutdoorPvPZM::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
-{
- packet.Worldstates.emplace_back(ZM_WORLDSTATE_UNK_1, 1);
-
- for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr)
- itr->second->FillInitialWorldStates(packet);
-}
-
void OutdoorPvPZM::SendRemoveWorldStates(Player* player)
{
- player->SendUpdateWorldState(ZM_WORLDSTATE_UNK_1, 1);
- player->SendUpdateWorldState(ZM_UI_TOWER_EAST_N, 0);
- player->SendUpdateWorldState(ZM_UI_TOWER_EAST_H, 0);
- player->SendUpdateWorldState(ZM_UI_TOWER_EAST_A, 0);
- player->SendUpdateWorldState(ZM_UI_TOWER_WEST_N, 0);
- player->SendUpdateWorldState(ZM_UI_TOWER_WEST_H, 0);
- player->SendUpdateWorldState(ZM_UI_TOWER_WEST_A, 0);
- player->SendUpdateWorldState(ZM_MAP_TOWER_EAST_N, 0);
- player->SendUpdateWorldState(ZM_MAP_TOWER_EAST_H, 0);
- player->SendUpdateWorldState(ZM_MAP_TOWER_EAST_A, 0);
- player->SendUpdateWorldState(ZM_MAP_GRAVEYARD_H, 0);
- player->SendUpdateWorldState(ZM_MAP_GRAVEYARD_A, 0);
- player->SendUpdateWorldState(ZM_MAP_GRAVEYARD_N, 0);
- player->SendUpdateWorldState(ZM_MAP_TOWER_WEST_N, 0);
- player->SendUpdateWorldState(ZM_MAP_TOWER_WEST_H, 0);
- player->SendUpdateWorldState(ZM_MAP_TOWER_WEST_A, 0);
- player->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_READY, 0);
- player->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_NOT_READY, 0);
- player->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_NOT_READY, 0);
- player->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_READY, 0);
+ WorldPackets::WorldState::InitWorldStates initWorldStates;
+ initWorldStates.MapID = player->GetMapId();
+ initWorldStates.AreaID = player->GetZoneId();
+ initWorldStates.SubareaID = player->GetAreaId();
+ initWorldStates.Worldstates.emplace_back(ZM_UI_TOWER_EAST_N, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_UI_TOWER_EAST_H, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_UI_TOWER_EAST_A, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_UI_TOWER_WEST_N, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_UI_TOWER_WEST_H, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_UI_TOWER_WEST_A, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_TOWER_EAST_N, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_TOWER_EAST_H, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_TOWER_EAST_A, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_H, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_A, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_N, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_TOWER_WEST_N, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_TOWER_WEST_H, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_TOWER_WEST_A, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_READY, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_NOT_READY, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_NOT_READY, 0);
+ initWorldStates.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_READY, 0);
+ player->SendDirectMessage(initWorldStates.Write());
}
class OutdoorPvP_zangarmarsh : public OutdoorPvPScript
diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h
index db7c455b532..771bd0eacf4 100644
--- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h
+++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h
@@ -64,8 +64,6 @@ enum ZM_BeaconType
enum OutdoorPvPZMWorldStates
{
- ZM_WORLDSTATE_UNK_1 = 2653,
-
ZM_UI_TOWER_EAST_N = 2560,
ZM_UI_TOWER_EAST_H = 2559,
ZM_UI_TOWER_EAST_A = 2558,
@@ -102,7 +100,6 @@ class OPvPCapturePointZM_Beacon : public OPvPCapturePoint
OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconType type);
void ChangeState() override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
void UpdateTowerState();
@@ -125,7 +122,6 @@ class OPvPCapturePointZM_Graveyard : public OPvPCapturePoint
bool Update(uint32 diff) override;
void ChangeState() override { }
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
int32 HandleOpenGo(Player* player, GameObject* go) override;
bool HandleGossipOption(Player* player, Creature* creature, uint32 gossipid) override;
bool HandleDropFlag(Player* player, uint32 spellId) override;
@@ -151,7 +147,6 @@ class OutdoorPvPZM : public OutdoorPvP
void HandlePlayerEnterZone(Player* player, uint32 zone) override;
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
bool Update(uint32 diff) override;
- void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override;
void SendRemoveWorldStates(Player* player) override;
void HandleKillImpl(Player* player, Unit* killed) override;