diff --git a/Libraries/SPTarkov.Server.Core/Controllers/InventoryController.cs b/Libraries/SPTarkov.Server.Core/Controllers/InventoryController.cs
index 2bec0c98..c958ad09 100644
--- a/Libraries/SPTarkov.Server.Core/Controllers/InventoryController.cs
+++ b/Libraries/SPTarkov.Server.Core/Controllers/InventoryController.cs
@@ -161,7 +161,7 @@ public class InventoryController(
if (itemToAdjust is null)
{
_logger.Error(
- $"Unable find item: {request.Item} to: {request.State} on player {sessionId}to: "
+ $"Unable find item: {request.Item.Value.ToString()} to: {request.State} on player: {sessionId} to: "
);
return;
diff --git a/Libraries/SPTarkov.Server.Core/Extensions/ItemExtensions.cs b/Libraries/SPTarkov.Server.Core/Extensions/ItemExtensions.cs
index 1c513589..6f1074c7 100644
--- a/Libraries/SPTarkov.Server.Core/Extensions/ItemExtensions.cs
+++ b/Libraries/SPTarkov.Server.Core/Extensions/ItemExtensions.cs
@@ -286,16 +286,16 @@ namespace SPTarkov.Server.Core.Extensions
/// list of Item objects
public static List- FindAndReturnChildrenAsItems(
this IEnumerable
- items,
- string baseItemId,
+ MongoId baseItemId,
bool modsOnly = false
)
{
// Use dictionary to make key lookup faster, convert to list before being returned
- OrderedDictionary result = [];
+ OrderedDictionary result = [];
foreach (var childItem in items)
{
// Include itself
- if (string.Equals(childItem.Id, baseItemId, StringComparison.Ordinal))
+ if (childItem.Id == baseItemId)
{
// Root item MUST be at 0 index for things like flea market offers
result.Insert(0, childItem.Id, childItem);
@@ -311,7 +311,8 @@ namespace SPTarkov.Server.Core.Extensions
// Items parentId matches root item AND returned items doesn't contain current child
if (
!result.ContainsKey(childItem.Id)
- && string.Equals(childItem.ParentId, baseItemId, StringComparison.Ordinal)
+ && childItem.ParentId != "hideout"
+ && childItem.ParentId == baseItemId
)
{
foreach (var item in FindAndReturnChildrenAsItems(items, childItem.Id))
diff --git a/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs b/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
index 37ecc9a4..33b42e28 100644
--- a/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
+++ b/Libraries/SPTarkov.Server.Core/Extensions/ProfileExtensions.cs
@@ -1,4 +1,5 @@
-using SPTarkov.Server.Core.Models.Eft.Common;
+using SPTarkov.Server.Core.Models.Common;
+using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Enums;
@@ -125,7 +126,7 @@ namespace SPTarkov.Server.Core.Extensions
return pmcData.IsParentInStash(itemToCheck.Id);
}
- public static bool IsParentInStash(this PmcData pmcData, string itemId)
+ public static bool IsParentInStash(this PmcData pmcData, MongoId itemId)
{
// Item not found / has no parent
var item = pmcData.Inventory.Items.FirstOrDefault(item => item.Id == itemId);
diff --git a/Libraries/SPTarkov.Server.Core/Extensions/TraderAssortExtensions.cs b/Libraries/SPTarkov.Server.Core/Extensions/TraderAssortExtensions.cs
index 2267743f..38740663 100644
--- a/Libraries/SPTarkov.Server.Core/Extensions/TraderAssortExtensions.cs
+++ b/Libraries/SPTarkov.Server.Core/Extensions/TraderAssortExtensions.cs
@@ -1,4 +1,5 @@
-using SPTarkov.Server.Core.Models.Eft.Common.Tables;
+using SPTarkov.Server.Core.Models.Common;
+using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Extensions
{
@@ -14,7 +15,7 @@ namespace SPTarkov.Server.Core.Extensions
/// Modified assort
public static TraderAssort RemoveItemFromAssort(
this TraderAssort assort,
- string itemId,
+ MongoId itemId,
bool isFlea = false
)
{
diff --git a/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs
index d1505a1c..4a91f027 100644
--- a/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs
+++ b/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs
@@ -84,6 +84,17 @@ public class BotEquipmentModGenerator(
"cartridges",
];
+ const string modRecieverKey = "mod_reciever";
+ const string modMount001Key = "mod_mount_001";
+ const string modGasBlockKey = "mod_gas_block";
+ const string modPistolGrip = "mod_pistol_grip";
+ const string modStockKey = "mod_stock";
+ const string modBarrelKey = "mod_barrel";
+ const string modHandguardKey = "mod_handguard";
+ const string modMountKey = "mod_mount";
+ const string modScopeKey = "mod_scope";
+ const string modScope000Key = "mod_scope_000";
+
protected readonly BotConfig _botConfig = _configServer.GetConfig();
///
@@ -186,7 +197,8 @@ public class BotEquipmentModGenerator(
);
switch (plateSlotFilteringOutcome.Result)
{
- case Result.UNKNOWN_FAILURE or Result.NO_DEFAULT_FILTER:
+ case Result.UNKNOWN_FAILURE
+ or Result.NO_DEFAULT_FILTER:
if (_logger.IsLogEnabled(LogLevel.Debug))
{
_logger.Debug(
@@ -929,7 +941,7 @@ public class BotEquipmentModGenerator(
/// Sorted array
public HashSet SortModKeys(
HashSet unsortedSlotKeys,
- string itemTplWithKeysToSort
+ MongoId itemTplWithKeysToSort
)
{
// No need to sort with only 1 item in array
@@ -941,16 +953,6 @@ public class BotEquipmentModGenerator(
var isMount = _itemHelper.IsOfBaseclass(itemTplWithKeysToSort, BaseClasses.MOUNT);
HashSet sortedKeys = [];
- const string modRecieverKey = "mod_reciever";
- const string modMount001Key = "mod_mount_001";
- const string modGasBlockKey = "mod_gas_block";
- const string modPistolGrip = "mod_pistol_grip";
- const string modStockKey = "mod_stock";
- const string modBarrelKey = "mod_barrel";
- const string modHandguardKey = "mod_handguard";
- const string modMountKey = "mod_mount";
- const string modScopeKey = "mod_scope";
- const string modScope000Key = "mod_scope_000";
// Mounts are a special case, they need scopes first before more mounts
if (isMount)
diff --git a/Libraries/SPTarkov.Server.Core/Generators/BotInventoryGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/BotInventoryGenerator.cs
index cc1c24ec..e7d09b79 100644
--- a/Libraries/SPTarkov.Server.Core/Generators/BotInventoryGenerator.cs
+++ b/Libraries/SPTarkov.Server.Core/Generators/BotInventoryGenerator.cs
@@ -645,7 +645,7 @@ public class BotInventoryGenerator(
/// Blacklist to filter mod pool with
/// Filtered pool of mods
public Dictionary> GetFilteredDynamicModsForItem(
- string itemTpl,
+ MongoId itemTpl,
Dictionary> equipmentBlacklist
)
{
diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs
index fbfdb2dd..a0311145 100644
--- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs
+++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs
@@ -394,7 +394,7 @@ public class CompletionQuestGenerator(
/// Completion config from quest.json
/// object of "Completion"-condition
protected QuestCondition GenerateCondition(
- string itemTpl,
+ MongoId itemTpl,
double value,
Completion completionConfig
)
diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/RepeatableQuestRewardGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/RepeatableQuestRewardGenerator.cs
index f82a0cad..88deb6cf 100644
--- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/RepeatableQuestRewardGenerator.cs
+++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/RepeatableQuestRewardGenerator.cs
@@ -818,7 +818,7 @@ public class RepeatableQuestRewardGenerator(
/// Default null, specific trader item base classes
/// True if item is valid reward
public bool IsValidRewardItem(
- string tpl,
+ MongoId tpl,
HashSet itemTplBlacklist,
HashSet itemTypeBlacklist,
List? itemBaseWhitelist = null
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/DialogueHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/DialogueHelper.cs
index 92014615..b584130c 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/DialogueHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/DialogueHelper.cs
@@ -1,4 +1,5 @@
using SPTarkov.DI.Annotations;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Eft.Profile;
using SPTarkov.Server.Core.Models.Utils;
@@ -46,7 +47,7 @@ public class DialogueHelper(ISptLogger logger, ProfileHelper pro
/// Session/player id
/// Item being moved to inventory
/// Collection of items from message
- public List
- GetMessageItemContents(string messageID, string sessionID, string itemId)
+ public List
- GetMessageItemContents(string messageID, string sessionID, MongoId itemId)
{
var fullProfile = profileHelper.GetFullProfile(sessionID);
var dialogueData = fullProfile.DialogueRecords;
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs
index 3361d36f..e899a098 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/InRaidHelper.cs
@@ -65,23 +65,27 @@ public class InRaidHelper(
var insured = _cloner.Clone(serverProfile.InsuredItems);
// Remove equipment and loot items stored on player from server profile in preparation for data from client being added
- _inventoryHelper.RemoveItem(serverProfile, serverProfile.Inventory.Equipment, sessionID);
+ _inventoryHelper.RemoveItem(
+ serverProfile,
+ serverProfile.Inventory.Equipment.Value,
+ sessionID
+ );
// Remove quest items stored on player from server profile in preparation for data from client being added
_inventoryHelper.RemoveItem(
serverProfile,
- serverProfile.Inventory.QuestRaidItems,
+ serverProfile.Inventory.QuestRaidItems.Value,
sessionID
);
// Get all items that have a parent of `serverProfile.Inventory.equipment` (All items player had on them at end of raid)
var postRaidInventoryItems = postRaidProfile.Inventory.Items.FindAndReturnChildrenAsItems(
- postRaidProfile.Inventory.Equipment
+ postRaidProfile.Inventory.Equipment.Value
);
// Get all items that have a parent of `serverProfile.Inventory.questRaidItems` (Quest items player had on them at end of raid)
var postRaidQuestItems = postRaidProfile.Inventory.Items.FindAndReturnChildrenAsItems(
- postRaidProfile.Inventory.QuestRaidItems
+ postRaidProfile.Inventory.QuestRaidItems.Value
);
// Handle Removing of FIR status if player did not survive + not transferring
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs
index e1b0d9b1..3b5dd9f7 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs
@@ -480,12 +480,12 @@ public class InventoryHelper(
/// OPTIONAL - ItemEventRouterResponse
public void RemoveItem(
PmcData profile,
- string? itemId,
+ MongoId itemId,
string sessionId,
ItemEventRouterResponse? output = null
)
{
- if (itemId is null)
+ if (itemId.IsEmpty())
{
_logger.Warning(
_serverLocalisationService.GetText("inventory-unable_to_remove_item_no_id_given")
@@ -617,13 +617,13 @@ public class InventoryHelper(
/// ItemEventRouterResponse
public ItemEventRouterResponse RemoveItemByCount(
PmcData pmcData,
- string? itemId,
+ MongoId itemId,
int countToRemove,
string sessionId,
ItemEventRouterResponse? output
)
{
- if (itemId is null)
+ if (itemId.IsEmpty())
{
return output;
}
@@ -992,12 +992,12 @@ public class InventoryHelper(
/// Based on the item action, determine whose inventories we should be looking at for from and to.
///
/// Item interaction request
- /// Item being moved/split/etc to inventory
+ /// Item being moved/split/etc to inventory
/// Session id / players Id
/// OwnerInventoryItems with inventory of player/scav to adjust
public OwnerInventoryItems GetOwnerInventoryItems(
InventoryBaseActionRequestData request,
- string? item,
+ MongoId itemId,
string sessionId
)
{
@@ -1021,7 +1021,7 @@ public class InventoryHelper(
fromInventoryItems = _dialogueHelper.GetMessageItemContents(
request.FromOwner.Id,
sessionId,
- item
+ itemId
);
fromType = "mail";
}
@@ -1356,7 +1356,7 @@ public class InventoryHelper(
///
/// Container being opened
/// Reward details
- public RewardDetails? GetRandomLootContainerRewardDetails(string itemTpl)
+ public RewardDetails? GetRandomLootContainerRewardDetails(MongoId itemTpl)
{
_inventoryConfig.RandomLootContainers.TryGetValue(itemTpl, out var result);
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs
index 2c03c231..1c0a97d0 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs
@@ -339,7 +339,7 @@ public class ItemHelper(
///
/// Armor item
/// True if item needs some kind of insert
- public bool ArmorItemHasRemovableOrSoftInsertSlots(string itemTpl)
+ public bool ArmorItemHasRemovableOrSoftInsertSlots(MongoId itemTpl)
{
if (!ArmorItemCanHoldMods(itemTpl))
{
@@ -354,7 +354,7 @@ public class ItemHelper(
///
/// Item tpl to check for plate support
/// True when armor can hold plates
- public bool ArmorItemHasRemovablePlateSlots(string itemTpl)
+ public bool ArmorItemHasRemovablePlateSlots(MongoId itemTpl)
{
var itemTemplate = GetItem(itemTpl);
@@ -368,7 +368,7 @@ public class ItemHelper(
///
/// Item tpl to check
/// True if it needs armor inserts
- public bool ItemRequiresSoftInserts(string itemTpl)
+ public bool ItemRequiresSoftInserts(MongoId itemTpl)
{
// Not a slot that takes soft-inserts
if (!ArmorItemCanHoldMods(itemTpl))
@@ -717,7 +717,7 @@ public class ItemHelper(
/// Template id of item to check for
/// List of items to check in
/// List of children of requested item
- public List- FindAndReturnChildrenByAssort(string itemIdToFind, List
- assort)
+ public List
- FindAndReturnChildrenByAssort(MongoId itemIdToFind, List
- assort)
{
List
- list = [];
foreach (var itemFromAssort in assort)
@@ -1263,7 +1263,7 @@ public class ItemHelper(
/// The unique identifier of the item for which to find the main parent.
/// A Dictionary containing item IDs mapped to their corresponding Item objects for quick lookup.
/// The Item object representing the top-most parent of the given item, or null if no such parent exists.
- public Item? GetAttachmentMainParent(string itemId, Dictionary itemsMap)
+ public Item? GetAttachmentMainParent(MongoId itemId, Dictionary itemsMap)
{
var currentItem = itemsMap.FirstOrDefault(x => x.Key == itemId).Value;
@@ -1309,7 +1309,7 @@ public class ItemHelper(
/// The unique identifier of the item for which to find the equipment parent.
/// A Dictionary containing item IDs mapped to their corresponding Item objects for quick lookup.
/// The Item object representing the equipment parent of the given item, or `null` if no such parent exists
- public Item? GetEquipmentParent(string itemId, Dictionary itemsMap)
+ public Item? GetEquipmentParent(MongoId itemId, Dictionary itemsMap)
{
var currentItem = itemsMap.GetValueOrDefault(itemId);
@@ -1731,7 +1731,7 @@ public class ItemHelper(
///
/// Tpl of item to get name of
/// Full name, short name if not found
- public string GetItemName(string itemTpl)
+ public string GetItemName(MongoId itemTpl)
{
var localeDb = _localeService.GetLocaleDb();
var result = localeDb[$"{itemTpl} Name"];
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/QuestHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/QuestHelper.cs
index eaf92f55..0abab336 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/QuestHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/QuestHelper.cs
@@ -2,6 +2,7 @@ using System.Globalization;
using SPTarkov.Common.Extensions;
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Extensions;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Eft.ItemEvent;
@@ -623,7 +624,7 @@ public class QuestHelper(
/// ItemEvent router response
public void ChangeItemStack(
PmcData pmcData,
- string itemId,
+ MongoId itemId,
int newStackSize,
string sessionID,
ItemEventRouterResponse output
@@ -1010,8 +1011,8 @@ public class QuestHelper(
/// All quests to check
/// quest id with 'FindItem' condition id
public Dictionary GetFindItemConditionByQuestItem(
- string itemTpl,
- string[] questIds,
+ MongoId itemTpl,
+ MongoId[] questIds,
List allQuests
)
{
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
index 84dbc02d..56e7e8ab 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairOfferHelper.cs
@@ -881,7 +881,7 @@ public class RagfairOfferHelper(
* @param boughtAmount How many were purchased
* @returns Localised message text
*/
- protected string GetLocalisedOfferSoldMessage(string itemTpl, int boughtAmount)
+ protected string GetLocalisedOfferSoldMessage(MongoId itemTpl, int boughtAmount)
{
// Generate a message to inform that item was sold
var globalLocales = _localeService.GetLocaleDb();
@@ -896,7 +896,7 @@ public class RagfairOfferHelper(
}
// Used to replace tokens in sold message sent to player
- var messageKey = $"{itemTpl} Name";
+ var messageKey = $"{itemTpl.ToString()} Name";
var hasKey = globalLocales.TryGetValue(messageKey, out var value);
var tplVars = new SystemData
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs
index 71104365..194161ca 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/RagfairServerHelper.cs
@@ -99,7 +99,7 @@ public class RagfairServerHelper(
* @param itemTemplateId Item tpl to check is blacklisted
* @returns True if its blacklisted
*/
- protected bool IsItemOnCustomFleaBlacklist(string itemTemplateId)
+ protected bool IsItemOnCustomFleaBlacklist(MongoId itemTemplateId)
{
return ragfairConfig.Dynamic.Blacklist.Custom.Contains(itemTemplateId);
}
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
index 4dd395be..ba5644e9 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
@@ -1,6 +1,7 @@
using System.Text.RegularExpressions;
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Extensions;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -414,7 +415,7 @@ public record PurchaseDetails
public record PurchaseItems
{
- public string ItemId { get; set; }
+ public MongoId ItemId { get; set; }
public double Count { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Common/IdWithCount.cs b/Libraries/SPTarkov.Server.Core/Models/Common/IdWithCount.cs
index 6f068842..88b2225c 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Common/IdWithCount.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Common/IdWithCount.cs
@@ -11,7 +11,7 @@ public record IdWithCount
/// ID of stack to take money from
///
[JsonPropertyName("id")]
- public string? Id { get; set; }
+ public MongoId Id { get; set; }
///
/// Amount of money to take off player for treatment
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/BotBase.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/BotBase.cs
index beff1c13..c5eec3fc 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/BotBase.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/BotBase.cs
@@ -571,7 +571,7 @@ public record DroppedItem
public string? QuestId { get; set; }
- public string? ItemId { get; set; }
+ public MongoId? ItemId { get; set; }
public string? ZoneId { get; set; }
}
@@ -583,7 +583,7 @@ public record FoundInRaidItem
public string? QuestId { get; set; }
- public string? ItemId { get; set; }
+ public MongoId? ItemId { get; set; }
}
public record Victim
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs
index 6ee0244b..2d477bfc 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Quest.cs
@@ -21,7 +21,7 @@ public record Quest
/// _id
///
[JsonPropertyName("_id")]
- public required string Id { get; set; }
+ public required MongoId Id { get; set; }
[JsonPropertyName("canShowNotificationsInGame")]
public required bool CanShowNotificationsInGame { get; set; }
@@ -145,7 +145,7 @@ public record QuestStatus
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("qid")]
- public required string QId { get; set; }
+ public required MongoId QId { get; set; }
[JsonPropertyName("startTime")]
public required double StartTime { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs
index 0131c897..1972b057 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/Trader.cs
@@ -260,10 +260,10 @@ public record TraderAssort
public List
- ? Items { get; set; }
[JsonPropertyName("barter_scheme")]
- public Dictionary>>? BarterScheme { get; set; }
+ public Dictionary>>? BarterScheme { get; set; }
[JsonPropertyName("loyal_level_items")]
- public Dictionary? LoyalLevelItems { get; set; }
+ public Dictionary? LoyalLevelItems { get; set; }
}
public record BarterScheme
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidEatRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidEatRequestData.cs
index 4a480ecc..a5f2e255 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidEatRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidEatRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Inventory;
namespace SPTarkov.Server.Core.Models.Eft.Health;
@@ -9,7 +10,7 @@ public record OffraidEatRequestData : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId Item { get; set; }
[JsonPropertyName("count")]
public int? Count { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidHealRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidHealRequestData.cs
index 000de8ca..8fb42d6f 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidHealRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Health/OffraidHealRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Inventory;
namespace SPTarkov.Server.Core.Models.Eft.Health;
@@ -9,7 +10,7 @@ public record OffraidHealRequestData : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId Item { get; set; }
[JsonPropertyName("part")]
public string? Part { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Hideout/HideoutCustomisation.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Hideout/HideoutCustomisation.cs
index b3307c29..68de6c8d 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Hideout/HideoutCustomisation.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Hideout/HideoutCustomisation.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Models.Eft.Hideout;
@@ -39,7 +40,7 @@ public record HideoutCustomisationGlobal
public bool? IsEnabled { get; set; }
[JsonPropertyName("itemId")]
- public string? ItemId { get; set; }
+ public MongoId? ItemId { get; set; }
}
public record HideoutCustomisationSlot
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/AddItemRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/AddItemRequestData.cs
index dcb2be2e..e9e053ad 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/AddItemRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/AddItemRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
namespace SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -29,5 +30,5 @@ public record ItemToAdd
public bool? IsPreset { get; set; }
[JsonPropertyName("item_id")]
- public string? ItemId { get; set; }
+ public MongoId? ItemId { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryAddRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryAddRequestData.cs
index a00657b3..77cf35ee 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryAddRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryAddRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
namespace SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -8,7 +9,7 @@ public record InventoryAddRequestData : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId? Item { get; set; }
[JsonPropertyName("container")]
public Container? Container { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryBindRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryBindRequestData.cs
index 7c6890ae..5619f309 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryBindRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryBindRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
namespace SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -8,7 +9,7 @@ public record InventoryBindRequestData : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId Item { get; set; }
[JsonPropertyName("index")]
public string? Index { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryCreateMarkerRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryCreateMarkerRequestData.cs
index 54baa978..ac0288a7 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryCreateMarkerRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryCreateMarkerRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -9,7 +10,7 @@ public record InventoryCreateMarkerRequestData : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId? Item { get; set; }
[JsonPropertyName("mapMarker")]
public MapMarker? MapMarker { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryDeleteMarkerRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryDeleteMarkerRequestData.cs
index cf8d9920..efaf2991 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryDeleteMarkerRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryDeleteMarkerRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
namespace SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -8,7 +9,7 @@ public record InventoryDeleteMarkerRequestData : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId? Item { get; set; }
[JsonPropertyName("X")]
public int? X { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryEditMarkerRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryEditMarkerRequestData.cs
index 625ea02f..5ab0b9bd 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryEditMarkerRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/InventoryEditMarkerRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -9,7 +10,7 @@ public record InventoryEditMarkerRequestData : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId? Item { get; set; }
[JsonPropertyName("X")]
public double? X { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/PinOrLockItemRequest.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/PinOrLockItemRequest.cs
index 60a0157a..71f254ef 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/PinOrLockItemRequest.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Inventory/PinOrLockItemRequest.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Models.Eft.Inventory;
@@ -12,7 +13,7 @@ public record PinOrLockItemRequest : InventoryBaseActionRequestData
/// Id of item being pinned
///
[JsonPropertyName("Item")]
- public string? Item { get; set; }
+ public MongoId? Item { get; set; }
///
/// "Pinned"/"Locked"/"Free"
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs
index 49281c06..0aa1490a 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Request;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Utils;
@@ -29,7 +30,7 @@ public record Daum
public string? Action { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId? Item { get; set; }
[JsonPropertyName("items")]
public List
- ? Items { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBuyTradeRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBuyTradeRequestData.cs
index 6432180e..2893526f 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBuyTradeRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBuyTradeRequestData.cs
@@ -6,7 +6,7 @@ namespace SPTarkov.Server.Core.Models.Eft.Trade;
public record ProcessBuyTradeRequestData : ProcessBaseTradeRequestData
{
[JsonPropertyName("item_id")]
- public string? ItemId { get; set; }
+ public MongoId ItemId { get; set; }
[JsonPropertyName("count")]
public int? Count { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Wishlist/ChangeWishlistItemCategoryRequest.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Wishlist/ChangeWishlistItemCategoryRequest.cs
index 3ce50073..54c8671c 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Wishlist/ChangeWishlistItemCategoryRequest.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Wishlist/ChangeWishlistItemCategoryRequest.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Inventory;
namespace SPTarkov.Server.Core.Models.Eft.Wishlist;
@@ -9,7 +10,7 @@ public record ChangeWishlistItemCategoryRequest : InventoryBaseActionRequestData
public Dictionary? ExtensionData { get; set; }
[JsonPropertyName("item")]
- public string? Item { get; set; }
+ public MongoId Item { get; set; }
[JsonPropertyName("category")]
public int? Category { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Spt/Fence/CreateFenceAssortsResult.cs b/Libraries/SPTarkov.Server.Core/Models/Spt/Fence/CreateFenceAssortsResult.cs
index 62871cab..b4310cb1 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Spt/Fence/CreateFenceAssortsResult.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Spt/Fence/CreateFenceAssortsResult.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Models.Spt.Fence;
@@ -12,8 +13,8 @@ public record CreateFenceAssortsResult
public List
>? SptItems { get; set; }
[JsonPropertyName("barter_scheme")]
- public Dictionary>>? BarterScheme { get; set; }
+ public Dictionary>>? BarterScheme { get; set; }
[JsonPropertyName("loyal_level_items")]
- public Dictionary? LoyalLevelItems { get; set; }
+ public Dictionary? LoyalLevelItems { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs b/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs
index 3cf4b235..eced0a90 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
namespace SPTarkov.Server.Core.Models.Spt.Mod;
@@ -15,7 +16,7 @@ public record NewItemFromCloneDetails : NewItemDetailsBase
/// Id of the item to copy and use as a base
///
[JsonPropertyName("itemTplToClone")]
- public string? ItemTplToClone { get; set; }
+ public MongoId? ItemTplToClone { get; set; }
///
/// Item properties that should be applied over the top of the cloned base
@@ -85,7 +86,7 @@ public record CreateItemResult
public bool? Success { get; set; }
[JsonPropertyName("itemId")]
- public string? ItemId { get; set; }
+ public MongoId? ItemId { get; set; }
[JsonPropertyName("errors")]
public List? Errors { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs b/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs
index ea26f278..4300fcce 100644
--- a/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs
@@ -19,11 +19,11 @@ public class BotEquipmentModPoolService(
private readonly Lock _lockObject = new();
private ConcurrentDictionary<
- string,
+ MongoId,
ConcurrentDictionary>
>? _gearModPool;
protected ConcurrentDictionary<
- string,
+ MongoId,
ConcurrentDictionary>
> GearModPool
{
@@ -37,11 +37,11 @@ public class BotEquipmentModPoolService(
}
private ConcurrentDictionary<
- string,
+ MongoId,
ConcurrentDictionary>
>? _weaponModPool;
protected ConcurrentDictionary<
- string,
+ MongoId,
ConcurrentDictionary>
> WeaponModPool
{
@@ -60,7 +60,7 @@ public class BotEquipmentModPoolService(
/// Items to find related mods and store in modPool
/// Mod pool to choose from e.g. "weapon" for weaponModPool
protected ConcurrentDictionary<
- string,
+ MongoId,
ConcurrentDictionary>
> GeneratePool(IEnumerable? inputItems, string poolType)
{
@@ -74,7 +74,7 @@ public class BotEquipmentModPoolService(
}
var pool =
- new ConcurrentDictionary>>();
+ new ConcurrentDictionary>>();
foreach (var item in inputItems)
{
if (item.Properties is null)
@@ -176,7 +176,7 @@ public class BotEquipmentModPoolService(
/// Item to look up
/// Slot to get compatible mods for
/// Hashset of tpls that fit the slot
- public HashSet GetCompatibleModsForWeaponSlot(string itemTpl, string slotName)
+ public HashSet GetCompatibleModsForWeaponSlot(MongoId itemTpl, string slotName)
{
if (WeaponModPool.TryGetValue(itemTpl, out var value))
{
@@ -195,7 +195,7 @@ public class BotEquipmentModPoolService(
///
/// Items tpl to look up mods for
/// Dictionary of mods (keys are mod slot names) with array of compatible mod tpls as value
- public ConcurrentDictionary> GetModsForGearSlot(string itemTpl)
+ public ConcurrentDictionary> GetModsForGearSlot(MongoId itemTpl)
{
return GearModPool.TryGetValue(itemTpl, out var value) ? value : [];
}
@@ -205,7 +205,7 @@ public class BotEquipmentModPoolService(
///
/// Weapons tpl to look up mods for
/// Dictionary of mods (keys are mod slot names) with array of compatible mod tpls as value
- public ConcurrentDictionary> GetModsForWeaponSlot(string itemTpl)
+ public ConcurrentDictionary> GetModsForWeaponSlot(MongoId itemTpl)
{
return WeaponModPool.TryGetValue(itemTpl, out var value) ? value : [];
}
@@ -215,7 +215,7 @@ public class BotEquipmentModPoolService(
///
/// Weapons tpl to look up mods for
/// Dictionary of mods (keys are mod slot names) with array of compatible mod tpls as value
- public Dictionary>? GetRequiredModsForWeaponSlot(string itemTpl)
+ public Dictionary>? GetRequiredModsForWeaponSlot(MongoId itemTpl)
{
var result = new Dictionary>();
@@ -248,7 +248,7 @@ public class BotEquipmentModPoolService(
/// Create weapon mod pool and set generated flag to true
///
protected ConcurrentDictionary<
- string,
+ MongoId,
ConcurrentDictionary>
> GenerateWeaponPool()
{
@@ -266,7 +266,7 @@ public class BotEquipmentModPoolService(
/// Create gear mod pool and set generated flag to true
///
protected ConcurrentDictionary<
- string,
+ MongoId,
ConcurrentDictionary>
> GenerateGearPool()
{
diff --git a/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs b/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs
index 9f67d6a0..fbd46713 100644
--- a/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs
@@ -651,7 +651,7 @@ public class CircleOfCultistService(
/// Item chosen
/// Rouble amount of pool remaining to fill
/// Size of stack
- protected int GetRewardStackSize(string itemTpl, int rewardPoolRemaining)
+ protected int GetRewardStackSize(MongoId itemTpl, int rewardPoolRemaining)
{
if (_itemHelper.IsOfBaseclass(itemTpl, BaseClasses.AMMO))
{
diff --git a/Libraries/SPTarkov.Server.Core/Services/FenceService.cs b/Libraries/SPTarkov.Server.Core/Services/FenceService.cs
index cf9c1f77..242e6809 100644
--- a/Libraries/SPTarkov.Server.Core/Services/FenceService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/FenceService.cs
@@ -167,8 +167,8 @@ public class FenceService(
var createAssort = new CreateFenceAssortsResult
{
SptItems = [],
- BarterScheme = new Dictionary>>(),
- LoyalLevelItems = new Dictionary(),
+ BarterScheme = new Dictionary>>(),
+ LoyalLevelItems = new Dictionary(),
};
createAssort.BarterScheme[root.Id] =
[
@@ -186,7 +186,7 @@ public class FenceService(
/// The item tpl to calculate the fence price for
/// The items (with its children) to calculate fence price for
/// Price of the item for Fence
- public double? GetItemPrice(string itemTpl, List- items)
+ public double? GetItemPrice(MongoId itemTpl, List
- items)
{
return itemHelper.IsOfBaseclass(itemTpl, BaseClasses.AMMO_BOX)
? GetAmmoBoxPrice(items) * traderConfig.Fence.ItemPriceMult
@@ -718,8 +718,8 @@ public class FenceService(
return new TraderAssort
{
Items = [],
- BarterScheme = new Dictionary>>(),
- LoyalLevelItems = new Dictionary(),
+ BarterScheme = new Dictionary>>(),
+ LoyalLevelItems = new Dictionary(),
NextResupply = GetNextFenceUpdateTimestamp(),
};
}
@@ -738,8 +738,8 @@ public class FenceService(
var result = new CreateFenceAssortsResult
{
SptItems = [],
- BarterScheme = new Dictionary>>(),
- LoyalLevelItems = new Dictionary(),
+ BarterScheme = new Dictionary>>(),
+ LoyalLevelItems = new Dictionary(),
};
var baseFenceAssortClone = _cloner.Clone(databaseService.GetTrader(Traders.FENCE).Assort);
@@ -1025,7 +1025,7 @@ public class FenceService(
/// Root item having price adjusted
/// DB template of item
protected void AdjustItemPriceByQuality(
- Dictionary>> barterSchemes,
+ Dictionary>> barterSchemes,
Item itemRoot,
TemplateItem itemTemplate
)
diff --git a/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs b/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs
index 8eaf9ec2..211d1fd4 100644
--- a/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs
@@ -48,7 +48,11 @@ public class CustomItemService(
}
// Clone existing item
- var itemClone = cloner.Clone(tables.Templates.Items[newItemDetails.ItemTplToClone]);
+ tables.Templates.Items.TryGetValue(
+ newItemDetails.ItemTplToClone.Value,
+ out var itemToClone
+ );
+ var itemClone = cloner.Clone(itemToClone);
// Update id and parentId of item
itemClone.Id = newItemId;
diff --git a/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs b/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs
index ae8031de..1dc8893c 100644
--- a/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs
@@ -590,7 +590,7 @@ public class PaymentService(
/// Players stash ID
/// True if it's in inventory
protected InventoryLocation GetItemLocation(
- string itemId,
+ MongoId itemId,
List
- inventoryItems,
string playerStashId
)
diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs
index 4e879806..546cf54d 100644
--- a/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs
@@ -15,9 +15,9 @@ public class RagfairLinkedItemService(
ISptLogger logger
)
{
- protected readonly Dictionary> linkedItemsCache = new();
+ protected readonly Dictionary> linkedItemsCache = new();
- public HashSet GetLinkedItems(string linkedSearchId)
+ public HashSet GetLinkedItems(MongoId linkedSearchId)
{
if (!linkedItemsCache.TryGetValue(linkedSearchId, out var set))
{
@@ -35,7 +35,7 @@ public class RagfairLinkedItemService(
///
/// Item to get sub-items for
/// TemplateItem list
- public List GetLinkedDbItems(string itemTpl)
+ public List GetLinkedDbItems(MongoId itemTpl)
{
var linkedItemsToWeaponTpls = GetLinkedItems(itemTpl);
return linkedItemsToWeaponTpls.Aggregate(
diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs
index e3090dea..f04d9336 100644
--- a/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/RagfairPriceService.cs
@@ -347,7 +347,7 @@ public class RagfairPriceService(
/// Adjusted price of item
protected double AdjustUnreasonablePrice(
UnreasonableModPrices unreasonableItemChange,
- string itemTpl,
+ MongoId itemTpl,
double price
)
{
@@ -402,7 +402,7 @@ public class RagfairPriceService(
/// price of item
/// item template Id being checked
/// adjusted price value in roubles
- protected double AdjustPriceIfBelowHandbook(double itemPrice, string itemTpl)
+ protected double AdjustPriceIfBelowHandbook(double itemPrice, MongoId itemTpl)
{
var itemHandbookPrice = GetStaticPriceForItem(itemTpl);
var priceDifferencePercent = GetPriceDifference(itemHandbookPrice.Value, itemPrice);
@@ -507,7 +507,7 @@ public class RagfairPriceService(
///
/// Item to get highest price of
/// rouble cost
- protected double? GetHighestHandbookOrTraderPriceAsRouble(string itemTpl)
+ protected double? GetHighestHandbookOrTraderPriceAsRouble(MongoId itemTpl)
{
var price = GetStaticPriceForItem(itemTpl);
var traderPrice = _traderHelper.GetHighestSellToTraderPrice(itemTpl);
diff --git a/Libraries/SPTarkov.Server.Core/Services/RepairService.cs b/Libraries/SPTarkov.Server.Core/Services/RepairService.cs
index f0185842..26ac3547 100644
--- a/Libraries/SPTarkov.Server.Core/Services/RepairService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/RepairService.cs
@@ -333,7 +333,7 @@ public class RepairService(
string sessionId,
PmcData pmcData,
List repairKits,
- string itemToRepairId,
+ MongoId itemToRepairId,
ItemEventRouterResponse output
)
{
diff --git a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs
index 963bce7f..d2674bb7 100644
--- a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs
@@ -28,7 +28,7 @@ public class SeasonalEventService(
{
private bool _christmasEventActive;
- protected readonly HashSet _christmasEventItems =
+ protected readonly HashSet _christmasEventItems =
[
ItemTpl.ARMOR_6B13_M_ASSAULT_ARMOR_CHRISTMAS_EDITION,
ItemTpl.BACKPACK_SANTAS_BAG,
@@ -71,7 +71,7 @@ public class SeasonalEventService(
private bool _halloweenEventActive;
- protected readonly HashSet _halloweenEventItems =
+ protected readonly HashSet _halloweenEventItems =
[
ItemTpl.HEADWEAR_JACKOLANTERN_TACTICAL_PUMPKIN_HELMET,
ItemTpl.FACECOVER_FACELESS_MASK,
@@ -103,7 +103,7 @@ public class SeasonalEventService(
/// Get an array of christmas items found in bots inventories as loot
///
/// array
- public HashSet GetChristmasEventItems()
+ public HashSet GetChristmasEventItems()
{
return _christmasEventItems;
}
@@ -112,17 +112,17 @@ public class SeasonalEventService(
/// Get an array of halloween items found in bots inventories as loot
///
/// array
- public HashSet GetHalloweenEventItems()
+ public HashSet GetHalloweenEventItems()
{
return _halloweenEventItems;
}
- public bool ItemIsChristmasRelated(string itemTpl)
+ public bool ItemIsChristmasRelated(MongoId itemTpl)
{
return _christmasEventItems.Contains(itemTpl);
}
- public bool ItemIsHalloweenRelated(string itemTpl)
+ public bool ItemIsHalloweenRelated(MongoId itemTpl)
{
return _halloweenEventItems.Contains(itemTpl);
}
@@ -132,7 +132,7 @@ public class SeasonalEventService(
///
/// item tpl to check for
///
- public bool ItemIsSeasonalRelated(string itemTpl)
+ public bool ItemIsSeasonalRelated(MongoId itemTpl)
{
return _christmasEventItems.Contains(itemTpl) || _halloweenEventItems.Contains(itemTpl);
}
@@ -157,12 +157,12 @@ public class SeasonalEventService(
var items = new HashSet();
if (!ChristmasEventEnabled())
{
- items.UnionWith(_christmasEventItems.ToMongoIds());
+ items.UnionWith(_christmasEventItems);
}
if (!HalloweenEventEnabled())
{
- items.UnionWith(_halloweenEventItems.ToMongoIds());
+ items.UnionWith(_halloweenEventItems);
}
return items;