From efe9472f8b3687a0b6c37e786a30293fc3fd8b8c Mon Sep 17 00:00:00 2001 From: Chomp Date: Thu, 7 Aug 2025 10:54:09 +0100 Subject: [PATCH] Moved trader info lookup outside of loop - `StripLockedLoyaltyAssort` --- .../SPTarkov.Server.Core/Helpers/AssortHelper.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs index fc0165ab..870fa062 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/AssortHelper.cs @@ -112,13 +112,17 @@ public class AssortHelper(ISptLogger logger, ServerLocalisationSer return strippedAssort; } - // Remove items restricted by loyalty levels above those reached by the player - foreach (var item in assort.LoyalLevelItems) + // Get trader info from profile + // Assumption - Assort is for single trader only + if (!pmcProfile.TradersInfo.TryGetValue(traderId, out var traderInfo)) { - if (pmcProfile.TradersInfo.TryGetValue(traderId, out var info) && assort.LoyalLevelItems[item.Key] > info.LoyaltyLevel) - { - strippedAssort = assort.RemoveItemFromAssort(item.Key); - } + return assort; + } + + // Remove items restricted by loyalty levels above those reached by the player + foreach (var item in assort.LoyalLevelItems.Where(item => assort.LoyalLevelItems[item.Key] > traderInfo.LoyaltyLevel)) + { + strippedAssort = assort.RemoveItemFromAssort(item.Key); } return strippedAssort;