From 993a5f7e8ac83a1a6004c810c19c4214bf98e174 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sun, 25 Aug 2024 00:26:21 -0400 Subject: [PATCH] Core/DataStores: Sort ConditionalContentTuning container by OrderIndex Port From (https://github.com/TrinityCore/TrinityCore/commit/b46bba86664a1e875d5dc0513e70726e52cb824b) --- Source/Game/DataStorage/DB2Manager.cs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Source/Game/DataStorage/DB2Manager.cs b/Source/Game/DataStorage/DB2Manager.cs index 9fa861010..70b2b7a7c 100644 --- a/Source/Game/DataStorage/DB2Manager.cs +++ b/Source/Game/DataStorage/DB2Manager.cs @@ -236,7 +236,15 @@ namespace Game.DataStorage _conditionalChrModelsByChrModelId[conditionalChrModel.ChrModelID] = conditionalChrModel; foreach (ConditionalContentTuningRecord conditionalContentTuning in ConditionalContentTuningStorage.Values) - _conditionalContentTuning.Add(conditionalContentTuning.ParentContentTuningID, conditionalContentTuning); + { + if (!_conditionalContentTuning.ContainsKey(conditionalContentTuning.ParentContentTuningID)) + _conditionalContentTuning[conditionalContentTuning.ParentContentTuningID] = new(); + + _conditionalContentTuning[conditionalContentTuning.ParentContentTuningID].Add(conditionalContentTuning); + } + + foreach (var (parentContentTuningId, conditionalContentTunings) in _conditionalContentTuning) + conditionalContentTunings.OrderBy(p => p.OrderIndex); foreach (ContentTuningXExpectedRecord contentTuningXExpectedStat in ContentTuningXExpectedStorage.Values) { @@ -1068,9 +1076,11 @@ namespace Game.DataStorage public uint GetRedirectedContentTuningId(uint contentTuningId, uint redirectFlag) { - foreach (var conditionalContentTuning in _conditionalContentTuning.LookupByKey(contentTuningId)) - if ((conditionalContentTuning.RedirectFlag & redirectFlag) != 0) - return (uint)conditionalContentTuning.RedirectContentTuningID; + var conditionalContentTunings = _conditionalContentTuning.LookupByKey(contentTuningId); + if (conditionalContentTunings != null) + foreach (var conditionalContentTuning in conditionalContentTunings) + if ((conditionalContentTuning.RedirectFlag & redirectFlag) != 0) + return (uint)conditionalContentTuning.RedirectContentTuningID; return contentTuningId; } @@ -2289,7 +2299,7 @@ namespace Game.DataStorage Dictionary> _chrCustomizationRequiredChoices = new(); ChrSpecializationRecord[][] _chrSpecializationsByIndex = new ChrSpecializationRecord[(int)Class.Max + 1][]; Dictionary _conditionalChrModelsByChrModelId = new(); - MultiMap _conditionalContentTuning = new(); + Dictionary> _conditionalContentTuning = new(); List<(uint, int)> _contentTuningLabels = new(); MultiMap _currencyContainers = new(); MultiMap _curvePoints = new();