A type of DiceTerm used to represent a three-sided Fate/Fudge die. Mathematically behaves like 1d3-2

Hierarchy (View Summary)

Properties

_root: Roll

A reference to the Roll at the root of the evaluation tree.

isIntermediate: boolean = false

Is this term intermediate, and should be evaluated first as part of the simplification process?

modifiers: string[]

An Array of dice term modifiers which are applied

options: object

An object of additional options which describes and modifies the term.

results: DiceTermResult[]

The array of dice term results which have been rolled

_faces: number | Roll

The number of faces on the die, or a Roll instance that will be evaluated to a number.

_number: number | Roll

The number of dice of this term to roll, before modifiers are applied, or a Roll instance that will be evaluated to a number.

DENOMINATION: string = "f"

Define the denomination string used to register this DiceTerm type in CONFIG.Dice.terms

FLAVOR_REGEXP: RegExp = ...

A regular expression which identifies term-level flavor text

FLAVOR_REGEXP_STRING: string = "(?:\\[([^\\]]+)\\])"

A regular expression pattern which identifies optional term-level flavor text

MODIFIER_REGEXP: RegExp = ...

A regular expression used to separate individual modifiers

MODIFIERS: {
    d: (modifier: string) => undefined | false;
    dh: (modifier: string) => undefined | false;
    dl: (modifier: string) => undefined | false;
    k: (modifier: string) => undefined | false;
    kh: (modifier: string) => undefined | false;
    kl: (modifier: string) => undefined | false;
    r: (modifier: string, recursive?: boolean) => Promise<false | void>;
    rr: (modifier: string) => Promise<false | void>;
} = ...

Define the named modifiers that can be applied for this particular DiceTerm type.

Type declaration

  • d: (modifier: string) => undefined | false
  • dh: (modifier: string) => undefined | false
  • dl: (modifier: string) => undefined | false
  • k: (modifier: string) => undefined | false
  • kh: (modifier: string) => undefined | false
  • kl: (modifier: string) => undefined | false
  • r: (modifier: string, recursive?: boolean) => Promise<false | void>
  • rr: (modifier: string) => Promise<false | void>
MODIFIERS_REGEXP_STRING: string = "([^ (){}[\\]+\\-*/]+)"

A regular expression pattern which captures the full set of term modifiers Anything until a space, group symbol, or arithmetic operator

REGEXP: RegExp = ...

A regular expression used to match a term of this type

SERIALIZE_ATTRIBUTES: string[] = ...

An array of additional attributes which should be retained when the term is serialized

Accessors

  • get denomination(): string

    The denomination of this DiceTerm instance.

    Returns string

  • get dice(): DiceTerm[]

    An array of additional DiceTerm instances involved in resolving this DiceTerm.

    Returns DiceTerm[]

  • get expression(): string

    A string representation of the formula expression for this RollTerm, prior to evaluation.

    Returns string

  • get faces(): number | void

    The number of faces on the die. Returns undefined if the faces are represented as a complex term that has not yet been evaluated.

    Returns number | void

  • set faces(value: number | Roll): void

    Parameters

    • value: number | Roll

    Returns void

  • get flavor(): string

    Optional flavor text which modifies and describes this term.

    Returns string

  • get formula(): string

    A string representation of the formula, including optional flavor text.

    Returns string

  • get isDeterministic(): boolean

    Whether this term is entirely deterministic or contains some randomness.

    Returns boolean

  • get method(): string

    The resolution method used to resolve this DiceTerm.

    Returns string

  • get number(): number | void

    The number of dice of this term to roll. Returns undefined if the number is a complex term that has not yet been evaluated.

    Returns number | void

  • set number(value: number | Roll): void

    Parameters

    • value: number | Roll

    Returns void

  • get resolver(): RollResolver

    A reference to the RollResolver app being used to externally resolve this term.

    Returns RollResolver

  • get total(): undefined | number

    A string or numeric representation of the final output for this term, after evaluation.

    Returns undefined | number

  • get values(): number[]

    Return an array of rolled values which are still active within this term

    Returns number[]

