diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs index caa2b909..b46fe977 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs @@ -186,31 +186,37 @@ public class RagfairServerHelper( return weightedRandomHelper.GetWeightedValue(ragfairConfig.Dynamic.Currencies); } - /** - * Given a preset id from globals.json, return an array of items[] with unique ids - * @param item Preset item - * @returns Array of weapon and its children - */ + /// + /// Given a preset id from globals.json, return an array of items[] with unique ids + /// + /// Preset item + /// Collection containing weapon and its children public List GetPresetItems(Item item) { - var preset = cloner.Clone(databaseService.GetGlobals().ItemPresets[item.Id].Items); - return itemHelper.ReparentItemAndChildren(item, preset); + if (!databaseService.GetGlobals().ItemPresets.TryGetValue(item.Id, out var presetToClone)) + { + return []; + } + + // Re-parent and clone the matching preset found + return itemHelper.ReparentItemAndChildren(item, cloner.Clone(presetToClone.Items)); } - /** - * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json - * @param item Preset item - * @returns - */ + /// + /// Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json + /// + /// Preset item + /// Collection of item objects public List GetPresetItemsByTpl(Item item) { var presets = new List(); foreach (var itemId in databaseService.GetGlobals().ItemPresets.Keys) { - if (databaseService.GetGlobals().ItemPresets[itemId].Items[0].Template == item.Template) + if (databaseService.GetGlobals().ItemPresets.TryGetValue(itemId, out var presetsOfItem) + && presetsOfItem.Items?.FirstOrDefault()?.Template == item.Template) { - var presetItems = cloner.Clone(databaseService.GetGlobals().ItemPresets[itemId].Items); - presets.AddRange(itemHelper.ReparentItemAndChildren(item, presetItems)); + // Add a clone of the found preset into list above + presets.AddRange(itemHelper.ReparentItemAndChildren(item, cloner.Clone(presetsOfItem.Items))); } }