From 096ec842ba5acb39102151572e403db4cdc08312 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 19 Jul 2025 14:06:49 +0100 Subject: [PATCH] Created overload of `IsValidItem` --- .../Helpers/ItemHelper.cs | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) 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)); } ///