From db04c513feb72baf5393b04fd1457a3c6ce02520 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 19 Jul 2025 13:22:33 +0100 Subject: [PATCH] Moved heavy fence assort logic after skip checks --- .../Services/FenceService.cs | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Services/FenceService.cs b/Libraries/SPTarkov.Server.Core/Services/FenceService.cs index acdc7c80..00bd665a 100644 --- a/Libraries/SPTarkov.Server.Core/Services/FenceService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/FenceService.cs @@ -810,18 +810,6 @@ public class FenceService( continue; } - // Filter out root items from pool - var childItemsAndSingleRoot = baseFenceAssortClone - .Items.Where(item => - !string.Equals(item.ParentId, "hideout", StringComparison.Ordinal) - || item.Id == chosenBaseAssortRoot.Id - ) - .ToList(); - - var desiredAssortItemAndChildrenClone = _cloner.Clone( - childItemsAndSingleRoot.FindAndReturnChildrenAsItems(chosenBaseAssortRoot.Id) - ); - var itemDbDetails = itemHelper.GetItem(chosenBaseAssortRoot.Template).Value; var itemLimitCount = GetMatchingItemLimit(itemTypeLimits, itemDbDetails.Id); if (itemLimitCount?.current >= itemLimitCount?.max) @@ -858,14 +846,24 @@ public class FenceService( value.current += 1; } + // Filter to only 1 root item + all children + var childItemsAndSingleRoot = baseFenceAssortClone + .Items.Where(item => + !string.Equals(item.ParentId, "hideout", StringComparison.Ordinal) + || item.Id == chosenBaseAssortRoot.Id + ) + .ToList(); + // MUST randomise Ids as its possible to add the same base fence assort twice = duplicate IDs = dead client - desiredAssortItemAndChildrenClone = _cloner - .Clone(desiredAssortItemAndChildrenClone) + var desiredAssortItemAndChildrenClone = _cloner + .Clone( + childItemsAndSingleRoot.FindAndReturnChildrenAsItems(chosenBaseAssortRoot.Id) + ) .ReplaceIDs() .ToList(); desiredAssortItemAndChildrenClone.RemapRootItemId(); - var rootItemBeingAdded = desiredAssortItemAndChildrenClone[0]; + var rootItemBeingAdded = desiredAssortItemAndChildrenClone.FirstOrDefault(); // Set stack size based on possible overrides, e.g. ammos, otherwise set to 1 rootItemBeingAdded.Upd.StackObjectsCount = GetSingleItemStackCount(itemDbDetails);