@yipe/dice 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +278 -8
  2. package/dist/builder/ac.d.ts +44 -1
  3. package/dist/builder/ac.d.ts.map +1 -1
  4. package/dist/builder/arguments.d.ts +6 -0
  5. package/dist/builder/arguments.d.ts.map +1 -0
  6. package/dist/builder/ast.d.ts +36 -7
  7. package/dist/builder/ast.d.ts.map +1 -1
  8. package/dist/builder/attack.d.ts +88 -5
  9. package/dist/builder/attack.d.ts.map +1 -1
  10. package/dist/builder/dc.d.ts +13 -0
  11. package/dist/builder/dc.d.ts.map +1 -1
  12. package/dist/builder/example.d.ts +11 -15
  13. package/dist/builder/example.d.ts.map +1 -1
  14. package/dist/builder/expression.d.ts +72 -0
  15. package/dist/builder/expression.d.ts.map +1 -0
  16. package/dist/builder/factory.d.ts +2 -3
  17. package/dist/builder/factory.d.ts.map +1 -1
  18. package/dist/builder/index.cjs +3574 -1359
  19. package/dist/builder/index.cjs.map +1 -1
  20. package/dist/builder/index.js +3567 -1360
  21. package/dist/builder/index.js.map +1 -1
  22. package/dist/builder/nodes.d.ts +7 -1
  23. package/dist/builder/nodes.d.ts.map +1 -1
  24. package/dist/builder/prob.d.ts +9 -0
  25. package/dist/builder/prob.d.ts.map +1 -1
  26. package/dist/builder/roll.d.ts +151 -21
  27. package/dist/builder/roll.d.ts.map +1 -1
  28. package/dist/builder/save.d.ts +6 -1
  29. package/dist/builder/save.d.ts.map +1 -1
  30. package/dist/builder/types.d.ts +18 -0
  31. package/dist/builder/types.d.ts.map +1 -1
  32. package/dist/common/bounce.d.ts +24 -11
  33. package/dist/common/bounce.d.ts.map +1 -1
  34. package/dist/common/lru-cache.d.ts +29 -1
  35. package/dist/common/lru-cache.d.ts.map +1 -1
  36. package/dist/index.cjs +1131 -402
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.js +1131 -402
  39. package/dist/index.js.map +1 -1
  40. package/dist/parser/dice.d.ts +52 -16
  41. package/dist/parser/dice.d.ts.map +1 -1
  42. package/dist/parser/parser.d.ts +1 -5
  43. package/dist/parser/parser.d.ts.map +1 -1
  44. package/dist/parser/rollType.d.ts +4 -4
  45. package/dist/parser/scaleDice.d.ts +14 -0
  46. package/dist/parser/scaleDice.d.ts.map +1 -0
  47. package/dist/pmf/mixture.d.ts +17 -3
  48. package/dist/pmf/mixture.d.ts.map +1 -1
  49. package/dist/pmf/pmf.d.ts +118 -33
  50. package/dist/pmf/pmf.d.ts.map +1 -1
  51. package/dist/pmf/query.d.ts +25 -12
  52. package/dist/pmf/query.d.ts.map +1 -1
  53. package/dist/turn/effects.d.ts +114 -0
  54. package/dist/turn/effects.d.ts.map +1 -0
  55. package/dist/turn/index.d.ts +3 -1
  56. package/dist/turn/index.d.ts.map +1 -1
  57. package/dist/turn/plan.d.ts +101 -21
  58. package/dist/turn/plan.d.ts.map +1 -1
  59. package/dist/turn/state.d.ts +14 -8
  60. package/dist/turn/state.d.ts.map +1 -1
  61. package/dist/turn/turn.d.ts +127 -26
  62. package/dist/turn/turn.d.ts.map +1 -1
  63. package/dist/turn/types.d.ts +154 -17
  64. package/dist/turn/types.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -6,22 +6,51 @@ export interface DicePrivateData {
6
6
  isDCCheck?: boolean;
7
7
  /** The "other" distribution recorded by {@link Dice.combine}. */
8
8
  except?: Dice | Record<string, never>;
9
- /** Keep-highest/lowest selector applied when a die is multiplied out. */
10
- keep?: (values: number[]) => number;
11
- /** Set on a freshly parsed flat `dN`/`hdN` atom: its own face count and whether it rerolls a
12
- * natural 1 once (Halfling Luck). Read by {@link parseExpression} in parser.ts to recover a
13
- * base check die's natural-max identity after it has been convolved with bonus to-hit dice
14
- * and modifiers, for a correct plain-`crit` probability. See parser.ts's "Track a flat ...
15
- * base check die" comment. */
16
- checkDie?: {
17
- sides: number;
18
- rerollOne: boolean;
9
+ /** Set by a keep (`4kh3`, `2kl1`) on the dice it keeps from: how many of the repeated copies are
10
+ * kept, and whether the lowest or the highest. A keep of one (`2kh1d20`) keeps a single natural roll. */
11
+ keep?: {
12
+ kept: number;
13
+ lowest: boolean;
19
14
  };
20
- /** Set on the result of a tracked AC gate (see parser.ts): the exact "natural max, any bonus
21
- * roll" sub-distribution, already isolated from the rest of the to-hit total. A plain `crit`
22
- * clause reads this directly instead of peeling the combined expression's single highest
23
- * face, which is wrong whenever bonus dice are present. */
24
- natMaxCritSlice?: Dice;
15
+ /** The natural roll of an attack check, followed through every op applied to it, so a crit is the
16
+ * natural-max event (or an `xcrit` range of natural faces) at any bonus roll. It is the check's one
17
+ * d20 wherever it sits in the sum, or with no d20 its largest die; other dice are bonus dice. Read
18
+ * and written by {@link parseExpression} in parser.ts; set on every freshly parsed `dN`/`hdN` atom. */
19
+ critTrack?: CritTrack;
20
+ /** Set instead of {@link critTrack} on a value whose natural die has no single natural roll to
21
+ * follow (`2d20`, `d20 + d20`, `(d20 + 1d4)!`, a bonus pool like `2d4`): that die's size, so a
22
+ * die it outranks never passes for the natural roll. Read and written by parser.ts. */
23
+ untrackedSides?: number;
24
+ /** Set on a value built from numbers alone, with no die anywhere in it but an AC or DC target. As an
25
+ * attack check it has no natural roll, so its crit mass is exactly 0. Read and written by parser.ts. */
26
+ noDie?: true;
27
+ /** The operands of an `&` mix, each carried through every op since with its own natural roll, so the
28
+ * mix crits where a branch does, at that branch's share. Read and written by parser.ts. */
29
+ branches?: readonly Dice[];
30
+ /** Set on the result of an `AC` gate: a following `*` is an attack's hit payload, which crits
31
+ * even with no crit clause. Read by {@link parseExpression} in parser.ts. */
32
+ isACCheck?: boolean;
33
+ /** Set on an attack whose crit is its hit payload doubled (no crit clause): the payload's
34
+ * text, so a trailing hit-only term joins the payload and doubles with it. See parser.ts. */
35
+ implicitCrit?: {
36
+ payload: string;
37
+ };
38
+ /** Set on an attack's payload: the result of an AC check's `*`, and of each hit-only term after it.
39
+ * A landed hit that deals 0 there is recorded under `hit` at 0, where the misses also sit, and a
40
+ * later hit-only term keeps it (see {@link Dice.calculateHitDistribution}). Read and written by parser.ts. */
41
+ attackPayload?: true;
42
+ }
43
+ /**
44
+ * An attack check's natural roll. `slice(f)` is the check's share where the kept natural roll is f,
45
+ * in the check's own counts: every op after the natural die acts face by face, so replaying the
46
+ * ops on face f's weight gives exactly that share, and a mix of checks adds its branches' shares.
47
+ */
48
+ export interface CritTrack {
49
+ /** The natural die's size. */
50
+ readonly sides: number;
51
+ /** The check is its natural roll itself, with no op since (`d20`, `2kh1d20`, `d20 > d20`, `d20 & d20`). */
52
+ readonly bare: boolean;
53
+ readonly slice: (face: number) => Dice;
25
54
  }
26
55
  /**
27
56
  * @internal
@@ -42,7 +71,6 @@ export declare class Dice {
42
71
  calculateHitDistribution(): DamageDistribution;
43
72
  private ensureHitDistribution;
44
73
  private binaryOp;
45
- private removeFaces;
46
74
  getFaceEntries(): [number, number][];
47
75
  getFaceMap(): DamageDistribution;
48
76
  get(face: number): number;
@@ -54,6 +82,7 @@ export declare class Dice {
54
82
  maxFace(): number;
55
83
  minFace(): number;
56
84
  increment(face: number, count: number): void;
85
+ /** Scales every face count, and every outcome's counts with it, so each outcome keeps its share. */
57
86
  normalize(scalar: number): Dice;
58
87
  add(other: Dice | number): Dice;
59
88
  subtract(other: Dice | number): Dice;
@@ -68,11 +97,18 @@ export declare class Dice {
68
97
  divide(other: Dice | number): Dice;
69
98
  divideRoundUp(other: Dice | number): Dice;
70
99
  divideRoundDown(other: Dice | number): Dice;
100
+ /** A divisor that can be 0 has no quotient there. A 0 face with no weight is never rolled, so it passes. */
101
+ private assertNonZeroDivisor;
71
102
  and(other: Dice | number): Dice;
72
103
  private checkTarget;
73
104
  dc(other: Dice | number): Dice;
74
105
  ac(other: Dice | number): Dice;
75
106
  deleteFace(face: number): Dice;
107
+ /**
108
+ * Roll once and, on a result in `toReroll`'s faces, roll again and keep the second roll. Each
109
+ * result keeps its own weight: with T the total count and c_R the count on the rerolled faces,
110
+ * face v's new count is c_v·(T·[v∉R] + c_R), i.e. p′(v) = p(v)·[v∉R] + P(R)·p(v).
111
+ */
76
112
  reroll(toReroll: Dice | number): Dice;
77
113
  combine(other: Dice | number): Dice;
78
114
  combineInPlace(other: Dice): void;
@@ -1 +1 @@
1
- {"version":3,"file":"dice.d.ts","sourceRoot":"","sources":["../../src/parser/dice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dice.d.ts","sourceRoot":"","sources":["../../src/parser/dice.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,4 @@
1
- import type { PMF } from "../pmf/pmf.js";
2
- /** Enable or disable the internal parse cache. */
3
- export declare function setCachingEnabled(enabled: boolean): void;
4
- /** Returns whether the internal parse cache is currently enabled. */
5
- export declare function getCachingEnabled(): boolean;
1
+ import { PMF } from "../pmf/pmf.js";
6
2
  /** Clears the internal parse cache. */
7
3
  export declare function clearParserCache(): void;
8
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AA2BtC,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGxD;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,GAAG,CAyC5D"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AA6BjC,uCAAuC;AACvC,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,GAAG,CAuD5D"}
@@ -4,10 +4,10 @@ import { PMF } from "../pmf/pmf.js";
4
4
  * Parse without throwing — for UI code that reparses on every keystroke, where
5
5
  * a transiently invalid expression is normal rather than exceptional.
6
6
  *
7
- * Also accepts a *signed* integer, which the grammar rejects: `"-3"` becomes a
8
- * delta at -3, `"+7"` one at 7. Unsigned integers need no help — `parse("7")`
9
- * already returns a delta at 7 — but a half-typed damage field is a bare signed
10
- * number often enough to be worth covering.
7
+ * Also accepts `+` before an integer, which the grammar has no use for: `"+7"`
8
+ * becomes a delta at 7. Integers are read here rather than by the grammar
9
+ * (which reads `"-3"` as a unary minus) so a huge one is refused instead of
10
+ * rounded; a half-typed damage field is a bare signed number often enough.
11
11
  *
12
12
  * The failure value is {@link PMF.empty}, which has **mass 0**, not a
13
13
  * distribution. Convolving it collapses the whole result to mass 0, so a caller
@@ -0,0 +1,14 @@
1
+ /** Why a parsed string's dice cannot double: it is not a damage expression `scaleParsedDice` can rewrite. */
2
+ export declare class UndoubleableExpressionError extends Error {
3
+ }
4
+ /**
5
+ * Why a damage payload's dice cannot double on a crit: it is damage, but "double the dice"
6
+ * has more than one reading for it (a keep other than keep-highest-of-1, a `bestOf()`, a die rolled
7
+ * with advantage, an `&` mix with dice). Never caught as {@link UndoubleableExpressionError}: no
8
+ * crit is approximated.
9
+ */
10
+ export declare class AmbiguousCritDoublingError extends Error {
11
+ }
12
+ /** Rewrites every dice term's count in a parsed damage expression by `scale`. */
13
+ export declare function scaleParsedDice(expression: string, scale: number): string;
14
+ //# sourceMappingURL=scaleDice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaleDice.d.ts","sourceRoot":"","sources":["../../src/parser/scaleDice.ts"],"names":[],"mappings":"AAoCA,6GAA6G;AAC7G,qBAAa,2BAA4B,SAAQ,KAAK;CAAG;AAEzD;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;CAAG;AA6IxD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiHzE"}
@@ -1,5 +1,11 @@
1
1
  import { PMF } from "./pmf.js";
2
- /** A labeled mixture builder that preserves provenance in Bin.count. */
2
+ /**
3
+ * A labeled mixture builder that preserves provenance in Bin.count.
4
+ *
5
+ * `eps` prunes relative to the normalized mass: an outcome whose share of the total is below
6
+ * `eps` is dropped when the PMF is built, and the survivors are renormalized. `eps = 0` keeps
7
+ * every outcome with positive mass.
8
+ */
3
9
  export declare class Mixture<L extends string = string> {
4
10
  private readonly totals;
5
11
  private readonly labelMass;
@@ -13,13 +19,21 @@ export declare class Mixture<L extends string = string> {
13
19
  hasLabel(label: L): boolean;
14
20
  /**
15
21
  * Add a labeled component with a mixture weight.
16
- * Weight can be any positive finite number. Very small contributions are pruned by eps.
22
+ * Weight can be any positive finite number; only the ratios between weights matter.
17
23
  */
18
24
  add(label: L, pmf: PMF, weight?: number): this;
25
+ /**
26
+ * The normalized mixture. Each bin's `p` and per-label `count` are its raw mass divided by
27
+ * the grand total, so labels sum to `p` whatever the weights summed to. Outcomes below
28
+ * `eps` of the total (the pruning `eps` given to the constructor) are dropped first.
29
+ *
30
+ * @param eps Epsilon carried by the built PMF.
31
+ */
19
32
  buildPMF(eps?: number): PMF;
20
33
  /**
21
34
  * Produce normalized *per-label* PMFs (labels independent).
22
- * These are unlabeled PMFs built from the raw mass of that label alone.
35
+ * These are unlabeled PMFs built from the raw mass of that label alone; values below `eps`
36
+ * of the label's own mass are pruned.
23
37
  */
24
38
  byOutcome(): Record<L, PMF>;
25
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mixture.d.ts","sourceRoot":"","sources":["../../src/pmf/mixture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,wEAAwE;AACxE,qBAAa,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,YAAY,GAAG,GAAE,MAAY,EAE5B;IAED,oCAAoC;IACpC,KAAK,IAAI,IAAI,CAIZ;IAED,+DAA+D;IAC/D,IAAI,IAAI,MAAM,CAEb;IAED,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAG1B;IAED;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,SAAI,GAAG,IAAI,CAkBxC;IAED,QAAQ,CAAC,GAAG,GAAE,MAAY,GAAG,GAAG,CAmB/B;IAED;;;OAGG;IACH,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAiB1B;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAqB3B;IAED,MAAM,IAAI;QACR,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3C,GAAG,EAAE,MAAM,CAAC;KACb,CAMA;IAED,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAClC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAClD,GAAG,GAAE,MAAY,GAChB,GAAG,CAIL;CACF"}
1
+ {"version":3,"file":"mixture.d.ts","sourceRoot":"","sources":["../../src/pmf/mixture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;;GAMG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,YAAY,GAAG,GAAE,MAAY,EAE5B;IAED,oCAAoC;IACpC,KAAK,IAAI,IAAI,CAIZ;IAED,+DAA+D;IAC/D,IAAI,IAAI,MAAM,CAEb;IAED,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAG1B;IAED;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,SAAI,GAAG,IAAI,CAkBxC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,GAAE,MAAY,GAAG,GAAG,CAoB/B;IAED;;;;OAIG;IACH,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAqB1B;IAED;;;OAGG;IACH,OAAO,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAa3B;IAED,MAAM,IAAI;QACR,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3C,GAAG,EAAE,MAAM,CAAC;KACb,CAMA;IAED,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAClC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAClD,GAAG,GAAE,MAAY,GAChB,GAAG,CAIL;CACF"}
package/dist/pmf/pmf.d.ts CHANGED
@@ -41,11 +41,11 @@ export interface DamageAttributionChartModel {
41
41
  * Probability Mass Function for discrete damage distributions.
42
42
  */
43
43
  export declare class PMF {
44
- readonly map: Map<number, Bin>;
44
+ readonly map: ReadonlyMap<number, Bin>;
45
45
  readonly epsilon: number;
46
46
  readonly normalized: boolean;
47
47
  readonly identifier: string;
48
- private _preservedProvenance;
48
+ private readonly _preservedProvenance;
49
49
  private static __anonIdCounter;
50
50
  private _support?;
51
51
  private _min?;
@@ -55,7 +55,27 @@ export declare class PMF {
55
55
  private _variance?;
56
56
  private _stdev?;
57
57
  private _fingerprint?;
58
- constructor(map?: Map<number, Bin>, epsilon?: number, normalized?: boolean, identifier?: string, _preservedProvenance?: boolean);
58
+ private _cumulative?;
59
+ private _frozen;
60
+ /**
61
+ * @param map Damage value → bin. Typed read-only: a PMF is immutable once built. A PMF returned
62
+ * from the library's caches is frozen: its bins, its map and the `map` property itself reject
63
+ * writes (see {@link freeze}).
64
+ */
65
+ constructor(map?: ReadonlyMap<number, Bin>, epsilon?: number, normalized?: boolean, identifier?: string, _preservedProvenance?: boolean);
66
+ /**
67
+ * A PMF cache that freezes every stored PMF and follows `setCachingEnabled`. The library's
68
+ * own caches are built with this.
69
+ */
70
+ static createCache(maxSize: number): LRUCache<string, PMF>;
71
+ /**
72
+ * Freezes this PMF so it can be shared through a cache. Every bin is deep-frozen, including its
73
+ * `count` and `attr` maps, so writing to one throws a `TypeError`. The map is replaced by a copy
74
+ * whose `set`/`delete`/`clear` throw a `TypeError` (the map this PMF was built with stays the
75
+ * caller's), and the `map` property becomes read-only, so assigning it throws too.
76
+ * Returns this PMF.
77
+ */
78
+ freeze(): this;
59
79
  static empty(epsilon?: number, identifier?: string): PMF;
60
80
  static zero(epsilon?: number): PMF;
61
81
  static delta(value: number, epsilon?: number): PMF;
@@ -188,18 +208,19 @@ export declare class PMF {
188
208
  * ]);
189
209
  */
190
210
  static mixN(weights: [number, PMF][], eps?: number): PMF;
191
- private setPreservedProvenance;
211
+ /**
212
+ * False for a PMF produced by {@link power}, which folds independent attacks into one
213
+ * distribution and cannot say which attack produced which label.
214
+ */
192
215
  preservedProvenance(): boolean;
193
216
  private getPowerCacheKey;
194
217
  /**
195
- * Efficiently computes this PMF convolved with itself `n` times.
196
- * Uses exponentiation by squaring to reduce total convolutions.
197
- * n must be a positive integer.
198
- * *
199
- * * NOTE: This folds multiple independent attacks into a single PMF.
200
- * As a result, The power() method causes a loss of data provenance.
201
- * This is ONLY SAFE if you are trying to calculate masses.
202
- * If you want to query any atLeast probabilities, you should use the DiceQuery class instead without power().
218
+ * Convolves this PMF with itself `n` times, by exponentiation by squaring. `n` must be a
219
+ * positive integer.
220
+ *
221
+ * NOTE: this folds `n` independent, identical attacks into one PMF, so it loses data
222
+ * provenance. It is only safe when computing masses; for `atLeast`-style queries use a
223
+ * `DiceQuery` instead of `power()`.
203
224
  */
204
225
  power(n: number, eps?: number): PMF;
205
226
  replicate(n: number): PMF[];
@@ -217,13 +238,21 @@ export declare class PMF {
217
238
  min(): number;
218
239
  max(): number;
219
240
  /**
220
- * Returns the expected (mean) damage value.
221
- * Cached for performance since this requires iterating through all bins.
241
+ * Returns the expected (mean) damage value, Σ v·p. Cached.
242
+ *
243
+ * On a PMF whose mass is not 1 this is the partial expectation (the slice's contribution to
244
+ * the whole distribution's mean), not the conditional mean; `DiceQuery.mean()` divides by the
245
+ * mass instead.
222
246
  */
223
247
  mean(): number;
224
248
  /**
225
- * Returns the variance of the damage distribution.
226
- * Cached for performance since this requires mean calculation plus iteration.
249
+ * Returns the variance of the damage distribution. Cached.
250
+ *
251
+ * On a PMF whose mass is not 1 (a slice such as {@link filterOutcome}'s output) this is the
252
+ * variance of the distribution conditioned on the slice, Σ (v − μ)²·p / m with μ = Σ v·p / m
253
+ * and m = {@link mass}, the same quantity `DiceQuery.variance()` reports for that PMF. Note
254
+ * that {@link mean} is not conditioned: it stays the partial expectation Σ v·p, so slices add
255
+ * up. Within 1e-12 of unit mass (or at zero or negative mass) no conditioning is applied.
227
256
  */
228
257
  variance(): number;
229
258
  /**
@@ -237,30 +266,29 @@ export declare class PMF {
237
266
  private static mergeInto;
238
267
  add(other: PMF): PMF;
239
268
  /**
240
- * Returns a new PMF with a scaled branch added to this one.
241
- * The branch PMF is scaled by the given probability before merging
242
- * This will be very useful for conditional effects and for being
243
- * able to model "I can probably have this opportunity attack 40% of rounds"
244
- * Example: `pmf.addScaled(critBranch, 0.05)` → PMF including 5% crit outcomes
269
+ * Returns a new PMF with `branch` added to this one, scaled by `probability` before merging —
270
+ * the primitive for conditional effects. Example: `pmf.addScaled(critBranch, 0.05)` → a PMF
271
+ * including a 5% crit slice.
245
272
  */
246
273
  addScaled(branch: PMF, probability: number): PMF;
247
274
  /**
248
- * Redistributes probability mass to model an effect that only occurs with
249
- * probability `frequency` — a conditional attack, an on-hit rider, or a
250
- * sub-one AoE target fraction.
275
+ * Bernoulli thinning: the effect this PMF describes happens with probability
276
+ * `frequency` and otherwise deals nothing — a conditional attack, an on-hit
277
+ * rider, or a sub-one AoE target fraction. The result is
278
+ * `frequency · X + (1 − frequency) · δ0`.
251
279
  *
252
- * Every hit outcome (damage > 0) is scaled by `frequency` — probability mass,
253
- * per-label `count`, AND per-label `attr` — and the freed mass is moved into
254
- * the miss bin at damage 0, tagged with the canonical `missNone` outcome.
255
- * Total probability mass is preserved.
280
+ * Every bin (negative damage included) keeps `frequency` of its probability
281
+ * mass, per-label `count` and per-label `attr`; the zero bin keeps its labels
282
+ * at that share too. The freed mass, `(1 − frequency) · mass()`, is added to
283
+ * the damage-0 bin under the canonical `missNone` outcome, so the total mass
284
+ * is unchanged, also for a slice whose mass is not 1.
256
285
  *
257
286
  * Unlike a bare {@link scaleMass} or {@link mapDamage}, this keeps damage
258
287
  * attribution (`attr`) intact, so a frequency-scaled PMF still renders
259
288
  * correctly in the damage-attribution charts.
260
289
  *
261
290
  * `frequency >= 1` (or non-finite) returns this PMF unchanged; `frequency <= 0`
262
- * collapses all mass into the miss bin. The miss outcome is assumed to be
263
- * encoded at damage value 0.
291
+ * leaves only the damage-0 bin, holding all of the mass as `missNone`.
264
292
  *
265
293
  * @param frequency Probability in [0, 1] that the effect occurs.
266
294
  */
@@ -277,9 +305,42 @@ export declare class PMF {
277
305
  * "did not match" halves by the exact per-damage-value match probability.
278
306
  */
279
307
  splitByFactor(factor: (damage: number) => number): [PMF, PMF];
308
+ /**
309
+ * Max of two i.i.d. copies of this PMF's distribution: normalize, square
310
+ * the CDF, then restore the original mass. The engine's damage-reroll
311
+ * substitution (`onFirstHit(keepBestDamage())`) applies this to a landing
312
+ * attack's base payload slice — "roll it again, keep the better total".
313
+ *
314
+ * PRESERVES outcome labels and attribution. A max, unlike a sum, is
315
+ * literally one of the two draws: the value that wins was drawn from this
316
+ * same distribution, so its `count`/`attr` composition is unchanged in
317
+ * *proportion* — only that bin's total mass is recomputed (via the
318
+ * squared-CDF step) and every label is rescaled by the same factor. This
319
+ * is why {@link power}'s documented provenance loss does not apply here:
320
+ * for a sum, one output value arises from many `(x1, x2)` pairs with
321
+ * different attribution mixes, so provenance is genuinely ambiguous; for a
322
+ * max, there is exactly one realized draw per bin. A naive rebuild through
323
+ * {@link fromMap} would silently discard both `count` and `attr`.
324
+ *
325
+ * Works on a non-unit-mass slice (e.g. {@link filterOutcome}'s output):
326
+ * the CDF is squared on the NORMALIZED distribution, then the result is
327
+ * rescaled back to this PMF's original total mass, not to 1.
328
+ */
329
+ maxOfTwo(): PMF;
280
330
  scaleMass(factor: number): PMF;
281
331
  mapDamage(damageTransformFunction: (damageValue: number) => number): PMF;
282
- scaleDamage(factor: number, rounding?: "floor" | "round" | "ceil"): PMF;
332
+ /**
333
+ * Multiplies every damage value by `factor / denominator` and rounds: `floor`
334
+ * (toward −∞, the default), `ceil` (toward +∞) or `round` (to nearest, halves
335
+ * toward +∞). Values that land on the same result merge, labels included.
336
+ *
337
+ * With an integer `factor` and `denominator` the rounding is exact: `v·factor`
338
+ * is an exact integer, and one division of two integers below 2^53 lands on
339
+ * the correct side of every integer. Pass a ratio that way, e.g.
340
+ * `scaleDamage(9, "ceil", 7)`; `scaleDamage(9 / 7, "ceil")` rounds the factor
341
+ * to a double first, so 21·(9/7) = 27.000000000000004 would round up to 28.
342
+ */
343
+ scaleDamage(factor: number, rounding?: "floor" | "round" | "ceil", denominator?: number): PMF;
283
344
  private getPMFCombineCacheKey;
284
345
  /**
285
346
  * A content fingerprint of every bin (probability, per-label `count`, per-label `attr`) plus
@@ -291,7 +352,8 @@ export declare class PMF {
291
352
  * because a PMF is immutable once constructed -- this avoids re-deriving the key on every
292
353
  * convolve()/power() call (including cache hits). Bin order is sorted by damage value (and
293
354
  * label keys sorted within each bin) so two equal-content PMFs built via different code paths
294
- * fingerprint identically regardless of Map insertion order.
355
+ * fingerprint identically regardless of Map insertion order. Label keys are JSON-encoded, so a
356
+ * label containing the separators cannot make two different bins read the same.
295
357
  */
296
358
  fingerprint(): string;
297
359
  convolve(other: PMF, eps?: number, raw?: boolean): PMF;
@@ -361,8 +423,22 @@ export declare class PMF {
361
423
  denseSupport(): number[];
362
424
  /** CDF at x: P(X ≤ x). */
363
425
  cdfAt(x: number): number;
364
- /** Quantile / inverse CDF for p in [0,1]. Returns smallest x with CDF ≥ p. */
426
+ /**
427
+ * Quantile / inverse CDF: the smallest support value x with P(X ≤ x) ≥ p·mass().
428
+ * `p <= 0` gives the smallest support value; `p >= 1` or NaN gives the largest.
429
+ *
430
+ * A float running sum can land an ulp short of a CDF that is exactly p (a d20's CDF(10) sums
431
+ * to 0.49999999999999994), so the comparison allows a relative slack of a few ulps per bin.
432
+ * Below the median it compares the CDF summed from the low end; above it, the mass strictly
433
+ * above x summed from the high end. A sum of non-negative terms is accurate relative to its
434
+ * own size, so the tail that decides the answer is never swamped by the rest of the mass.
435
+ */
365
436
  quantile(p: number): number;
437
+ /**
438
+ * Sorted support with `below[i]` = Σ p over values ≤ values[i], summed from the low end,
439
+ * and `above[i]` = Σ p over values > values[i], summed from the high end. Cached.
440
+ */
441
+ private cumulative;
366
442
  /** Get outcome probability at specific damage value. */
367
443
  outcomeAt(damage: number, outcome: string): number;
368
444
  /** Get all outcome types present in this PMF. */
@@ -455,6 +531,15 @@ export declare class PMF {
455
531
  pNone: number;
456
532
  pAny: number;
457
533
  };
534
+ /**
535
+ * Maps every damage value through `f`, then optionally rounds it (`rounding`, default
536
+ * `"none"`). Values that land on the same result merge their probability and, unless
537
+ * `preserveCounts` is false, their per-label `count`. Damage attribution (`attr`) is dropped,
538
+ * because it is tied to the old values. Nothing is pruned and the mass is unchanged.
539
+ *
540
+ * @param eps Epsilon carried by the result.
541
+ * @throws Error when a mapped value is not a finite integer.
542
+ */
458
543
  mapValues(f: (v: number) => number, eps?: number, opts?: {
459
544
  rounding?: Rounding;
460
545
  preserveCounts?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"pmf.d.ts","sourceRoot":"","sources":["../../src/pmf/pmf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pmf.d.ts","sourceRoot":"","sources":["../../src/pmf/pmf.ts"],"names":[],"mappings":"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"}
@@ -121,7 +121,8 @@ export declare class DiceQuery {
121
121
  */
122
122
  probTotalAtLeast(threshold: number): number;
123
123
  /**
124
- * Returns damage values at specific percentiles.
124
+ * Returns damage values at specific percentiles: for each p, the smallest damage x with
125
+ * P(total ≤ x) ≥ p, exact at CDF boundaries (see {@link PMF.quantile}).
125
126
  *
126
127
  * Example: `query.percentiles([0.25, 0.5, 0.75])` → [8, 12, 18]
127
128
  * Use case: "What are my 25th, 50th, and 75th percentile damage values?"
@@ -169,7 +170,7 @@ export declare class DiceQuery {
169
170
  * Note:
170
171
  *
171
172
  * - You have to pass in an array of labels to avoid double-counting if you are
172
- * using multiple labels. You cannot just add them.
173
+ * using multiple labels. You cannot just add them. A label listed twice counts once.
173
174
  */
174
175
  probAtLeastOne(labels: OutcomeType | OutcomeType[]): number;
175
176
  /**
@@ -205,8 +206,8 @@ export declare class DiceQuery {
205
206
  * - "How likely am I to get exactly 2 successes out of 3 attacks?"
206
207
  * - "What's the probability that exactly half my attacks succeed?"
207
208
  *
208
- * Note: For arrays, an attack counts as a "success" if it has any of the specified labels.
209
- * This is different from probAtMostK, which counts an attack as a "success" if it has ALL of the specified labels.
209
+ * Note: For arrays, an attack counts as a "success" if it has any of the specified labels,
210
+ * as in probAtLeastK and probAtMostK. A negative k has probability 0.
210
211
  */
211
212
  probExactlyK(labels: OutcomeType | OutcomeType[], k: number): number;
212
213
  /**
@@ -243,6 +244,10 @@ export declare class DiceQuery {
243
244
  * - "How much damage do I expect from successful attacks?"
244
245
  * - "What's the damage contribution from critical hits specifically?"
245
246
  * - "How much damage comes from miss effects (like save-for-half spells)?"
247
+ *
248
+ * A single whose mass is not 1 is normalized exactly as {@link mean} normalizes it, so the
249
+ * contributions of labels that cover every outcome add up to `mean()`. A label listed twice
250
+ * counts once.
246
251
  */
247
252
  expectedDamageFrom(labels: OutcomeType | OutcomeType[]): number;
248
253
  /**
@@ -366,10 +371,15 @@ export declare class DiceQuery {
366
371
  */
367
372
  probabilityOf(labels: OutcomeType | OutcomeType[]): number;
368
373
  /**
369
- * Returns the probability of missing (any type of miss).
374
+ * Returns the probability that at least one attack misses (either kind of miss:
375
+ * `missNone` or `missDamage`). For a single attack this is its miss chance.
376
+ *
377
+ * Example: `query.missChance()` → 0.45
378
+ * Use case: "What's the chance I miss at least once this turn?"
370
379
  *
371
- * Example: `query.missChance()` → 0.04
372
- * Use case: "What's the chance I miss completely this turn?"
380
+ * For the chance that every attack misses, use
381
+ * `probExactlyK(["missNone", "missDamage"], n)` with n attacks, or
382
+ * `probAtMostK(["hit", "crit"], 0)`.
373
383
  */
374
384
  missChance(): number;
375
385
  /**
@@ -447,7 +457,7 @@ export declare class DiceQuery {
447
457
  };
448
458
  /** Probability of doing strictly more than threshold damage (default >0). */
449
459
  probDamageGreaterThan(threshold?: number): number;
450
- /** All outcome keys actually present (typed & ordered if you pass an order). */
460
+ /** All outcome keys present in the PMF, ordered by `order` when given. */
451
461
  outcomeKeys(order?: OutcomeType[]): OutcomeType[];
452
462
  /** Total probability per outcome across the PMF. */
453
463
  outcomeTotals(outcomes?: OutcomeType[]): Map<OutcomeType, number>;
@@ -561,19 +571,22 @@ export declare class DiceQuery {
561
571
  */
562
572
  mapDamage(damageTransformFunction: (damageValue: number) => number): DiceQuery;
563
573
  /**
564
- * Returns a new DiceQuery with damage values scaled by a factor.
565
- * Convenient wrapper around mapDamage for multiplicative scaling.
574
+ * Returns a new DiceQuery with damage values scaled by `factor / denominator`.
575
+ * Convenient wrapper around mapDamage for multiplicative scaling; see
576
+ * {@link PMF.scaleDamage} for the rounding rules.
566
577
  *
567
- * @param factor Scaling factor for damage values
578
+ * @param factor Scaling factor for damage values (the numerator of a ratio)
568
579
  * @param rounding Rounding method: "floor" (default), "round", or "ceil"
580
+ * @param denominator Divisor; integer `factor` and `denominator` round exactly
569
581
  * @returns New DiceQuery with scaled damage values
570
582
  *
571
583
  * @example
572
584
  * const baseAttack = parse("2d6 + 3");
573
585
  * const doubled = baseAttack.scaleDamage(2); // Double damage
574
586
  * const halfDamage = baseAttack.scaleDamage(0.5, "round"); // Half damage, rounded
587
+ * const sevenTenths = baseAttack.scaleDamage(7, "floor", 10); // floor(7v/10), exactly
575
588
  */
576
- scaleDamage(factor: number, rounding?: "floor" | "round" | "ceil"): DiceQuery;
589
+ scaleDamage(factor: number, rounding?: "floor" | "round" | "ceil", denominator?: number): DiceQuery;
577
590
  /**
578
591
  * Returns a new DiceQuery combining this query with another via convolution.
579
592
  * Equivalent to rolling both queries independently and adding results.
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/pmf/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/pmf/query.ts"],"names":[],"mappings":"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"}