diff --git a/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs b/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs
index 5152d227..0e49c031 100644
--- a/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs
+++ b/Libraries/SPTarkov.Server.Core/Controllers/InsuranceController.cs
@@ -37,7 +37,6 @@ public class InsuranceController(
RagfairPriceService ragfairPriceService,
ServerLocalisationService serverLocalisationService,
SaveServer saveServer,
- TraderStore traderStore,
ConfigServer configServer,
ICloner cloner
)
@@ -690,7 +689,7 @@ public class InsuranceController(
/// Should item be deleted
protected bool? RollForDelete(MongoId traderId, Item? insuredItem = null)
{
- var trader = traderStore.GetTraderById(traderId);
+ var trader = databaseService.GetTrader(traderId);
if (trader is null)
{
return null;
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs
index 1e2dd598..10d0bd6e 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/ProfileValidatorHelper.cs
@@ -17,8 +17,7 @@ public class ProfileValidatorHelper(
ConfigServer configServer,
DatabaseService databaseService,
ISptLogger logger,
- ServerLocalisationService serverLocalisationService,
- TraderStore traderStore
+ ServerLocalisationService serverLocalisationService
)
{
protected readonly CoreConfig CoreConfig = configServer.GetConfig();
@@ -386,6 +385,6 @@ public class ProfileValidatorHelper(
protected bool DoesTraderExist(MongoId traderId)
{
- return traderStore.GetTraderById(traderId) != null;
+ return databaseService.GetTrader(traderId) != null;
}
}
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs
index dfe8b478..d30233f0 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/TraderHelper.cs
@@ -23,7 +23,6 @@ public class TraderHelper(
HandbookHelper handbookHelper,
ServerLocalisationService serverLocalisationService,
FenceService fenceService,
- TraderStore traderStore,
TimeUtil timeUtil,
RandomUtil randomUtil,
ConfigServer configServer
@@ -490,10 +489,10 @@ public class TraderHelper(
{
highestPrice = 1d; // Default price
var itemHandbookPrice = handbookHelper.GetTemplatePrice(tpl);
- foreach (var trader in traderStore.GetAllTraders())
+ foreach ((var traderKey, var trader) in databaseService.GetTraders())
{
// Get trader and check buy category allows tpl
- var traderBase = databaseService.GetTrader(trader.Id).Base;
+ var traderBase = trader.Base;
if (traderBase is null)
{
@@ -527,6 +526,6 @@ public class TraderHelper(
/// True if a Trader exists with given ID
public bool TraderExists(MongoId traderId)
{
- return traderStore.GetTraderById(traderId) != null;
+ return databaseService.GetTrader(traderId) != null;
}
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs b/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs
deleted file mode 100644
index 0df0854d..00000000
--- a/Libraries/SPTarkov.Server.Core/Models/Trader/ITrader.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using SPTarkov.Server.Core.Models.Common;
-using SPTarkov.Server.Core.Models.Eft.Common.Tables;
-using SPTarkov.Server.Core.Models.Spt.Services;
-
-namespace SPTarkov.Server.Core.Models;
-
-public interface ITrader
-{
- public string Name { get; }
- public MongoId Id { get; }
-}
-
-public abstract record ICustomTrader : ITrader
-{
- public abstract string Name { get; }
- public abstract MongoId Id { get; }
-
- public abstract TraderAssort GetAssort();
-
- public abstract Dictionary> GetQuestAssort();
-
- public abstract TraderBase GetBase();
-
- public virtual List? GetSuits()
- {
- return null;
- }
-
- public virtual List? GetServices()
- {
- return null;
- }
-
- public virtual Dictionary?> GetDialogues()
- {
- return null;
- }
-}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Trader/Traders.cs b/Libraries/SPTarkov.Server.Core/Models/Trader/Traders.cs
deleted file mode 100644
index 80abf510..00000000
--- a/Libraries/SPTarkov.Server.Core/Models/Trader/Traders.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using System.Text.Json.Serialization;
-using SPTarkov.DI.Annotations;
-using SPTarkov.Server.Core.Models.Common;
-using SPTarkov.Server.Core.Models.Enums;
-
-namespace SPTarkov.Server.Core.Models;
-
-[Injectable]
-public record Prapor : ITrader
-{
- public string Name { get; } = "Prapor";
- public MongoId Id { get; } = Traders.PRAPOR;
-}
-
-[Injectable]
-public record Therapist : ITrader
-{
- public string Name { get; } = "Therapist";
- public MongoId Id { get; } = Traders.THERAPIST;
-}
-
-[Injectable]
-public record Fence : ITrader
-{
- public string Name { get; } = "Fence";
- public MongoId Id { get; } = Traders.FENCE;
-}
-
-[Injectable]
-public record Skier : ITrader
-{
- public string Name { get; } = "Skier";
- public MongoId Id { get; } = Traders.SKIER;
-}
-
-[Injectable]
-public record Peacekeeper : ITrader
-{
- public string Name { get; } = "Peacekeeper";
- public MongoId Id { get; } = Traders.PEACEKEEPER;
-}
-
-[Injectable]
-public record Mechanic : ITrader
-{
- public string Name { get; } = "Mechanic";
- public MongoId Id { get; } = Traders.MECHANIC;
-}
-
-[Injectable]
-public record Ragman : ITrader
-{
- public string Name { get; } = "Ragman";
- public MongoId Id { get; } = Traders.RAGMAN;
-}
-
-[Injectable]
-public record Jaeger : ITrader
-{
- public string Name { get; } = "Jaeger";
- public MongoId Id { get; } = Traders.JAEGER;
-}
-
-[Injectable]
-public record LighthouseKeeper : ITrader
-{
- public string Name { get; } = "LighthouseKeeper";
- public MongoId Id { get; } = Traders.LIGHTHOUSEKEEPER;
-}
-
-[Injectable]
-public record Btr : ITrader
-{
- public string Name { get; } = "Btr";
- public MongoId Id { get; } = Traders.BTR;
-}
-
-[Injectable]
-public record Ref : ITrader
-{
- public string Name { get; } = "Ref";
- public MongoId Id { get; } = Traders.REF;
-}
diff --git a/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs b/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs
index 524cf877..03134a3d 100644
--- a/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/DatabaseService.cs
@@ -169,8 +169,6 @@ public class DatabaseService(
{
if (!databaseServer.GetTables().Traders.TryGetValue(traderId, out var desiredTrader))
{
- logger.Error(serverLocalisationService.GetText("database-no_trader_found_with_id", traderId));
-
return null;
}
diff --git a/Libraries/SPTarkov.Server.Core/Services/TraderStore.cs b/Libraries/SPTarkov.Server.Core/Services/TraderStore.cs
deleted file mode 100644
index 94d1d623..00000000
--- a/Libraries/SPTarkov.Server.Core/Services/TraderStore.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-using SPTarkov.DI.Annotations;
-using SPTarkov.Server.Core.DI;
-using SPTarkov.Server.Core.Models;
-using SPTarkov.Server.Core.Models.Common;
-using SPTarkov.Server.Core.Models.Eft.Common.Tables;
-using SPTarkov.Server.Core.Models.Utils;
-
-namespace SPTarkov.Server.Core.Services;
-
-///
-/// Source of truth for all default traders as well as any additional trader a server mod may add.
-///
-[Injectable(InjectionType.Singleton, TypePriority = OnLoadOrder.TraderRegistration)]
-public class TraderStore(
- DatabaseService databaseService,
- IEnumerable injectedTraders,
- ServerLocalisationService localisationService,
- ISptLogger logger
-) : IOnLoad
-{
- private readonly Dictionary _traders = new();
-
- public Task OnLoad()
- {
- logger.Info("Importing traders...");
- var customTraders = 0;
-
- foreach (var trader in injectedTraders)
- {
- if (trader is ICustomTrader customTrader)
- {
- try
- {
- var dbTrader = new Trader
- {
- Assort = customTrader.GetAssort(),
- Base = customTrader.GetBase(),
- QuestAssort = customTrader.GetQuestAssort(),
- Dialogue = customTrader.GetDialogues(),
- Suits = customTrader.GetSuits(),
- Services = customTrader.GetServices(),
- };
- databaseService.GetTraders().Add(trader.Id, dbTrader);
- _traders.Add(trader.Id, trader);
- logger.Info($"Loaded custom trader: {trader.Name}");
- customTraders++;
- }
- catch (Exception e)
- {
- logger.Error(
- localisationService.GetText(
- "trader-unable_to_add_custom_trader",
- new { traderId = trader.Name, error = e.StackTrace }
- )
- );
- }
- }
- else
- {
- _traders.Add(trader.Id, trader);
- }
- }
-
- logger.Info($"Importing traders complete {(customTraders == 0 ? "" : $"[{customTraders} traders loaded]")}");
- return Task.CompletedTask;
- }
-
- ///
- /// Returns a trader by given ID.
- ///
- ///
- ///
- public ITrader? GetTraderById(MongoId traderId)
- {
- return _traders.GetValueOrDefault(traderId);
- }
-
- ///
- /// Returns all traders in the game, including custom traders.
- ///
- ///
- public IEnumerable GetAllTraders()
- {
- return _traders.Values;
- }
-}
diff --git a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs
index c866bc75..ef98068a 100644
--- a/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs
+++ b/Libraries/SPTarkov.Server.Core/Utils/JsonUtil.cs
@@ -20,7 +20,7 @@ public class JsonUtil
ReadCommentHandling = JsonCommentHandling.Skip,
WriteIndented = false,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
- UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow,
+ UnmappedMemberHandling = JsonUnmappedMemberHandling.Skip,
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
};