このページは0.Gから利用可能になった外部拡張言語EoCの説明であるEFFECT_ON_CONDITION.mdを機械翻訳したものをもとに加筆中のページです。 まだノウハウが溜まっていないため、ガリガリ加筆してくれる有識者を募集しています。
| 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として起動。その後、プレイヤーが死んでいない場合は死なず、複数ある場合は、プレイヤーが死んでいないまですべて実行されます。 |
{
"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 }
},
{
"type": "effect_on_condition",
"id": "test_stats",
"recurrence": [ 1, 10 ],
"condition": { "not": { "u_has_strength": 7 } },
"effect": { "u_add_effect": "infection", "duration": 1 }
}
{
"type": "effect_on_condition",
"id": "EOC_SLEEP",
"effect": [ { "u_message": "You feel very sleepy…" }, { "arithmetic": [ { "u_val": "fatigue" }, "+=", { "const": 40 } ] } ]
}
{
"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" ]
}
}
| 種類 | 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"に保存されている文字列の名前の変数を参照する |
{
"type": "effect_on_condition",
"id": "eoc_name",
"condition": { "u_has_item": "pass" },
"effect": { "u_message": "ようこそ" },
"false_effect": { "u_message": "帰れ!" }
}
{
"type": "effect_on_condition",
"id": "eoc_name",
"eoc_type": "EVENT",
"required_event": "game_start",
"effect": { "u_message": "Hello World!" }
}
{
"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"
}
}
{
"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" }
}
{
"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>" }
]
}
{
"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"
]
}
"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"は開発版と同じなので省略