From fddff23c0d40fb1e907f541c970ef148ce395459 Mon Sep 17 00:00:00 2001 From: Chomp Date: Fri, 14 Mar 2025 19:35:52 +0000 Subject: [PATCH] Improved `CheckAndLockOfferFromPlayerTieredFlea` comments --- .../Helpers/RagfairOfferHelper.cs | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs index c89bcf61..4baea095 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs @@ -104,12 +104,12 @@ public class RagfairOfferHelper( } /// - /// Disable offer if item is flagged by tiered flea config + /// Disable offer if item is flagged by tiered flea config based on player level /// /// Tiered flea settings from ragfair config - /// Ragfair offer to check - /// Dict of item types with player level to be viewable - /// Level of player viewing offer + /// Ragfair offer to evaluate + /// List of item types flagged with a required player level + /// Current level of player viewing offer protected void CheckAndLockOfferFromPlayerTieredFlea( TieredFlea tieredFlea, RagfairOffer offer, @@ -117,10 +117,14 @@ public class RagfairOfferHelper( int playerLevel) { var offerItemTpl = offer.Items.FirstOrDefault().Template; + + // Check if offer item is ammo if (tieredFlea.AmmoTplUnlocks is not null && _itemHelper.IsOfBaseclass(offerItemTpl, BaseClasses.AMMO)) { + // Check if ammo is flagged with a level requirement if (tieredFlea.AmmoTplUnlocks.TryGetValue(offerItemTpl, out var unlockLevel) && playerLevel < unlockLevel) { + // Lock the offer if player's level is below the ammo's unlock requirement offer.Locked = true; return; @@ -132,26 +136,26 @@ public class RagfairOfferHelper( { if (playerLevel < itemLevelRequirement) { + // Lock the offer if player's level is below the item's specific requirement offer.Locked = true; return; } } - // Optimisation - Ensure the item has at least one of the limited base types - if (_itemHelper.IsOfBaseclasses(offerItemTpl, tieredFleaLimitTypes)) - // Loop over flea types + // Optimisation - Skip further checks if the item type isn't in the restricted types list + if (!_itemHelper.IsOfBaseclasses(offerItemTpl, tieredFleaLimitTypes)) { - foreach (var tieredItemType in tieredFleaLimitTypes - .Where(tieredItemType => _itemHelper.IsOfBaseclass(offerItemTpl, tieredItemType))) - { - if (playerLevel < tieredFlea.UnlocksType[tieredItemType]) - { - offer.Locked = true; - } + return; + } - break; - } + // Check if the item belongs to any restricted type and if player level is insufficient + if (tieredFleaLimitTypes + .Where(tieredItemType => _itemHelper.IsOfBaseclass(offerItemTpl, tieredItemType)) + .Any(tieredItemType => playerLevel < tieredFlea.UnlocksType[tieredItemType])) + { + // Players level is below matching types requirement, flag as locked + offer.Locked = true; } }