Inventory code cleanup

This commit is contained in:
Chomp
2025-08-05 23:48:10 +01:00
parent 8abb25f508
commit ec2cc78b2a
2 changed files with 44 additions and 44 deletions
@@ -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;
}
/// <summary>
@@ -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(
/// </summary>
/// <param name="profile">Profile to get tpl</param>
/// <returns>Stash tpl</returns>
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)
@@ -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;
}
}