@yipe/dice 0.5.0 → 0.7.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.
- package/dist/builder/ac.d.ts +25 -0
- package/dist/builder/ac.d.ts.map +1 -0
- package/dist/builder/ast.d.ts +9 -0
- package/dist/builder/ast.d.ts.map +1 -0
- package/dist/builder/attack.d.ts +41 -0
- package/dist/builder/attack.d.ts.map +1 -0
- package/dist/builder/d20.d.ts +6 -0
- package/dist/builder/d20.d.ts.map +1 -0
- package/dist/builder/dc.d.ts +26 -0
- package/dist/builder/dc.d.ts.map +1 -0
- package/dist/builder/example.d.ts +356 -0
- package/dist/builder/example.d.ts.map +1 -0
- package/dist/builder/factory.d.ts +17 -0
- package/dist/builder/factory.d.ts.map +1 -0
- package/dist/builder/index.cjs +172 -285
- package/dist/builder/index.cjs.map +1 -1
- package/dist/builder/index.d.ts +8 -429
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +172 -285
- package/dist/builder/index.js.map +1 -1
- package/dist/builder/nodes.d.ts +61 -0
- package/dist/builder/nodes.d.ts.map +1 -0
- package/dist/builder/prob.d.ts +3 -0
- package/dist/builder/prob.d.ts.map +1 -0
- package/dist/builder/roll.d.ts +205 -0
- package/dist/builder/roll.d.ts.map +1 -0
- package/dist/builder/save.d.ts +19 -0
- package/dist/builder/save.d.ts.map +1 -0
- package/dist/builder/types.d.ts +66 -0
- package/dist/builder/types.d.ts.map +1 -0
- package/dist/common/bounce.d.ts +32 -0
- package/dist/common/bounce.d.ts.map +1 -0
- package/dist/common/errors.d.ts +26 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/lru-cache.d.ts +17 -0
- package/dist/common/lru-cache.d.ts.map +1 -0
- package/dist/common/types.d.ts +65 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/index.cjs +152 -285
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +9 -111
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +152 -285
- package/dist/index.js.map +1 -1
- package/dist/parser/dice.d.ts +70 -0
- package/dist/parser/dice.d.ts.map +1 -0
- package/dist/parser/parser.d.ts +14 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/pmf/mixture.d.ts +37 -0
- package/dist/pmf/mixture.d.ts.map +1 -0
- package/dist/pmf/pmf.d.ts +449 -0
- package/dist/pmf/pmf.d.ts.map +1 -0
- package/dist/{pmf-D5VRghZI.d.cts → pmf/query.d.ts} +18 -548
- package/dist/pmf/query.d.ts.map +1 -0
- package/package.json +16 -15
- package/.claude/worktrees/amazing-matsumoto-27220c/LICENSE +0 -21
- package/.claude/worktrees/amazing-matsumoto-27220c/README.md +0 -518
- package/.claude/worktrees/vibrant-lovelace-0cc9e7/LICENSE +0 -21
- package/.claude/worktrees/vibrant-lovelace-0cc9e7/README.md +0 -518
- package/.claude/worktrees/wizardly-mclean-e375de/LICENSE +0 -21
- package/.claude/worktrees/wizardly-mclean-e375de/README.md +0 -518
- package/CHANGELOG.md +0 -239
- package/dist/builder/index.d.cts +0 -429
- package/dist/index.d.cts +0 -111
- package/dist/pmf-D5VRghZI.d.ts +0 -1129
package/dist/builder/index.d.ts
CHANGED
|
@@ -1,429 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
d6(): RollBuilder;
|
|
10
|
-
d8(): RollBuilder;
|
|
11
|
-
d10(): RollBuilder;
|
|
12
|
-
d12(): RollBuilder;
|
|
13
|
-
d20(): RollBuilder;
|
|
14
|
-
d100(): RollBuilder;
|
|
15
|
-
flat(n: number): RollBuilder;
|
|
16
|
-
};
|
|
17
|
-
type KeepMode = "highest" | "lowest";
|
|
18
|
-
type RollConfig = {
|
|
19
|
-
count: number;
|
|
20
|
-
sides: number;
|
|
21
|
-
modifier: number;
|
|
22
|
-
reroll: number;
|
|
23
|
-
explode: number;
|
|
24
|
-
minimum: number;
|
|
25
|
-
bestOf: number;
|
|
26
|
-
keep: {
|
|
27
|
-
total: number;
|
|
28
|
-
count: number;
|
|
29
|
-
mode: KeepMode;
|
|
30
|
-
} | undefined;
|
|
31
|
-
rollType: RollType;
|
|
32
|
-
isSubtraction?: boolean;
|
|
33
|
-
};
|
|
34
|
-
type Resolution = {
|
|
35
|
-
pmf: PMF;
|
|
36
|
-
check: PMF;
|
|
37
|
-
weights: {
|
|
38
|
-
[key: string]: number;
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
type AttackResolution = Resolution & {
|
|
42
|
-
hit: PMF;
|
|
43
|
-
crit: PMF;
|
|
44
|
-
miss: PMF;
|
|
45
|
-
weights: {
|
|
46
|
-
hit: number;
|
|
47
|
-
crit: number;
|
|
48
|
-
miss: number;
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
type SaveResolution = Resolution & {
|
|
52
|
-
saveFail: PMF;
|
|
53
|
-
saveSuccess: PMF;
|
|
54
|
-
weights: {
|
|
55
|
-
success: number;
|
|
56
|
-
fail: number;
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
interface CheckBuilder {
|
|
60
|
-
resolve(eps?: number): Resolution;
|
|
61
|
-
toExpression(): string;
|
|
62
|
-
readonly pmf: PMF;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
type SaveOutcome = "normal" | "half";
|
|
66
|
-
declare class SaveBuilder implements CheckBuilder {
|
|
67
|
-
readonly check: DCBuilder;
|
|
68
|
-
private readonly failureEffect?;
|
|
69
|
-
private readonly saveOutcome;
|
|
70
|
-
constructor(check: DCBuilder, failureEffect?: RollBuilder | undefined, saveOutcome?: SaveOutcome);
|
|
71
|
-
saveHalf(): SaveBuilder;
|
|
72
|
-
toExpression(): string;
|
|
73
|
-
resolve(eps?: number): SaveResolution;
|
|
74
|
-
toPMF(eps?: number): PMF;
|
|
75
|
-
get pmf(): PMF;
|
|
76
|
-
toQuery(eps?: number): DiceQuery;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
interface SaveConfig {
|
|
80
|
-
dc: number;
|
|
81
|
-
}
|
|
82
|
-
declare class DCBuilder extends RollBuilder {
|
|
83
|
-
private readonly saveConfig;
|
|
84
|
-
constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
|
|
85
|
-
dc(saveDC: number): DCBuilder;
|
|
86
|
-
get saveDC(): number;
|
|
87
|
-
add(anotherRoll: RollBuilder): DCBuilder;
|
|
88
|
-
addRoll(count?: number): DCBuilder;
|
|
89
|
-
onSaveFailure(val: number): SaveBuilder;
|
|
90
|
-
onSaveFailure(val: string): SaveBuilder;
|
|
91
|
-
onSaveFailure(val: RollBuilder): SaveBuilder;
|
|
92
|
-
onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
|
|
93
|
-
onSaveFailure(count: number, sides: number): SaveBuilder;
|
|
94
|
-
onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
|
|
95
|
-
onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
|
|
96
|
-
withElvenAccuracy(): never;
|
|
97
|
-
toExpression(): string;
|
|
98
|
-
toPMF(eps?: number): PMF;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode | ScaleNode;
|
|
102
|
-
type DieNode = {
|
|
103
|
-
type: "die";
|
|
104
|
-
sides: number;
|
|
105
|
-
reroll?: number;
|
|
106
|
-
minimum?: number;
|
|
107
|
-
explode?: number;
|
|
108
|
-
};
|
|
109
|
-
type ConstantNode = {
|
|
110
|
-
type: "constant";
|
|
111
|
-
value: number;
|
|
112
|
-
};
|
|
113
|
-
type SumNode = {
|
|
114
|
-
type: "sum";
|
|
115
|
-
count: number;
|
|
116
|
-
child: ExpressionNode;
|
|
117
|
-
};
|
|
118
|
-
type AddNode = {
|
|
119
|
-
type: "add";
|
|
120
|
-
children: {
|
|
121
|
-
node: ExpressionNode;
|
|
122
|
-
sign: 1 | -1;
|
|
123
|
-
}[];
|
|
124
|
-
};
|
|
125
|
-
type KeepNode = {
|
|
126
|
-
type: "keep";
|
|
127
|
-
mode: "highest" | "lowest";
|
|
128
|
-
count: number;
|
|
129
|
-
child: SumNode | KeepNode;
|
|
130
|
-
};
|
|
131
|
-
type D20RollNode = {
|
|
132
|
-
type: "d20Roll";
|
|
133
|
-
rollType: "advantage" | "disadvantage" | "elven accuracy";
|
|
134
|
-
child: ExpressionNode;
|
|
135
|
-
};
|
|
136
|
-
type HalfNode = {
|
|
137
|
-
type: "half";
|
|
138
|
-
child: ExpressionNode;
|
|
139
|
-
};
|
|
140
|
-
type MaxOfNode = {
|
|
141
|
-
type: "maxOf";
|
|
142
|
-
count: number;
|
|
143
|
-
child: ExpressionNode;
|
|
144
|
-
};
|
|
145
|
-
/**
|
|
146
|
-
* Scale the child's result by `numerator / denominator`, then round.
|
|
147
|
-
*
|
|
148
|
-
* Unlike {@link HalfNode} (a fixed `// 2` with floor), this is a general, composable
|
|
149
|
-
* multiplier/divider — the building block for damage-type resistance (`1/2`, floor),
|
|
150
|
-
* vulnerability (`2/1`), and similar per-source transforms. It renders as
|
|
151
|
-
* `N * (child)` when the denominator is 1, `(child) // D` when the numerator is 1,
|
|
152
|
-
* and `(child) * N // D` otherwise.
|
|
153
|
-
*/
|
|
154
|
-
type ScaleNode = {
|
|
155
|
-
type: "scale";
|
|
156
|
-
numerator: number;
|
|
157
|
-
denominator: number;
|
|
158
|
-
rounding: "floor" | "round" | "ceil";
|
|
159
|
-
child: ExpressionNode;
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
declare const defaultConfig: RollConfig;
|
|
163
|
-
declare class RollBuilder {
|
|
164
|
-
protected readonly subRollConfigs: readonly RollConfig[];
|
|
165
|
-
constructor(countOrConfigs?: number | readonly RollConfig[]);
|
|
166
|
-
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
167
|
-
protected get lastConfig(): RollConfig;
|
|
168
|
-
hasHiddenState(): boolean;
|
|
169
|
-
getSubRollConfigs(): readonly RollConfig[];
|
|
170
|
-
static fromConfig(config: Partial<RollConfig>): RollBuilder;
|
|
171
|
-
static fromConfigs(configs: Partial<RollConfig>[]): RollBuilder;
|
|
172
|
-
static fromArgs(...args: any[]): RollBuilder;
|
|
173
|
-
d(sides: number | undefined): RollBuilder;
|
|
174
|
-
plus(modOrRoll: number | RollBuilder | undefined): RollBuilder;
|
|
175
|
-
plus(count: number, die: RollBuilder): RollBuilder;
|
|
176
|
-
minus(modOrRoll: number | RollBuilder | undefined): RollBuilder;
|
|
177
|
-
minus(count: number, die: RollBuilder): RollBuilder;
|
|
178
|
-
/** Apply one-pass reroll threshold (k): reroll faces 1..k once, must keep. */
|
|
179
|
-
reroll(value: number): RollBuilder;
|
|
180
|
-
/** Set finite explode count for max-face explosions (Infinity allowed). */
|
|
181
|
-
explode(count?: number | undefined): RollBuilder;
|
|
182
|
-
/** Apply per-die minimum value (min > 0). */
|
|
183
|
-
minimum(val: number | undefined): RollBuilder;
|
|
184
|
-
bestOf(count: number | undefined): RollBuilder;
|
|
185
|
-
keepHighest(total: number, count: number): RollBuilder;
|
|
186
|
-
keepLowest(total: number, count: number): RollBuilder;
|
|
187
|
-
keepHighestAll(total: number, count: number): PooledRollBuilder;
|
|
188
|
-
keepLowestAll(total: number, count: number): PooledRollBuilder;
|
|
189
|
-
withAdvantage(): RollBuilder;
|
|
190
|
-
withDisadvantage(): RollBuilder;
|
|
191
|
-
add(anotherRoll: RollBuilder | undefined): RollBuilder;
|
|
192
|
-
withBonus(anotherRoll: RollBuilder): RollBuilder;
|
|
193
|
-
addRoll(count?: number): RollBuilder;
|
|
194
|
-
scaleDice(scale: number): RollBuilder;
|
|
195
|
-
doubleDice(): RollBuilder;
|
|
196
|
-
alwaysHits(): AlwaysHitBuilder;
|
|
197
|
-
alwaysCrits(): AlwaysCritBuilder;
|
|
198
|
-
copy(): RollBuilder;
|
|
199
|
-
d4: () => RollBuilder;
|
|
200
|
-
d6: () => RollBuilder;
|
|
201
|
-
d8: () => RollBuilder;
|
|
202
|
-
d10: () => RollBuilder;
|
|
203
|
-
d12: () => RollBuilder;
|
|
204
|
-
d20: () => RollBuilder;
|
|
205
|
-
d100: () => RollBuilder;
|
|
206
|
-
withElvenAccuracy(): RollBuilder;
|
|
207
|
-
toExpression(): string;
|
|
208
|
-
toPMF(eps?: number): PMF;
|
|
209
|
-
get pmf(): PMF;
|
|
210
|
-
toQuery(eps?: number): DiceQuery;
|
|
211
|
-
toAST(): ExpressionNode;
|
|
212
|
-
private configToSingleExpressionWithoutModifier;
|
|
213
|
-
getRootDieConfig(): RollConfig | undefined;
|
|
214
|
-
getAllDieConfigs(): readonly RollConfig[];
|
|
215
|
-
getBonusDiceConfigs(): RollConfig[];
|
|
216
|
-
getBonusDicePMFs(check: RollBuilder, eps?: number): PMF[];
|
|
217
|
-
get modifier(): number;
|
|
218
|
-
get rollType(): RollType;
|
|
219
|
-
get baseReroll(): number;
|
|
220
|
-
half(): HalfRollBuilder;
|
|
221
|
-
/**
|
|
222
|
-
* Scale this roll's result by `numerator / denominator`, rounding each outcome.
|
|
223
|
-
* A general, composable form of {@link half} — used to model damage-type resistance
|
|
224
|
-
* (`scaleResult(1, 2)` → `(expr) // 2`) and vulnerability (`scaleResult(2)` → `2 * (expr)`).
|
|
225
|
-
* Compose several of these (and plain rolls) into one payload with {@link sumRolls}.
|
|
226
|
-
*/
|
|
227
|
-
scaleResult(numerator: number, denominator?: number, rounding?: "floor" | "round" | "ceil"): ScaleRollBuilder;
|
|
228
|
-
maxOf(count: number): MaxOfRollBuilder;
|
|
229
|
-
ac(_targetAC: number): ACBuilder;
|
|
230
|
-
dc(_saveDC: number): DCBuilder;
|
|
231
|
-
}
|
|
232
|
-
declare class HalfRollBuilder extends RollBuilder {
|
|
233
|
-
private readonly innerRoll;
|
|
234
|
-
constructor(innerRoll: RollBuilder);
|
|
235
|
-
hasHiddenState(): boolean;
|
|
236
|
-
get lastConfig(): RollConfig;
|
|
237
|
-
getSubRollConfigs(): readonly RollConfig[];
|
|
238
|
-
toExpression(): string;
|
|
239
|
-
toAST(): ExpressionNode;
|
|
240
|
-
toPMF(eps?: number): PMF;
|
|
241
|
-
copy(): HalfRollBuilder;
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* A roll whose result is scaled by `numerator / denominator` and rounded — the composable
|
|
245
|
-
* generalization of {@link HalfRollBuilder}. Renders as `N * (inner)`, `(inner) // D`, or
|
|
246
|
-
* `(inner) * N // D`. Terminal (like `half`): use {@link sumRolls} to combine with other rolls.
|
|
247
|
-
*/
|
|
248
|
-
declare class ScaleRollBuilder extends RollBuilder {
|
|
249
|
-
private readonly innerRoll;
|
|
250
|
-
private readonly numerator;
|
|
251
|
-
private readonly denominator;
|
|
252
|
-
private readonly rounding;
|
|
253
|
-
constructor(innerRoll: RollBuilder, numerator: number, denominator?: number, rounding?: "floor" | "round" | "ceil");
|
|
254
|
-
hasHiddenState(): boolean;
|
|
255
|
-
get lastConfig(): RollConfig;
|
|
256
|
-
getSubRollConfigs(): readonly RollConfig[];
|
|
257
|
-
toExpression(): string;
|
|
258
|
-
toAST(): ExpressionNode;
|
|
259
|
-
toPMF(eps?: number): PMF;
|
|
260
|
-
copy(): ScaleRollBuilder;
|
|
261
|
-
}
|
|
262
|
-
declare class MaxOfRollBuilder extends RollBuilder {
|
|
263
|
-
private readonly innerRoll;
|
|
264
|
-
private readonly count;
|
|
265
|
-
private readonly diceCount?;
|
|
266
|
-
private readonly diceSides?;
|
|
267
|
-
constructor(innerRoll: RollBuilder, count: number, diceCount?: number | undefined, diceSides?: number | undefined);
|
|
268
|
-
hasHiddenState(): boolean;
|
|
269
|
-
get lastConfig(): RollConfig;
|
|
270
|
-
getSubRollConfigs(): readonly RollConfig[];
|
|
271
|
-
toExpression(): string;
|
|
272
|
-
toAST(): ExpressionNode;
|
|
273
|
-
toPMF(eps?: number): PMF;
|
|
274
|
-
copy(): MaxOfRollBuilder;
|
|
275
|
-
}
|
|
276
|
-
declare class AlwaysHitBuilder extends RollBuilder {
|
|
277
|
-
readonly attackConfig: CritConfig;
|
|
278
|
-
constructor(baseRoll: RollBuilder, attackConfig?: CritConfig);
|
|
279
|
-
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
280
|
-
onHit(val: number): AttackBuilder;
|
|
281
|
-
onHit(val: string): AttackBuilder;
|
|
282
|
-
onHit(val: RollBuilder): AttackBuilder;
|
|
283
|
-
onHit(count: number, die: RollBuilder): AttackBuilder;
|
|
284
|
-
onHit(count: number, sides: number): AttackBuilder;
|
|
285
|
-
onHit(count: number, die: RollBuilder, modifier: number): AttackBuilder;
|
|
286
|
-
onHit(count: number, sides: number, modifier: number): AttackBuilder;
|
|
287
|
-
get critThreshold(): number;
|
|
288
|
-
critOn(critThreshold: number): AlwaysHitBuilder;
|
|
289
|
-
alwaysCrits(): AlwaysCritBuilder;
|
|
290
|
-
toExpression(): string;
|
|
291
|
-
toPMF(): PMF;
|
|
292
|
-
copy(): AlwaysHitBuilder;
|
|
293
|
-
}
|
|
294
|
-
declare class AlwaysCritBuilder extends RollBuilder {
|
|
295
|
-
readonly attackConfig: CritConfig & {
|
|
296
|
-
ac?: number;
|
|
297
|
-
};
|
|
298
|
-
readonly fromAlwaysHit: boolean;
|
|
299
|
-
constructor(baseRoll: RollBuilder, attackConfig?: CritConfig & {
|
|
300
|
-
ac?: number;
|
|
301
|
-
}, fromAlwaysHit?: boolean);
|
|
302
|
-
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
303
|
-
onHit(val: number): AttackBuilder;
|
|
304
|
-
onHit(val: string): AttackBuilder;
|
|
305
|
-
onHit(val: RollBuilder): AttackBuilder;
|
|
306
|
-
onHit(count: number, die: RollBuilder): AttackBuilder;
|
|
307
|
-
onHit(count: number, sides: number): AttackBuilder;
|
|
308
|
-
onHit(count: number, die: RollBuilder, modifier: number): AttackBuilder;
|
|
309
|
-
onHit(count: number, sides: number, modifier: number): AttackBuilder;
|
|
310
|
-
get critThreshold(): number;
|
|
311
|
-
critOn(critThreshold: number): AlwaysCritBuilder;
|
|
312
|
-
toExpression(): string;
|
|
313
|
-
toPMF(): PMF;
|
|
314
|
-
copy(): AlwaysCritBuilder;
|
|
315
|
-
}
|
|
316
|
-
declare class ParsedRollBuilder extends RollBuilder {
|
|
317
|
-
private readonly cachedPMF;
|
|
318
|
-
private readonly originalExpression;
|
|
319
|
-
constructor(expression: string);
|
|
320
|
-
hasHiddenState(): boolean;
|
|
321
|
-
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
322
|
-
toPMF(_eps?: number): PMF;
|
|
323
|
-
toExpression(): string;
|
|
324
|
-
toAST(): ExpressionNode;
|
|
325
|
-
copy(): ParsedRollBuilder;
|
|
326
|
-
doubleDice(): ParsedRollBuilder;
|
|
327
|
-
}
|
|
328
|
-
declare class PooledRollBuilder extends RollBuilder {
|
|
329
|
-
private readonly baseAST;
|
|
330
|
-
private readonly baseExpression;
|
|
331
|
-
constructor(baseAST: ExpressionNode, baseExpression: string, configs?: readonly RollConfig[]);
|
|
332
|
-
protected create(configs: readonly RollConfig[]): PooledRollBuilder;
|
|
333
|
-
hasHiddenState(): boolean;
|
|
334
|
-
d(_sides: number | undefined): RollBuilder;
|
|
335
|
-
reroll(_value: number): RollBuilder;
|
|
336
|
-
explode(_count?: number | undefined): RollBuilder;
|
|
337
|
-
minimum(_val: number | undefined): RollBuilder;
|
|
338
|
-
bestOf(_count: number | undefined): RollBuilder;
|
|
339
|
-
keepHighest(_total: number, _count: number): RollBuilder;
|
|
340
|
-
keepLowest(_total: number, _count: number): RollBuilder;
|
|
341
|
-
withAdvantage(): RollBuilder;
|
|
342
|
-
withDisadvantage(): RollBuilder;
|
|
343
|
-
withElvenAccuracy(): RollBuilder;
|
|
344
|
-
toAST(): ExpressionNode;
|
|
345
|
-
toExpression(): string;
|
|
346
|
-
copy(): PooledRollBuilder;
|
|
347
|
-
scaleDice(scale: number): RollBuilder;
|
|
348
|
-
times(count: number): PooledRollBuilder;
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Combine several rolls into one additive payload whose PMF is their convolution and whose
|
|
352
|
-
* expression is them joined with ` + `. Unlike `a.plus(b)`, this preserves parts that carry
|
|
353
|
-
* hidden state (e.g. `roll.scaleResult(1, 2)` / `roll.half()`), so per-damage-type resistance
|
|
354
|
-
* and vulnerability survive into both the distribution and the rendered expression.
|
|
355
|
-
* Empty parts collapse to `0`; a single part is returned unwrapped.
|
|
356
|
-
*/
|
|
357
|
-
declare function sumRolls(parts: readonly RollBuilder[]): RollBuilder;
|
|
358
|
-
|
|
359
|
-
type ActionEffect = RollBuilder;
|
|
360
|
-
declare class AttackBuilder implements CheckBuilder {
|
|
361
|
-
readonly check: ACBuilder | AlwaysHitBuilder | AlwaysCritBuilder;
|
|
362
|
-
private readonly hitEffect?;
|
|
363
|
-
private readonly critEffect?;
|
|
364
|
-
private readonly missEffect?;
|
|
365
|
-
constructor(check: ACBuilder | AlwaysHitBuilder | AlwaysCritBuilder, hitEffect?: ActionEffect | undefined, critEffect?: (ActionEffect | null) | undefined, missEffect?: ActionEffect | undefined);
|
|
366
|
-
onCrit(val: number): AttackBuilder;
|
|
367
|
-
onCrit(val: string): AttackBuilder;
|
|
368
|
-
onCrit(val: RollBuilder): AttackBuilder;
|
|
369
|
-
onCrit(count: number, die: RollBuilder): AttackBuilder;
|
|
370
|
-
onCrit(count: number, sides: number): AttackBuilder;
|
|
371
|
-
onCrit(count: number, die: RollBuilder, modifier: number): AttackBuilder;
|
|
372
|
-
onCrit(count: number, sides: number, modifier: number): AttackBuilder;
|
|
373
|
-
onMiss(val: number): AttackBuilder;
|
|
374
|
-
onMiss(val: string): AttackBuilder;
|
|
375
|
-
onMiss(val: RollBuilder): AttackBuilder;
|
|
376
|
-
onMiss(count: number, die: RollBuilder): AttackBuilder;
|
|
377
|
-
onMiss(count: number, sides: number): AttackBuilder;
|
|
378
|
-
onMiss(count: number, die: RollBuilder, modifier: number): AttackBuilder;
|
|
379
|
-
onMiss(count: number, sides: number, modifier: number): AttackBuilder;
|
|
380
|
-
noCrit(): AttackBuilder;
|
|
381
|
-
toExpression(): string;
|
|
382
|
-
resolveProbabilities(check: ACBuilder | AlwaysHitBuilder | AlwaysCritBuilder, eps?: number): {
|
|
383
|
-
pSuccess: number;
|
|
384
|
-
pHit: number;
|
|
385
|
-
pCrit: number;
|
|
386
|
-
pMiss: number;
|
|
387
|
-
};
|
|
388
|
-
resolve(eps?: number): AttackResolution;
|
|
389
|
-
toPMF(eps?: number): PMF;
|
|
390
|
-
get pmf(): PMF;
|
|
391
|
-
toQuery(eps?: number): DiceQuery;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
interface AttackConfig {
|
|
395
|
-
ac: number;
|
|
396
|
-
critThreshold: number;
|
|
397
|
-
}
|
|
398
|
-
declare class ACBuilder extends RollBuilder {
|
|
399
|
-
readonly attackConfig: AttackConfig;
|
|
400
|
-
constructor(baseRoll: RollBuilder, ac: number, attackConfig?: AttackConfig);
|
|
401
|
-
onHit(val: number): AttackBuilder;
|
|
402
|
-
onHit(val: string): AttackBuilder;
|
|
403
|
-
onHit(val: RollBuilder): AttackBuilder;
|
|
404
|
-
onHit(count: number, die: RollBuilder): AttackBuilder;
|
|
405
|
-
onHit(count: number, sides: number): AttackBuilder;
|
|
406
|
-
onHit(count: number, die: RollBuilder, modifier: number): AttackBuilder;
|
|
407
|
-
onHit(count: number, sides: number, modifier: number): AttackBuilder;
|
|
408
|
-
get critThreshold(): number;
|
|
409
|
-
critOn(threshold: number): ACBuilder;
|
|
410
|
-
alwaysCrits(): AlwaysCritBuilder;
|
|
411
|
-
toExpression(): string;
|
|
412
|
-
toPMF(eps?: number): PMF;
|
|
413
|
-
copy(): ACBuilder;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
declare function d(sides: number | string): RollBuilder;
|
|
417
|
-
declare const d4: RollBuilder;
|
|
418
|
-
declare const d6: RollBuilder;
|
|
419
|
-
declare const d8: RollBuilder;
|
|
420
|
-
declare const d10: RollBuilder;
|
|
421
|
-
declare const d12: RollBuilder;
|
|
422
|
-
declare const d20: RollBuilder;
|
|
423
|
-
declare const hd20: RollBuilder;
|
|
424
|
-
declare const d100: RollBuilder;
|
|
425
|
-
declare const flat: (n: number) => RollBuilder;
|
|
426
|
-
declare const roll: RollFactory;
|
|
427
|
-
declare const builderPMFCache: LRUCache<string, PMF>;
|
|
428
|
-
|
|
429
|
-
export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, AttackBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, RollType, SaveBuilder, type SaveOutcome, type SaveResolution, ScaleRollBuilder, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll, sumRolls };
|
|
1
|
+
export * from "./ac.js";
|
|
2
|
+
export * from "./attack.js";
|
|
3
|
+
export * from "./dc.js";
|
|
4
|
+
export * from "./factory.js";
|
|
5
|
+
export * from "./roll.js";
|
|
6
|
+
export * from "./save.js";
|
|
7
|
+
export * from "./types.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|