The recognized context.scope fields for a sohl.entity.modifier.MasteryLevelModifier.successTestnot only for resuming one. All are optional (the method reads them as a Partial<ContextScope>); together they turn the single generic success test into any bespoke graded test as data, with no subclass. successStarTable carries the outcome mapping and targetValueFunc the grading value; follow-up consent buttons are passed separately to SuccessTestResult.toChat. See the pass-data pattern.

interface ContextScope {
    askBreakTies?: boolean;
    breakTies?: boolean;
    canFate?: boolean;
    isSuccessValue?: boolean;
    priorTestResult: sohl.entity.result.SuccessTestResult;
    roll?: sohl.entity.roll.SimpleRoll;
    situationalModifier: number;
    successStarTable: LimitedDescription[];
    targetValueFunc: (sl: number) => number;
    tokenUuid?: string;
}

Properties

askBreakTies?: boolean

Show the Break Ties checkbox on the pre-roll dialog — set by sohl.entity.modifier.MasteryLevelModifier.opposedTestStart, since only an opposed test can end in a tie.

breakTies?: boolean

Whether a tie should be broken. Read back from the dialog (or supplied with skipDialog) and handed to the sohl.entity.result.OpposedTestResult the contest builds.

canFate?: boolean

Whether the resulting card may offer a Fate spend (gated further by the item's availableFate). Defaults true; the Fate test itself passes false so a Fate roll cannot in turn be fated (#854).

isSuccessValue?: boolean

Mark the test as a Success Value test (#848), so its card shows the Success Value and Success Stars. Set by sohl.entity.modifier.MasteryLevelModifier.successValueTest alongside the svTable and grading targetValueFunc.

Reuse an already-evaluated success test instead of rolling fresh (Fate, a GM edit, an opposed resume) — the die is not re-rolled. Omit to roll a new test.

A pre-seeded die to resolve instead of casting one (#1148). Unlike priorTestResult, which reuses a whole evaluated result, this supplies only the die: the test is built and evaluated normally, but evaluate() resolves the supplied roll untouched. Used where the outcome is fixed by rule and there is nothing to test — an untreated wound has no Healing Rate, so its Healing Test resolves against UNTREATED.roll.

situationalModifier: number

A situational modifier to apply to the mastery level.

successStarTable: LimitedDescription[]

The description table used to resolve result text and stars.

targetValueFunc: (sl: number) => number

Maps a success level to the test's target value.

tokenUuid?: string

The token this test is made as, when the caller knows it and the owning item does not. Seeds the result's SuccessTestResult.token, which chat cards read the combatant's name from. Set by the responding side of an opposed test (#1164); omitted by an ordinary item-menu test.