Skip to content

Commit

Permalink
Core/PacketIO: Fix SMSG_GROUP_JOINED_BATTLEGROUND
Browse files Browse the repository at this point in the history
  • Loading branch information
2 people authored and killerwife committed Jul 12, 2024
1 parent 7a8d6e9 commit 449635d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 14 deletions.
10 changes: 5 additions & 5 deletions src/game/BattleGround/BattleGroundHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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());
}
Expand Down Expand Up @@ -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;

Expand Down
21 changes: 13 additions & 8 deletions src/game/BattleGround/BattleGroundMgr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

/**
Expand Down
9 changes: 8 additions & 1 deletion src/game/BattleGround/BattleGroundMgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 449635d

Please sign in to comment.