@dice-roller/rpg-dice-roller / Roll
Class: Roll<T>
Defined in: src/Roll.ts:72
One evaluated notation: the result tree and its totals.
Can be used on its own, or through a Roller, which adds rolls made by roll() to its history.
total is calculated straight away; minTotal / maxTotal evaluate the expression again in min / max mode on first access, and are cached (or taken from the data on import). The readonly properties do not make the result tree or shared settings deeply immutable.
Example
const roll = new Roll("4d6kh3"); // rolls straight away
roll.total; // e.g. 14
`${roll}`; // e.g. "4d6kh3: [3d, 5, 6, 3] = 14"
new Roll("4d6", { engine: engines.MersenneTwister19937.seed(42) });Type Parameters
T
T = string
the output type of the configured presenter
Constructors
Constructor
new Roll<
T>(input,options?):Roll<T>
Defined in: src/Roll.ts:94
Parses (if a string) and rolls the input. RollData is restored as it is, without rolling or validating: its result and totals are used, and reroll() rolls its expression. Use Roll.import() / Roll.fromJSON() for exported data, which validate it.
Parameters
input
string | ExpressionNode | RollData
the notation or expression to roll, or data to restore without validation
options?
RollSettings<T> | RollOptions<T>
how to roll; RollSettings are used as they are, so they can be shared
Returns
Roll<T>
Throws
the notation is invalid
Properties
notation
readonlynotation:string
Defined in: src/Roll.ts:74
The original notation (or the notation of an AST input).
result
readonlyresult:ExpressionResult
Defined in: src/Roll.ts:76
The evaluated expression tree, including individual dice results.
total
readonlytotal:number
Defined in: src/Roll.ts:78
The total, rounded to 2 decimal places.
Accessors
averageTotal
Get Signature
get averageTotal():
number
Defined in: src/Roll.ts:180
The midpoint of minTotal and maxTotal, as in v5.
This is not the statistical mean for notations like 4d6kh3 or exploding dice.
Returns
number
description
Get Signature
get description():
DescriptionNode|undefined
Defined in: src/Roll.ts:161
The first description in the notation.
Returns
DescriptionNode | undefined
expression
Get Signature
get expression():
ExpressionNode
Defined in: src/Roll.ts:156
The AST that was evaluated.
Returns
maxTotal
Get Signature
get maxTotal():
number
Defined in: src/Roll.ts:171
Total with each die at its maximum, rounded to 2 decimal places; not necessarily an expression maximum (e.g. -d6).
Returns
number
minTotal
Get Signature
get minTotal():
number
Defined in: src/Roll.ts:166
Total with each die at its minimum, rounded to 2 decimal places; not necessarily an expression minimum (e.g. -d6).
Returns
number
Methods
export()
Call Signature
export(
format):object
Defined in: src/Roll.ts:207
Exports as JSON (default), a JSON-safe object, or UTF-8 base64 JSON. Evaluates uncached min/max totals.
Parameters
format
"object"
Returns
object
averageTotal
readonlyaverageTotal:EncodedNumber
maxTotal
readonlymaxTotal:EncodedNumber
minTotal
readonlyminTotal:EncodedNumber
notation
readonlynotation:string
result
readonlyresult: {node: {type:"number";value:EncodedNumber; };type:"number";value:EncodedNumber; } | {die: {average:EncodedNumber;faceCount:EncodedNumber;max:EncodedNumber;min:EncodedNumber;notation:string; };dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[];node: {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly ({comparePoint?: ...;compound: ...;name: ...;penetrate: ...;type: ...; } | {failure?: ...;name: ...;success: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {direction: ...;name: ...;type: ...; } | {name: ...;type: ...;value: ...; } | {name: ...;type: ...;value: ...; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: {type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"pool"; };qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };rolls: readonlyobject[];type:"pool";value:EncodedNumber; } | {members: readonlyobject[];node: {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[];modifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; };type:"group";value:EncodedNumber; } | {left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };node: {left: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };op:"+"|"-"|"*"|"/"|"%"|"^";right: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"binary"; };right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };type:"binary";value:EncodedNumber; } | {node: {op:"-";operand: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"unary"; };operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };type:"unary";value:EncodedNumber; } | {inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };node: {expression: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"paren"; };type:"paren";value:EncodedNumber; } | {args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[];node: {args: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"function";value:EncodedNumber; }
Union Members
Type Literal
{ node: { type: "number"; value: EncodedNumber; }; type: "number"; value: EncodedNumber; }
Type Literal
{ die: { average: EncodedNumber; faceCount: EncodedNumber; max: EncodedNumber; min: EncodedNumber; notation: string; }; dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "pool"; }; qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; rolls: readonly object[]; type: "pool"; value: EncodedNumber; }
die
readonlydie:object
The values of the die the factory created, for presenters.
die.average
readonlyaverage:EncodedNumber
die.faceCount
readonlyfaceCount:EncodedNumber
die.max
readonlymax:EncodedNumber
die.min
readonlymin:EncodedNumber
die.notation
readonlynotation:string
dieArgs
readonlydieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]
The evaluated node.die.args, e.g. the 6 in d6 or the (2+3) in d(2+3).
node
readonlynode:object
node.description?
readonlyoptionaldescription?:object
node.description.style
readonlystyle:DescriptionStyle
node.description.text
readonlytext:string
node.die
readonlydie:object
node.die.args
readonlyargs: readonly ({type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly ({comparePoint?: ...;compound: ...;name: ...;penetrate: ...;type: ...; } | {failure?: ...;name: ...;success: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {direction: ...;name: ...;type: ...; } | {name: ...;type: ...;value: ...; } | {name: ...;type: ...;value: ...; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[]
node.die.name
readonlyname:string
The registered name: a BuiltInDieName, or the name of a user-registered die.
node.die.type
readonlytype:"die"
node.modifiers
readonlymodifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[]
In notation order after deduplication; handlers may execute in a different order.
node.qty
readonlyqty: {type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; }
The number of dice; a NumberNode for literal quantities.
node.type
readonlytype:"pool"
qty
readonlyqty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }
rolls
readonlyrolls: readonlyobject[]
type
readonlytype:"pool"
value
readonlyvalue:EncodedNumber
The sum of calculationValue for the rolls that are useInTotal.
Type Literal
{ members: readonly object[]; node: { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; modifiers: readonly ({ comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; }; type: "group"; value: EncodedNumber; }
members
readonlymembers: readonlyobject[]
node
readonlynode:object
node.description?
readonlyoptionaldescription?:object
node.description.style
readonlystyle:DescriptionStyle
node.description.text
readonlytext:string
node.expressions
readonlyexpressions: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[]
node.modifiers
readonlymodifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[]
node.type
readonlytype:"group"
type
readonlytype:"group"
value
readonlyvalue:EncodedNumber
The sum of calculationValue for members included in the total.
Type Literal
{ left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { left: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "binary"; }; right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "binary"; value: EncodedNumber; }
Type Literal
{ node: { op: "-"; operand: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "unary"; }; operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "unary"; value: EncodedNumber; }
Type Literal
{ inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { expression: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "paren"; }; type: "paren"; value: EncodedNumber; }
Type Literal
{ args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { args: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "function"; value: EncodedNumber; }
total
readonlytotal:EncodedNumber
type
readonlytype:"roll"
version
readonlyversion:1
Call Signature
export(
format?):string
Defined in: src/Roll.ts:208
Exports as JSON (default), a JSON-safe object, or UTF-8 base64 JSON. Evaluates uncached min/max totals.
Parameters
format?
"json" | "base64"
Returns
string
Call Signature
export(
format):string| {averageTotal:EncodedNumber;maxTotal:EncodedNumber;minTotal:EncodedNumber;notation:string;result: {node: {type:"number";value:EncodedNumber; };type:"number";value:EncodedNumber; } | {die: {average:EncodedNumber;faceCount:EncodedNumber;max:EncodedNumber;min:EncodedNumber;notation:string; };dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[];node: {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style: ...;text: ...; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly (... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ...)[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: {type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"pool"; };qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };rolls: readonlyobject[];type:"pool";value:EncodedNumber; } | {members: readonlyobject[];node: {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ...;compound: ...;name: ...;penetrate: ...;type: ...; } | {failure?: ...;name: ...;success: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {direction: ...;name: ...;type: ...; } | {name: ...;type: ...;value: ...; } | {name: ...;type: ...;value: ...; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[];modifiers: readonly ({comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; };type:"group";value:EncodedNumber; } | {left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };node: {left: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };op:"+"|"-"|"*"|"/"|"%"|"^";right: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"binary"; };right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };type:"binary";value:EncodedNumber; } | {node: {op:"-";operand: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"unary"; };operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };type:"unary";value:EncodedNumber; } | {inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };node: {expression: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"paren"; };type:"paren";value:EncodedNumber; } | {args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[];node: {args: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ...;compound: ...;name: ...;penetrate: ...;type: ...; } | {failure?: ...;name: ...;success: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {direction: ...;name: ...;type: ...; } | {name: ...;type: ...;value: ...; } | {name: ...;type: ...;value: ...; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly ({comparePoint?: ...;compound: ...;name: ...;penetrate: ...;type: ...; } | {failure?: ...;name: ...;success: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {direction: ...;name: ...;type: ...; } | {name: ...;type: ...;value: ...; } | {name: ...;type: ...;value: ...; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"function";value:EncodedNumber; };total:EncodedNumber;type:"roll";version:1; }
Defined in: src/Roll.ts:209
Exports as JSON (default), a JSON-safe object, or UTF-8 base64 JSON. Evaluates uncached min/max totals.
Parameters
format
"object" | "json" | "base64"
Returns
string | { averageTotal: EncodedNumber; maxTotal: EncodedNumber; minTotal: EncodedNumber; notation: string; result: { node: { type: "number"; value: EncodedNumber; }; type: "number"; value: EncodedNumber; } | { die: { average: EncodedNumber; faceCount: EncodedNumber; max: EncodedNumber; min: EncodedNumber; notation: string; }; dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: ...; text: ...; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly (... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ...)[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "pool"; }; qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; rolls: readonly object[]; type: "pool"; value: EncodedNumber; } | { members: readonly object[]; node: { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; modifiers: readonly ({ comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; }; type: "group"; value: EncodedNumber; } | { left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { left: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "binary"; }; right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "binary"; value: EncodedNumber; } | { node: { op: "-"; operand: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "unary"; }; operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "unary"; value: EncodedNumber; } | { inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { expression: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "paren"; }; type: "paren"; value: EncodedNumber; } | { args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { args: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "function"; value: EncodedNumber; }; total: EncodedNumber; type: "roll"; version: 1; }
present()
Call Signature
present():
T
Defined in: src/Roll.ts:190
Presents the roll with the presenter, or the one from the options (default TextPresenter).
Returns
T
Call Signature
present<
U>(presenter):U
Defined in: src/Roll.ts:191
Presents the roll with the presenter, or the one from the options (default TextPresenter).
Type Parameters
U
U
Parameters
presenter
Presenter<U>
Returns
U
reroll()
reroll():
Roll<T>
Defined in: src/Roll.ts:185
Rolls the original input again with the same settings; restored rolls use their stored expression. Does not add to a history.
Returns
Roll<T>
toJSON()
toJSON():
object
Defined in: src/Roll.ts:202
JSON-safe export data with non-finite numbers tagged; evaluates uncached min/max totals.
Returns
object
averageTotal
readonlyaverageTotal:EncodedNumber
maxTotal
readonlymaxTotal:EncodedNumber
minTotal
readonlyminTotal:EncodedNumber
notation
readonlynotation:string
result
readonlyresult: {node: {type:"number";value:EncodedNumber; };type:"number";value:EncodedNumber; } | {die: {average:EncodedNumber;faceCount:EncodedNumber;max:EncodedNumber;min:EncodedNumber;notation:string; };dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[];node: {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly ({comparePoint?: ...;compound: ...;name: ...;penetrate: ...;type: ...; } | {failure?: ...;name: ...;success: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {direction: ...;name: ...;type: ...; } | {name: ...;type: ...;value: ...; } | {name: ...;type: ...;value: ...; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: {type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"pool"; };qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };rolls: readonlyobject[];type:"pool";value:EncodedNumber; } | {members: readonlyobject[];node: {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[];modifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; };type:"group";value:EncodedNumber; } | {left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };node: {left: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };op:"+"|"-"|"*"|"/"|"%"|"^";right: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"binary"; };right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };type:"binary";value:EncodedNumber; } | {node: {op:"-";operand: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"unary"; };operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };type:"unary";value:EncodedNumber; } | {inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; };node: {expression: {type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:string;type:"die"; };modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"paren"; };type:"paren";value:EncodedNumber; } | {args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[];node: {args: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; };type:"function";value:EncodedNumber; }
Union Members
Type Literal
{ node: { type: "number"; value: EncodedNumber; }; type: "number"; value: EncodedNumber; }
Type Literal
{ die: { average: EncodedNumber; faceCount: EncodedNumber; max: EncodedNumber; min: EncodedNumber; notation: string; }; dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "pool"; }; qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; rolls: readonly object[]; type: "pool"; value: EncodedNumber; }
die
readonlydie:object
The values of the die the factory created, for presenters.
die.average
readonlyaverage:EncodedNumber
die.faceCount
readonlyfaceCount:EncodedNumber
die.max
readonlymax:EncodedNumber
die.min
readonlymin:EncodedNumber
die.notation
readonlynotation:string
dieArgs
readonlydieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]
The evaluated node.die.args, e.g. the 6 in d6 or the (2+3) in d(2+3).
node
readonlynode:object
node.description?
readonlyoptionaldescription?:object
node.description.style
readonlystyle:DescriptionStyle
node.description.text
readonlytext:string
node.die
readonlydie:object
node.die.args
readonlyargs: readonly ({type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;modifiers: readonly ({comparePoint?: ...;compound: ...;name: ...;penetrate: ...;type: ...; } | {failure?: ...;name: ...;success: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {end: ...;name: ...;qty: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;once: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {comparePoint?: ...;name: ...;type: ...; } | {direction: ...;name: ...;type: ...; } | {name: ...;type: ...;value: ...; } | {name: ...;type: ...;value: ...; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[]
node.die.name
readonlyname:string
The registered name: a BuiltInDieName, or the name of a user-registered die.
node.die.type
readonlytype:"die"
node.modifiers
readonlymodifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[]
In notation order after deduplication; handlers may execute in a different order.
node.qty
readonlyqty: {type:"number";value:EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | {description?: {style:DescriptionStyle;text:string; };expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];modifiers: readonly ({comparePoint?: {operator: ...;value: ...; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator: ...;value: ...; };name:"target";success: {operator: ... | ... | ... | ... | ... | ... | ...;value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator: ...;value: ...; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];type:"group"; } | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[];name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; }
The number of dice; a NumberNode for literal quantities.
node.type
readonlytype:"pool"
qty
readonlyqty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }
rolls
readonlyrolls: readonlyobject[]
type
readonlytype:"pool"
value
readonlyvalue:EncodedNumber
The sum of calculationValue for the rolls that are useInTotal.
Type Literal
{ members: readonly object[]; node: { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; modifiers: readonly ({ comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; }; type: "group"; value: EncodedNumber; }
members
readonlymembers: readonlyobject[]
node
readonlynode:object
node.description?
readonlyoptionaldescription?:object
node.description.style
readonlystyle:DescriptionStyle
node.description.text
readonlytext:string
node.expressions
readonlyexpressions: readonly ({type:"number";value:EncodedNumber; } | {description?: {style:DescriptionStyle;text:string; };die: {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:string;type:"die"; };modifiers: readonly ({comparePoint?: ... | ...;compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: ... | ...;name:"target";success: {operator: ...;value: ...; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: ... | ...;name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-success";type:"modifier"; } | {comparePoint?: ... | ...;name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[];qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | {left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;op:"+"|"-"|"*"|"/"|"%"|"^";right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"binary"; } | {op:"-";operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"unary"; } | {expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...;type:"paren"; } | {args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...;name:"abs"|"ceil"|"cos"|"exp"|"floor"|"log"|"round"|"sign"|"sin"|"sqrt"|"tan"|"pow"|"max"|"min"|"trunc";type:"function"; })[]
node.modifiers
readonlymodifiers: readonly ({comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };compound:boolean;name:"explode";penetrate:boolean;type:"modifier"; } | {failure?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"target";success: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };type:"modifier"; } | {end:PoolEnd;name:"drop";qty:EncodedNumber;type:"modifier"; } | {end:PoolEnd;name:"keep";qty:EncodedNumber;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"re-roll";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"unique";once:boolean;type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-success";type:"modifier"; } | {comparePoint?: {operator:"="|"!="|"<>"|"<"|">"|"<="|">=";value:EncodedNumber; };name:"critical-failure";type:"modifier"; } | {direction:SortDirection;name:"sort";type:"modifier"; } | {name:"max";type:"modifier";value:EncodedNumber; } | {name:"min";type:"modifier";value:EncodedNumber; })[]
node.type
readonlytype:"group"
type
readonlytype:"group"
value
readonlyvalue:EncodedNumber
The sum of calculationValue for members included in the total.
Type Literal
{ left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { left: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "binary"; }; right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "binary"; value: EncodedNumber; }
Type Literal
{ node: { op: "-"; operand: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "unary"; }; operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "unary"; value: EncodedNumber; }
Type Literal
{ inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { expression: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "paren"; }; type: "paren"; value: EncodedNumber; }
Type Literal
{ args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { args: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "function"; value: EncodedNumber; }
total
readonlytotal:EncodedNumber
type
readonlytype:"roll"
version
readonlyversion:1
toString()
toString():
string
Defined in: src/Roll.ts:197
Always the default TextPresenter output.
Returns
string
fromJSON()
staticfromJSON<T>(data,options?):Roll<T>
Defined in: src/Roll.ts:128
Creates a roll from exported data (e.g. from toJSON()), without rolling.
The options are used by reroll(). Pools refer to their die by factory name, so re-rolling uses the die registered under that name in these settings.
Type Parameters
T
T = string
Parameters
data
averageTotal
maxTotal
minTotal
notation
string
result
{ node: { type: "number"; value: EncodedNumber; }; type: "number"; value: EncodedNumber; } | { die: { average: EncodedNumber; faceCount: EncodedNumber; max: EncodedNumber; min: EncodedNumber; notation: string; }; dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "pool"; }; qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; rolls: readonly object[]; type: "pool"; value: EncodedNumber; } | { members: readonly object[]; node: { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; modifiers: readonly ({ comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; }; type: "group"; value: EncodedNumber; } | { left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { left: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "binary"; }; right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "binary"; value: EncodedNumber; } | { node: { op: "-"; operand: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "unary"; }; operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "unary"; value: EncodedNumber; } | { inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { expression: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: { operator: ...; value: ...; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ...; value: ...; }; name: "target"; success: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ...; value: ...; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "paren"; }; type: "paren"; value: EncodedNumber; } | { args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { args: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "function"; value: EncodedNumber; }
total
type
"roll"
version
1
options?
RollOptions<T> | RollSettings<T>
Returns
Roll<T>
Throws
the data is invalid, or is a history
import()
staticimport<T>(data,options?):Roll<T>
Defined in: src/Roll.ts:140
Imports an exported roll (an object, JSON or base64), without rolling.
Type Parameters
T
T = string
Parameters
data
string | { averageTotal: EncodedNumber; maxTotal: EncodedNumber; minTotal: EncodedNumber; notation: string; result: { node: { type: "number"; value: EncodedNumber; }; type: "number"; value: EncodedNumber; } | { die: { average: EncodedNumber; faceCount: EncodedNumber; max: EncodedNumber; min: EncodedNumber; notation: string; }; dieArgs: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: ...; text: ...; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly (... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ...)[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { type: "number"; value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; })[]; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ... | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "pool"; }; qty: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; rolls: readonly object[]; type: "pool"; value: EncodedNumber; } | { members: readonly object[]; node: { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { readonly type: "group"; readonly expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... ... | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; })[]; modifiers: readonly ({ comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "target"; success: { operator: "=" | "!=" | "<>" | "<" | ">" | "<=" | ">="; value: EncodedNumber; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-success"; type: "modifier"; } | { comparePoint?: { operator: ... | ... | ... | ... | ... | ... | ...; value: EncodedNumber; }; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; }; type: "group"; value: EncodedNumber; } | { left: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { left: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { readonly type: "binary"; readonly op: "+" | "-" | "*" | "/" | "%" | "^"; readonly left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { ...; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...;... | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "binary"; }; right: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "binary"; value: EncodedNumber; } | { node: { op: "-"; operand: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { readonly type: "unary"; readonly op: "-"; readonly operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "unary"; }; operand: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; type: "unary"; value: EncodedNumber; } | { inner: { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }; node: { expression: { type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; modifiers: readonly ({ comparePoint?: ... | ...; compound: boolean; name: "explode"; penetrate: boolean; type: "modifier"; } | { failure?: ... | ...; name: "target"; success: { operator: ...; value: ...; }; type: "modifier"; } | { end: PoolEnd; name: "drop"; qty: EncodedNumber; type: "modifier"; } | { end: PoolEnd; name: "keep"; qty: EncodedNumber; type: "modifier"; } | { comparePoint?: ... | ...; name: "re-roll"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "unique"; once: boolean; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-success"; type: "modifier"; } | { comparePoint?: ... | ...; name: "critical-failure"; type: "modifier"; } | { direction: SortDirection; name: "sort"; type: "modifier"; } | { name: "max"; type: "modifier"; value: EncodedNumber; } | { name: "min"; type: "modifier"; value: EncodedNumber; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { readonly type: "paren"; readonly expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... ... | { args: readonly { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "paren"; }; type: "paren"; value: EncodedNumber; } | { args: readonly { readonly type: "number"; readonly node: { readonly type: "number"; readonly value: EncodedNumber; }; readonly value: EncodedNumber; } | { readonly type: "pool"; ... 5 more ...; readonly rolls: readonly { ...; }[]; } | ... 4 more ... | { ...; }[]; node: { args: readonly ({ type: "number"; value: EncodedNumber; } | { description?: { style: DescriptionStyle; text: string; }; die: { args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; name: string; type: "die"; }; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; qty: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "pool"; } | { description?: { style: DescriptionStyle; text: string; }; expressions: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?:...; modifiers: readonly ({ comparePoint?: ...; compound: ...; name: ...; penetrate: ...; type: ...; } | { failure?: ...; name: ...; success: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { end: ...; name: ...; qty: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; once: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { comparePoint?: ...; name: ...; type: ...; } | { direction: ...; name: ...; type: ...; } | { name: ...; type: ...; value: ...; } | { name: ...; type: ...; value: ...; })[]; type: "group"; } | { left: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; op: "+" | "-" | "*" | "/" | "%" | "^"; right: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "binary"; } | { op: "-"; operand: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "unary"; } | { expression: { readonly type: "number"; readonly value: EncodedNumber; } | { readonly type: "pool"; readonly qty: { readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | { ...; }; readonly die: { ...; }; readonly modifiers: readonly ({ ...; } | ... 9 more ... | { ...; })[]; readonly description?: { ...; } ...; type: "paren"; } | { readonly type: "function"; readonly name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; readonly args: readonly ({ readonly type: "number"; readonly value: EncodedNumber; } | ... 5 more ... | ...)[]; })[]; name: "abs" | "ceil" | "cos" | "exp" | "floor" | "log" | "round" | "sign" | "sin" | "sqrt" | "tan" | "pow" | "max" | "min" | "trunc"; type: "function"; }; type: "function"; value: EncodedNumber; }; total: EncodedNumber; type: "roll"; version: 1; }
options?
RollOptions<T> | RollSettings<T>
Returns
Roll<T>
Throws
the data is invalid, or is a history