using System.Collections.Generic; using System.Linq; namespace OmegaLeo.HelperLib.Game.Models { public class LootTable { public List> Loot = new List>(); public void Add(T item, float weight) { Loot.Add(new Loot(item, weight)); } public T Roll(RandomNumberGenerator rng) { float total = Loot.Sum(e => e.Weight); float roll = rng.Range(0f, total); foreach (var e in Loot) { roll -= e.Weight; if (roll <= 0) return e.Item; } return Loot.Last().Item; } } }