A normalized projection of a Fate Mystery item, decoupling the eligibility math from the live sohl.document.item.logic.MysteryLogic so it stays pure and testable. The owning logic/item is carried opaquely in ref.

interface FateMysteryProjection<T = unknown> {
    assocSkillCode: null | string;
    infinite: boolean;
    ref: T;
    remaining: number;
    subType: string;
}

Type Parameters

  • T = unknown

    The opaque reference type (a Mystery logic in production).

Properties

assocSkillCode: null | string

The associated skill's shortcode, or null for a general Fate Point usable on any skill's test. A set code is skill-specific — usable only on that skill.

infinite: boolean

Whether charges are infinite (charges.value === null); never decremented.

ref: T

The underlying Fate Mystery (opaque here; the logic in production).

remaining: number

Finite charges remaining (ignored when infinite).

subType: string

The mystery's subtype (matched against the Fate subtype).