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));
}
///