イベント発生条件(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です。書かれていない条件は「制限なし」として扱われます。

フィールド 意味
dayarray日数条件(1〜31日など)。配列で、複数条件をANDで扱えます。
timearray時間帯(例: earlyMorning, morning, afternoon, evening, night, dayEnd, beforeDayChange, afterDayChange
locationsarray場所ID(例: cafe, school_classroom など)。一覧は location_changeの場所ID一覧 を参照
seasonsarray季節(例: spring, summer, autumn, winter
statsobjectステータス条件(例: affection/intimacy など)。マップ形式。
required_relationshiparray or string必須関係性(配列推奨)。配列の場合はいずれかに該当すればOK。例: ["dating", "bestFriend"]。単一値も後方互換性で対応(例: "dating")。
required_flagsarray必須フラグ(全部そろっている必要がある)
forbidden_flagsarray禁止フラグ(どれか1つでも立っていたら不可)
variablesobject変数条件(変数の値を条件にする)
day_equals_variablestring「変数に入っている日だけ発生」(約束日など)。例は 特殊イベント(約束/クロスオーバー)
day_of_weekarray曜日(例: monday など)
player_genderarray主人公性別条件(例: ["male"])。Phaseによって制限あり
languagearray言語条件(例: ["ja"], ["en"])。プレイヤーの言語設定によるフィルタリング
other_characters_enabledarrayクロスオーバー用: 同時に有効化されている必要があるキャラクターID配列(例: ["shouya_tada"]
required_modsarray特定MODが読み込まれている必要がある(クロスオーバー向け)

IntCondition(数値条件の書き方)

daystats の中では、同じ「数値条件」形式を使います。

{
  "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)。