diff options
author | Treeston <treeston.mmoc@gmail.com> | 2019-07-12 14:14:01 +0200 |
---|---|---|
committer | Treeston <treeston.mmoc@gmail.com> | 2019-07-12 14:14:01 +0200 |
commit | af082664ca8ff76cc8ef1947d6ce76310d65b58b (patch) | |
tree | 7c352532bc317d675affbc18f45c8410082b99ef /src/server/game/Handlers/BattleGroundHandler.cpp | |
parent | daf423a6c3c0fdd13e421f02ccd791103f7bdd5b (diff) |
Battleground/Arena: Properly check RBAC arena join permission before allowing queue. Closes #23000.
Diffstat (limited to 'src/server/game/Handlers/BattleGroundHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/BattleGroundHandler.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index dbd858d7673..f57e82ae653 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -138,9 +138,18 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) GetPlayer()->SendDirectMessage(&data); return; } + + // check RBAC permissions + if (!_player->CanJoinToBattleground(bg)) + { + WorldPacket data; + sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_BATTLEGROUND_JOIN_TIMED_OUT); + GetPlayer()->SendDirectMessage(&data); + return; + } // check Deserter debuff - if (!_player->CanJoinToBattleground(bg)) + if (_player->IsDeserter()) { WorldPacket data; sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS); @@ -419,7 +428,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) if (action == 1 && ginfo.ArenaType == 0) { //if player is trying to enter battleground (not arena!) and he has deserter debuff, we must just remove him from queue - if (!_player->CanJoinToBattleground(bg)) + if (_player->IsDeserter()) { //send bg command result to show nice message WorldPacket data2; @@ -672,6 +681,14 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) _player->SendDirectMessage(&data); return; } + + if (!_player->CanJoinToBattleground(bg)) + { + WorldPacket data; + sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, ERR_BATTLEGROUND_JOIN_FAILED); + _player->SendDirectMessage(&data); + return; + } // check if already in queue if (_player->GetBattlegroundQueueIndex(bgQueueTypeId) < PLAYER_MAX_BATTLEGROUND_QUEUES) |