@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
@@ -3,7 +3,7 @@ import { PMF } from "../pmf/pmf.js";
3
3
  import type { DiceQuery } from "../pmf/query.js";
4
4
  import type { ACBuilder } from "./ac.js";
5
5
  import { AlwaysCritBuilder, AlwaysHitBuilder, RollBuilder } from "./roll.js";
6
- import type { AttackResolution, CheckBuilder } from "./types.js";
6
+ import type { AttackResolution, Check, CheckBuilder } from "./types.js";
7
7
  type ActionEffect = RollBuilder;
8
8
  /** Clears the resolved-attack PMF cache (test/bench seam; mirrors {@link clearParserCache}). */
9
9
  export declare function clearAttackCache(): void;
@@ -12,7 +12,11 @@ export declare class AttackBuilder implements CheckBuilder {
12
12
  private readonly hitEffect?;
13
13
  private readonly critEffect?;
14
14
  private readonly missEffect?;
15
- constructor(check: ACBuilder | AlwaysHitBuilder | AlwaysCritBuilder, hitEffect?: ActionEffect | undefined, critEffect?: ActionEffect | null | undefined, missEffect?: ActionEffect | undefined);
15
+ private readonly separateDamage;
16
+ private readonly rerollThreshold?;
17
+ private readonly minimumDieValue?;
18
+ private readonly halfOnMissFlag;
19
+ constructor(check: ACBuilder | AlwaysHitBuilder | AlwaysCritBuilder, hitEffect?: ActionEffect | undefined, critEffect?: ActionEffect | null | undefined, missEffect?: ActionEffect | undefined, separateDamage?: readonly RollBuilder[], rerollThreshold?: number | undefined, minimumDieValue?: number | undefined, halfOnMissFlag?: boolean);
16
20
  onCrit(val: number): AttackBuilder;
17
21
  onCrit(val: string): AttackBuilder;
18
22
  onCrit(val: RollBuilder): AttackBuilder;
@@ -28,26 +32,105 @@ export declare class AttackBuilder implements CheckBuilder {
28
32
  onMiss(count: number, die: RollBuilder, modifier: number): AttackBuilder;
29
33
  onMiss(count: number, sides: number, modifier: number): AttackBuilder;
30
34
  noCrit(): AttackBuilder;
35
+ /**
36
+ * Adds a second damage channel, convolved into the hit AND crit payloads (its dice double on
37
+ * a crit like any attack damage) but excluded from base-payload transforms — base-payload
38
+ * rerolls and once-per-turn reroll substitutions never touch it. Chainable; several calls
39
+ * accumulate into one convolved channel.
40
+ */
41
+ plusSeparateDamage(damage: RollBuilder): AttackBuilder;
42
+ /**
43
+ * Lets every die group of the BASE payload (hit, and the crit branch when it is explicit)
44
+ * reroll low faces once, leaving `plusSeparateDamage` channels untouched — so a weapon reads in
45
+ * whichever order the caller likes. The threshold is a permission cap, not an obligation: a
46
+ * group rerolls faces `1..min(threshold, cap)`, where `cap` is the largest face whose kept value
47
+ * `max(face, floor)` is below the expected value of a fresh floored face (`floor` from the
48
+ * group's own `minimum` and {@link minimumDamageDie}; with no floor, `floor(sides / 2)`). For a
49
+ * die that does not explode that is optimal play, and the result is monotone in `threshold`.
50
+ * A group's own `reroll` is kept when it is higher. `RollBuilder.reroll()` keeps its own
51
+ * obligation semantics; this is the attack-level verb.
52
+ */
53
+ rerollDamage(threshold: number): AttackBuilder;
54
+ /**
55
+ * Raises every die of the BASE payload (hit, and the crit branch when it is explicit) to at
56
+ * least `minimum`, leaving `plusSeparateDamage` channels untouched. A group's own higher
57
+ * `minimum` is kept. Order-independent with respect to `plusSeparateDamage` and
58
+ * `rerollDamage` (whose cap accounts for the floor).
59
+ */
60
+ minimumDamageDie(minimum: number): AttackBuilder;
61
+ /**
62
+ * The miss payload becomes `floor(resolved hit payload / 2)` — base plus every
63
+ * `plusSeparateDamage` channel, never the crit payload. Labelled `missDamage`: it is not a
64
+ * landing, so no `first-hit`/`every-hit`/condition trigger reads it, and no reroll
65
+ * substitution touches it. Mutually exclusive with `onMiss()`.
66
+ */
67
+ halfOnMiss(): AttackBuilder;
68
+ /**
69
+ * The one way to re-derive hit/crit/miss probabilities for an existing attack: `vsAC` and the
70
+ * turn-level condition variants are both callers. Throws if this attack's check has no AC (an
71
+ * `AlwaysHitBuilder`, or a crit-from-always-hit override) — there is nothing to rebind.
72
+ */
73
+ withCheck(fn: (check: Check) => Check): AttackBuilder;
74
+ private toCheck;
75
+ private static buildCheck;
76
+ /**
77
+ * The base-payload transform for a `rerollDamage` threshold and a `minimumDamageDie` floor
78
+ * (either may be unset). Each only ever raises a group's own `minimum`/`reroll`, and the reroll
79
+ * cap reads the final floor, so applying it again after the other call lands on the same config
80
+ * whichever order the two calls came in.
81
+ */
82
+ private static baseTransform;
83
+ /** Applies the `rerollDamage`/`minimumDamageDie` values already set on this builder to `effect`. */
84
+ private withStoredBaseTransforms;
85
+ /**
86
+ * Shared by `rerollDamage`/`minimumDamageDie`: rewrite every die-bearing `RollConfig` of a
87
+ * base-payload effect. Refuses (rather than silently no-oping) an effect with no real dice
88
+ * descriptor — a parsed string or a half/scale/maxOf/pooled/composite wrapper — matching the
89
+ * "refuse rather than approximate" bar the reroll substitution's `no-dice-descriptor` uses.
90
+ */
91
+ private static mapEveryDieGroup;
92
+ /**
93
+ * The attack as a string `parse()` reads back to the same outcomes, up to the natural-1 miss and
94
+ * natural-20 hit, which the grammar does not model. The crit clause is always printed, since a
95
+ * string without one crits with its hit dice doubled: `noCrit()` prints `xcrit0 (<hit>)` (no
96
+ * natural face crits, so every landing is a hit), and a crit range keeps its `xcritN`. A check
97
+ * that crits on every hit (`alwaysCrits()`) prints `xcritS`, S the natural die's size; one that
98
+ * always hits prints just its natural roll, which never totals 0.
99
+ */
31
100
  toExpression(): string;
101
+ /**
102
+ * Hit, crit and miss weights of `check`. A natural 1 misses; a natural 20 hits and crits
103
+ * whatever the AC, the crit threshold, or crit-on-hit; any other natural roll hits when the total
104
+ * reaches the AC, and crits when it is in the crit range (or every hit crits: `alwaysCrits()`).
105
+ * An always-hitting check crits on a natural 20 or in its crit range. A check with no die has no
106
+ * natural roll, so it hits exactly when its flat total and bonus dice reach the AC and never
107
+ * crits unless every hit does.
108
+ */
32
109
  resolveProbabilities(check: ACBuilder | AlwaysHitBuilder | AlwaysCritBuilder, eps?: number): {
33
110
  pSuccess: number;
34
111
  pHit: number;
35
112
  pCrit: number;
36
113
  pMiss: number;
37
114
  };
115
+ /** Resolves the attack into its weighted slices. `eps` defaults to 0, as for {@link toPMF}: no reachable damage value is pruned. */
38
116
  resolve(eps?: number): AttackResolution;
39
117
  /**
40
118
  * For `dice-match` trigger slicing (`turn/types.ts`'s `HasDiceMatchInfo`): the exact
41
119
  * per-damage-value match probability for the hit and crit branches, or `null` per branch when no
42
120
  * descriptor is available — a string-parsed effect, a wrapped transform whose PMF isn't fully
43
121
  * captured by its `RollConfig`s (half/scale/maxOf/pooled — `cacheKey()` returns `null` for
44
- * exactly these), a `keep`/`bestOf` pool (ambiguous "the dice" under crit doubling), a
45
- * pool-wide exploding budget (composition with match not yet threaded through here), a
46
- * multi-die-type pool, a single die (can never match), or (crit) `noCrit()`.
122
+ * exactly these), a `keep`/`bestOf` pool (ambiguous "the dice" under crit doubling), an
123
+ * exploding pool (per-die `explode` or a pool-wide budget: extra dice join the total), a pool
124
+ * rolled with advantage/disadvantage (one kept die, not a pool), a subtracted pool (its faces
125
+ * lower the damage), a multi-die-type pool, or (crit) `noCrit()`. A single die is supported and
126
+ * can never match (an empty map).
47
127
  *
48
128
  * The crit branch is built from the SAME crit-effect selection `resolve()` uses (an explicit
49
129
  * `onCrit` roll, or the hit dice auto-doubled via `copy().doubleDice()`), so its descriptor
50
130
  * reflects the crit branch's REAL doubled pool, not the hit pool re-used blindly.
131
+ *
132
+ * Reads ONLY `hitEffect`/`critEffect` (the base pool) — `plusSeparateDamage` channels are a
133
+ * separate channel, so their dice never count toward a match.
51
134
  */
52
135
  diceMatchInfo(_eps?: number): {
53
136
  hit: DiceMatchInfo | null;
@@ -1 +1 @@
1
- {"version":3,"file":"attack.d.ts","sourceRoot":"","sources":["../../src/builder/attack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attack.d.ts","sourceRoot":"","sources":["../../src/builder/attack.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,19 @@ export declare class DCBuilder extends RollBuilder {
28
28
  * serializes. So extend the base key with the DC, mirroring {@link AlwaysHitBuilder.cacheKey}.
29
29
  */
30
30
  cacheKey(): string | null;
31
+ /**
32
+ * P(success) and P(failure) of this save: success iff natural roll + bonus dice + modifier ≥ DC,
33
+ * with no natural-1/natural-20 rule (a check with no die compares its flat total alone). Each side
34
+ * is summed from its own outcomes, so a certain success has a failure chance of exactly 0.
35
+ */
36
+ saveProbabilities(): {
37
+ pSuccess: number;
38
+ pFail: number;
39
+ };
40
+ /**
41
+ * The check outcome as a PMF: a success at 0, a failure at 1 (so `hitProbability()` is the
42
+ * chance the save fails — the chance the effect lands). `SaveBuilder.resolve().check` is this PMF.
43
+ */
31
44
  toPMF(eps?: number): PMF;
32
45
  }
33
46
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"dc.d.ts","sourceRoot":"","sources":["../../src/builder/dc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAQD,uDAAuD;AACvD,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,YAAY,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,EAGzD;IAEQ,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAOrC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEQ,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAGhD;IAEQ,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAG1C;IAED,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IACxC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IACxC,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IAC7C,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IAC5D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IACzD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9E,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAMlE,iBAAiB,IAAI,KAAK,CAIlC;IAGQ,YAAY,IAAI,MAAM,CAK9B;IAED;;;;OAIG;IACM,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGjC;IAEQ,KAAK,CAAC,GAAG,GAAE,MAAU,GAAG,GAAG,CAkCnC;CACF"}
1
+ {"version":3,"file":"dc.d.ts","sourceRoot":"","sources":["../../src/builder/dc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAIjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;CACZ;AAQD,uDAAuD;AACvD,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,YAAY,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,EAGzD;IAEQ,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CASrC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEQ,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAGhD;IAEQ,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAG1C;IAED,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IACxC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IACxC,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IAC7C,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC;IAC5D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IACzD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9E,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAMlE,iBAAiB,IAAI,KAAK,CAIlC;IAGQ,YAAY,IAAI,MAAM,CAK9B;IAED;;;;OAIG;IACM,QAAQ,IAAI,MAAM,GAAG,IAAI,CAGjC;IAED;;;;OAIG;IACH,iBAAiB,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAYvD;IAED;;;OAGG;IACM,KAAK,CAAC,GAAG,GAAE,MAAU,GAAG,GAAG,CAenC;CACF"}
@@ -12,9 +12,7 @@ export declare const fullAttackWithCritAndMiss: import("./attack.js").AttackBuil
12
12
  export declare const fullAttackWithCritAndMissExprExpected = "(d20 + 5 AC 10) * (2d6) crit (4d6) miss (5)";
13
13
  export declare const basicDamageRoll: RollBuilder;
14
14
  export declare const basicDamageRollExprExpected = "1d6 + 3";
15
- /** Basic 2d6 + 3 damage roll
16
- * For multiple dice, you need to use roll().
17
- */
15
+ /** Basic 2d6 + 3 damage roll; multiple dice use roll(). */
18
16
  export declare const basic2d6Plus3: RollBuilder;
19
17
  export declare const basic2d6Plus3ExprExpected = "2d6 + 3";
20
18
  /** Rollling 2 x (1d6+3) */
@@ -32,18 +30,17 @@ export declare const basicShorthandD6RollExprExpected = "2d6 + 3";
32
30
  /** Using die shortcuts without roll() */
33
31
  export declare const shortcutDie: RollBuilder;
34
32
  export declare const shortcutDieExprExpected = "1d8 + 2";
35
- /** Flat modifier only (no dice)
36
- * You can also use roll.flat(n) if you prefer.
37
- * Many methods take pure numbers, so this may not even be needed in many cases.
33
+ /** Flat modifier only (no dice); roll.flat(n) is the same. Pure-number args are accepted
34
+ * directly, so a bare flat is rarely needed.
38
35
  * */
39
36
  export declare const flatFive: RollBuilder;
40
37
  export declare const flatFiveExprExpected = "5";
41
38
  /** Negative base dice */
42
39
  export declare const negativeBaseDieInline: RollBuilder;
43
- export declare const negativeBaseDieInlineExprExpected = "-1d8";
40
+ export declare const negativeBaseDieInlineExprExpected = "0 - 1d8";
44
41
  /** Negative base dice explicit */
45
42
  export declare const negativeBaseDie: RollBuilder;
46
- export declare const negativeBaseDieExprExpected = "-1d8";
43
+ export declare const negativeBaseDieExprExpected = "0 - 1d8";
47
44
  /** Subtracting a bonus die via negative roll part.
48
45
  * Useful for effects like Bane
49
46
  */
@@ -54,10 +51,10 @@ export declare const singleD20: RollBuilder;
54
51
  export declare const singleD20ExprExpected = "d20";
55
52
  /** Adding a bunch */
56
53
  export declare const addAWholeBunch: RollBuilder;
57
- export declare const addAWholeBunchExprExpected = "1d20 + 1d12 + 1d10 + 1d8 + 1d6";
54
+ export declare const addAWholeBunchExprExpected = "d20 + 1d12 + 1d10 + 1d8 + 1d6";
58
55
  /** Subtracting a bunch */
59
56
  export declare const subtractAWholeBunch: RollBuilder;
60
- export declare const subtractAWholeBunchExprExpected = "-1d20 - 1d12 - 1d10 - 1d8 + 1d6";
57
+ export declare const subtractAWholeBunchExprExpected = "1d6 - 1d20 - 1d12 - 1d10 - 1d8";
61
58
  export declare const addingMultipleConstants: RollBuilder;
62
59
  export declare const addingMultipleConstantsExprExpected = "1d6 + 6";
63
60
  export declare const realisticChaining: RollBuilder;
@@ -92,8 +89,7 @@ export declare const disD20ExprExpected = "d20 < d20";
92
89
  /** Advantage on hd20. */
93
90
  export declare const advHd20: RollBuilder;
94
91
  export declare const advHd20ExprExpected = "hd20 > hd20";
95
- /** Complex chain: 2d6 + 1d8 + 4(d4 reroll 1) + 5
96
- * Note that reroll(1) applies to the immediate roll before it.
92
+ /** Complex chain: 2d6 + 1d8 + 4(d4 reroll 1) + 5; reroll(1) applies to the roll before it.
97
93
  */
98
94
  export declare const complexDamage: RollBuilder;
99
95
  export declare const complexDamageExprExpected = "4(d4 reroll 1) + 1d8 + 2d6 + 5";
@@ -109,7 +105,7 @@ export declare const bestOfExampleExprExpected = "4kh3(1d6)";
109
105
  /** Double a d6 roll, resulting in 2d6. */
110
106
  export declare const doubleD6: RollBuilder;
111
107
  export declare const doubleD6ExprExpected = "2d6";
112
- /** Double a d6+1 roll, resulting in 2d6+2. Note that modifiers are also doubled. */
108
+ /** Double a d6+1 roll, resulting in 2d6+2 — modifiers double too. */
113
109
  export declare const doubleD6Plus1: RollBuilder;
114
110
  export declare const doubleD6Plus1ExprExpected = "2d6 + 2";
115
111
  /** Double a 2d6 roll, resulting in 4d6. */
@@ -145,10 +141,10 @@ export declare const detailedAttack: ReturnType<ACBuilder["onHit"]>;
145
141
  export declare const detailedAttackExprExpected = "(d20 + 9 AC 17) * (1d12 + 5) xcrit2 (2d12 + 5) miss (0)";
146
142
  /** Attack where all hits become crits (natural 1s still miss). */
147
143
  export declare const alwaysCritsAttack: ReturnType<ACBuilder["onHit"]>;
148
- export declare const alwaysCritsAttackExprExpected = "d20 + 5 * (1d8) crit (2d8)";
144
+ export declare const alwaysCritsAttackExprExpected = "(d20 + 5 AC 10) * (1d8) xcrit20 (2d8)";
149
145
  /** Attack that always hits and always crits (no misses at all). */
150
146
  export declare const alwaysHitsAlwaysCrits: ReturnType<ACBuilder["onHit"]>;
151
- export declare const alwaysHitsAlwaysCritsExprExpected = "d20 * (1d8) crit (2d8)";
147
+ export declare const alwaysHitsAlwaysCritsExprExpected = "d20 * (1d8) xcrit20 (2d8)";
152
148
  /**
153
149
  * Basic save: d20 + 5 vs DC 15; on failure, take 3d6.
154
150
  * Use `saveHalf()` to apply half damage on success.
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/builder/example.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/builder/example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { ExpressionNode } from "./nodes.js";
2
+ import type { RollConfig } from "./types.js";
3
+ /**
4
+ * Printing builders as strings the parser reads back to the same distribution.
5
+ *
6
+ * The grammar reads every binary operator left to right at one precedence, so a term that is
7
+ * itself an expression (`d8 reroll 1`, `3>d6`, `d4 > d4`, `(1d6) // 2`) is parenthesised whenever
8
+ * something precedes it, and every operand of a `>`/`<` chain is an atom. `+` adds only to a
9
+ * non-zero running total, so a term joins with ` + ` only when everything before it can never
10
+ * total 0, and with ` ~+ ` (always add) otherwise. The grammar has no unary minus: a sum whose
11
+ * every term is subtracted starts from `0 - `.
12
+ *
13
+ * Each die group is printed from the AST node the resolver reads (`astFromRollConfigs`), so the
14
+ * string follows the builder's own reading of counts, keeps, roll types and signs.
15
+ */
16
+ /** One additive term of a printed sum: the text of its magnitude, its sign, and the range of that
17
+ * magnitude when it is known. */
18
+ export type ExpressionTerm = {
19
+ readonly text: string;
20
+ readonly sign: 1 | -1;
21
+ readonly range?: readonly [number, number];
22
+ };
23
+ type PrintOptions = {
24
+ /** A lone plain d20 prints as `d20` rather than `1d20` (the check's natural roll). */
25
+ readonly d20Shorthand?: boolean;
26
+ /** A keep-1-of-2 or keep-1-of-3 prints as a `>` / `<` chain (a roll type on a non-d20 die). */
27
+ readonly rollTypeChain?: boolean;
28
+ };
29
+ /** `text` as one argument: parenthesised unless it already is one. */
30
+ export declare function atom(text: string): string;
31
+ /** A number as one argument; the grammar has no negative literal, so `-3` is `(0 - 3)`. */
32
+ export declare function numberAtom(value: number): string;
33
+ /**
34
+ * Joins signed terms into one sum. Zero terms are dropped; a positive term leads when there is
35
+ * one. A term after the first is parenthesised unless it is atomic, and a positive term joins
36
+ * with ` + ` only when the running total before it can never be 0 (its range excludes 0).
37
+ */
38
+ export declare function joinTerms(terms: readonly ExpressionTerm[]): string;
39
+ /**
40
+ * The text of a scaled result `round(value * numerator / denominator)`: `N ** (inner)`,
41
+ * `(inner) // D`, `(inner) / D` or `(inner) ** N // D`. `**` is the product (`*` is the attack
42
+ * gate); `//` rounds down and `/` rounds up. Round-half and fractional factors have no token.
43
+ */
44
+ export declare function printScale(inner: string, numerator: number, denominator: number, rounding: "floor" | "round" | "ceil"): string;
45
+ /** The text of an AST node, read by the parser as the same distribution the resolver gives it. */
46
+ export declare function printNode(node: ExpressionNode, options?: PrintOptions): string;
47
+ /** The least and greatest value `node` can resolve to. */
48
+ export declare function nodeRange(node: ExpressionNode): [number, number];
49
+ /**
50
+ * The terms of a plain roll's configs: every die group, then the total of their flats. `root` is
51
+ * the natural-roll config (a d20 root prints first, as `d20`).
52
+ */
53
+ export declare function configTerms(configs: readonly RollConfig[], root: RollConfig | undefined): ExpressionTerm[];
54
+ /** The minimal shape of a check the printer reads. */
55
+ type CheckDice = {
56
+ getRootDieConfig(): RollConfig | undefined;
57
+ getBonusDiceConfigs(): RollConfig[];
58
+ readonly modifier: number;
59
+ };
60
+ /**
61
+ * A check's natural roll as the check resolvers read it: ONE root die with its reroll/minimum,
62
+ * rolled with its roll type (`d20`, `hd20`, `d20 > d20`, `(d20 reroll d2) < (d20 reroll d2)`).
63
+ * `undefined` for a check with no die.
64
+ */
65
+ export declare function rootDieExpression(check: CheckDice): string | undefined;
66
+ /**
67
+ * The to-hit/save total of a check as its resolvers read it: the root die ({@link
68
+ * rootDieExpression}), its flat total, and every bonus die group (Bless, Bane, Guidance).
69
+ */
70
+ export declare function checkExpression(check: CheckDice): string;
71
+ export {};
72
+ //# sourceMappingURL=expression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/builder/expression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,cAAc,EAAY,MAAM,SAAS,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;;;;;GAYG;AAEH;iCACiC;AACjC,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,sFAAsF;IACtF,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,+FAA+F;IAC/F,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAuBF,sEAAsE;AACtE,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAiClE;AAkCD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GACnC,MAAM,CAgBR;AAED,kGAAkG;AAClG,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAiDlF;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmDhE;AAoGD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc,EAAE,CAK1G;AAED,sDAAsD;AACtD,KAAK,SAAS,GAAG;IACf,gBAAgB,IAAI,UAAU,GAAG,SAAS,CAAC;IAC3C,mBAAmB,IAAI,UAAU,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAMtE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAaxD"}
@@ -1,5 +1,4 @@
1
- import { LRUCache } from "../common/lru-cache.js";
2
- import type { PMF } from "../pmf/pmf.js";
1
+ import { PMF } from "../pmf/pmf.js";
3
2
  import { RollBuilder } from "./roll.js";
4
3
  import type { RollFactory } from "./types.js";
5
4
  export declare function d(sides: number | string): RollBuilder;
@@ -13,5 +12,5 @@ export declare const hd20: RollBuilder;
13
12
  export declare const d100: RollBuilder;
14
13
  export declare const flat: (n: number) => RollBuilder;
15
14
  export declare const roll: RollFactory;
16
- export declare const builderPMFCache: LRUCache<string, PMF>;
15
+ export declare const builderPMFCache: import("..").LRUCache<string, PMF>;
17
16
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/builder/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA8D3C,wBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAKrD;AAED,eAAO,MAAM,EAAE,aAA0B,CAAC;AAC1C,eAAO,MAAM,EAAE,aAA0B,CAAC;AAC1C,eAAO,MAAM,EAAE,aAA0B,CAAC;AAC1C,eAAO,MAAM,GAAG,aAA2B,CAAC;AAC5C,eAAO,MAAM,GAAG,aAA2B,CAAC;AAC5C,eAAO,MAAM,GAAG,aAA2B,CAAC;AAC5C,eAAO,MAAM,IAAI,aAAqC,CAAC;AACvD,eAAO,MAAM,IAAI,aAA4B,CAAC;AAC9C,eAAO,MAAM,IAAI,MAAO,MAAM,gBAA+B,CAAC;AAE9D,eAAO,MAAM,IAAI,EAAE,WAAmC,CAAC;AAEvD,eAAO,MAAM,eAAe,uBAAkC,CAAC"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/builder/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAwB3C,wBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAKrD;AAED,eAAO,MAAM,EAAE,aAA0B,CAAC;AAC1C,eAAO,MAAM,EAAE,aAA0B,CAAC;AAC1C,eAAO,MAAM,EAAE,aAA0B,CAAC;AAC1C,eAAO,MAAM,GAAG,aAA2B,CAAC;AAC5C,eAAO,MAAM,GAAG,aAA2B,CAAC;AAC5C,eAAO,MAAM,GAAG,aAA2B,CAAC;AAC5C,eAAO,MAAM,IAAI,aAAqC,CAAC;AACvD,eAAO,MAAM,IAAI,aAA4B,CAAC;AAC9C,eAAO,MAAM,IAAI,MAAO,MAAM,gBAA+B,CAAC;AAE9D,eAAO,MAAM,IAAI,EAAE,WAAmC,CAAC;AAEvD,eAAO,MAAM,eAAe,oCAAwB,CAAC"}