From a69a061d76fe4e142e84c775230e2fcbd6ddb9d4 Mon Sep 17 00:00:00 2001 From: Treeston Date: Fri, 12 Jul 2019 14:14:01 +0200 Subject: Battleground/Arena: Properly check RBAC arena join permission before allowing queue. Closes #23000. (cherry picked from commit af082664ca8ff76cc8ef1947d6ce76310d65b58b) --- src/server/game/Entities/Player/Player.cpp | 19 ++++++------------- src/server/game/Entities/Player/Player.h | 2 ++ 2 files changed, 8 insertions(+), 13 deletions(-) (limited to 'src/server/game/Entities/Player') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 0a5a21aaab9..ad525d51145 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -23917,20 +23917,13 @@ void Player::LeaveBattleground(bool teleportToEntryPoint) bool Player::CanJoinToBattleground(Battleground const* bg) const { - // check Deserter debuff - if (HasAura(26013)) - return false; - - if (bg->isArena() && !GetSession()->HasPermission(rbac::RBAC_PERM_JOIN_ARENAS)) - return false; - - if (bg->IsRandom() && !GetSession()->HasPermission(rbac::RBAC_PERM_JOIN_RANDOM_BG)) - return false; - - if (!GetSession()->HasPermission(rbac::RBAC_PERM_JOIN_NORMAL_BG)) - return false; + uint32 perm = rbac::RBAC_PERM_JOIN_NORMAL_BG; + if (bg->isArena()) + perm = rbac::RBAC_PERM_JOIN_ARENAS; + else if (bg->IsRandom()) + perm = rbac::RBAC_PERM_JOIN_RANDOM_BG; - return true; + return GetSession()->HasPermission(perm); } bool Player::CanReportAfkDueToLimit() diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index b33859d96ea..387671c7e86 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2316,6 +2316,8 @@ class TC_GAME_API Player : public Unit, public GridObject uint32 GetBattlegroundQueueJoinTime(BattlegroundQueueTypeId bgQueueTypeId) const; bool InBattlegroundQueue(bool ignoreArena = false) const; + bool IsDeserter() const { return HasAura(26013); } + BattlegroundQueueTypeId GetBattlegroundQueueTypeId(uint32 index) const; uint32 GetBattlegroundQueueIndex(BattlegroundQueueTypeId bgQueueTypeId) const; bool IsInvitedForBattlegroundQueueType(BattlegroundQueueTypeId bgQueueTypeId) const; -- cgit v1.2.3