EoC関連

このページは0.Gから利用可能になった外部拡張言語EoCの説明であるEFFECT_ON_CONDITION.mdを機械翻訳したものをもとに加筆中のページです。
まだノウハウが溜まっていないため、ガリガリ加筆してくれる有識者を募集しています。


effect_on_condition

effect_on_condition は、ダイアログの条件と効果を組み合わせて、ダイアログの外で使用できるようにするオブジェクトです。 呼び出されると、 conditionをテストします。 conditionが有効な場合、それらは効果を引き起こします。 それらは、任意の頻度で自動的にアクティブ化できます。
(Note: effect_on_conditions は、npc ダイアログの条件と効果の構文を使用します。これにより、npc に関連するチェック、または npc での効果をターゲットにすることができます。 (for example: `npc_has_trait`). effect_on_condition でこれらのコマンドを使用することはサポートされていません。)

Fields

Identifier Type Description
recurrence 整数またはオブジェクトまたはArray effect_on_condition は、この秒数の間に自動的に呼び出されます (アクティブ化されます)。 オブジェクトの場合は、文字列 `name`、`type`、および `context` が必要です。 `default` は int または期間を表す文字列のいずれかです。 `global` はオプションの bool (デフォルトは false) です。true の場合、使用される変数は常に、ダイアログのターゲットではなくプレイヤー キャラクターからのものになります。 配列の場合、int または varible_objects のいずれかである 2 つの値が必要です。
condition condition この effect_on_condition がアクティブ化されると、その効果が発生する条件。 完全な構文については、[NPCs](NPCs.md) の「対話条件」セクションを参照してください。
deactivate_condition condition *オプション* effect_on_condition が自動的にアクティブ化 (呼び出され) され、その条件が失敗した場合、deactivate_condition が存在し、false_effect エントリがないかどうかがテストされます。 true が返された場合、この effect_on_condition は「recurrence」秒ごとに自動的に呼び出されなくなります。 プレーヤー/npc が特性またはバイオニックを獲得/喪失するたびに、無効化されたすべての effect_on_conditions で `deactivate_condition` が実行されます。 false が返されると、effect_on_condition の実行が再び開始されます。 これは、ターゲットのバイオニック/特性がない場合に、実行時間を無駄にしない特定の特性またはバイオニックに effect_on_conditions を追加できるようにするためです。 完全な構文については、[NPCs](NPCs.md) の「対話条件」セクションを参照してください。
effect effect アクティベーション時に `condition` が true を返す場合に生じる効果。 完全な構文については、[NPCs](NPCs.md) の「対話効果」セクションを参照してください。
false_effect effect アクティベーション時に `condition` が false を返す場合に発生する効果。 完全な構文については、[NPCs](NPCs.md) の「対話効果」セクションを参照してください。
global bool これが true の場合、この繰り返し eoc はプレーヤーとグローバル キューのすべての npc で実行されます。 無効化条件はアバターに基づいて機能します。 false の場合、アバターとすべてのキャラクターは、独自のコピーと独自の無効化されたリストを持ちます。 デフォルトは false です。
run_for_npcs bool global が true の場合にのみ true になります。 false の場合、eoc はアバターに対してのみ実行されます。 true の場合、アバターとすべての npc に対して eoc が実行されます。 デフォルトは false です。
EOC_TYPE string ACTIVATION…何らかの外的要因で起動。省略時はこれ。
RECURRING…別途指定間隔で起動。(recurrence指定時は自動でこれ。)
SCENARIO_SPECIFIC…シナリオ開始時に一度起動。
AVATAR_DEATH…現在のアバター死亡時にアバターをu、殺害者をNPCとして起動。
NPC_DEATH…NPCが起動した場合に起動。
OM_MOVE…プレイヤーがマップ画面のマスをまたいだ時起動。
PREVENT_DEATH…現在のアバターが死ぬたびに、アバターをuとして起動。その後、プレイヤーが死んでいない場合は死なず、複数ある場合は、プレイヤーが死んでいないまですべて実行されます。

