From 4f5571c2d4c9cb06c1af63fd03489e61e13d7a6d Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 5 Jul 2025 12:35:03 +0100 Subject: [PATCH] Converted more ids to MongoId --- .../Controllers/InventoryController.cs | 2 +- .../Extensions/ItemExtensions.cs | 9 ++++--- .../Extensions/ProfileExtensions.cs | 5 ++-- .../Extensions/TraderAssortExtensions.cs | 5 ++-- .../Generators/BotEquipmentModGenerator.cs | 26 ++++++++++--------- .../Generators/BotInventoryGenerator.cs | 2 +- .../CompletionQuestGenerator.cs | 2 +- .../RepeatableQuestRewardGenerator.cs | 2 +- .../Helpers/DialogueHelper.cs | 3 ++- .../Helpers/InRaidHelper.cs | 12 ++++++--- .../Helpers/InventoryHelper.cs | 16 ++++++------ .../Helpers/ItemHelper.cs | 14 +++++----- .../Helpers/QuestHelper.cs | 7 ++--- .../Helpers/RagfairOfferHelper.cs | 4 +-- .../Helpers/RagfairServerHelper.cs | 2 +- .../Helpers/TradeHelper.cs | 3 ++- .../Models/Common/IdWithCount.cs | 2 +- .../Models/Eft/Common/Tables/BotBase.cs | 4 +-- .../Models/Eft/Common/Tables/Quest.cs | 4 +-- .../Models/Eft/Common/Tables/Trader.cs | 4 +-- .../Eft/Health/OffraidEatRequestData.cs | 3 ++- .../Eft/Health/OffraidHealRequestData.cs | 3 ++- .../Eft/Hideout/HideoutCustomisation.cs | 3 ++- .../Eft/Inventory/AddItemRequestData.cs | 3 ++- .../Eft/Inventory/InventoryAddRequestData.cs | 3 ++- .../Eft/Inventory/InventoryBindRequestData.cs | 3 ++- .../InventoryCreateMarkerRequestData.cs | 3 ++- .../InventoryDeleteMarkerRequestData.cs | 3 ++- .../InventoryEditMarkerRequestData.cs | 3 ++- .../Eft/Inventory/PinOrLockItemRequest.cs | 3 ++- .../Eft/ItemEvent/ItemEventRouterRequest.cs | 3 ++- .../Eft/Trade/ProcessBuyTradeRequestData.cs | 2 +- .../ChangeWishlistItemCategoryRequest.cs | 3 ++- .../Spt/Fence/CreateFenceAssortsResult.cs | 5 ++-- .../Models/Spt/Mod/NewItemDetails.cs | 5 ++-- .../Services/BotEquipmentModPoolService.cs | 24 ++++++++--------- .../Services/CircleOfCultistService.cs | 2 +- .../Services/FenceService.cs | 16 ++++++------ .../Services/Mod/CustomItemService.cs | 6 ++++- .../Services/PaymentService.cs | 2 +- .../Services/RagfairLinkedItemService.cs | 6 ++--- .../Services/RagfairPriceService.cs | 6 ++--- .../Services/RepairService.cs | 2 +- .../Services/SeasonalEventService.cs | 18 ++++++------- 44 files changed, 144 insertions(+), 114 deletions(-) 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;