diff --git a/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs b/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs
index 23392ac4..33783568 100644
--- a/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs
+++ b/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs
@@ -138,7 +138,7 @@ public class TradeController(
)
{
// Skip buying items when player doesn't have needed loyalty
- if (!PlayerMeetsTraderLoyaltyLevelToBuyOffer(fleaOffer, pmcData))
+ if (!pmcData.PlayerMeetsTraderLoyaltyLevelToBuyOffer(fleaOffer))
{
var errorMessage =
$"Unable to buy item: {fleaOffer.Items[0].Template} from trader: {fleaOffer.User.Id} as loyalty level too low, skipping";
@@ -219,30 +219,6 @@ public class TradeController(
ragfairServer.ReduceOfferQuantity(fleaOffer.Id, requestOffer.Count ?? 0);
}
- ///
- /// Does Player have necessary trader loyalty to purchase flea offer
- ///
- /// Flea offer being bought
- /// Player profile
- /// True if player can buy offer
- protected bool PlayerMeetsTraderLoyaltyLevelToBuyOffer(RagfairOffer fleaOffer, PmcData pmcData)
- {
- if (fleaOffer.LoyaltyLevel == 0)
- {
- // No requirement, always passes
- return true;
- }
-
- if (pmcData.TradersInfo.TryGetValue(fleaOffer.User.Id, out var traderInfo))
- {
- // Trader exists in profile ,do loyalty level check
- return traderInfo.LoyaltyLevel >= fleaOffer.LoyaltyLevel;
- }
-
- // No trader data on player profile, fail check
- return false;
- }
-
///
/// Handle SellAllFromSavage event
///
diff --git a/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs b/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
index 8905bfba..0075f49b 100644
--- a/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
+++ b/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
@@ -1,10 +1,9 @@
-using Microsoft.Extensions.Logging;
-using SPTarkov.Server.Core.Models.Common;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Eft.ItemEvent;
+using SPTarkov.Server.Core.Models.Eft.Ragfair;
using SPTarkov.Server.Core.Models.Enums;
-using SPTarkov.Server.Core.Services;
namespace SPTarkov.Server.Core.Extensions;
@@ -289,4 +288,28 @@ public static class ProfileExtensions
}
}
}
+
+ ///
+ /// Does Player have necessary trader loyalty to purchase flea offer
+ ///
+ /// Player profile
+ /// Flea offer being bought
+ /// True if player can buy offer
+ public static bool ProfileMeetsTraderLoyaltyLevelToBuyOffer(this PmcData pmcData, RagfairOffer fleaOffer)
+ {
+ if (fleaOffer.LoyaltyLevel == 0)
+ {
+ // No requirement, always passes
+ return true;
+ }
+
+ if (pmcData.TradersInfo.TryGetValue(fleaOffer.User.Id, out var traderInfo))
+ {
+ // Trader exists in profile ,do loyalty level check
+ return traderInfo.LoyaltyLevel >= fleaOffer.LoyaltyLevel;
+ }
+
+ // No trader data on player profile, fail check
+ return false;
+ }
}
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
index 2cb8d06a..d7e5559d 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
@@ -985,7 +985,6 @@ public class RagfairOfferHelper(
/// True if has condition
protected bool IsConditionItem(Item item)
{
- // thanks typescript, undefined assertion is not returnable since it
// tries to return a multi-type object
if (item.Upd is null)
{