events.json(イベント一覧)

events.json は「このMODにどんなイベントがあるか」を列挙するファイルです。ここにイベント(通常イベント)とエンディング(31日目の結果イベント)を登録し、実際の中身は script_fileevents/*.json に分けて書きます。

ページ概要

  • 対象ファイル: events.json
  • 役割: イベント/エンディングの「一覧メタデータ」を定義します(タイトル、条件、優先度、スクリプトファイルの場所など)。
  • どこで使われるか: イベント発火判定(required_conditions)、イベント一覧の読み込み、エンディング選出(31日目)
  • 最小構成: このページの「最小構成(コピペ用)」
  • よくあるミス: ID不一致(EVENT_ID_MISMATCH/ENDING_ID_MISMATCH)、script_file の書き間違い、条件JSONの型違い(day は配列)

最小構成(コピペ用)

まずは「イベント1つ+エンディング1つ」だけで動く形を作り、増やしていくのが安全です。

{
  "events": [
    {
      "id": "hello_event",
      "title_ja": "はじめての会話",
      "title_en": "First Talk",
      "description_ja": "",
      "description_en": "",
      "type": "story",
      "required_conditions": {
        "day": [{"operator": ">=", "value": 1}],
        "time": ["morning"],
        "locations": ["school_classroom"]
      },
      "script_file": "events/hello_event.json",
      "once_only": true,
      "priority": 10
    }
  ],
  "endings": [
    {
      "id": "ending_normal",
      "title_ja": "いつもの日常",
      "title_en": "As Usual",
      "description_ja": "",
      "description_en": "",
      "type": "normal",
      "required_conditions": {},
      "script_file": "events/endings/ending_normal.json",
      "priority": 0
    }
  ]
}

重要: IDは2箇所で一致させます

  • events.jsonid と、スクリプト側(events/*.json)の event_id を一致させてください。
  • 一致しない場合、検証で EVENT_ID_MISMATCH / ENDING_ID_MISMATCH が出ます。

events(通常イベント)

events は「平常時に発生するイベント」を並べます(会話、デート、ランダムイベントなど)。

イベント定義のフィールド

フィールド 説明
idstringイベントの一意ID(スクリプトの event_id と一致が必須)
title_ja / title_enstring一覧表示用タイトル(未指定でも動作しますが推奨)
description_ja / description_enstring一覧表示用説明(任意)
typestringイベント種別(例: story, date, random など)
required_conditionsobject発生条件。詳細は イベント発生条件(required_conditions) を参照
script_filestringイベントスクリプトへの相対パス(例: events/hello_event.json
once_onlybooleantrue なら一度だけ発生(推奨)
prioritynumber候補が複数ある場合の優先度(大きいほど優先)
cooldown_daysnumber同じイベントの再発生までのクールダウン日数(任意)
default_bgmstringイベント開始時のBGM指定(任意)。詳しくは 音声(BGM/SE/Voice)

endings(エンディング)

endings は「31日目に評価として再生されるイベント」を並べます。基本的には、条件を満たしたものの中から priority の高いものが選ばれ、キャラクターごとに1つ再生されます。

エンディングの設計(分岐の作り方、優先度の考え方)は エンディングの作り方 を参照してください。

エンディング定義のフィールド

フィールド 説明
idstring一意ID(スクリプトの event_id と一致が必須)
title_ja / title_enstringエンディング名(必須)
description_ja / description_enstring説明(任意)
typestringエンディング種別(例: bad, normal, good, best, true_end など)
required_conditionsobject発生条件(例: 関係性やフラグ)。詳細は イベント発生条件
script_filestringエンディングスクリプトへの相対パス
prioritynumber複数候補がある場合の優先度(大きいほど優先)
thumbnail_imagestringギャラリー等に使うサムネイル画像(任意)
default_bgmstringエンディング開始時BGM(任意)

よくあるミス

  • ID不一致: events.jsonid と、スクリプトの event_id が違う(EVENT_ID_MISMATCH
  • script_file が存在しない: パスの書き間違い、フォルダ名の揺れ(MISSING_EVENT_SCRIPT/MISSING_ENDING_SCRIPT
  • 条件JSONの型が違う: day[{...}] の配列。stats{ "affection": { ... } } のマップ
  • once_only を忘れる: 同じ会話が何度も出てしまう(意図通りならOK)