diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index d4afb681..33ca7b2c 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -398,7 +398,7 @@ public class InventoryHelper( return; } - // Store details for object, incuding container item will be placed in + // Store details for object, including container item will be placed in itemWithChildren[0].ParentId = playerInventory.SortingTable; itemWithChildren[0].Location = new ItemLocation { @@ -507,39 +507,41 @@ public class InventoryHelper( { var fullProfile = profileHelper.GetFullProfile(sessionId); - // Iterate over all dialogs and look for mesasage with key from request, that has item (and maybe its children) we want to remove + // Iterate over all dialogs and look for message with key from request, that has item (and maybe its children) we want to remove var dialogs = fullProfile.DialogueRecords; foreach (var (_, dialog) in dialogs) { var messageWithReward = dialog.Messages.FirstOrDefault(message => message.Id == removeRequest.FromOwner.Id); - if (messageWithReward is not null) + if (messageWithReward is null) { - // Find item + any possible children and remove them from mails items array - var itemWithChildren = messageWithReward.Items.Data.GetItemWithChildren(removeRequest.Item); - foreach (var itemToDelete in itemWithChildren) + continue; + } + + // Find item + any possible children and remove them from mails items array + var itemWithChildren = messageWithReward.Items.Data.GetItemWithChildren(removeRequest.Item); + foreach (var itemToDelete in itemWithChildren) + { + // Get index of item to remove from reward array + remove it + var indexOfItemToRemove = messageWithReward.Items.Data.IndexOf(itemToDelete); + if (indexOfItemToRemove == -1) { - // Get index of item to remove from reward array + remove it - var indexOfItemToRemove = messageWithReward.Items.Data.IndexOf(itemToDelete); - if (indexOfItemToRemove == -1) - { - logger.Error( - serverLocalisationService.GetText( - "inventory-unable_to_remove_item_restart_immediately", - new { item = removeRequest.Item, mailId = removeRequest.FromOwner.Id } - ) - ); + logger.Error( + serverLocalisationService.GetText( + "inventory-unable_to_remove_item_restart_immediately", + new { item = removeRequest.Item, mailId = removeRequest.FromOwner.Id } + ) + ); - continue; - } - - messageWithReward.Items.Data.RemoveAt(indexOfItemToRemove); + continue; } - // Flag message as having no rewards if all removed - var hasRewardItemsRemaining = messageWithReward?.Items.Data?.Count > 0; - messageWithReward.HasRewards = hasRewardItemsRemaining; - messageWithReward.RewardCollected = !hasRewardItemsRemaining; + messageWithReward.Items.Data.RemoveAt(indexOfItemToRemove); } + + // Flag message as having no rewards if all removed + var hasRewardItemsRemaining = messageWithReward?.Items.Data?.Count > 0; + messageWithReward.HasRewards = hasRewardItemsRemaining; + messageWithReward.RewardCollected = !hasRewardItemsRemaining; } } @@ -557,7 +559,7 @@ public class InventoryHelper( MongoId itemId, int countToRemove, MongoId sessionId, - ItemEventRouterResponse? output + ItemEventRouterResponse output ) { if (itemId.IsEmpty()) @@ -582,10 +584,7 @@ public class InventoryHelper( { itemToReduce.Upd.StackObjectsCount -= remainingCount; remainingCount = 0; - if (output is not null) - { - output.ProfileChanges[sessionId].Items.ChangedItems.Add(itemToReduce); - } + output.ProfileChanges[sessionId].Items.ChangedItems.Add(itemToReduce); } if (remainingCount == 0) @@ -595,7 +594,7 @@ public class InventoryHelper( } } - return output ?? eventOutputHolder.GetOutput(sessionId); + return output; } /// @@ -944,7 +943,7 @@ public class InventoryHelper( } // Look up details of stash in db - var (isValidItem, stashItemDbItem) = itemHelper.GetItem(stashTpl); + var (isValidItem, stashItemDbItem) = itemHelper.GetItem(stashTpl.Value); if (!isValidItem) { logger.Error(serverLocalisationService.GetText("inventory-stash_not_found", stashTpl)); @@ -974,7 +973,7 @@ public class InventoryHelper( /// /// Profile to get tpl /// Stash tpl - protected string? GetProfileStashTpl(PmcData profile) + protected MongoId? GetProfileStashTpl(PmcData profile) { var stashObj = profile.Inventory.Items.FirstOrDefault(item => item.Id == profile.Inventory.Stash); if (stashObj is null) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs index a0e88ab8..4ddb594e 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs @@ -1242,25 +1242,26 @@ public class ItemHelper( var forcedLeft = 0; var forcedRight = 0; - var children = items.GetItemWithChildren(rootItemId); - foreach (var child in children) + var itemWithChildren = items.GetItemWithChildren(rootItemId); + foreach (var item in itemWithChildren) { - var itemTemplate = GetItem(child.Template).Value; + var itemDbTemplate = GetItem(item.Template).Value; // Calculating child ExtraSize - if (itemTemplate.Properties.ExtraSizeForceAdd ?? false) + if (itemDbTemplate.Properties.ExtraSizeForceAdd ?? false) { - forcedUp += itemTemplate.Properties.ExtraSizeUp.Value; - forcedDown += itemTemplate.Properties.ExtraSizeDown.Value; - forcedLeft += itemTemplate.Properties.ExtraSizeLeft.Value; - forcedRight += itemTemplate.Properties.ExtraSizeRight.Value; + forcedUp += itemDbTemplate.Properties.ExtraSizeUp.Value; + forcedDown += itemDbTemplate.Properties.ExtraSizeDown.Value; + forcedLeft += itemDbTemplate.Properties.ExtraSizeLeft.Value; + forcedRight += itemDbTemplate.Properties.ExtraSizeRight.Value; } else { - sizeUp = sizeUp < itemTemplate.Properties.ExtraSizeUp ? itemTemplate.Properties.ExtraSizeUp.Value : sizeUp; - sizeDown = sizeDown < itemTemplate.Properties.ExtraSizeDown ? itemTemplate.Properties.ExtraSizeDown.Value : sizeDown; - sizeLeft = sizeLeft < itemTemplate.Properties.ExtraSizeLeft ? itemTemplate.Properties.ExtraSizeLeft.Value : sizeLeft; - sizeRight = sizeRight < itemTemplate.Properties.ExtraSizeRight ? itemTemplate.Properties.ExtraSizeRight.Value : sizeRight; + sizeUp = sizeUp < itemDbTemplate.Properties.ExtraSizeUp ? itemDbTemplate.Properties.ExtraSizeUp.Value : sizeUp; + sizeDown = sizeDown < itemDbTemplate.Properties.ExtraSizeDown ? itemDbTemplate.Properties.ExtraSizeDown.Value : sizeDown; + sizeLeft = sizeLeft < itemDbTemplate.Properties.ExtraSizeLeft ? itemDbTemplate.Properties.ExtraSizeLeft.Value : sizeLeft; + sizeRight = + sizeRight < itemDbTemplate.Properties.ExtraSizeRight ? itemDbTemplate.Properties.ExtraSizeRight.Value : sizeRight; } }