diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-11 15:49:49 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-11 15:49:49 +0200 |
commit | 36ff703df55704265a28e28f4ea9f9cdcb54e85c (patch) | |
tree | 2654bf9821e74d31478b2c8b79bf442cb59c4dea /src/server/scripts/OutdoorPvP | |
parent | 8abfda5fb020a85fd4d4fdacc795083f830385ca (diff) |
Core/WorldStates: Migrate OutdoorPvP worldstates to new system
Diffstat (limited to 'src/server/scripts/OutdoorPvP')
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp | 74 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPHP.h | 2 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp | 159 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPNA.h | 2 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp | 53 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPSI.h | 4 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp | 117 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPTF.h | 22 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp | 115 | ||||
-rw-r--r-- | src/server/scripts/OutdoorPvP/OutdoorPvPZM.h | 5 |
10 files changed, 207 insertions, 346 deletions
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; |