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) {