diff --git a/Libraries/Core/Generators/LootGenerator.cs b/Libraries/Core/Generators/LootGenerator.cs
index 411a4b58..3c6c9563 100644
--- a/Libraries/Core/Generators/LootGenerator.cs
+++ b/Libraries/Core/Generators/LootGenerator.cs
@@ -586,7 +586,30 @@ public class LootGenerator(
/// List of item with children lists
public List> GetRandomLootContainerLoot(RewardDetails rewardContainerDetails)
{
- throw new NotImplementedException();
+ List> itemsToReturn = [];
+
+ // Get random items and add to newItemRequest
+ for (var index = 0; index < rewardContainerDetails.RewardCount; index++) {
+ // Pick random reward from pool, add to request object
+ var chosenRewardItemTpl = PickRewardItem(rewardContainerDetails);
+
+ if (_presetHelper.HasPreset(chosenRewardItemTpl)) {
+ var preset = _presetHelper.GetDefaultPreset(chosenRewardItemTpl);
+
+ // Ensure preset has unique ids and is cloned so we don't alter the preset data stored in memory
+ List- presetAndMods = _itemHelper.ReplaceIDs(preset.Items);
+
+ _itemHelper.RemapRootItemId(presetAndMods);
+ itemsToReturn.Add(presetAndMods);
+
+ continue;
+ }
+
+ List
- rewardItem = [new Item { Id = _hashUtil.Generate(), Template = chosenRewardItemTpl }];
+ itemsToReturn.Add(rewardItem);
+ }
+
+ return itemsToReturn;
}
///
@@ -596,7 +619,15 @@ public class LootGenerator(
/// Single tpl
protected string PickRewardItem(RewardDetails rewardContainerDetails)
{
- throw new NotImplementedException();
+ if (rewardContainerDetails.RewardTplPool is not null && rewardContainerDetails.RewardTplPool.Count > 0) {
+ return _weightedRandomHelper.GetWeightedValue(rewardContainerDetails.RewardTplPool);
+ }
+
+ return _randomUtil.GetArrayValue(
+ GetItemRewardPool([], rewardContainerDetails.RewardTypePool, true, true).ItemPool.Select(
+ (item) => item.Id
+ )
+ );
}
}
diff --git a/Libraries/Core/Models/Spt/Config/InventoryConfig.cs b/Libraries/Core/Models/Spt/Config/InventoryConfig.cs
index 1d52dce2..26e00565 100644
--- a/Libraries/Core/Models/Spt/Config/InventoryConfig.cs
+++ b/Libraries/Core/Models/Spt/Config/InventoryConfig.cs
@@ -43,7 +43,7 @@ public record RewardDetails
public bool FoundInRaid { get; set; }
[JsonPropertyName("rewardTplPool")]
- public Dictionary? RewardTplPool { get; set; }
+ public Dictionary? RewardTplPool { get; set; }
[JsonPropertyName("rewardTypePool")]
public List? RewardTypePool { get; set; }