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

    クラス InteractionDef

    操作1つの中身(ActionSystem.md 1節)——満たすべき要件・起こすこと・かかる時間。

    何がこれを起こすかは持たない。 操作どうしの違いは起こされ方だけなので、そちらは きっかけ(InteractionTrigger)が持ち、宣言をぶら下げる。選ばれた後の実行手順(同 2節)は きっかけによらず同じなので、ここが1箇所で持つ。

    インデックス
    announcements: readonly SignalEffect[]

    時間を進める前に告げる出来事(announce、11.6節)。何も告げなければ空。

    告げるだけで世界の形は変えないので、型がsignalに限る。効果(effect)と別に持つのは起きる時点が 違うため——1つにまとめると、読み上げた側が「時間の前か後か」を言えなくなる。

    duration: DeclaredNumber | undefined

    実行にかかるゲーム内時間(分)。リテラルか{subject, prop}参照(weightの10.2節と同じ二択)。 undefinedなら時間を消費しない。時間進行(advanceWorldTime)までがこのクラスの責務で、 呼び出し側が実行後に別途時間を進める必要はない。

    effect: ActiveEffect

    条件成立時に適用する効果。何も書かれていなければ空の合成(ActiveEffectSequence)で、適用しても何も起きない。

    name: string

    durationを進めている間だけ効く持続効果(11.7節)。効果(effect)と別に持つのは効く時点が 違うため——こちらは経過の各tickに1回ずつ、あちらは経過し終えてから1回。

    requirements: Requirements | undefined

    実行するために満たすべき要件(14節)。undefinedなら常に真(conditions省略)。

    • get passiveDeclarations(): readonly PassiveEffect[]

      経過の間だけ効く持続効果(11.7節)の宣言。1つも宣言していなければ空。 1件ずつを別々に扱う相手だけが呼ぶ(PassiveEffects.declarations参照)。

      戻り値 readonly PassiveEffect[]

    • candidatesを先頭から順に重ねたとき、効果が続けて何回受け取れるか(ActiveEffect.acceptedCount)。 答えられなければundefined。まとめてよいかまでを決めるのはきっかけの側(DragTrigger)。

      パラメータ

      戻り値 number | undefined

    • 今この文脈で、効果の行き先が無いために成立しない操作か(ActiveEffect.blocksOperation、9.9節)。 満たしていない要件(conditions)と違って理由を持たない——成立していないのは条件ではなく、 行き先の型そのものだから。

      パラメータ

      戻り値 boolean

    • この操作にかかるゲーム内時間(分)。durationを省いていれば0。

      「今のself(とinstrument)の状態から見て、どれだけかかるか」なので、時間を進める前に解決する (切れ味の悪い刃物ほど時間がかかる、が書けるように)。実行前に画面へ見せる用途にも使う。

      参照を誰が解くかは問わない(ReferenceValueResolver)。世界を動かさずに分数を知りたい側 (src/analysis)も、定義から導いた近似を渡してここを引く——分数の読み方(端数は切り捨て、 宣言が無ければ0、解けなければ0)は宣言を持つこちらの側が1つだけ持つ。

      パラメータ

      戻り値 number

    • 経過の間だけ効く持続効果(11.7節)が宣言していることを、宣言順にすべて読み上げさせる (PassiveReader参照)。一式をまるごと読む相手はこちらを呼ぶ。

      パラメータ

      戻り値 void

    • conditionsを見て、告げ、時間を進め、効果を適用する(ActionSystem.md 2節)。順序に意味がある: 所要時間は時間を進める前に解決し、時間は効果の適用より先に進める。経過中に関与オブジェクトが 失われたら、その行動は成立しなかったものとして効果を適用しない(actionTime参照)。

      announce(11.6節)だけは時間を進める前に告げる。 効果として告げると、過ぎ切ってからしか 出せない——強制的な時間経過(docs/world/Characters.md 限界節)では、飛んだ理由をその6時間の 後に言うことになる。告げるのは「始まったこと」なので、この後の段が落ちても取り消さない。

      持続効果(11.7節)は、時間を進める間だけ登録する。 各tickの増減と一緒に足されるので、 端に居ても正味で釣り合う——下限に張り付いた値の減りをクランプが吸って、宣言した量がまるごと 残ることがない(docs/world/Characters.md 限界節)。

      要件は選んだ時点ではなく実行の時点で引き直す(候補を作ってから落とすまでに世界は変わる)。 相手の型も変わりうるので、そちらの引き直しはCombinationが足す。

      1つの操作としてまるごと囲う(InteractionRelation.whileActing)のは、関係を張る側。ここは 囲まれた中身だけを持つ。

      パラメータ

      戻り値 boolean

    • 宣言順で最初に満たしていない要件(14節)。すべて満たしていればundefined=今この操作を実行できる。 実行できない理由をUIへ見せるためにも使う(Windows.md 4節 アクションの行)。

      パラメータ

      戻り値 Requirement | undefined