aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game')
-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
3 files changed, 11 insertions, 188 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*/) { }