diff --git a/src/game/BattleGround/BattleGroundHandler.cpp b/src/game/BattleGround/BattleGroundHandler.cpp index 28d63b1a8c..4fc2abd6ef 100644 --- a/src/game/BattleGround/BattleGroundHandler.cpp +++ b/src/game/BattleGround/BattleGroundHandler.cpp @@ -141,8 +141,8 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recv_data) // check Deserter debuff if (!_player->CanJoinToBattleground()) { - WorldPacket data(SMSG_GROUP_JOINED_BATTLEGROUND, 4); - data << uint32(0xFFFFFFFE); + WorldPacket data; + sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(data, bgTypeId, BG_GROUP_JOIN_STATUS_DESERTERS); _player->GetSession()->SendPacket(data); return; } @@ -193,7 +193,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recv_data) // send status packet (in queue) sBattleGroundMgr.BuildBattleGroundStatusPacket(data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0); member->GetSession()->SendPacket(data); - sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(data, bgTypeId); + sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(data, bgTypeId, BG_GROUP_JOIN_STATUS_SUCCESS); member->GetSession()->SendPacket(data); DEBUG_LOG("Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId, member->GetGUIDLow(), member->GetName()); } @@ -380,8 +380,8 @@ void WorldSession::HandleBattlefieldPortOpcode(WorldPacket& recv_data) if (!_player->CanJoinToBattleground()) { // send bg command result to show nice message - WorldPacket data2(SMSG_GROUP_JOINED_BATTLEGROUND, 4); - data2 << uint32(0xFFFFFFFE); + WorldPacket data2; + sBattleGroundMgr.BuildGroupJoinedBattlegroundPacket(data2, bgTypeId, BG_GROUP_JOIN_STATUS_DESERTERS); _player->GetSession()->SendPacket(data2); action = 0; diff --git a/src/game/BattleGround/BattleGroundMgr.cpp b/src/game/BattleGround/BattleGroundMgr.cpp index 6aed80ae95..2373e7181e 100644 --- a/src/game/BattleGround/BattleGroundMgr.cpp +++ b/src/game/BattleGround/BattleGroundMgr.cpp @@ -1087,17 +1087,22 @@ void BattleGroundMgr::BuildPvpLogDataPacket(WorldPacket& data, BattleGround* bg) Send battleground joined packet @param packet - @param result + @param battleground type id + @param battleground group join status */ -void BattleGroundMgr::BuildGroupJoinedBattlegroundPacket(WorldPacket& data, BattleGroundTypeId bgTypeId) const +void BattleGroundMgr::BuildGroupJoinedBattlegroundPacket(WorldPacket& data, BattleGroundTypeId bgTypeId, BattleGroundGroupJoinStatus status) const { - /*bgTypeId is: - 0 - Your group has joined a battleground queue, but you are not eligible - 1 - Your group has joined the queue for AV - 2 - Your group has joined the queue for WS - 3 - Your group has joined the queue for AB*/ data.Initialize(SMSG_GROUP_JOINED_BATTLEGROUND, 4); - data << uint32(bgTypeId); + switch (status) + { + case BG_GROUP_JOIN_STATUS_DESERTERS: // You cannot join the battleground yet because you or one of your party members is flagged as a Deserter. + case BG_GROUP_JOIN_STATUS_NOT_ELIGIBLE: // Your group has joined a battleground queue, but you are not eligible + data << int32(status); + break; + case BG_GROUP_JOIN_STATUS_SUCCESS: // Your group has joined the queue for [map] + data << int32(GetBattleGrounMapIdByTypeId(bgTypeId)); + break; + } } /** diff --git a/src/game/BattleGround/BattleGroundMgr.h b/src/game/BattleGround/BattleGroundMgr.h index a00cf24138..c3552488dc 100644 --- a/src/game/BattleGround/BattleGroundMgr.h +++ b/src/game/BattleGround/BattleGroundMgr.h @@ -66,6 +66,13 @@ enum BattleGroundQueueGroupTypes #define BG_QUEUE_GROUP_TYPES_COUNT 4 +enum BattleGroundGroupJoinStatus +{ + BG_GROUP_JOIN_STATUS_DESERTERS = -2, + BG_GROUP_JOIN_STATUS_NOT_ELIGIBLE = -1, + BG_GROUP_JOIN_STATUS_SUCCESS = 0, +}; + class BattleGround; class BattleGroundQueue { @@ -191,7 +198,7 @@ class BattleGroundMgr void BuildPlayerJoinedBattleGroundPacket(WorldPacket& /*data*/, Player* /*player*/) const; void BuildPlayerLeftBattleGroundPacket(WorldPacket& /*data*/, ObjectGuid /*guid*/) const; void BuildBattleGroundListPacket(WorldPacket& /*data*/, ObjectGuid /*guid*/, Player* /*player*/, BattleGroundTypeId /*bgTypeId*/) const; - void BuildGroupJoinedBattlegroundPacket(WorldPacket& /*data*/, BattleGroundTypeId /*bgTypeId*/) const; + void BuildGroupJoinedBattlegroundPacket(WorldPacket& /*data*/, BattleGroundTypeId /*bgTypeId*/, BattleGroundGroupJoinStatus /*status*/) const; void BuildUpdateWorldStatePacket(WorldPacket& /*data*/, uint32 /*field*/, uint32 /*value*/) const; void BuildPvpLogDataPacket(WorldPacket& /*data*/, BattleGround* /*bg*/) const; void BuildBattleGroundStatusPacket(WorldPacket& /*data*/, BattleGround* /*bg*/, uint8 /*queueSlot*/, uint8 /*statusId*/, uint32 /*time1*/, uint32 /*time2*/) const;