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