Examples:

  • 毎秒起動し(recurrence記述)、特質霊感がある場合(condition記述)、状態異常感染症を1秒付与する(effect記述)。特質霊感持っていない場合や後天的に失った場合、このEoCを停止する(false_effectがないため)が、再度獲得した場合は再開する(deactivate_condition記述)。deactivate_condition記述はなくても機能するが、recurrenceなEoCは処理時間を食うため明示的に停止している。
{
 "type": "effect_on_condition",
 "id": "test_deactivate",
 "recurrence": 1,
 "condition": { "u_has_trait": "SPIRITUAL" },
 "deactivate_condition": {"not":{ "u_has_trait": "SPIRITUAL" } },
 "effect": { "u_add_effect": "infection", "duration": 1 }
},

  • XX秒ごとに起動し(recurrence記述)、筋力が7以下の場合(condition記述)、状態異常感染症を1秒付与する。(effect記述)
{
 "type": "effect_on_condition",
 "id": "test_stats",
 "recurrence": [ 1, 10 ],
 "condition": { "not": { "u_has_strength": 7 } },
 "effect": { "u_add_effect": "infection", "duration": 1 }
}

  • 倦怠に+40するACTIVATION型EoC。
{
 "type": "effect_on_condition",
 "id": "EOC_SLEEP",
 "effect": [ { "u_message": "You feel very sleepy…" }, { "arithmetic": [ { "u_val": "fatigue" }, "+=", { "const": 40 } ] } ]
}

  • 上記EOC_SLEEPを起動するアイテムの記述。use_action記述を確認されたし。
{
 "id": "poppy_sleep",
 "type": "COMESTIBLE",
 "comestible_type": "MED",
 "name": { "str": "poppy sleep" },
 "description": "A potent sleep aid extracted from mutated poppy seeds.  Effective, but as an opiate it can be addictive.",
略
 "use_action": {
   "type": "effect_on_conditions",
   "description": "Can be used to treat insomnia.",
   "effect_on_conditions": [ "EOC_SLEEP" ]
 }
}

EOC(Effect On Condition/条件付き効果)とは、プレイヤー、NPC等に与える効果とそれが発動する条件を一つにまとめ、様々な場所から呼び出せるようにしたもの。talk topicの条件や効果をを拡張したものなのでNPCとの会話の構文と共通点があります。詳細はdoc/EFFECT_ON_CONDITION.md、doc/NPCs.mdを見たり、本体やMODの実装を参考にしたりしてください。

はじめに

英語版では「effect」は「効果」と「状態変化」の両方の意味で使われているので注意。このページでは効果の意味で使います。

このページでは0.Hと開発版をメインに解説していきます。今更0.GでMOD制作する人なんていないでしょ

用語

Alpha/Beta Talker

Alpha Talkerとはu_で始まる変数や条件、効果の対象になるオブジェクトで、Beta Talkerとはnpc_で始まる変数や条件、効果の対象となるオブジェクト。EOCが呼び出された状況によって変わります。例えば、
  • ゲーム開始時:Alpha=プレイヤー、Beta=なし
  • NPCとの会話:Alpha=プレイヤー、Beta=NPC
  • アイテムを使った時:Alpha=使用者、Beta=アイテム
  • 呪文を唱えた時:Alpha=ターゲット、Beta=詠唱者

値の型

  • int:数値、小数も可
  • string: " "で囲まれた文字列
  • boolean: true(真)、false(偽)
  • duration: 秒数を表す数値か期間を表す文字列。文字列は数値と単位(s:秒、m:分、h:時間、d:日)の間にスペースを開ける。
  • array: [ x, y, ... ]のような配列
  • variable object: 変数、[最小, 最大](乱数になる)、arithmetic式、math式

変数

