diff --git a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/bear.json b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/bear.json
index ef45a895..b66bfc3d 100644
--- a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/bear.json
+++ b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/bear.json
@@ -2978,7 +2978,8 @@
"chrispawl89",
"hulkhan",
"LycorisOni",
- "Quik"
+ "Quik",
+ "Badger"
],
"generation": {
"items": {
diff --git a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/usec.json b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/usec.json
index d3bf68d3..8052449f 100644
--- a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/usec.json
+++ b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/bots/types/usec.json
@@ -2969,7 +2969,8 @@
"chrispawl89",
"hulkhan",
"LycorisOni",
- "Quik"
+ "Quik",
+ "Badger"
],
"generation": {
"items": {
diff --git a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/templates/items.json b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/templates/items.json
index 11d2dd92..df4bb233 100644
--- a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/templates/items.json
+++ b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/templates/items.json
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5312d5454b1702f8ad1495d7635e07cec2b70941d46e819f236c5eb084bbe5aa
-size 19115860
+oid sha256:3f35bd85bc19c6c224e0dcc0a05120b7cba412ec885c4f73613c615092a2fe96
+size 19116421
diff --git a/Libraries/SPTarkov.Server.Core/Callbacks/AchievementCallbacks.cs b/Libraries/SPTarkov.Server.Core/Callbacks/AchievementCallbacks.cs
index 10f2e995..92775532 100644
--- a/Libraries/SPTarkov.Server.Core/Callbacks/AchievementCallbacks.cs
+++ b/Libraries/SPTarkov.Server.Core/Callbacks/AchievementCallbacks.cs
@@ -20,7 +20,7 @@ public class AchievementCallbacks(AchievementController achievementController, H
}
///
- /// Handle client/achievement/statistic
+ /// Handle client/achievement/statistic
///
///
public ValueTask Statistic(string url, EmptyRequestData _, MongoId sessionID)
diff --git a/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs b/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
index 46b265e2..97dfaec9 100644
--- a/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
+++ b/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
@@ -324,4 +324,14 @@ public static class ProfileExtensions
// No trader data on player profile, fail check
return false;
}
+
+ ///
+ /// Get Ids of traders with an unlocked status of "false"
+ ///
+ /// Player profile
+ /// Hashset of Trader ids
+ public static HashSet GetLockedTraderIds(this PmcData pmcData)
+ {
+ return pmcData.TradersInfo?.Where(trader => trader.Value.Unlocked == false).Select(t => t.Key).ToHashSet() ?? [];
+ }
}
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
index 25104012..8e9afc30 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
@@ -237,6 +237,7 @@ public class RagfairOfferHelper(
? cloner.Clone(searchRequest.BuildItems.Keys.ToDictionary(key => key, ragfairOfferService.GetOffersOfType))
: searchRequest.BuildItems.Keys.ToDictionary(key => key, ragfairOfferService.GetOffersOfType);
+ var lockedTraders = pmcData.GetLockedTraderIds();
foreach (var (desiredItemTpl, matchingOffers) in buildItems)
{
if (matchingOffers is null)
@@ -266,6 +267,12 @@ public class RagfairOfferHelper(
if (offer.IsTraderOffer())
{
+ // Player hasn't unlocked trader selling this offer, skip
+ if (lockedTraders.Contains(offer.User.Id))
+ {
+ continue;
+ }
+
if (TraderBuyRestrictionReached(offer))
{
continue;
diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs
index 494fd6c3..f379c948 100644
--- a/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs
@@ -389,10 +389,6 @@ public class RagfairPriceService(
protected double AdjustUnreasonablePrice(UnreasonableModPrices unreasonableItemChange, MongoId itemTpl, double price)
{
var itemHandbookPrice = handbookHelper.GetTemplatePrice(itemTpl);
- if (itemHandbookPrice > 0)
- {
- return price;
- }
// Flea price is over handbook price
if (price > itemHandbookPrice * unreasonableItemChange.HandbookPriceOverMultiplier)