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