種類 variable object math式 会話タグ 説明
u_variable { "u_val": "var_name" } { "math": [ "u_var_name" ] } "<u_val:var_name>" Alpha Talkerに保存される変数
npc_variable { "npc_val": "var_name" } { "math": [ "n_var_name" ] } "<npc_val:var_name>" Beta Talkerに保存される変数
global_variable { "global_val": "var_name" } { "math": [ "var_name" ] } "<global_val:var_name>" ゲーム中どこからでも参照できる変数
context_variable { "context_val": "var_name" } { "math": [ "_var_name" ] } "<context_val:var_name>" 呼び出し元によって設定された変数
var_val { "var_val": "variable" } { "math": [ "v_variable" ] } - context variable: "variable"に保存されている文字列の名前の変数を参照する
未定義の変数は""(空文字列)に、数値として評価される場合は0になります。

context variableは後述のイベントで実行されるEOCにおいて、状況を表す変数として設定される事があります。
また手動で設定でき、呼び出したEOCにその値がコピーされます。EOCの処理が終了すると、その値はリセットされます。
この性質から、一時的な変数や引数として利用できます。
ただし呼出先のEOCでcontext variableを変更しても、呼出元の変数には影響を与えません。

var_valは異なる変数に共通の操作を行う場合などに利用できます。
context_variableに文字列を設定するには、set_string_varや、run_eoc_withのvariablesオプションを使用します。
{ "var_val": "variable" }で変数を参照するには、参照したい変数が、
 { "u_variable": "var_name" } -> { "context_val": "variable" }にu_var_nameを設定
 { "npc_variable": "var_name" } -> { "context_val": "variable" }にnpc_var_nameを設定、ただし代入は機能しない模様
 { "global_variable": "var_name" } -> { "context_val": "variable" }にvar_nameを設定
 { "context_variable": "var_name" } -> { "context_val": "variable" }に_var_nameを設定

math式

