diff --git a/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs b/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs index 98517c2f..c072cfae 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs @@ -80,7 +80,7 @@ public class RagfairController( public GetOffersResult GetOffers(MongoId sessionID, SearchRequestData searchRequest) { var profile = profileHelper.GetFullProfile(sessionID); - var itemsToAdd = ragfairHelper.FilterCategories(sessionID, searchRequest); + var itemsToAdd = ragfairHelper.FilterCategories(sessionID, searchRequest).ToHashSet(); var traderAssorts = ragfairHelper.GetDisplayableAssorts(sessionID); var result = new GetOffersResult { @@ -311,7 +311,7 @@ public class RagfairController( /// Array of offers protected List GetOffersForSearchType( SearchRequestData searchRequest, - List itemsToAdd, + HashSet itemsToAdd, Dictionary traderAssorts, PmcData pmcProfile ) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs index b1dbaa5b..32caa5b4 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs @@ -55,7 +55,7 @@ public class RagfairOfferHelper( /// Offers the player should see public List GetValidOffers( SearchRequestData searchRequest, - List itemsToAdd, + HashSet itemsToAdd, Dictionary traderAssorts, PmcData pmcData ) @@ -197,7 +197,7 @@ public class RagfairOfferHelper( /// RagfairOffer array public List GetOffersForBuild( SearchRequestData searchRequest, - List itemsToAdd, + HashSet itemsToAdd, Dictionary traderAssorts, PmcData pmcData ) @@ -327,9 +327,9 @@ public class RagfairOfferHelper( /// Player profile /// Player cannot view flea yet/ever /// True = should be shown to player - private bool IsDisplayableOffer( + protected bool IsDisplayableOffer( SearchRequestData searchRequest, - List itemsToAdd, + HashSet itemsToAdd, Dictionary traderAssorts, RagfairOffer offer, PmcData pmcProfile, @@ -837,9 +837,6 @@ public class RagfairOfferHelper( protected bool PassesSearchFilterCriteria(SearchRequestData searchRequest, RagfairOffer offer, PmcData pmcData) { var isDefaultUserOffer = offer.User.MemberType == MemberCategory.Default; - var offerRootItem = offer.Items.FirstOrDefault(); - var offerMoneyTypeTpl = offer.Requirements.FirstOrDefault().TemplateId; - if (pmcData.Info.Level < databaseService.GetGlobals().Configuration.RagFair.MinUserLevel && isDefaultUserOffer) // Skip item if player is < global unlock level (default is 15) and item is from a dynamically generated source { @@ -865,6 +862,7 @@ public class RagfairOfferHelper( return false; } + var offerRootItem = offer.Items.FirstOrDefault(); if (searchRequest.QuantityFrom > 0 && offerRootItem.Upd.StackObjectsCount < searchRequest.QuantityFrom) // Too few items to offer { @@ -909,15 +907,20 @@ public class RagfairOfferHelper( } } - if (searchRequest.Currency > 0 && paymentHelper.IsMoneyTpl(offerMoneyTypeTpl)) + if (searchRequest.Currency > 0) { - // Only want offers with specific currency - if ( - ragfairHelper.GetCurrencyTag(offerMoneyTypeTpl) != ragfairHelper.GetCurrencyTag(searchRequest.Currency.GetValueOrDefault(0)) - ) + var offerMoneyTypeTpl = offer.Requirements.FirstOrDefault().TemplateId; + if (paymentHelper.IsMoneyTpl(offerMoneyTypeTpl)) { - // Offer is for different currency to what search params allow, skip - return false; + // Only want offers with specific currency + if ( + ragfairHelper.GetCurrencyTag(offerMoneyTypeTpl) + != ragfairHelper.GetCurrencyTag(searchRequest.Currency.GetValueOrDefault(0)) + ) + { + // Offer is for different currency to what search params allow, skip + return false; + } } }