From efb7cda40b78cf2bdb55bd1a64834b5cafd8e751 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sun, 8 Jun 2025 19:34:58 -0400 Subject: [PATCH] Misc fixes --- .../Game/BattleGrounds/BattleGroundManager.cs | 18 +++++------------- Source/Game/Groups/Group.cs | 9 +++++---- Source/Game/Handlers/BattleGroundHandler.cs | 2 +- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/Source/Game/BattleGrounds/BattleGroundManager.cs b/Source/Game/BattleGrounds/BattleGroundManager.cs index 3b1cbb31e..6f43d396e 100644 --- a/Source/Game/BattleGrounds/BattleGroundManager.cs +++ b/Source/Game/BattleGrounds/BattleGroundManager.cs @@ -73,13 +73,8 @@ namespace Game.BattleGrounds List scheduled = new(); Extensions.Swap(ref scheduled, ref m_QueueUpdateScheduler); - for (byte i = 0; i < scheduled.Count; i++) - { - uint arenaMMRating = scheduled[i].ArenaMatchmakerRating; - BattlegroundQueueTypeId bgQueueTypeId = scheduled[i].QueueId; - BattlegroundBracketId bracket_id = scheduled[i].BracketId; - GetBattlegroundQueue(bgQueueTypeId).BattlegroundQueueUpdate(diff, bracket_id, arenaMMRating); - } + foreach (var scheduledQueueUpdate in scheduled) + GetBattlegroundQueue(scheduledQueueUpdate.QueueId).BattlegroundQueueUpdate(diff, scheduledQueueUpdate.BracketId, scheduledQueueUpdate.ArenaMatchmakerRating); } // if rating difference counts, maybe force-update queues @@ -645,18 +640,15 @@ namespace Game.BattleGrounds BattlegroundTemplate bgTemplate = GetBattlegroundTemplateByTypeId(bgTypeId); if (bgTemplate != null) { - Dictionary selectionWeights = new(); - + List ids = new(); foreach (var mapId in bgTemplate.MapIDs) { BattlegroundTemplate bg = GetBattlegroundTemplateByMapId((uint)mapId); if (bg != null) - { - selectionWeights.Add(bg.Id, bg.Weight); - } + ids.Add(bg); } - return selectionWeights.SelectRandomElementByWeight(i => i.Value).Key; + return ids.SelectRandomElementByWeight(i => i.Weight).Id; } return BattlegroundTypeId.None; diff --git a/Source/Game/Groups/Group.cs b/Source/Game/Groups/Group.cs index ba930220a..ebc02e901 100644 --- a/Source/Game/Groups/Group.cs +++ b/Source/Game/Groups/Group.cs @@ -1166,7 +1166,8 @@ namespace Game.Groups public GroupJoinBattlegroundResult CanJoinBattlegroundQueue(BattlegroundTemplate bgOrTemplate, BattlegroundQueueTypeId bgQueueTypeId, uint MinPlayerCount, uint MaxPlayerCount, bool isRated, uint arenaSlot, out ObjectGuid errorGuid) { - errorGuid = new ObjectGuid(); + errorGuid = ObjectGuid.Empty; + // check if this group is LFG group if (IsLFGGroup()) return GroupJoinBattlegroundResult.LfgCantUseBattleground; @@ -1203,15 +1204,13 @@ namespace Game.Groups // offline member? don't let join if (member == null) return GroupJoinBattlegroundResult.BattlegroundJoinFailed; + errorGuid = member.GetGUID(); // rbac permissions if (!member.CanJoinToBattleground(bgOrTemplate)) return GroupJoinBattlegroundResult.JoinTimedOut; // don't allow cross-faction join as group if (member.GetTeam() != team) - { - errorGuid = member.GetGUID(); return GroupJoinBattlegroundResult.JoinTimedOut; - } // not in the same Battleground level braket, don't let join PvpDifficultyRecord memberBracketEntry = Global.DB2Mgr.GetBattlegroundBracketByLevel(bracketEntry.MapID, member.GetLevel()); if (memberBracketEntry != bracketEntry) @@ -1246,6 +1245,8 @@ namespace Game.Groups return GroupJoinBattlegroundResult.BattlegroundJoinMercenary; } + errorGuid = ObjectGuid.Empty; + // only check for MinPlayerCount since MinPlayerCount == MaxPlayerCount for arenas... if (bgOrTemplate.IsArena() && memberscount != MinPlayerCount) return GroupJoinBattlegroundResult.ArenaTeamPartySize; diff --git a/Source/Game/Handlers/BattleGroundHandler.cs b/Source/Game/Handlers/BattleGroundHandler.cs index 3d024887e..9178194a8 100644 --- a/Source/Game/Handlers/BattleGroundHandler.cs +++ b/Source/Game/Handlers/BattleGroundHandler.cs @@ -459,7 +459,7 @@ namespace Game continue; BattlefieldStatusNeedConfirmation battlefieldStatus; - Global.BattlegroundMgr.BuildBattlegroundStatusNeedConfirmation(out battlefieldStatus, bg, GetPlayer(), i, GetPlayer().GetBattlegroundQueueJoinTime(bgQueueTypeId), Time.GetMSTimeDiff(Time.GetMSTime(), ginfo.RemoveInviteTime), bgQueueTypeId); + Global.BattlegroundMgr.BuildBattlegroundStatusNeedConfirmation(out battlefieldStatus, bg, GetPlayer(), i, GetPlayer().GetBattlegroundQueueJoinTime(bgQueueTypeId), Time.GetMSTimeDiff(GameTime.GetGameTimeMS(), ginfo.RemoveInviteTime), bgQueueTypeId); SendPacket(battlefieldStatus); } else