イベント発生条件(required_conditions)
required_conditions は、events.json の各イベント/エンディングに付ける「発生条件」です。日数・時間帯・場所・季節・ステータス・フラグ・変数などを組み合わせて、イベントの候補を絞り込みます。
ページ概要
- 対象ファイル:
events.json(イベント定義/エンディング定義のrequired_conditions) - 役割: 「いつ/どこで/どんな状態なら出るか」を条件で表現します。
- どこで使われるか: イベント候補の抽出、エンディングの選出(31日目)
- 最小構成: このページの「最小構成(コピペ用)」
- よくあるミス:
dayをオブジェクトで書く(実際は配列)、affectionを直下に置く(実際はstatsの中)
最小構成(コピペ用)
まずは「日数+時間帯+場所」だけで十分です。
{
"required_conditions": {
"day": [{"operator": ">=", "value": 1}],
"time": ["morning"],
"locations": ["cafe"]
}
}
使える条件フィールド一覧
必要なものだけを書けばOKです。書かれていない条件は「制限なし」として扱われます。
| フィールド | 型 | 意味 |
|---|---|---|
day | array | 日数条件(1〜31日など)。配列で、複数条件をANDで扱えます。 |
time | array | 時間帯(例: earlyMorning, morning, afternoon, evening, night, dayEnd, beforeDayChange, afterDayChange) |
locations | array | 場所ID(例: cafe, school_classroom など)。一覧は location_changeの場所ID一覧 を参照 |
seasons | array | 季節(例: spring, summer, autumn, winter) |
stats | object | ステータス条件(例: affection/intimacy など)。マップ形式。 |
required_relationship | array or string | 必須関係性(配列推奨)。配列の場合はいずれかに該当すればOK。例: ["dating", "bestFriend"]。単一値も後方互換性で対応(例: "dating")。 |
required_flags | array | 必須フラグ(全部そろっている必要がある) |
forbidden_flags | array | 禁止フラグ(どれか1つでも立っていたら不可) |
variables | object | 変数条件(変数の値を条件にする) |
day_equals_variable | string | 「変数に入っている日だけ発生」(約束日など)。例は 特殊イベント(約束/クロスオーバー) |
day_of_week | array | 曜日(例: monday など) |
player_gender | array | 主人公性別条件(例: ["male"])。Phaseによって制限あり |
language | array | 言語条件(例: ["ja"], ["en"])。プレイヤーの言語設定によるフィルタリング |
other_characters_enabled | array | クロスオーバー用: 同時に有効化されている必要があるキャラクターID配列(例: ["shouya_tada"]) |
required_mods | array | 特定MODが読み込まれている必要がある(クロスオーバー向け) |
IntCondition(数値条件の書き方)
day や stats の中では、同じ「数値条件」形式を使います。
{
"operator": ">=",
"value": 10
}
- operator: 比較演算子(例:
>=,>,==,<=,<,!=) - value: 比較する値(数値)
day(配列)例
{
"required_conditions": {
"day": [
{"operator": ">=", "value": 10},
{"operator": "<=", "value": 20}
]
}
}
上の例は「10日目〜20日目の間だけ」を意味します(AND扱い)。
stats(マップ)例
{
"required_conditions": {
"stats": {
"affection": {"operator": ">=", "value": 50},
"intimacy": {"operator": ">=", "value": 30}
},
"required_relationship": ["friend", "bestFriend"]
}
}
注意
affection/intimacyなどをrequired_conditions直下には置けません。必ずstatsの中に入れます。required_relationshipは配列(推奨)または文字列です(relationshipというフィールド名ではありません)。
フラグ条件(required_flags / forbidden_flags)
{
"required_conditions": {
"required_flags": ["met_at_school", "got_phone_number"],
"forbidden_flags": ["broke_up"]
}
}
フラグの設計・命名・使い方は フラグシステム も参照してください。
変数条件(variables / day_equals_variable)
変数(数値)を条件に使うと、「約束日」「イベントカウント」などを柔軟に表現できます。
day_equals_variable は特に便利で、「変数に保存した日だけ発生」を簡単に書けます。
詳しい例は 特殊イベント(約束/クロスオーバー) を参照してください。
言語条件(language)
プレイヤーの言語設定(日本語/英語)によってイベントを出し分けることができます。
{
"required_conditions": {
"language": ["ja"]
}
}
複数言語を指定することも可能です:
{
"required_conditions": {
"language": ["ja", "en"]
}
}
注意: 未指定の場合は全言語で発生します。
よくあるミス
- day をオブジェクトで書く: 正しくは配列です(例:
"day": [{"operator":">=","value":3}])。 - stats を配列で書く: 正しくはマップです(例:
"stats": {"affection": {...}})。 - required_relationship の値が不正:
dislike/acquaintance/friend/bestFriend/datingのいずれかです(strangerは無効)。 - required_relationship は配列推奨: 配列形式(例:
["dating", "bestFriend"])が推奨です。単一値も動作しますが、配列の方が柔軟です。 - locations のIDが存在しない: 一部は警告になります(
INVALID_LOCATION_ID)。