Core/Battleground: allow Random battleground and arena queues same time.
Port From (https://github.com/TrinityCore/TrinityCore/commit/a9e7464e0d1f201b4a84d7fd955018e3a2c2cc59)
This commit is contained in:
@@ -536,10 +536,10 @@ namespace Game.Entities
|
|||||||
return Global.BattlegroundMgr.GetBattleground(GetBattlegroundId(), m_bgData.bgTypeID);
|
return Global.BattlegroundMgr.GetBattleground(GetBattlegroundId(), m_bgData.bgTypeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool InBattlegroundQueue()
|
public bool InBattlegroundQueue(bool ignoreArena = false)
|
||||||
{
|
{
|
||||||
for (byte i = 0; i < SharedConst.MaxPlayerBGQueues; ++i)
|
for (byte i = 0; i < SharedConst.MaxPlayerBGQueues; ++i)
|
||||||
if (m_bgBattlegroundQueueID[i].bgQueueTypeId != default)
|
if (m_bgBattlegroundQueueID[i].bgQueueTypeId != default && (!ignoreArena || m_bgBattlegroundQueueID[i].bgQueueTypeId.BattlemasterListId != (ushort)BattlegroundTypeId.AA))
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1768,7 +1768,7 @@ namespace Game.Groups
|
|||||||
if (isInRandomBgQueue)
|
if (isInRandomBgQueue)
|
||||||
return GroupJoinBattlegroundResult.InRandomBg;
|
return GroupJoinBattlegroundResult.InRandomBg;
|
||||||
// don't let join to bg queue random if someone from the group is already in bg queue
|
// don't let join to bg queue random if someone from the group is already in bg queue
|
||||||
if ((bgOrTemplate.GetTypeID() == BattlegroundTypeId.RB || bgOrTemplate.GetTypeID() == BattlegroundTypeId.RandomEpic) && member.InBattlegroundQueue() && !isInRandomBgQueue)
|
if ((bgOrTemplate.GetTypeID() == BattlegroundTypeId.RB || bgOrTemplate.GetTypeID() == BattlegroundTypeId.RandomEpic) && member.InBattlegroundQueue(true) && !isInRandomBgQueue)
|
||||||
return GroupJoinBattlegroundResult.InNonRandomBg;
|
return GroupJoinBattlegroundResult.InNonRandomBg;
|
||||||
// check for deserter debuff in case not arena queue
|
// check for deserter debuff in case not arena queue
|
||||||
if (bgOrTemplate.GetTypeID() != BattlegroundTypeId.AA && !member.CanJoinToBattleground(bgOrTemplate))
|
if (bgOrTemplate.GetTypeID() != BattlegroundTypeId.AA && !member.CanJoinToBattleground(bgOrTemplate))
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ namespace Game
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_player.InBattlegroundQueue() && !isInRandomBgQueue && (bgTypeId == BattlegroundTypeId.RB || bgTypeId == BattlegroundTypeId.RandomEpic))
|
if (_player.InBattlegroundQueue(true) && !isInRandomBgQueue && (bgTypeId == BattlegroundTypeId.RB || bgTypeId == BattlegroundTypeId.RandomEpic))
|
||||||
{
|
{
|
||||||
// player is already in queue, can't start random queue
|
// player is already in queue, can't start random queue
|
||||||
Global.BattlegroundMgr.BuildBattlegroundStatusFailed(out battlefieldStatusFailed, bgQueueTypeId, GetPlayer(), 0, GroupJoinBattlegroundResult.InNonRandomBg);
|
Global.BattlegroundMgr.BuildBattlegroundStatusFailed(out battlefieldStatusFailed, bgQueueTypeId, GetPlayer(), 0, GroupJoinBattlegroundResult.InNonRandomBg);
|
||||||
|
|||||||
Reference in New Issue
Block a user