Methods

  • Evaluate the term.

    Parameters

    • options: {} = {}

      Options which modify how the RollTerm is evaluated, see RollTerm#evaluate

    Returns DiceTerm | Promise<DiceTerm>

    Returns a Promise if the term is non-deterministic.

  • Internal

    Asynchronously evaluate a single modifier command, recording it in the array of evaluated modifiers

    Parameters

    • command: string

      The parsed modifier command

    • modifier: string

      The full modifier request

    Returns Promise<void>

  • Internal

    Sequentially evaluate each dice roll modifier by passing the term to its evaluation function Augment or modify the results array.

    Returns Promise<void>

  • Alter the DiceTerm by adding or multiplying the number of dice which are rolled

    Parameters

    • multiply: number

      A factor to multiply. Dice are multiplied before any additions.

    • add: number

      A number of dice to add. Dice are added after multiplication.

    Returns DiceTerm

    The altered term

  • Evaluate the term, processing its inputs and finalizing its total.

    Parameters

    • Optionaloptions: { allowStrings?: boolean; maximize?: boolean; minimize?: boolean } = {}

      Options which modify how the RollTerm is evaluated

      • OptionalallowStrings?: boolean

        If true, string terms will not throw an error when evaluated.

      • Optionalmaximize?: boolean

        Maximize the result, obtaining the largest possible value.

      • Optionalminimize?: boolean

        Minimize the result, obtaining the smallest possible value.

    Returns RollTerm | Promise<RollTerm>

    Returns a Promise if the term is non-deterministic.

  • Get the CSS classes that should be used to display each rolled result

    Parameters

    Returns (null | string)[]

    The desired classes

  • Return a string used as the label for each rolled result

    Parameters

    • result: any

      The rolled result

    Returns any

    The result label

  • Render the tooltip HTML for a Roll instance

    Returns object

    The data object used to render the default tooltip template for this DiceTerm

  • Parameters

    • randomUniform: any

    Returns number

  • Generate a random face value for this die using the configured PRNG.

    Returns number

  • Roll the DiceTerm by mapping a random uniform draw against the faces of the dice term.

    Parameters

    • __namedParameters: { maximize?: boolean; minimize?: boolean } = {}

      Options which modify how a random result is produced

    Returns Promise<result>

    The produced result

  • Serialize the RollTerm to a JSON string which allows it to be saved in the database or embedded in text. This method should return an object suitable for passing to the JSON.stringify function.

    Returns RollTermData

  • Protected

    Evaluate this dice term asynchronously.

    Parameters

    • Optionaloptions: object = {}

      Options forwarded to inner Roll evaluation.

    Returns Promise<DiceTerm>

  • Protected

    Evaluate deterministic values of this term synchronously.

    Parameters

    • Optionaloptions: { maximize?: boolean; minimize?: boolean; strict?: boolean } = {}
      • Optionalmaximize?: boolean

        Force the result to be maximized.

      • Optionalminimize?: boolean

        Force the result to be minimized.

      • Optionalstrict?: boolean

        Throw an error if attempting to evaluate a die term in a way that cannot be done synchronously.

    Returns DiceTerm

  • Protected

    Generate a roll result value for this DiceTerm based on its fulfillment method.

    Parameters

    • Optionaloptions: object = {}

      Options forwarded to the fulfillment method handler.

    Returns Promise<number | void>

    Returns a Promise that resolves to the fulfilled number, or undefined if it could not be fulfilled.

  • A reusable helper function to handle the identification and deduction of failures

    Parameters

    • results: any
    • comparison: any
    • target: any
    • __namedParameters: { flagFailure?: boolean; flagSuccess?: boolean } = {}

    Returns void

  • A reusable helper function to handle the identification and deduction of failures

    Parameters

    • results: any
    • comparison: any
    • target: any
    • __namedParameters: { deductFailure?: boolean; invertFailure?: boolean } = {}

    Returns void

  • Define term-specific logic for how a de-serialized data object is restored as a functional RollTerm

    Parameters

    • data: any

      The de-serialized term data

    Returns RollTerm

    The re-constructed RollTerm object

  • A helper method to modify the results array of a dice term by flagging certain results are kept or dropped.

    Parameters

    • results: object[]

      The results array

    • number: number

      The number to keep or drop

    • Optionaloptions: { highest?: boolean; keep?: boolean } = {}
      • Optionalhighest?: boolean

        Keep the highest?

      • Optionalkeep?: boolean

        Keep results?

    Returns object[]

    The modified results array

  • A helper comparison function. Returns a boolean depending on whether the result compares favorably against the target.

    Parameters

    • result: number

      The result being compared

    • comparison: string

      The comparison operator in [=,<,<=,>,>=]

    • target: number

      The target value

    Returns boolean

    Is the comparison true?

  • Reconstruct a RollTerm instance from a provided JSON string

    Parameters

    • json: string

      A serialized JSON representation of a DiceTerm

    Returns RollTerm

    A reconstructed RollTerm from the provided JSON

  • Construct a term of this type given a matched regular expression array.

    Parameters

    • match: RegExpMatchArray

      The matched regular expression array

    Returns DiceTerm

    The constructed term

  • Determine if evaluating a given RollTerm with certain evaluation options can be done so deterministically.

    Parameters

    • term: RollTerm

      The term.

    • Optionaloptions: { maximize?: boolean; minimize?: boolean } = {}

      Options for evaluating the term.

      • Optionalmaximize?: boolean

        Force the result to be maximized.

      • Optionalminimize?: boolean

        Force the result to be minimized.

    Returns boolean

  • Determine whether a string expression matches this type of term

    Parameters

    • expression: string

      The expression to parse

    • Optionaloptions: { imputeNumber?: boolean } = {}

      Additional options which customize the match

      • OptionalimputeNumber?: boolean

        Allow the number of dice to be optional, i.e. "d6"

    Returns null | RegExpMatchArray