The surface the Fate flow needs from the logic it is spent on — satisfied structurally, so a class opts in simply by having these members.

interface FateHost {
    actorLogic: any;
    availableFate: MysteryLogic[];
    data: { kind: string; shortcode: string };
    fateMasteryLevel: sohl.entity.modifier.MasteryLevelModifier;
    label: string;
    name: string;
    speaker: sohl.core.logic.SohlSpeaker;
    postFateResultCard(
        fateResult: sohl.entity.result.SuccessTestResult,
        outcome: FateOutcome,
        spentSource: undefined | MysteryLogic,
    ): Promise<void>;
}

Properties

actorLogic: any

The owning actor's logic, or undefined off an actor.

availableFate: MysteryLogic[]

The Fate Mysteries currently spendable on this host's tests.

data: { kind: string; shortcode: string }

The persisted data backing this logic.

Type declaration

  • kind: string

    The item kind, used to build the test's type discriminator.

  • shortcode: string

    The item's shortcode, matched against a Fate Point's association.

The fate-adjusted mastery level this host's Fate test rolls against.

label: string

The item's display label, used in dialog and card titles.

name: string

The item's name, used to build the test's type discriminator.

The speaker the fate card is posted as.

Methods