This commit is contained in:
Alex
2025-01-27 20:57:56 +00:00
3 changed files with 37 additions and 6 deletions
+33 -2
View File
@@ -586,7 +586,30 @@ public class LootGenerator(
/// <returns>List of item with children lists</returns>
public List<List<Item>> GetRandomLootContainerLoot(RewardDetails rewardContainerDetails)
{
throw new NotImplementedException();
List<List<Item>> 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<Item> presetAndMods = _itemHelper.ReplaceIDs(preset.Items);
_itemHelper.RemapRootItemId(presetAndMods);
itemsToReturn.Add(presetAndMods);
continue;
}
List<Item> rewardItem = [new Item { Id = _hashUtil.Generate(), Template = chosenRewardItemTpl }];
itemsToReturn.Add(rewardItem);
}
return itemsToReturn;
}
/// <summary>
@@ -596,7 +619,15 @@ public class LootGenerator(
/// <returns>Single tpl</returns>
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
)
);
}
}
@@ -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)
@@ -43,7 +43,7 @@ public record RewardDetails
public bool FoundInRaid { get; set; }
[JsonPropertyName("rewardTplPool")]
public Dictionary<string, int>? RewardTplPool { get; set; }
public Dictionary<string, double>? RewardTplPool { get; set; }
[JsonPropertyName("rewardTypePool")]
public List<string>? RewardTypePool { get; set; }