diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs index b594630a..a462acd0 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs @@ -167,8 +167,9 @@ public class RagfairOfferHelper( /// Matching RagfairOffer objects public List GetOffersThatRequireItem(SearchRequestData searchRequest, PmcData pmcData) { - // Get all offers that require the desired item and filter out offers from non traders if player below ragifar unlock + // Get all offers that require the desired item and filter out offers from non traders if player below ragfair unlock var requiredOffers = _ragfairRequiredItemsService.GetRequiredItemsById(searchRequest.NeededSearchId); + var tieredFlea = _ragfairConfig.TieredFlea; var tieredFleaLimitTypes = tieredFlea.UnlocksType; return requiredOffers.Where(offer => diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairCategoriesService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairCategoriesService.cs index ea1ab5c7..54c8ca90 100644 --- a/Libraries/SPTarkov.Server.Core/Services/RagfairCategoriesService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/RagfairCategoriesService.cs @@ -36,8 +36,12 @@ public class RagfairCategoriesService( return false; } - // Skip items not for currency when `removeBartering` is enabled + // Skip when: + // Not a 'required' search + // Remove barters checkbox checked + // Offer requirement has children or requirement is not money if ( + string.IsNullOrEmpty(searchRequestData.NeededSearchId) && searchRequestData.RemoveBartering.GetValueOrDefault(false) && (offer.Requirements.Count > 1 || !_paymentHelper.IsMoneyTpl(offer.Requirements.FirstOrDefault().Template)) ) diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs index fa9d6fa1..bcbc0fea 100644 --- a/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs @@ -110,17 +110,6 @@ public class RagfairLinkedItemService( } } - protected void ApplyLinkedItems(HashSet items, TemplateItem item, ref HashSet itemLinkedSet) - { - itemLinkedSet.UnionWith(items); - - foreach (var linkedItemId in items) - { - GetLinkedItems(linkedItemId).Add(item.Id); - } - - } - /// /// Add ammo to revolvers linked item dictionary /// diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairRequiredItemsService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairRequiredItemsService.cs index ce7968f2..518e7e29 100644 --- a/Libraries/SPTarkov.Server.Core/Services/RagfairRequiredItemsService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/RagfairRequiredItemsService.cs @@ -12,11 +12,14 @@ public class RagfairRequiredItemsService( { protected ConcurrentDictionary> _requiredItemsCache = new(); - public List? GetRequiredItemsById(string searchId) + public List GetRequiredItemsById(string searchId) { - _requiredItemsCache.TryGetValue(searchId, out var list); + if (_requiredItemsCache.TryGetValue(searchId, out var list)) + { + return list; + } - return list; + return []; } public void BuildRequiredItemTable() diff --git a/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/StringToNumberFactoryConverter.cs b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/StringToNumberFactoryConverter.cs index 47a09d5e..a437cf7a 100644 --- a/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/StringToNumberFactoryConverter.cs +++ b/Libraries/SPTarkov.Server.Core/Utils/Json/Converters/StringToNumberFactoryConverter.cs @@ -1,4 +1,5 @@ using System.Diagnostics; +using System.Globalization; using System.Reflection; using System.Text.Json; using System.Text.Json.Serialization; @@ -19,15 +20,15 @@ public class StringToNumberFactoryConverter : JsonConverterFactory private class StringToNumberConverter : JsonConverter { - private static readonly MethodInfo? stringParseMethod; + private static readonly MethodInfo? _stringParseMethod; static StringToNumberConverter() { // Do reflection only once to get parse - if (stringParseMethod == null) + if (_stringParseMethod == null) { var underlyingType = Nullable.GetUnderlyingType(typeof(T)) ?? typeof(T); - stringParseMethod = underlyingType.GetMethod("Parse", [typeof(string)]); + _stringParseMethod = underlyingType.GetMethod("Parse", [typeof(string), typeof(IFormatProvider)]); } } @@ -46,9 +47,9 @@ public class StringToNumberFactoryConverter : JsonConverterFactory { var underlyingType = Nullable.GetUnderlyingType(typeToConvert) ?? typeToConvert; - if (stringParseMethod != null) + if (_stringParseMethod != null) { - return (T) stringParseMethod.Invoke(null, [value]); + return (T) _stringParseMethod.Invoke(null, [value, CultureInfo.CreateSpecificCulture("en-US")]); } } catch (Exception ex)