diff options
Diffstat (limited to 'src/game/Group.cpp')
| -rw-r--r-- | src/game/Group.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/game/Group.cpp b/src/game/Group.cpp index 87e02cb8148..1586d787dc3 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -29,6 +29,7 @@ #include "Formulas.h" #include "ObjectAccessor.h" #include "BattleGround.h" +#include "BattleGroundMgr.h" #include "MapManager.h" #include "InstanceSaveMgr.h" #include "MapInstanced.h" @@ -1597,6 +1598,8 @@ GroupJoinBattlegroundResult Group::CanJoinBattleGroundQueue(BattleGround const* uint32 arenaTeamId = reference->GetArenaTeamId(arenaSlot); uint32 team = reference->GetTeam(); + BattleGroundQueueTypeId bgQueueTypeIdRandom = BattleGroundMgr::BGQueueTypeId(BATTLEGROUND_RB, 0); + // check every member of the group to be able to join for (GroupReference *itr = GetFirstMember(); itr != NULL; itr = itr->next()) { @@ -1617,6 +1620,12 @@ GroupJoinBattlegroundResult Group::CanJoinBattleGroundQueue(BattleGround const* // don't let join if someone from the group is already in that bg queue if (member->InBattleGroundQueueForBattleGroundQueueType(bgQueueTypeId)) return ERR_BATTLEGROUND_JOIN_FAILED; // not blizz-like + // don't let join if someone from the group is in bg queue random + if (member->InBattleGroundQueueForBattleGroundQueueType(bgQueueTypeIdRandom)) + return ERR_IN_RANDOM_BG; + // don't let join to bg queue random if someone from the group is already in bg queue + if (bgOrTemplate->GetTypeID() == BATTLEGROUND_RB && member->InBattleGroundQueue()) + return ERR_IN_NON_RANDOM_BG; // check for deserter debuff in case not arena queue if (bgOrTemplate->GetTypeID() != BATTLEGROUND_AA && !member->CanJoinToBattleground()) return ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS; |
