diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs index 3dd667b8..2d3fbb17 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs @@ -286,16 +286,29 @@ public class ItemHelper( var baseTypes = invalidBaseTypes ?? _defaultInvalidBaseTypes; var itemDetails = GetItem(tpl); - if (!itemDetails.Key) - { - return false; - } + return itemDetails.Key && IsValidItem(itemDetails.Value, baseTypes); + } - return !(itemDetails.Value.Properties.QuestItem ?? false) - && string.Equals(itemDetails.Value.Type, "Item", StringComparison.OrdinalIgnoreCase) - && GetItemPrice(tpl) > 0 - && !itemFilterService.IsItemBlacklisted(tpl) - && baseTypes.All(x => !IsOfBaseclass(tpl, x)); + /// + /// Checks if a tpl is a valid item. Valid meaning that it's an item that can be stored in stash + /// Valid means: + /// Not quest item + /// 'Item' type + /// Not on the invalid base types array + /// Price above 0 roubles + /// + /// Item from DB to check + /// OPTIONAL - Base types deemed invalid + /// true for items that may be in player possession and not quest items + public bool IsValidItem(TemplateItem item, ISet? invalidBaseTypes = null) + { + var baseTypes = invalidBaseTypes ?? _defaultInvalidBaseTypes; + + return !(item.Properties.QuestItem ?? false) + && string.Equals(item.Type, "Item", StringComparison.OrdinalIgnoreCase) + && GetItemPrice(item.Id) > 0 + && !itemFilterService.IsItemBlacklisted(item.Id) + && baseTypes.All(x => !IsOfBaseclass(item.Id, x)); } ///