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();