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

    クラス RecipeDef

    レシピ1つ(13節)。成果物のObjectDefが持つ。

    conditionsはこのレシピを知っているかを判定するもので、素材が揃っているかとは別物 (素材の充足はsteps.requiresが持つ)。判定する時点では成果物のインスタンスがまだ無いので、そこを 起点に辿る参照は解決先を持たない(何を書けるかはReferenceScope.acting.withoutSelfが決める)。

    インデックス
    deftness: RecipeDeftnessDef | undefined

    作り手の腕が工程の時間へ効く宣言(docs/world/Skills.md 7節)。名乗っていなければundefined=腕は 速さに効かない。

    名乗れるのは1つだけ。 上位のレシピは複数の腕を連言で要求する(SkillSystem.md 4.1節)が、 そこからはどの腕が速さを決めるか1つに定まらないので、作る側が名乗る。

    name: string
    steps: readonly RecipeStepDef[]
    unlock: Requirements | undefined

    解放条件(SkillSystem.md 4節)。undefinedなら最初から解放されている。

    • get totalMinutes(): number

      全工程が宣言した仕事の量の合計(分)。完成までの進捗の上限そのもの。

      作り手が費やす時間の合計ではない(手際のぶん短くなる、minutesFor)。上限が誰にとっても 同じでなければ、作りかけの進捗が作り手ごとに違う意味を持つことになる。

      戻り値 number

    • 工程を1つ終えた作り手の腕前を、実行経路のぶんだけ伸ばす(docs/engine/SkillSystem.md 3.4節)。

      伸ばす腕を決めるのはdeftnessの名乗り(13.5節)——どのレシピがどの腕の仕事かを言う宣言は これしか無いので、速さと伸びは同じ1本が決める。名乗っていないレシピは、どの腕の仕事でもないと 決めた印なので何もしない。

      量は工程が宣言した仕事の量から決まり、手際で縮んだ時間からではない——縮んだぶんは同じ量が 短い時間で届く形になり、手作業で腕が上がったときと揃う(同3節)。

      パラメータ

      戻り値 void

    • agentがその工程に実際に費やすゲーム内時間(分)。宣言された仕事の量から、作り手の腕が届いて いれば宣言された分だけ縮めた値(13.5節)。腕を名乗っていない、または作り手がその段に届いて いないなら宣言どおり。

      問うのは「この者にとって何分か」なのでagentは必ず要る(解放条件unmetUnlockRequirementと 同じ形)。誰にとってでもない分数は、工程が宣言した仕事の量(durationMinutes)が直接答える。

      パラメータ

      戻り値 number

    • このレシピがcandidateDefを、どこかの工程で素材か道具として要求しているか。

      パラメータ

      戻り値 boolean

    • agentが解放条件を満たしていない場合、最初に落ちた要件。満たしていればundefined。

      未解放のレシピも一覧へ出し、そこでなぜ作れないかを言うため、可否と理由を1回の評価から得る (Requirements.firstUnmet と同じ理由)。

      問うのは「この者にとって解放されているか」なので、agentは必ず要る(13.2節)。誰にとってでも ない「解放条件を持つか」はunlockが直接答える。

      パラメータ

      戻り値 Requirement | undefined