From fa718dc77ac5dfde03bf49e514e069cb951ad537 Mon Sep 17 00:00:00 2001 From: Chomp Date: Thu, 23 Jan 2025 13:43:51 +0000 Subject: [PATCH] Fixed error when editing array while iterating over it --- Libraries/Core/Helpers/RewardHelper.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Libraries/Core/Helpers/RewardHelper.cs b/Libraries/Core/Helpers/RewardHelper.cs index 96774892..9f611014 100644 --- a/Libraries/Core/Helpers/RewardHelper.cs +++ b/Libraries/Core/Helpers/RewardHelper.cs @@ -356,12 +356,16 @@ namespace Core.Helpers // Here we generate a new id for the root item target.Id = _hashUtil.Generate(); - foreach (var mod in mods) + // Add cloned mods to root item array + var clonedMods = _cloner.Clone(mods); + foreach (var mod in clonedMods) { - itemsClone.Add(_cloner.Clone(mod)); + itemsClone.Add(mod); } - rewardItems.AddRange(rewardItems.Concat(_itemHelper.ReparentItemAndChildren(target, itemsClone))); + // Re-parent items + generate new ids to ensure valid ids + var itemsToAdd = _itemHelper.ReparentItemAndChildren(target, itemsClone); + rewardItems.AddRange(itemsToAdd); } return rewardItems;