public static class LootEvaluatorRolls a table. The same evaluator the editor's simulator runs.
Remarks
Reproducible from the event id, which is doc 28 § Loot's requirement and not a nicety. The stream is seeded from (eventId, player) and nothing else, so a support ticket about a drop can be recomputed a year later — which is what makes "the log says you rolled a 3" answerable.
⚠ Therefore the evaluation order is part of the contract. Independent rows first, in the order they were authored, then the weighted picks; a nested table is rolled where its row sits. Reordering the phases, or sorting the rows, would change what every existing event id produces.
⚠ A row whose conditions fail is absent, not skipped. The remaining weights are renormalised over what is left, which is what a designer writing "only on Heroic" means — the alternative is a table that quietly drops nothing a fraction of the time.
Fields and properties (1)
public const int MaximumDepthHow deep a table may nest. Refused beyond, rather than recursing for ever.
Methods (3)
public static LootResult Roll(LootLibrary loot, LootTable table, ulong eventId, ulong player = 0, LootContext? context = null, IPityStore? pity = null)Rolls a table once for one player.
public static IReadOnlyList<LootResult> Roll(LootLibrary loot, LootTable table, ulong eventId, LootDistribution distribution, IReadOnlyList<ulong> participants, LootContext? context = null, IPityStore? pity = null)Rolls a table for a group, honouring the distribution.
public static float PityChance(float chance, PityPolicyDefinition policy, int attempts)What a row's chance is after a run of bad luck.
Used by (6)
- LootOutlineVixen.Editor.Gameplay.Loot
- LootSimulatorVixen.Editor.Gameplay.Loot
- LootSimulatorTestsVixen.Editor.Gameplay.Loot.Tests
- LootDistributionTestsVixen.Gameplay.Loot.Tests
- LootRollTestsVixen.Gameplay.Loot.Tests
- PityTestsVixen.Gameplay.Loot.Tests