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/Entities | |
| parent | daf423a6c3c0fdd13e421f02ccd791103f7bdd5b (diff) | |
Battleground/Arena: Properly check RBAC arena join permission before allowing queue. Closes #23000.
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 19 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 |
2 files changed, 7 insertions, 13 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f50918a2b44..a62d8873264 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22178,20 +22178,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 74bf97fd81c..00ee3aa2bf8 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1903,6 +1903,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> Battleground* GetBattleground() const; bool InBattlegroundQueue(bool ignoreArena = false) const; + bool IsDeserter() const { return HasAura(26013); } BattlegroundQueueTypeId GetBattlegroundQueueTypeId(uint32 index) const; uint32 GetBattlegroundQueueIndex(BattlegroundQueueTypeId bgQueueTypeId) const; |
