aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp111
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h170
-rw-r--r--src/server/game/Server/Packets/LFGPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/LFGPackets.h1
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h1
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp28
-rw-r--r--src/server/game/Server/WorldSession.h24
7 files changed, 320 insertions, 25 deletions
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index e11fd9c1ac8..a6aeb370ebe 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -110,3 +110,114 @@ WorldPacket const* WorldPackets::Battleground::PVPLogData::Write()
return &_worldPacket;
}
+
+void WorldPackets::Battleground::BattlemasterJoin::Read()
+{
+ _worldPacket >> QueueID;
+ _worldPacket >> Roles;
+ _worldPacket >> BlacklistMap[0] >> BlacklistMap[1];
+ JoinAsGroup = _worldPacket.ReadBit();
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::BattlefieldStatusHeader const& header)
+{
+ data << header.Ticket;
+ data << uint64(header.QueueID);
+ data << uint8(header.RangeMin);
+ data << uint8(header.RangeMax);
+ data << uint8(header.TeamSize);
+ data << uint32(header.InstanceID);
+ data.WriteBit(header.RegisteredMatch);
+ data.WriteBit(header.TournamentRules);
+ data.FlushBits();
+ return data;
+}
+
+WorldPacket const* WorldPackets::Battleground::BattlefieldStatusNone::Write()
+{
+ _worldPacket << Ticket;
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Battleground::BattlefieldStatusNeedConfirmation::Write()
+{
+ _worldPacket << Hdr;
+ _worldPacket << uint32(Mapid);
+ _worldPacket << uint32(Timeout);
+ _worldPacket << uint8(Role);
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Battleground::BattlefieldStatusActive::Write()
+{
+ _worldPacket << Hdr;
+ _worldPacket << uint32(Mapid);
+ _worldPacket << uint32(ShutdownTimer);
+ _worldPacket << uint32(StartTimer);
+ _worldPacket.WriteBit(ArenaFaction);
+ _worldPacket.WriteBit(LeftEarly);
+ _worldPacket.FlushBits();
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Battleground::BattlefieldStatusQueued::Write()
+{
+ _worldPacket << Hdr;
+ _worldPacket << uint32(AverageWaitTime);
+ _worldPacket << uint32(WaitTime);
+ _worldPacket.WriteBit(AsGroup);
+ _worldPacket.WriteBit(EligibleForMatchmaking);
+ _worldPacket.WriteBit(SuspendedQueue);
+ _worldPacket.FlushBits();
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Battleground::BattlefieldStatusFailed::Write()
+{
+ _worldPacket << Ticket;
+ _worldPacket << uint64(QueueID);
+ _worldPacket << uint32(Reason);
+ _worldPacket << ClientID;
+ return &_worldPacket;
+}
+
+void WorldPackets::Battleground::BattlefieldPort::Read()
+{
+ _worldPacket >> Ticket;
+ AcceptedInvite = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Battleground::BattlefieldListRequest::Read()
+{
+ _worldPacket >> ListID;
+}
+
+WorldPacket const* WorldPackets::Battleground::BattlefieldList::Write()
+{
+ _worldPacket << BattlemasterGuid;
+ _worldPacket << int32(BattlemasterListID);
+ _worldPacket << uint8(MinLevel);
+ _worldPacket << uint8(MaxLevel);
+ _worldPacket << uint32(Battlefields.size());
+ if (!Battlefields.empty())
+ _worldPacket.append(Battlefields.data(), Battlefields.size());
+
+ _worldPacket.WriteBit(PvpAnywhere);
+ _worldPacket.WriteBit(HasHolidayWinToday);
+ _worldPacket.WriteBit(HasRandomWinToday);
+ _worldPacket.WriteBit(IsRandomBG);
+ _worldPacket.FlushBits();
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Battleground::PVPOptionsEnabled::Write()
+{
+ _worldPacket.WriteBit(RatedBattlegrounds);
+ _worldPacket.WriteBit(PugBattlegrounds);
+ _worldPacket.WriteBit(WargameBattlegrounds);
+ _worldPacket.WriteBit(WargameArenas);
+ _worldPacket.WriteBit(RatedArenas);
+ _worldPacket.WriteBit(ArenaSkirmish);
+ _worldPacket.FlushBits();
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index 8620112f548..efecef094ce 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -20,6 +20,7 @@
#include "ObjectGuid.h"
#include "Packet.h"
+#include "LFGPackets.h"
namespace WorldPackets
{
@@ -116,6 +117,175 @@ namespace WorldPackets
Optional<RatingData> Ratings;
int8 PlayerCount[2] = { };
};
+
+ struct BattlefieldStatusHeader
+ {
+ WorldPackets::LFG::RideTicket Ticket;
+ uint64 QueueID = 0;
+ uint8 RangeMin = 0;
+ uint8 RangeMax = 0;
+ uint8 TeamSize = 0;
+ uint32 InstanceID = 0;
+ bool RegisteredMatch = false;
+ bool TournamentRules = false;
+ };
+
+ class BattlefieldStatusNone final : public ServerPacket
+ {
+ public:
+ BattlefieldStatusNone() : ServerPacket(SMSG_BATTLEFIELD_STATUS_NONE, 16 + 4 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ WorldPackets::LFG::RideTicket Ticket;
+ };
+
+ class BattlefieldStatusNeedConfirmation final : public ServerPacket
+ {
+ public:
+ BattlefieldStatusNeedConfirmation() : ServerPacket(SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, 4 + 4 + sizeof(BattlefieldStatusHeader) + 1) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Timeout = 0;
+ uint32 Mapid = 0;
+ BattlefieldStatusHeader Hdr;
+ uint8 Role = 0;
+ };
+
+ class BattlefieldStatusActive final : public ServerPacket
+ {
+ public:
+ BattlefieldStatusActive() : ServerPacket(SMSG_BATTLEFIELD_STATUS_ACTIVE, sizeof(BattlefieldStatusHeader) + 4 + 1 + 1 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ BattlefieldStatusHeader Hdr;
+ uint32 ShutdownTimer = 0;
+ uint8 ArenaFaction = 0;
+ bool LeftEarly = false;
+ uint32 StartTimer = 0;
+ uint32 Mapid = 0;
+ };
+
+ class BattlefieldStatusQueued final : public ServerPacket
+ {
+ public:
+ BattlefieldStatusQueued() : ServerPacket(SMSG_BATTLEFIELD_STATUS_QUEUED, 4 + sizeof(BattlefieldStatusHeader) + 1 + 1 + 1 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 AverageWaitTime = 0;
+ BattlefieldStatusHeader Hdr;
+ bool AsGroup = false;
+ bool SuspendedQueue = false;
+ bool EligibleForMatchmaking = false;
+ uint32 WaitTime = 0;
+ };
+
+ class BattlefieldStatusFailed final : public ServerPacket
+ {
+ public:
+ BattlefieldStatusFailed() : ServerPacket(SMSG_BATTLEFIELD_STATUS_FAILED, 8 + 16 + 4 + 16 + 4 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint64 QueueID = 0;
+ ObjectGuid ClientID;
+ int32 Reason = 0;
+ WorldPackets::LFG::RideTicket Ticket;
+ };
+
+ class BattlemasterJoin final : public ClientPacket
+ {
+ public:
+ BattlemasterJoin(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEMASTER_JOIN, std::move(packet)) { }
+
+ void Read() override;
+
+ bool JoinAsGroup = false;
+ uint8 Roles = 0;
+ uint64 QueueID = 0;
+ int32 BlacklistMap[2] = { };
+ };
+
+ class BattlefieldLeave final : public ClientPacket
+ {
+ public:
+ BattlefieldLeave(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEFIELD_LEAVE, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class BattlefieldPort final : public ClientPacket
+ {
+ public:
+ BattlefieldPort(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEFIELD_PORT, std::move(packet)) { }
+
+ void Read() override;
+
+ WorldPackets::LFG::RideTicket Ticket;
+ bool AcceptedInvite = false;
+ };
+
+ class BattlefieldListRequest final : public ClientPacket
+ {
+ public:
+ BattlefieldListRequest(WorldPacket&& packet) : ClientPacket(CMSG_BATTLEFIELD_LIST, std::move(packet)) { }
+
+ void Read() override;
+
+ int32 ListID = 0;
+ };
+
+ class BattlefieldList final : public ServerPacket
+ {
+ public:
+ BattlefieldList() : ServerPacket(SMSG_BATTLEFIELD_LIST, 1 + 1 + 16 + 1 + 1 + 1 + 4 + 1 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ uint8 MaxLevel = 0;
+ bool PvpAnywhere = false;
+ ObjectGuid BattlemasterGuid;
+ bool IsRandomBG = false;
+ uint8 MinLevel = 0;
+ bool HasHolidayWinToday = false;
+ int32 BattlemasterListID = 0;
+ bool HasRandomWinToday = false;
+ std::vector<int32> Battlefields; // Players cannot join a specific battleground instance anymore - this is always empty
+ };
+
+ class GetPVPOptionsEnabled final : public ClientPacket
+ {
+ public:
+ GetPVPOptionsEnabled(WorldPacket&& packet) : ClientPacket(CMSG_GET_PVP_OPTIONS_ENABLED, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class PVPOptionsEnabled final : public ServerPacket
+ {
+ public:
+ PVPOptionsEnabled() : ServerPacket(SMSG_PVP_OPTIONS_ENABLED, 1) { }
+
+ WorldPacket const* Write() override;
+
+ bool WargameArenas = false;
+ bool RatedArenas = false;
+ bool WargameBattlegrounds = false;
+ bool ArenaSkirmish = false;
+ bool PugBattlegrounds = false;
+ bool RatedBattlegrounds = false;
+ };
+
+ class RequestBattlefieldStatus final : public ClientPacket
+ {
+ public:
+ RequestBattlefieldStatus(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_BATTLEFIELD_STATUS, std::move(packet)) { }
+
+ void Read() override { }
+ };
}
}
diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp
index 4e7bc35b55a..05c714fab9f 100644
--- a/src/server/game/Server/Packets/LFGPackets.cpp
+++ b/src/server/game/Server/Packets/LFGPackets.cpp
@@ -26,3 +26,13 @@ ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::LFG::RideTicket& ticket)
return data;
}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::RideTicket const& ticket)
+{
+ data << ticket.RequesterGuid;
+ data << int32(ticket.Id);
+ data << int32(ticket.Type);
+ data << uint32(ticket.Time);
+
+ return data;
+}
diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h
index 8c92e671b4b..723ddfd1d84 100644
--- a/src/server/game/Server/Packets/LFGPackets.h
+++ b/src/server/game/Server/Packets/LFGPackets.h
@@ -35,5 +35,6 @@ namespace WorldPackets
}
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::LFG::RideTicket& ticket);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::RideTicket const& ticket);
#endif // LFGPackets_h__
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index bb38327c463..a6e265b5d9f 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -34,6 +34,7 @@ namespace WorldPackets
// CMSG_GOSSIP_HELLO
// CMSG_LIST_INVENTORY
// CMSG_TRAINER_LIST
+ // CMSG_BATTLEMASTER_HELLO
class Hello final : public ClientPacket
{
public:
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index dc255d3ac1c..4bd42c94472 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -184,11 +184,11 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM_SLOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::AutoEquipItemSlot, &WorldSession::HandleAutoEquipItemSlotOpcode);
DEFINE_HANDLER(CMSG_AUTO_STORE_BAG_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::AutoStoreBagItem, &WorldSession::HandleAutoStoreBagItemOpcode);
DEFINE_HANDLER(CMSG_BANKER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleBankerActivateOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEFIELD_LEAVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleBattlefieldLeaveOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEFIELD_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldListOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEFIELD_PORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattleFieldPortOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEMASTER_HELLO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterHelloOpcode );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEMASTER_JOIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinOpcode );
+ DEFINE_HANDLER(CMSG_BATTLEFIELD_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::BattlefieldLeave, &WorldSession::HandleBattlefieldLeaveOpcode);
+ DEFINE_HANDLER(CMSG_BATTLEFIELD_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::BattlefieldListRequest, &WorldSession::HandleBattlefieldListOpcode);
+ DEFINE_HANDLER(CMSG_BATTLEFIELD_PORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::BattlefieldPort, &WorldSession::HandleBattleFieldPortOpcode);
+ DEFINE_HANDLER(CMSG_BATTLEMASTER_HELLO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleBattlemasterHelloOpcode);
+ DEFINE_HANDLER(CMSG_BATTLEMASTER_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::BattlemasterJoin, &WorldSession::HandleBattlemasterJoinOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEMASTER_JOIN_ARENA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinArena );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLEMASTER_JOIN_SKIRMISH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_BATTLENET_CHALLENGE_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -392,7 +392,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_GARRISON_INFO, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::GetItemPurchaseData, &WorldSession::HandleGetItemPurchaseData);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_MIRROR_IMAGE_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMirrorImageDataRequest );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_PVP_OPTIONS_ENABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleGetPVPOptionsEnabled );
+ DEFINE_HANDLER(CMSG_GET_PVP_OPTIONS_ENABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Battleground::GetPVPOptionsEnabled, &WorldSession::HandleGetPVPOptionsEnabled);
DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_REMAINING_GAME_TIME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER_OLD(CMSG_GET_TROPHY_LIST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GetUndeleteCharacterCooldownStatus, &WorldSession::HandleGetUndeleteCooldownStatus);
@@ -665,7 +665,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REPOP_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::RepopRequest, &WorldSession::HandleRepopRequest);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REPORT_PVP_PLAYER_AFK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleReportPvPAFK );
DEFINE_HANDLER(CMSG_REQUEST_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::RequestAccountData, &WorldSession::HandleRequestAccountData);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestBattlefieldStatusOpcode);
+ DEFINE_HANDLER(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::RequestBattlefieldStatus, &WorldSession::HandleRequestBattlefieldStatusOpcode);
DEFINE_HANDLER(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Spells::RequestCategoryCooldowns, &WorldSession::HandleRequestCategoryCooldowns);
DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::RequestCemeteryList, &WorldSession::HandleRequestCemeteryList);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
@@ -886,13 +886,13 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_AVAILABLE_VOICE_CHANNEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_PORT_DENIED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_ACTIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_NONE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_QUEUED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_ACTIVE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_NEED_CONFIRMATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_NONE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_QUEUED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEGROUND_INFO_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEGROUND_INIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1497,7 +1497,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROPOSE_LEVEL_GRANT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_SEASON, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_CREATURE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index e3c893c6d64..c2c2126c6fc 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -110,6 +110,12 @@ namespace WorldPackets
class AreaSpiritHealerQueue;
class HearthAndResurrect;
class PVPLogDataRequest;
+ class BattlemasterJoin;
+ class BattlefieldLeave;
+ class BattlefieldPort;
+ class BattlefieldListRequest;
+ class GetPVPOptionsEnabled;
+ class RequestBattlefieldStatus;
}
namespace BlackMarket
@@ -740,8 +746,6 @@ class WorldSession
void SendAttackStop(Unit const* enemy);
- void SendBattleGroundList(ObjectGuid guid, BattlegroundTypeId bgTypeId = BATTLEGROUND_RB);
-
void SendTradeStatus(WorldPackets::Trade::TradeStatus& status);
void SendUpdateTrade(bool trader_data = true);
void SendCancelTrade();
@@ -1013,9 +1017,6 @@ class WorldSession
void HandleRequestRaidInfoOpcode(WorldPacket& recvData);
- void HandleRequestBattlefieldStatusOpcode(WorldPacket& recvData);
- void HandleBattleMasterHelloOpcode(WorldPacket& recvData);
-
void HandleGroupInviteOpcode(WorldPacket& recvPacket);
//void HandleGroupCancelOpcode(WorldPacket& recvPacket);
void HandleGroupInviteResponseOpcode(WorldPacket& recvPacket);
@@ -1273,21 +1274,22 @@ class WorldSession
void HandleDismissCritter(WorldPacket& recvData);
//Battleground
- void HandleBattlemasterHelloOpcode(WorldPacket& recvData);
- void HandleBattlemasterJoinOpcode(WorldPacket& recvData);
+ void HandleBattlemasterHelloOpcode(WorldPackets::NPC::Hello& hello);
+ void HandleBattlemasterJoinOpcode(WorldPackets::Battleground::BattlemasterJoin& battlemasterJoin);
void HandleBattlegroundPlayerPositionsOpcode(WorldPacket& recvData);
void HandlePVPLogDataOpcode(WorldPackets::Battleground::PVPLogDataRequest& pvpLogDataRequest);
- void HandleBattleFieldPortOpcode(WorldPacket& recvData);
- void HandleBattlefieldListOpcode(WorldPacket& recvData);
- void HandleBattlefieldLeaveOpcode(WorldPacket& recvData);
+ void HandleBattleFieldPortOpcode(WorldPackets::Battleground::BattlefieldPort& battlefieldPort);
+ void HandleBattlefieldListOpcode(WorldPackets::Battleground::BattlefieldListRequest& battlefieldList);
+ void HandleBattlefieldLeaveOpcode(WorldPackets::Battleground::BattlefieldLeave& battlefieldLeave);
void HandleBattlemasterJoinArena(WorldPacket& recvData);
void HandleReportPvPAFK(WorldPacket& recvData);
void HandleRequestRatedBattlefieldInfo(WorldPacket& recvData);
- void HandleGetPVPOptionsEnabled(WorldPacket& recvData);
+ void HandleGetPVPOptionsEnabled(WorldPackets::Battleground::GetPVPOptionsEnabled& getPvPOptionsEnabled);
void HandleRequestPvpReward(WorldPacket& recvData);
void HandleAreaSpiritHealerQueryOpcode(WorldPackets::Battleground::AreaSpiritHealerQuery& areaSpiritHealerQuery);
void HandleAreaSpiritHealerQueueOpcode(WorldPackets::Battleground::AreaSpiritHealerQueue& areaSpiritHealerQueue);
void HandleHearthAndResurrect(WorldPackets::Battleground::HearthAndResurrect& hearthAndResurrect);
+ void HandleRequestBattlefieldStatusOpcode(WorldPackets::Battleground::RequestBattlefieldStatus& requestBattlefieldStatus);
// Battlefield
void SendBfInvitePlayerToWar(ObjectGuid guid, uint32 zoneId, uint32 time);