From aac3003bc2760c2ce86f45e5faee5b4285d4e0c1 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 26 Sep 2021 11:44:23 -0400 Subject: [PATCH] Core/Battleground: allow Random battleground and arena queues same time. Port From (https://github.com/TrinityCore/TrinityCore/commit/a9e7464e0d1f201b4a84d7fd955018e3a2c2cc59) --- Source/Game/Entities/Player/Player.PvP.cs | 4 ++-- Source/Game/Groups/Group.cs | 2 +- Source/Game/Handlers/BattleGroundHandler.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Game/Entities/Player/Player.PvP.cs b/Source/Game/Entities/Player/Player.PvP.cs index 77e57a537..49ff2fb45 100644 --- a/Source/Game/Entities/Player/Player.PvP.cs +++ b/Source/Game/Entities/Player/Player.PvP.cs @@ -536,10 +536,10 @@ namespace Game.Entities 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) - if (m_bgBattlegroundQueueID[i].bgQueueTypeId != default) + if (m_bgBattlegroundQueueID[i].bgQueueTypeId != default && (!ignoreArena || m_bgBattlegroundQueueID[i].bgQueueTypeId.BattlemasterListId != (ushort)BattlegroundTypeId.AA)) return true; return false; } diff --git a/Source/Game/Groups/Group.cs b/Source/Game/Groups/Group.cs index 34c0b3d4c..c8e6731d3 100644 --- a/Source/Game/Groups/Group.cs +++ b/Source/Game/Groups/Group.cs @@ -1768,7 +1768,7 @@ namespace Game.Groups if (isInRandomBgQueue) return GroupJoinBattlegroundResult.InRandomBg; // 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; // check for deserter debuff in case not arena queue if (bgOrTemplate.GetTypeID() != BattlegroundTypeId.AA && !member.CanJoinToBattleground(bgOrTemplate)) diff --git a/Source/Game/Handlers/BattleGroundHandler.cs b/Source/Game/Handlers/BattleGroundHandler.cs index 67f9f5450..c9d90ad3d 100644 --- a/Source/Game/Handlers/BattleGroundHandler.cs +++ b/Source/Game/Handlers/BattleGroundHandler.cs @@ -128,7 +128,7 @@ namespace Game 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 Global.BattlegroundMgr.BuildBattlegroundStatusFailed(out battlefieldStatusFailed, bgQueueTypeId, GetPlayer(), 0, GroupJoinBattlegroundResult.InNonRandomBg);