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/Helpers/DurabilityLimitsHelper.cs b/Libraries/Core/Helpers/DurabilityLimitsHelper.cs
index 34955ea3..6175c5e4 100644
--- a/Libraries/Core/Helpers/DurabilityLimitsHelper.cs
+++ b/Libraries/Core/Helpers/DurabilityLimitsHelper.cs
@@ -229,17 +229,17 @@ public class DurabilityLimitsHelper(
{
if (botRole is null or "default")
{
- return _botConfig.Durability.Default.Weapon.HighestMax;
+ return _botConfig.Durability.Default.Weapon.MaxDelta;
}
if (botRole == "pmc")
{
- return _botConfig.Durability.Pmc.Weapon.HighestMax;
+ return _botConfig.Durability.Pmc.Weapon.MaxDelta;
}
_botConfig.Durability.BotDurabilities.TryGetValue(botRole, out var value);
- return value.Weapon.HighestMax;
+ return value.Weapon.MaxDelta;
}
protected int GetMinArmorDeltaFromConfig(string? botRole = null)
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; }