@yipe/dice 0.2.20 → 0.2.22
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/index.cjs +247 -19
- package/dist/builder/index.cjs.map +1 -1
- package/dist/builder/index.d.cts +120 -102
- package/dist/builder/index.d.ts +120 -102
- package/dist/builder/index.js +247 -20
- package/dist/builder/index.js.map +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/builder/index.d.cts
CHANGED
|
@@ -1,54 +1,9 @@
|
|
|
1
|
-
import { P as PMF,
|
|
2
|
-
|
|
3
|
-
type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
|
|
4
|
-
type DieNode = {
|
|
5
|
-
type: "die";
|
|
6
|
-
sides: number;
|
|
7
|
-
reroll?: number;
|
|
8
|
-
minimum?: number;
|
|
9
|
-
explode?: number;
|
|
10
|
-
};
|
|
11
|
-
type ConstantNode = {
|
|
12
|
-
type: "constant";
|
|
13
|
-
value: number;
|
|
14
|
-
};
|
|
15
|
-
type SumNode = {
|
|
16
|
-
type: "sum";
|
|
17
|
-
count: number;
|
|
18
|
-
child: ExpressionNode;
|
|
19
|
-
};
|
|
20
|
-
type AddNode = {
|
|
21
|
-
type: "add";
|
|
22
|
-
children: {
|
|
23
|
-
node: ExpressionNode;
|
|
24
|
-
sign: 1 | -1;
|
|
25
|
-
}[];
|
|
26
|
-
};
|
|
27
|
-
type KeepNode = {
|
|
28
|
-
type: "keep";
|
|
29
|
-
mode: "highest" | "lowest";
|
|
30
|
-
count: number;
|
|
31
|
-
child: SumNode | KeepNode;
|
|
32
|
-
};
|
|
33
|
-
type D20RollNode = {
|
|
34
|
-
type: "d20Roll";
|
|
35
|
-
rollType: "advantage" | "disadvantage" | "elven accuracy";
|
|
36
|
-
child: ExpressionNode;
|
|
37
|
-
};
|
|
38
|
-
type HalfNode = {
|
|
39
|
-
type: "half";
|
|
40
|
-
child: ExpressionNode;
|
|
41
|
-
};
|
|
42
|
-
type MaxOfNode = {
|
|
43
|
-
type: "maxOf";
|
|
44
|
-
count: number;
|
|
45
|
-
child: ExpressionNode;
|
|
46
|
-
};
|
|
1
|
+
import { P as PMF, i as DiceQuery, C as CritConfig, L as LRUCache } from '../pmf-BC1poIqF.cjs';
|
|
47
2
|
|
|
48
3
|
type RollFactory = {
|
|
49
4
|
(count: number, sides?: number, modifier?: number): RollBuilder;
|
|
50
5
|
(count: number, die: RollBuilder, modifier?: number): RollBuilder;
|
|
51
|
-
d(sides: number): RollBuilder;
|
|
6
|
+
d(sides: number | string): RollBuilder;
|
|
52
7
|
hd20(): RollBuilder;
|
|
53
8
|
d4(): RollBuilder;
|
|
54
9
|
d6(): RollBuilder;
|
|
@@ -108,11 +63,94 @@ interface CheckBuilder {
|
|
|
108
63
|
readonly pmf: PMF;
|
|
109
64
|
}
|
|
110
65
|
|
|
66
|
+
type SaveOutcome = "normal" | "half";
|
|
67
|
+
declare class SaveBuilder implements CheckBuilder {
|
|
68
|
+
readonly check: DCBuilder;
|
|
69
|
+
private readonly failureEffect?;
|
|
70
|
+
private readonly saveOutcome;
|
|
71
|
+
constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
|
|
72
|
+
saveHalf(): SaveBuilder;
|
|
73
|
+
toExpression(): string;
|
|
74
|
+
resolve(eps?: number): SaveResolution;
|
|
75
|
+
toPMF(eps?: number): PMF;
|
|
76
|
+
get pmf(): PMF;
|
|
77
|
+
toQuery(eps?: number): DiceQuery;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
interface SaveConfig {
|
|
81
|
+
dc: number;
|
|
82
|
+
}
|
|
83
|
+
declare class DCBuilder extends RollBuilder {
|
|
84
|
+
private readonly saveConfig;
|
|
85
|
+
constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
|
|
86
|
+
dc(saveDC: number): DCBuilder;
|
|
87
|
+
get saveDC(): number;
|
|
88
|
+
add(anotherRoll: RollBuilder): DCBuilder;
|
|
89
|
+
addRoll(count?: number): DCBuilder;
|
|
90
|
+
onSaveFailure(val: number): SaveBuilder;
|
|
91
|
+
onSaveFailure(val: string): SaveBuilder;
|
|
92
|
+
onSaveFailure(val: RollBuilder): SaveBuilder;
|
|
93
|
+
onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
|
|
94
|
+
onSaveFailure(count: number, sides: number): SaveBuilder;
|
|
95
|
+
onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
|
|
96
|
+
onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
|
|
97
|
+
withElvenAccuracy(): never;
|
|
98
|
+
toExpression(): string;
|
|
99
|
+
toPMF(eps?: number): PMF;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
|
|
103
|
+
type DieNode = {
|
|
104
|
+
type: "die";
|
|
105
|
+
sides: number;
|
|
106
|
+
reroll?: number;
|
|
107
|
+
minimum?: number;
|
|
108
|
+
explode?: number;
|
|
109
|
+
};
|
|
110
|
+
type ConstantNode = {
|
|
111
|
+
type: "constant";
|
|
112
|
+
value: number;
|
|
113
|
+
};
|
|
114
|
+
type SumNode = {
|
|
115
|
+
type: "sum";
|
|
116
|
+
count: number;
|
|
117
|
+
child: ExpressionNode;
|
|
118
|
+
};
|
|
119
|
+
type AddNode = {
|
|
120
|
+
type: "add";
|
|
121
|
+
children: {
|
|
122
|
+
node: ExpressionNode;
|
|
123
|
+
sign: 1 | -1;
|
|
124
|
+
}[];
|
|
125
|
+
};
|
|
126
|
+
type KeepNode = {
|
|
127
|
+
type: "keep";
|
|
128
|
+
mode: "highest" | "lowest";
|
|
129
|
+
count: number;
|
|
130
|
+
child: SumNode | KeepNode;
|
|
131
|
+
};
|
|
132
|
+
type D20RollNode = {
|
|
133
|
+
type: "d20Roll";
|
|
134
|
+
rollType: "advantage" | "disadvantage" | "elven accuracy";
|
|
135
|
+
child: ExpressionNode;
|
|
136
|
+
};
|
|
137
|
+
type HalfNode = {
|
|
138
|
+
type: "half";
|
|
139
|
+
child: ExpressionNode;
|
|
140
|
+
};
|
|
141
|
+
type MaxOfNode = {
|
|
142
|
+
type: "maxOf";
|
|
143
|
+
count: number;
|
|
144
|
+
child: ExpressionNode;
|
|
145
|
+
};
|
|
146
|
+
|
|
111
147
|
declare const defaultConfig: RollConfig;
|
|
112
148
|
declare class RollBuilder {
|
|
113
149
|
protected readonly subRollConfigs: readonly RollConfig[];
|
|
114
150
|
constructor(countOrConfigs?: number | readonly RollConfig[]);
|
|
151
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
115
152
|
protected get lastConfig(): RollConfig;
|
|
153
|
+
hasHiddenState(): boolean;
|
|
116
154
|
getSubRollConfigs(): readonly RollConfig[];
|
|
117
155
|
static fromConfig(config: Partial<RollConfig>): RollBuilder;
|
|
118
156
|
static fromConfigs(configs: Partial<RollConfig>[]): RollBuilder;
|
|
@@ -131,6 +169,8 @@ declare class RollBuilder {
|
|
|
131
169
|
bestOf(count: number | undefined): RollBuilder;
|
|
132
170
|
keepHighest(total: number, count: number): RollBuilder;
|
|
133
171
|
keepLowest(total: number, count: number): RollBuilder;
|
|
172
|
+
keepHighestAll(total: number, count: number): PooledRollBuilder;
|
|
173
|
+
keepLowestAll(total: number, count: number): PooledRollBuilder;
|
|
134
174
|
withAdvantage(): RollBuilder;
|
|
135
175
|
withDisadvantage(): RollBuilder;
|
|
136
176
|
add(anotherRoll: RollBuilder | undefined): RollBuilder;
|
|
@@ -164,10 +204,13 @@ declare class RollBuilder {
|
|
|
164
204
|
get baseReroll(): number;
|
|
165
205
|
half(): HalfRollBuilder;
|
|
166
206
|
maxOf(count: number): MaxOfRollBuilder;
|
|
207
|
+
ac(targetAC: number): ACBuilder;
|
|
208
|
+
dc(saveDC: number): DCBuilder;
|
|
167
209
|
}
|
|
168
210
|
declare class HalfRollBuilder extends RollBuilder {
|
|
169
211
|
private readonly innerRoll;
|
|
170
212
|
constructor(innerRoll: RollBuilder);
|
|
213
|
+
hasHiddenState(): boolean;
|
|
171
214
|
get lastConfig(): any;
|
|
172
215
|
getSubRollConfigs(): readonly RollConfig[];
|
|
173
216
|
toExpression(): string;
|
|
@@ -181,6 +224,7 @@ declare class MaxOfRollBuilder extends RollBuilder {
|
|
|
181
224
|
private readonly diceCount?;
|
|
182
225
|
private readonly diceSides?;
|
|
183
226
|
constructor(innerRoll: RollBuilder, count: number, diceCount?: number, diceSides?: number);
|
|
227
|
+
hasHiddenState(): boolean;
|
|
184
228
|
get lastConfig(): any;
|
|
185
229
|
getSubRollConfigs(): readonly RollConfig[];
|
|
186
230
|
toExpression(): string;
|
|
@@ -191,6 +235,7 @@ declare class MaxOfRollBuilder extends RollBuilder {
|
|
|
191
235
|
declare class AlwaysHitBuilder extends RollBuilder {
|
|
192
236
|
readonly attackConfig: CritConfig;
|
|
193
237
|
constructor(baseRoll: RollBuilder, attackConfig?: CritConfig);
|
|
238
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
194
239
|
onHit(val: number): AttackBuilder;
|
|
195
240
|
onHit(val: string): AttackBuilder;
|
|
196
241
|
onHit(val: RollBuilder): AttackBuilder;
|
|
@@ -213,6 +258,7 @@ declare class AlwaysCritBuilder extends RollBuilder {
|
|
|
213
258
|
constructor(baseRoll: RollBuilder, attackConfig?: CritConfig & {
|
|
214
259
|
ac?: number;
|
|
215
260
|
}, fromAlwaysHit?: boolean);
|
|
261
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
216
262
|
onHit(val: number): AttackBuilder;
|
|
217
263
|
onHit(val: string): AttackBuilder;
|
|
218
264
|
onHit(val: RollBuilder): AttackBuilder;
|
|
@@ -226,22 +272,40 @@ declare class AlwaysCritBuilder extends RollBuilder {
|
|
|
226
272
|
toPMF(): PMF;
|
|
227
273
|
copy(): AlwaysCritBuilder;
|
|
228
274
|
}
|
|
229
|
-
/**
|
|
230
|
-
* A RollBuilder that wraps a pre-computed PMF from a parsed string expression.
|
|
231
|
-
* This is used to support string-based damage expressions in onHit/onCrit/onMiss.
|
|
232
|
-
* The builder is not fully composable (e.g., you can't call .plus() on it),
|
|
233
|
-
* but it can be used anywhere a RollBuilder is expected for terminal damage.
|
|
234
|
-
*/
|
|
235
275
|
declare class ParsedRollBuilder extends RollBuilder {
|
|
236
276
|
private readonly cachedPMF;
|
|
237
277
|
private readonly originalExpression;
|
|
238
278
|
constructor(expression: string);
|
|
239
|
-
|
|
279
|
+
hasHiddenState(): boolean;
|
|
280
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
281
|
+
toPMF(_eps?: number): PMF;
|
|
240
282
|
toExpression(): string;
|
|
241
283
|
toAST(): ExpressionNode;
|
|
242
284
|
copy(): ParsedRollBuilder;
|
|
243
285
|
doubleDice(): ParsedRollBuilder;
|
|
244
286
|
}
|
|
287
|
+
declare class PooledRollBuilder extends RollBuilder {
|
|
288
|
+
private readonly baseAST;
|
|
289
|
+
private readonly baseExpression;
|
|
290
|
+
constructor(baseAST: ExpressionNode, baseExpression: string, configs?: readonly RollConfig[]);
|
|
291
|
+
protected create(configs: readonly RollConfig[]): PooledRollBuilder;
|
|
292
|
+
hasHiddenState(): boolean;
|
|
293
|
+
d(_sides: number | undefined): RollBuilder;
|
|
294
|
+
reroll(_value: number): RollBuilder;
|
|
295
|
+
explode(_count?: number | undefined): RollBuilder;
|
|
296
|
+
minimum(_val: number | undefined): RollBuilder;
|
|
297
|
+
bestOf(_count: number | undefined): RollBuilder;
|
|
298
|
+
keepHighest(_total: number, _count: number): RollBuilder;
|
|
299
|
+
keepLowest(_total: number, _count: number): RollBuilder;
|
|
300
|
+
withAdvantage(): RollBuilder;
|
|
301
|
+
withDisadvantage(): RollBuilder;
|
|
302
|
+
withElvenAccuracy(): RollBuilder;
|
|
303
|
+
toAST(): ExpressionNode;
|
|
304
|
+
toExpression(): string;
|
|
305
|
+
copy(): PooledRollBuilder;
|
|
306
|
+
scaleDice(scale: number): RollBuilder;
|
|
307
|
+
times(count: number): PooledRollBuilder;
|
|
308
|
+
}
|
|
245
309
|
|
|
246
310
|
type ActionEffect = RollBuilder;
|
|
247
311
|
declare class AttackBuilder implements CheckBuilder {
|
|
@@ -299,54 +363,8 @@ declare class ACBuilder extends RollBuilder {
|
|
|
299
363
|
toPMF(eps?: number): PMF;
|
|
300
364
|
copy(): ACBuilder;
|
|
301
365
|
}
|
|
302
|
-
declare module "./roll" {
|
|
303
|
-
interface RollBuilder {
|
|
304
|
-
ac(targetAC: number): ACBuilder;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
type SaveOutcome = "normal" | "half";
|
|
309
|
-
declare class SaveBuilder implements CheckBuilder {
|
|
310
|
-
readonly check: DCBuilder;
|
|
311
|
-
private readonly failureEffect?;
|
|
312
|
-
private readonly saveOutcome;
|
|
313
|
-
constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
|
|
314
|
-
saveHalf(): SaveBuilder;
|
|
315
|
-
toExpression(): string;
|
|
316
|
-
resolve(eps?: number): SaveResolution;
|
|
317
|
-
toPMF(eps?: number): PMF;
|
|
318
|
-
get pmf(): PMF;
|
|
319
|
-
toQuery(eps?: number): DiceQuery;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
interface SaveConfig {
|
|
323
|
-
dc: number;
|
|
324
|
-
}
|
|
325
|
-
declare class DCBuilder extends RollBuilder {
|
|
326
|
-
private readonly saveConfig;
|
|
327
|
-
constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
|
|
328
|
-
dc(saveDC: number): DCBuilder;
|
|
329
|
-
get saveDC(): number;
|
|
330
|
-
add(anotherRoll: RollBuilder): DCBuilder;
|
|
331
|
-
addRoll(count?: number): DCBuilder;
|
|
332
|
-
onSaveFailure(val: number): SaveBuilder;
|
|
333
|
-
onSaveFailure(val: string): SaveBuilder;
|
|
334
|
-
onSaveFailure(val: RollBuilder): SaveBuilder;
|
|
335
|
-
onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
|
|
336
|
-
onSaveFailure(count: number, sides: number): SaveBuilder;
|
|
337
|
-
onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
|
|
338
|
-
onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
|
|
339
|
-
withElvenAccuracy(): never;
|
|
340
|
-
toExpression(): string;
|
|
341
|
-
toPMF(eps?: number): PMF;
|
|
342
|
-
}
|
|
343
|
-
declare module "./roll" {
|
|
344
|
-
interface RollBuilder {
|
|
345
|
-
dc(saveDC: number): DCBuilder;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
366
|
|
|
349
|
-
declare function d(sides: number): RollBuilder;
|
|
367
|
+
declare function d(sides: number | string): RollBuilder;
|
|
350
368
|
declare const d4: RollBuilder;
|
|
351
369
|
declare const d6: RollBuilder;
|
|
352
370
|
declare const d8: RollBuilder;
|
|
@@ -359,4 +377,4 @@ declare const flat: (n: number) => RollBuilder;
|
|
|
359
377
|
declare const roll: RollFactory;
|
|
360
378
|
declare const builderPMFCache: LRUCache<string, PMF>;
|
|
361
379
|
|
|
362
|
-
export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
|
|
380
|
+
export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
|
package/dist/builder/index.d.ts
CHANGED
|
@@ -1,54 +1,9 @@
|
|
|
1
|
-
import { P as PMF,
|
|
2
|
-
|
|
3
|
-
type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
|
|
4
|
-
type DieNode = {
|
|
5
|
-
type: "die";
|
|
6
|
-
sides: number;
|
|
7
|
-
reroll?: number;
|
|
8
|
-
minimum?: number;
|
|
9
|
-
explode?: number;
|
|
10
|
-
};
|
|
11
|
-
type ConstantNode = {
|
|
12
|
-
type: "constant";
|
|
13
|
-
value: number;
|
|
14
|
-
};
|
|
15
|
-
type SumNode = {
|
|
16
|
-
type: "sum";
|
|
17
|
-
count: number;
|
|
18
|
-
child: ExpressionNode;
|
|
19
|
-
};
|
|
20
|
-
type AddNode = {
|
|
21
|
-
type: "add";
|
|
22
|
-
children: {
|
|
23
|
-
node: ExpressionNode;
|
|
24
|
-
sign: 1 | -1;
|
|
25
|
-
}[];
|
|
26
|
-
};
|
|
27
|
-
type KeepNode = {
|
|
28
|
-
type: "keep";
|
|
29
|
-
mode: "highest" | "lowest";
|
|
30
|
-
count: number;
|
|
31
|
-
child: SumNode | KeepNode;
|
|
32
|
-
};
|
|
33
|
-
type D20RollNode = {
|
|
34
|
-
type: "d20Roll";
|
|
35
|
-
rollType: "advantage" | "disadvantage" | "elven accuracy";
|
|
36
|
-
child: ExpressionNode;
|
|
37
|
-
};
|
|
38
|
-
type HalfNode = {
|
|
39
|
-
type: "half";
|
|
40
|
-
child: ExpressionNode;
|
|
41
|
-
};
|
|
42
|
-
type MaxOfNode = {
|
|
43
|
-
type: "maxOf";
|
|
44
|
-
count: number;
|
|
45
|
-
child: ExpressionNode;
|
|
46
|
-
};
|
|
1
|
+
import { P as PMF, i as DiceQuery, C as CritConfig, L as LRUCache } from '../pmf-BC1poIqF.js';
|
|
47
2
|
|
|
48
3
|
type RollFactory = {
|
|
49
4
|
(count: number, sides?: number, modifier?: number): RollBuilder;
|
|
50
5
|
(count: number, die: RollBuilder, modifier?: number): RollBuilder;
|
|
51
|
-
d(sides: number): RollBuilder;
|
|
6
|
+
d(sides: number | string): RollBuilder;
|
|
52
7
|
hd20(): RollBuilder;
|
|
53
8
|
d4(): RollBuilder;
|
|
54
9
|
d6(): RollBuilder;
|
|
@@ -108,11 +63,94 @@ interface CheckBuilder {
|
|
|
108
63
|
readonly pmf: PMF;
|
|
109
64
|
}
|
|
110
65
|
|
|
66
|
+
type SaveOutcome = "normal" | "half";
|
|
67
|
+
declare class SaveBuilder implements CheckBuilder {
|
|
68
|
+
readonly check: DCBuilder;
|
|
69
|
+
private readonly failureEffect?;
|
|
70
|
+
private readonly saveOutcome;
|
|
71
|
+
constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
|
|
72
|
+
saveHalf(): SaveBuilder;
|
|
73
|
+
toExpression(): string;
|
|
74
|
+
resolve(eps?: number): SaveResolution;
|
|
75
|
+
toPMF(eps?: number): PMF;
|
|
76
|
+
get pmf(): PMF;
|
|
77
|
+
toQuery(eps?: number): DiceQuery;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
interface SaveConfig {
|
|
81
|
+
dc: number;
|
|
82
|
+
}
|
|
83
|
+
declare class DCBuilder extends RollBuilder {
|
|
84
|
+
private readonly saveConfig;
|
|
85
|
+
constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
|
|
86
|
+
dc(saveDC: number): DCBuilder;
|
|
87
|
+
get saveDC(): number;
|
|
88
|
+
add(anotherRoll: RollBuilder): DCBuilder;
|
|
89
|
+
addRoll(count?: number): DCBuilder;
|
|
90
|
+
onSaveFailure(val: number): SaveBuilder;
|
|
91
|
+
onSaveFailure(val: string): SaveBuilder;
|
|
92
|
+
onSaveFailure(val: RollBuilder): SaveBuilder;
|
|
93
|
+
onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
|
|
94
|
+
onSaveFailure(count: number, sides: number): SaveBuilder;
|
|
95
|
+
onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
|
|
96
|
+
onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
|
|
97
|
+
withElvenAccuracy(): never;
|
|
98
|
+
toExpression(): string;
|
|
99
|
+
toPMF(eps?: number): PMF;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
type ExpressionNode = DieNode | ConstantNode | SumNode | AddNode | KeepNode | D20RollNode | HalfNode | MaxOfNode;
|
|
103
|
+
type DieNode = {
|
|
104
|
+
type: "die";
|
|
105
|
+
sides: number;
|
|
106
|
+
reroll?: number;
|
|
107
|
+
minimum?: number;
|
|
108
|
+
explode?: number;
|
|
109
|
+
};
|
|
110
|
+
type ConstantNode = {
|
|
111
|
+
type: "constant";
|
|
112
|
+
value: number;
|
|
113
|
+
};
|
|
114
|
+
type SumNode = {
|
|
115
|
+
type: "sum";
|
|
116
|
+
count: number;
|
|
117
|
+
child: ExpressionNode;
|
|
118
|
+
};
|
|
119
|
+
type AddNode = {
|
|
120
|
+
type: "add";
|
|
121
|
+
children: {
|
|
122
|
+
node: ExpressionNode;
|
|
123
|
+
sign: 1 | -1;
|
|
124
|
+
}[];
|
|
125
|
+
};
|
|
126
|
+
type KeepNode = {
|
|
127
|
+
type: "keep";
|
|
128
|
+
mode: "highest" | "lowest";
|
|
129
|
+
count: number;
|
|
130
|
+
child: SumNode | KeepNode;
|
|
131
|
+
};
|
|
132
|
+
type D20RollNode = {
|
|
133
|
+
type: "d20Roll";
|
|
134
|
+
rollType: "advantage" | "disadvantage" | "elven accuracy";
|
|
135
|
+
child: ExpressionNode;
|
|
136
|
+
};
|
|
137
|
+
type HalfNode = {
|
|
138
|
+
type: "half";
|
|
139
|
+
child: ExpressionNode;
|
|
140
|
+
};
|
|
141
|
+
type MaxOfNode = {
|
|
142
|
+
type: "maxOf";
|
|
143
|
+
count: number;
|
|
144
|
+
child: ExpressionNode;
|
|
145
|
+
};
|
|
146
|
+
|
|
111
147
|
declare const defaultConfig: RollConfig;
|
|
112
148
|
declare class RollBuilder {
|
|
113
149
|
protected readonly subRollConfigs: readonly RollConfig[];
|
|
114
150
|
constructor(countOrConfigs?: number | readonly RollConfig[]);
|
|
151
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
115
152
|
protected get lastConfig(): RollConfig;
|
|
153
|
+
hasHiddenState(): boolean;
|
|
116
154
|
getSubRollConfigs(): readonly RollConfig[];
|
|
117
155
|
static fromConfig(config: Partial<RollConfig>): RollBuilder;
|
|
118
156
|
static fromConfigs(configs: Partial<RollConfig>[]): RollBuilder;
|
|
@@ -131,6 +169,8 @@ declare class RollBuilder {
|
|
|
131
169
|
bestOf(count: number | undefined): RollBuilder;
|
|
132
170
|
keepHighest(total: number, count: number): RollBuilder;
|
|
133
171
|
keepLowest(total: number, count: number): RollBuilder;
|
|
172
|
+
keepHighestAll(total: number, count: number): PooledRollBuilder;
|
|
173
|
+
keepLowestAll(total: number, count: number): PooledRollBuilder;
|
|
134
174
|
withAdvantage(): RollBuilder;
|
|
135
175
|
withDisadvantage(): RollBuilder;
|
|
136
176
|
add(anotherRoll: RollBuilder | undefined): RollBuilder;
|
|
@@ -164,10 +204,13 @@ declare class RollBuilder {
|
|
|
164
204
|
get baseReroll(): number;
|
|
165
205
|
half(): HalfRollBuilder;
|
|
166
206
|
maxOf(count: number): MaxOfRollBuilder;
|
|
207
|
+
ac(targetAC: number): ACBuilder;
|
|
208
|
+
dc(saveDC: number): DCBuilder;
|
|
167
209
|
}
|
|
168
210
|
declare class HalfRollBuilder extends RollBuilder {
|
|
169
211
|
private readonly innerRoll;
|
|
170
212
|
constructor(innerRoll: RollBuilder);
|
|
213
|
+
hasHiddenState(): boolean;
|
|
171
214
|
get lastConfig(): any;
|
|
172
215
|
getSubRollConfigs(): readonly RollConfig[];
|
|
173
216
|
toExpression(): string;
|
|
@@ -181,6 +224,7 @@ declare class MaxOfRollBuilder extends RollBuilder {
|
|
|
181
224
|
private readonly diceCount?;
|
|
182
225
|
private readonly diceSides?;
|
|
183
226
|
constructor(innerRoll: RollBuilder, count: number, diceCount?: number, diceSides?: number);
|
|
227
|
+
hasHiddenState(): boolean;
|
|
184
228
|
get lastConfig(): any;
|
|
185
229
|
getSubRollConfigs(): readonly RollConfig[];
|
|
186
230
|
toExpression(): string;
|
|
@@ -191,6 +235,7 @@ declare class MaxOfRollBuilder extends RollBuilder {
|
|
|
191
235
|
declare class AlwaysHitBuilder extends RollBuilder {
|
|
192
236
|
readonly attackConfig: CritConfig;
|
|
193
237
|
constructor(baseRoll: RollBuilder, attackConfig?: CritConfig);
|
|
238
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
194
239
|
onHit(val: number): AttackBuilder;
|
|
195
240
|
onHit(val: string): AttackBuilder;
|
|
196
241
|
onHit(val: RollBuilder): AttackBuilder;
|
|
@@ -213,6 +258,7 @@ declare class AlwaysCritBuilder extends RollBuilder {
|
|
|
213
258
|
constructor(baseRoll: RollBuilder, attackConfig?: CritConfig & {
|
|
214
259
|
ac?: number;
|
|
215
260
|
}, fromAlwaysHit?: boolean);
|
|
261
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
216
262
|
onHit(val: number): AttackBuilder;
|
|
217
263
|
onHit(val: string): AttackBuilder;
|
|
218
264
|
onHit(val: RollBuilder): AttackBuilder;
|
|
@@ -226,22 +272,40 @@ declare class AlwaysCritBuilder extends RollBuilder {
|
|
|
226
272
|
toPMF(): PMF;
|
|
227
273
|
copy(): AlwaysCritBuilder;
|
|
228
274
|
}
|
|
229
|
-
/**
|
|
230
|
-
* A RollBuilder that wraps a pre-computed PMF from a parsed string expression.
|
|
231
|
-
* This is used to support string-based damage expressions in onHit/onCrit/onMiss.
|
|
232
|
-
* The builder is not fully composable (e.g., you can't call .plus() on it),
|
|
233
|
-
* but it can be used anywhere a RollBuilder is expected for terminal damage.
|
|
234
|
-
*/
|
|
235
275
|
declare class ParsedRollBuilder extends RollBuilder {
|
|
236
276
|
private readonly cachedPMF;
|
|
237
277
|
private readonly originalExpression;
|
|
238
278
|
constructor(expression: string);
|
|
239
|
-
|
|
279
|
+
hasHiddenState(): boolean;
|
|
280
|
+
protected create(configs: readonly RollConfig[]): RollBuilder;
|
|
281
|
+
toPMF(_eps?: number): PMF;
|
|
240
282
|
toExpression(): string;
|
|
241
283
|
toAST(): ExpressionNode;
|
|
242
284
|
copy(): ParsedRollBuilder;
|
|
243
285
|
doubleDice(): ParsedRollBuilder;
|
|
244
286
|
}
|
|
287
|
+
declare class PooledRollBuilder extends RollBuilder {
|
|
288
|
+
private readonly baseAST;
|
|
289
|
+
private readonly baseExpression;
|
|
290
|
+
constructor(baseAST: ExpressionNode, baseExpression: string, configs?: readonly RollConfig[]);
|
|
291
|
+
protected create(configs: readonly RollConfig[]): PooledRollBuilder;
|
|
292
|
+
hasHiddenState(): boolean;
|
|
293
|
+
d(_sides: number | undefined): RollBuilder;
|
|
294
|
+
reroll(_value: number): RollBuilder;
|
|
295
|
+
explode(_count?: number | undefined): RollBuilder;
|
|
296
|
+
minimum(_val: number | undefined): RollBuilder;
|
|
297
|
+
bestOf(_count: number | undefined): RollBuilder;
|
|
298
|
+
keepHighest(_total: number, _count: number): RollBuilder;
|
|
299
|
+
keepLowest(_total: number, _count: number): RollBuilder;
|
|
300
|
+
withAdvantage(): RollBuilder;
|
|
301
|
+
withDisadvantage(): RollBuilder;
|
|
302
|
+
withElvenAccuracy(): RollBuilder;
|
|
303
|
+
toAST(): ExpressionNode;
|
|
304
|
+
toExpression(): string;
|
|
305
|
+
copy(): PooledRollBuilder;
|
|
306
|
+
scaleDice(scale: number): RollBuilder;
|
|
307
|
+
times(count: number): PooledRollBuilder;
|
|
308
|
+
}
|
|
245
309
|
|
|
246
310
|
type ActionEffect = RollBuilder;
|
|
247
311
|
declare class AttackBuilder implements CheckBuilder {
|
|
@@ -299,54 +363,8 @@ declare class ACBuilder extends RollBuilder {
|
|
|
299
363
|
toPMF(eps?: number): PMF;
|
|
300
364
|
copy(): ACBuilder;
|
|
301
365
|
}
|
|
302
|
-
declare module "./roll" {
|
|
303
|
-
interface RollBuilder {
|
|
304
|
-
ac(targetAC: number): ACBuilder;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
type SaveOutcome = "normal" | "half";
|
|
309
|
-
declare class SaveBuilder implements CheckBuilder {
|
|
310
|
-
readonly check: DCBuilder;
|
|
311
|
-
private readonly failureEffect?;
|
|
312
|
-
private readonly saveOutcome;
|
|
313
|
-
constructor(check: DCBuilder, failureEffect?: RollBuilder, saveOutcome?: SaveOutcome);
|
|
314
|
-
saveHalf(): SaveBuilder;
|
|
315
|
-
toExpression(): string;
|
|
316
|
-
resolve(eps?: number): SaveResolution;
|
|
317
|
-
toPMF(eps?: number): PMF;
|
|
318
|
-
get pmf(): PMF;
|
|
319
|
-
toQuery(eps?: number): DiceQuery;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
interface SaveConfig {
|
|
323
|
-
dc: number;
|
|
324
|
-
}
|
|
325
|
-
declare class DCBuilder extends RollBuilder {
|
|
326
|
-
private readonly saveConfig;
|
|
327
|
-
constructor(baseRoll: RollBuilder, saveConfig?: SaveConfig);
|
|
328
|
-
dc(saveDC: number): DCBuilder;
|
|
329
|
-
get saveDC(): number;
|
|
330
|
-
add(anotherRoll: RollBuilder): DCBuilder;
|
|
331
|
-
addRoll(count?: number): DCBuilder;
|
|
332
|
-
onSaveFailure(val: number): SaveBuilder;
|
|
333
|
-
onSaveFailure(val: string): SaveBuilder;
|
|
334
|
-
onSaveFailure(val: RollBuilder): SaveBuilder;
|
|
335
|
-
onSaveFailure(count: number, die: RollBuilder): SaveBuilder;
|
|
336
|
-
onSaveFailure(count: number, sides: number): SaveBuilder;
|
|
337
|
-
onSaveFailure(count: number, die: RollBuilder, modifier: number): SaveBuilder;
|
|
338
|
-
onSaveFailure(count: number, sides: number, modifier: number): SaveBuilder;
|
|
339
|
-
withElvenAccuracy(): never;
|
|
340
|
-
toExpression(): string;
|
|
341
|
-
toPMF(eps?: number): PMF;
|
|
342
|
-
}
|
|
343
|
-
declare module "./roll" {
|
|
344
|
-
interface RollBuilder {
|
|
345
|
-
dc(saveDC: number): DCBuilder;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
366
|
|
|
349
|
-
declare function d(sides: number): RollBuilder;
|
|
367
|
+
declare function d(sides: number | string): RollBuilder;
|
|
350
368
|
declare const d4: RollBuilder;
|
|
351
369
|
declare const d6: RollBuilder;
|
|
352
370
|
declare const d8: RollBuilder;
|
|
@@ -359,4 +377,4 @@ declare const flat: (n: number) => RollBuilder;
|
|
|
359
377
|
declare const roll: RollFactory;
|
|
360
378
|
declare const builderPMFCache: LRUCache<string, PMF>;
|
|
361
379
|
|
|
362
|
-
export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
|
|
380
|
+
export { ACBuilder, AlwaysCritBuilder, AlwaysHitBuilder, type AttackConfig, type AttackResolution, type CheckBuilder, DCBuilder, HalfRollBuilder, type KeepMode, MaxOfRollBuilder, ParsedRollBuilder, PooledRollBuilder, type Resolution, RollBuilder, type RollConfig, type RollFactory, type RollType, SaveBuilder, type SaveOutcome, type SaveResolution, builderPMFCache, d, d10, d100, d12, d20, d4, d6, d8, defaultConfig, flat, hd20, roll };
|