条件にも効果にも使えて便利。対応しているバージョンならmathを使うことをおすすめします。
仕様はdoc/NPCs.mdの最後に記載されています。
{ "math": [ "変数/式" ] } -> 変数/式の結果を返す
{ "math": [ "変数", "++" ] } -> 変数+=1
{ "math": [ "変数", "--" ] } -> 変数-=1
{ "math": [ "左辺", "代入", "右辺" ] -> 代入: =, +=, -=, *=, /=, %=
{ "math": [ "左辺", "比較", "右辺" ] -> 比較した結果を返す 不等号: ==, !=, >=, <=, >, <
それぞれの式や辺はいくらでも項を増やす事ができます。

EOC

EOCを定義し、そのidを呼び出す時に指定する方法の他に、呼び出す場所で直接定義する方法(inline EOC)があります。inline EOCの場合typeは不要です。
共通のフィールド
  • "type": "effect_on_condition"
  • "id": EOCの名前、 必須
  • "eoc_type": EOCが自動で実行される条件
  • "condition": 効果の条件、なければ常に真
  • "effect": conditionが真の時の効果
  • "false_effect": conditionが偽の時の効果

手動で呼び出すEOC

以下のいずれのタイプでもないEOCは自動では実行されず、手動で呼び出す必要があります。
例:アイテム"pass"を持っているとログに"ようこそ"と表示、なければ"帰れ!"と表示
{
  "type": "effect_on_condition",
  "id": "eoc_name",
  "condition": { "u_has_item": "pass" },
  "effect": { "u_message": "ようこそ" },
  "false_effect": { "u_message": "帰れ!" }
}

EOCを呼び出せる場所


周期的に実行されるEOC

"recurrence"フィールドが設定されているEOCは周期的に自動で実行されます。
追加のフィールド
  • "recurrence": 実行される周期。[最小, 最大]だと範囲内でランダム
  • "deactivate_condition": 実行時conditionが偽かつfalse_effectが無い場合に評価され、真だと周期実行が停止。何らかの変異、CBMを獲得、喪失した時に偽だと周期実行が再開。
  • global:後述
  • run_for_npcs: globalがtrueの時のみ有効
globalがfalseの場合、EOCはプレイヤーとNPCそれぞれ独立した周期、停止/再開条件で実行される。
globalがtrueの場合、EOCはグローバルな周期で実行され、停止/再開条件はプレイヤー基準で判断され、
 run_for_npcsがtrueの場合、プレイヤー、NPCに対して効果を与える
 run_for_npcsがfalseの場合、プレイヤーのみに対して効果を与える
(...らしいです。追記お願いします)

シナリオ開始時に実行されるEOC

"eoc_type": "SCENARIO_SPECIFIC"のEOCのidをシナリオの"eoc"フィールドに追加すると、そのシナリオ開始時にAlpha=プレイヤーとして実行されます。(SCENARIO_SPECIFIC以外のEOCはエラーになります)

死亡時に実行されるEOC

"eoc_type": "PREVENT_DEATH"のEOCはプレイヤー死亡時にAlpha=プレイヤーとして実行されます。プレイヤーが蘇生された場合それ以降のEOCは実行されません。
"eoc_type": "AVATAR_DEATH"はドキュメントでは同様の説明ですが、実際にはPREVENT_DEATHの後に実行され、Alpha=プレイヤー、Beta=殺害者となり、蘇生された場合でも全てのEOCが実行されます。蘇生させるには不適
"eoc_type": "NPC_DEATH"のEOCはnpcの"death_eocs"に追加すると、NPC死亡時にAlpha=NPC、Beta=殺害者として実行されます。ここで蘇生されると実績・制約に影響を与えず、NPCの死体は生成されません。

マップ移動時に実行されるEOC

"eoc_type": "OM_MOVE"のEOCはマップタイルをまたいだ時に実行されます。conditionに{ "u_at_om_location": ... }を設定して場所を確認できます。

イベント発生時に実行されるEOC

"eoc_type": "EVENT"のEOCは"required_event"で指定されたイベント発生時に実行されます。context variableでイベントの状況を確認できます。
例:ゲーム開始時にログに"Hello World!"と表示
{
  "type": "effect_on_condition",
  "id": "eoc_name",
  "eoc_type": "EVENT",
  "required_event": "game_start",
  "effect": { "u_message": "Hello World!" }
}

イベントの種類


条件・効果

完全な一覧はドキュメント参考
Alpha=プレイヤーの場合が多いのでu_*しか書いていませんが、npc_*もあります。
  • 条件
{ "and": [condition, ...] }: [...]が全て真ならば真
{ "or": [condition, ...] }: [...]のいずれかが真ならば真
{ "not": condition }: conditionの否定

  • 制御
{ "if": condition, "then": effect, "else": effect }: conditionが真ならthenのeffectを、偽ならelseのeffectを実行する
{ "switch": variable, "cases": [ { "case": value, "effect": effect }, ...] }:variableの値によってeffectを実行
{ "foreach": type, "var": variable, "effect": effect, "target": target }
{ "run_eocs": [eoc, ...] }: EOCを実行
{ "run_eoc_with": eoc, "variables": [ { "variable_name": variable }, ... ] }: context variableを設定してEOCを実行
{ "run_eoc_until": eoc, "condition": condition, "iteration": cycle }: conditionが偽になるかcycle回数になるまでEOCを実行する

  • 変数
代入
{ "u_add_var": "var_name", "value": "value" }: 数値/文字列代入、数値も" "で囲む
{ "math": ["variable", "=", "value"] }: 数値代入
{ "set_string_var": string, "target_var": variable, "parse_tags": boolean }: 文字列代入, parse_tagsがtrueなら会話タグ(例:<u_name>)が解消される
{ "u_lose_var": "var_name" }: 変数削除

比較
{ "u_has_var": "variable": "value": "value" }: 比較
{ "math": [ "variable", "==", "value" ] }: 数値比較
{ "compare_string": [string, string] }: 文字列比較

タイマー計測開始
{ "u_add_var": var_name, "time": true }
{ "math": [ "var_name", "=", "time('now')" ] }(開発版のみ)
経過時間を調べる
{ "u_compare_time_since_var": var_name, "op": cmp, "time": duration }(安定版)
{ "math": [ "time_since_var(var_name)", "cmp", "time(duration)" ] }(開発版)

チェック
{ "math": [ "has_var(variable)" ] }(開発版のみ):変数が定義されていれば真
{ "expects_vars": [var_name, ...] }: 全ての変数が定義されていなければエラーを発生

  • キャラクター
"u_is_avatar": Alpha=プレイヤーかどうか
"u_die": 死ぬ、Alphaがアイテムの時は消滅する
"u_prevent_death": 今まさに死にそうな場合、体力1で復活する。
{ "u_has_strength": value }/{ "u_has_dexterity": value }/{ "u_has_intelligence": value }/{ "u_has_perception": value }: 筋力/器用/知性/感覚があるか

変異
{ "u_mutate": chance, "use_vitamins": boolean }: chance分の1の確率でランダムカテゴリーに、それ以外かchance==0なら最もプライマーが多いカテゴリーに変異する。(H版の説明は誤り)
{ "u_mutate_category": category }: 変異選択画面を表示する
{ "u_mutate_towards": trait_id }(開発版のみ): 前提が満たされていればtrait_idに、そうでなければ前提の1つに変異
{ "u_add_trait": trait_id, "variant": variant_id }:変異/特質を与える。前提、変化を無視するので変異には不適
{ "u_lose_trait": trait_id }:変異/特質を失う

CBM
{ "u_add_bionic": bionic_id }: CBMを体内に埋め込む
{ "u_lose_bionic": bionic_id }: CBMを体内から取り出す
{ "u_has_bionic": bionic_id }: CBMが体内にあるか

{ "u_roll_remainder": [id, ...], "type": type, "message": string }: 配列の中から入手していないものをランダムで与える。type:bionic/mutation/spell/recipe

  • アイテム
{ "u_has_item": item_id }: アイテムを1個持っているか
{ "u_has_items": {"item": item_id, "count": num } }:アイテムをnum個持っているか
{ "u_spawn_item": item_id, "count": num }:アイテムを入手する
{ "u_consume_item": item_id, "count": num }:アイテムを 削除 する
{ "u_activate": action }: Betaのアイテムを使用する。

{ "npc_set_flag": flag }: アイテム にフラグ(例:不潔)を設定する(キャラクターに設定するには変異、状態等を付与してください)

{ "message": string, popup:boolean }: ログに表示、popupが真ならウィンドウが出る
{ "u_message": string, ... }:こちらはAlpha=プレイヤーの場合のみ表示
{ "u_query": message, "default": boolean } Alpha=プレイヤーの場合メッセージを出してYes/Noを聞く、Alpha=NPCの場合defaultになる

{ "u_spawn_npc": npc, "real_count": num }: NPCを生成
{ "u_spawn_monster": monster, "real_count": num }: モンスターを生成


  • MOD「変更 - 汎用銃器」が有効のときに警告を出す
{
  "type": "effect_on_condition",
  "id": "eoc_check_generic_guns",
  
  "//0: "ゲーム開始時に実行",
  "eoc_type": "EVENT",
  "required_event": "game_start",
  
  "//1": "MODがロードされているか",
  "condition": { "mod_is_loaded": "generic_guns" },
  
  "//2": ポップアップを表示",
  "effect": {
    "u_message": "MODなんとかは「変更 - 汎用銃器」と互換性がありません",
    "popup": true,
    "type": "warning"
  }
}
  • 経過時間を計る
未定義のタイマーの経過時間は0になるので一定時間未満を判定するにはタイマーが定義されているか検証する必要がある
0.H
{
  "type": "effect_on_condition",
  "id": "eoc_set_timer",
  "effect": { "u_add_var": "timer", "time": true }
},
{
  "type": "effect_on_condition",
  "id": "eoc_check_timer",
  "condition": { "and": [
    { "not": { "u_has_var": "timer", "value": "" } },
    { "u_compare_time_since_var": "timer", "op": "<", "time": "3 m" }
  ] },
  "effect": {...}
}

開発版
{
  "type": "effect_on_condition",
  "id": "eoc_set_timer",
  "effect": { "math": [ "u_timer", "=", "time('now')" ] }
},
{
  "type": "effect_on_condition",
  "id": "eoc_check_timer",
  "condition": { "and": [
    { "math": [ "has_var(u_timer)" ] },
    { "math": [ "time_since(u_timer)", "<", "time('3 m')"] }
  ] },
  "effect": {...}
}
  • 特定のカテゴリーに変異させる
{
  "type": "effect_on_condition",
  "id": "eoc_mutate_in_category",
  
  "//0": "primerが設定されてないとエラー",
  "condition": { "expects_vars": [ "primer" ] },
  
  "//1": "プライマーを最大にして変異、その後値を復元",
  "effect": [
    { "math": [ "_vitamin_backup", "=", "u_vitamin(_primer)" ] },
    { "math": [ "u_vitamin(_primer)", "=", "2500" ] },
    { "u_mutate": 0, "use_vitamins": false },
    { "math": [ "u_vitamin(_primer)", "=", "_vitamin_backup" ] }
  ]
},
{
  "type": "effect_on_condition",
  "id": "eoc_mutate_alpha",
  
  "//0": "context variableを設定してEOCを呼び出す",
  "effect": {
    "run_eoc_with": "eoc_mutate_in_category",
    "variables": { "primer": "mutagen_alpha" } 
  }
}
  • アルコール依存症だと勝手に酒を飲む
{
  "type": "effect_on_condition",
  "id": "eoc_drink_by_addiction",
  
  "//0": "10分~1時間で実行",
  "recurrence": [ "10 m", "1 h" ],
  
  "//1": "眠っていない&10未満の乱数<アルコール依存症の強度",
  "condition": { "and": [
    { "not": { "u_has_effect": "sleep" } },
    { "math": [ "rand(10)", "<", "u_addiction_intensity('alcohol')" ] }
  ] },
  
  "//2": "依存症がなくなったら停止",
  "deactivate_condition": { "math": [ "u_addiction_intensity('alcohol')", "==", "0" ] },
  
  "//3": "所持品から素材:アルコール&カテゴリ:食品の物を1個選びそれをBetaに設定しEOCを実行",
  "effect": {
    "u_run_inv_eocs": "random",
    "search_data": [ { "material": "alcohol", "category": "food" } ],
    "true_eocs": "eoc_alcohol_found"
  } 
},
{
  "type": "effect_on_condition",
  "id": "eoc_alcohol_found",
  
  "//0": "Beta=アイテムで呼び出される",
  "effect": [
    { "u_message": "我慢できずに<npc_name>を飲んでしまいました。"},
    { "u_activate": "ALCOHOL" },
    { "u_activate": "ALCOHOL_WEAK" }
  ]
},
{
  "//0": "依存症獲得時には周期EOC再開が評価されないので手動で呼び出す",
  "type": "effect_on_condition",
  "id": "eoc_start_drinking",
  
  "//1": "依存症になった時に実行",
  "eoc_type": "EVENT",
  "required_event": "gains_addiction",
  
  "//2": "獲得した依存症はアルコール依存症か",
  "condition": { "compare_string": ["alcohol", {"context_val": "add_type"}] },
  
  "//3": "EOCを呼び出す"
  "effect": { "run_eocs": "eoc_drink_by_addiction" }
}
  • var_valの例
{
  "type": "effect_on_condition",
  "id": "eoc_add_1",
  "condition": { "expects_vars": [ "var" ] },
  "effect": [
    { "u_message": "<context_val:var>を+1する" },
    { "math": [ "v_var", "+=", "1" ] }
  ] 
},
{
  "type": "effect_on_condition",
  "id": "eoc_var_val_test",
  "effect": [
    { "math": ["u_var_1", "=", "0" ] },
    { "run_eoc_with": "eoc_add_1", "variables": {"var": "u_var_1" } },
    { "u_message": "<u_val:var_1>" },     
    
    { "math": ["u_var_2", "=", "10" ] },
    { "run_eoc_with": "eoc_add_1", "variables": {"var": "u_var_2" } },
    { "u_message": "<u_val:var_2>" }
  ]
}
  • 視界内のNPCを仲間にする
開発版
{
  "type": "effect_on_condition",
  "id": "eoc_follow_npc_in_sight",
  "effect": {
    "//0": "対象のNPCをAlphaに設定してEOCを呼び出す",
    "u_run_npc_eocs": [ "eoc_call_eoc_npc_as_beta" ],
    "//1": "60マス以内にいるNPCが対象",
    "npc_range": 60,
    "//2": "プレイヤーから見えているNPCのみが対象",
    "npc_must_see": true,
    "//3": "読み込み範囲内のみ対象、npc_rangeなどを使う時はtrueの必要あり",
    "local": true
  }
},
{
  "type": "effect_on_condition",
  "id": "eoc_call_eoc_npc_as_beta",
  "effect": {
    "//0": "呼び出すEOCのid",
    "run_eoc_with": "eoc_make_npcs_follow_inner_inner",
    "//1": "Alpha=プレイヤーに設定",
    "alpha_talker": "avatar",
    "//2": "Beta=現在のAlphaに設定、上記のEOCからの呼出で視界内のNPCとなる",
    "beta_talker": "u"
  },
},
{
  "type": "effect_on_condition",
  "id": "eoc_make_npc_follow",
  "//0": "follow、leaveなどの効果は対象がBetaに設定する必要があり、",
  "//1": "そうでなければエラーが起きてしまう。",
  "effect": [
    { "message": "<npc_name>を仲間にします" },
    "follow"
  ]
}
0.H版
"eoc_follow_npc_in_sight"は開発版と同じなので省略

{
  "type": "effect_on_condition",
  "id": "eoc_call_eoc_npc_as_beta",
  "//": [
    "H版はrun_eoc_withでAlphaをBetaに設定する機能は未実装である。",
    "呪文詠唱によるEOC呼び出しでは詠唱者がBetaに設定されるのを利用して",
    "Betaを対象とする効果を使用する事ができる。",
    "ただこの方法は実際にNPCが行動できるようになるまで効果を発揮せず、",
    "一瞬ウィンドウが表示されてしまう欠点がある。"
  ],
  "effect": {
    "//0": "呪文を詠唱させる",
    "//1": "上記のEOCから呼び出される場合、ここでのAlphaは視界内のNPC",
    "u_cast_spell": { "id": "SPELL_NPC_FOLLOW" }
  }
},
{
  "type": "SPELL",
  "id": "SPELL_NPC_FOLLOW",
  "name": "NPCを仲間にする呪文",
  "description": "この呪文は詠唱者が仲間になるEOCを呼び出します",
  "//0": "呪文が成功した時にEOCを呼び出す",
  "effect": "effect_on_condition",
  "//1": "呼び出されるEOCのid",
  "effect_str": "eoc_make_npc_follow",
  "valid_targets": [ "self", "hostile", "ally" ],
  "shape": "blast",
  "min_aoe": 0,
  "max_aoe": 0,
  "base_casting_time": 0,
  "final_casting_time": 0,
  "flags": [ "NO_FAIL" ]
},

"eoc_make_npc_follow"は開発版と同じなので省略

バージョンによる違い

2023年4月に記述の簡略化のためにmath式が追加され、2024年1月末に従来の記述法であるarithmeticやcompare_numなどが、mathによって置換され大部分が削除されました。バージョンによって使える記述法が異なるので、MODの対応するバージョンのドキュメントを見るようにしてください。

0.G(2023年3月):arithmetic、compare_*が使える
0.H(2024年1月4日版がベース):arithmetic、mathの両方が使える
2月以降の開発版:mathのみ使える

変数のtypeやcontextは必須ではなくなりました。新規で設定するのは非推奨です。
セーブの互換性を保つために{ "u_add_var": "var", "type": "T", "context": "ctxt", ...}で定義された変数は、{ "math": [ "u_T_ctxt_var" ] }で参照してください。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2024年10月06日 17:05