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)