Account for compound items in DialogHelper.GetMessageItemContents (#671)

Co-authored-by: Tyfon <29051038+tyfon7@users.noreply.github.com>
This commit is contained in:
Chomp
2025-10-30 20:14:02 +00:00
committed by GitHub
@@ -1,4 +1,5 @@
using SPTarkov.DI.Annotations; using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Extensions;
using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables; using SPTarkov.Server.Core.Models.Eft.Common.Tables;
using SPTarkov.Server.Core.Models.Eft.Profile; using SPTarkov.Server.Core.Models.Eft.Profile;
@@ -67,9 +68,10 @@ public class DialogueHelper(ISptLogger<DialogueHelper> logger, ProfileHelper pro
message.Items ??= new MessageItems(); message.Items ??= new MessageItems();
message.Items.Data ??= []; message.Items.Data ??= [];
// Check reward count when item being moved isn't in reward list // Check reward count when item being moved (and its children) isn't in reward list
// If count is 0, it means after this move occurs the reward array will be empty and all rewards collected // If count is 0, it means after this move occurs the reward array will be empty and all rewards collected
var remainingItems = message.Items.Data.Where(x => x.Id != itemId); var itemWithChildren = message.Items.Data.GetItemWithChildren(itemId);
var remainingItems = message.Items.Data.Except(itemWithChildren);
if (!remainingItems.Any()) if (!remainingItems.Any())
{ {
message.RewardCollected = true; message.RewardCollected = true;