UnmappedIsland ソースリファレンス - v0.1.0
    検索インデックスを準備しています...

    インターフェイス CraftingStep

    クラフトの1工程。nameは宣言上の名前(アクション・combination・レシピの識別子)で、 ownerGlobalIdはそれを宣言している型。kindは表示名の引き方が違うため持つ(Localization.md)。

    時間・産出・値の増減が揃っているので、「1回の実行にいくらかかって何が返るか」がこれだけで 分かる(収支表はこれを足し合わせる)。

    interface CraftingStep {
        elapsedMinutes: number;
        hasUnresolvedReferences: boolean;
        inputs: readonly CraftingInput[];
        kind: "recipe" | "interaction" | "periodic";
        laborMinutes: number;
        name: string;
        outcomes: readonly StepOutcome[];
        outputs: readonly CraftingOutput[];
        ownerGlobalId: ObjectGlobalId;
        startedByPlayer: boolean;
    }
    インデックス
    elapsedMinutes: number

    1回の実行で経過する時間(分)。プレイヤーが手を止めて待つ工程では労働時間と等しく、 時間で回る工程(periodic)だけが両者に差を持つ——罠は4時間かかるが、その間に別のことができる。

    hasUnresolvedReferences: boolean

    duration・weightに、定義だけからは確定しない参照が含まれるか(祖先が入れる値・生成時に個体へ 上書きされる値)。真の工程は、durationMinutesとprobabilityをそのまま信用できない。

    inputs: readonly CraftingInput[]
    kind: "recipe" | "interaction" | "periodic"

    interactionは操作(メニュー型・ドラッグ型・時間が配る手番の別は持たない——入口の違いでしかなく、 工程としては同じ。押して起こせるかは下のstartedByPlayerが答える)。periodicは、操作ではなく 時間で回る工程(罠の判定)で、tick毎に動く値がrangeの端へ届くたびに起こる (周期はrangeCyclesが定義から導く)。

    laborMinutes: number

    1回の実行でプレイヤーが払う時間(分)。他の行動と競合するのはこちらだけ。 durationを宣言していない工程と、時間で回る工程(periodic)は0。

    name: string
    outcomes: readonly StepOutcome[]

    起こりうる結果(確率つき)。分岐の無い工程でも必ず1件ある。

    outputs: readonly CraftingOutput[]

    生まれうる型の一覧(outcomesから導いたもの)。何も生まない工程では空。

    ownerGlobalId: ObjectGlobalId
    startedByPlayer: boolean

    プレイヤーが押して起こせる工程か(InteractionTrigger.startedByPlayer)。経路として並べてよいのは これだけ——時間が配る手番(動物の1手、限界に達した値が起こす強制的な時間経過)は選べないので、 経路に並べると選べない道が献立に載る。工程の一覧としては数えるので、落とすのは経路を組む側。