aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/BattleGroundHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/BattleGroundHandler.cpp')
-rw-r--r--src/server/game/Handlers/BattleGroundHandler.cpp21
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)