こんにちは。
今回はイベントの設定について解説します。
国家方針が完了したり時間経過で発生したりするのがイベントです。
動作環境
この記事は以下の条件で執筆しています。
- Windows/Steam
- バージョン:1.13.3
- DLC
- Together for Victory
- Death or Dishonor
- Waking the Tiger
- Man The Guns
- La Résistance
- Battle for the Bosporus
- No Step Back
- By Blood Alone
- Arms Against Tyranny
イベントの設定
基本的に国家イベント(country_event)とニュースイベント(news_event)の2種類が存在します。例えばドイツだけにイベントを発生させたい場合は国家イベント、世界的なイベント(陣営が結成されたなど)が発生した場合はニュースイベントという風に使い分けましょう。
下記のイベントはニュースイベントです。
イベントファイルの作成
イベントの設定はイベントファイルに記述します。まずはイベントファイルを格納するフォルダを作成し、その中に格納しましょう。
- MODフォルダの中にeventsフォルダを作成する。
…/events - eventsフォルダの中にイベントファイルを作成する。
…/events/Sarawak.txt
※UTF-8 BOM付で保存しましょう。
※オリジナルファイルをコピーして名前を変更してもOKです。
それではイベントファイルを開いて以下のように記述しましょう。
このadd_namespaceの部分がイベントを定義するための名前付けのようなものです。
add_namespace = sarawak # 国家イベント用
add_namespace = sarawak_news # ニュースイベント用
これで作成準備が完了しました。
イベントの作成
- イベントファイルを開く。
…/events/Sarawak.txt - ファイルを編集する。
国家イベントとニュースイベントはcountry_eventとnews_eventの記述を使い分ける以外は基本的に同じです。
イベントの呼び出し方には2種類あり、国家方針の完了やイベントの選択などの外的な要因を元に発生させる「起動型」と、条件を満たせば自動で発生する「自動型」があります。下記のサンプルコードは国家イベントを起動型、ニュースイベントを自動型で記述しています。
add_namespace = sarawak # 国家イベント用
add_namespace = sarawak_news # ニュースイベント用
# 国家イベント
country_event = {
id = sarawak.1 # ID
title = sarawak.1.t # タイトル
desc = sarawak.1.d # 本文
picture = GFX_report_event_generic_handshake # 画像
is_triggered_only = yes # トリガー(条件)
option = { # 選択肢
name = sarawak.1.a # 選択肢の内容
trigger = { is_ai = no } # 選択肢のトリガー(条件)
ai_chance = { factor = 90 } # AIが選択する確率
}
option = {
name = sarawak.1.b
ai_chance = { factor = 10 }
}
}
# ニュースイベント
news_event = {
id = sarawak_news.1
title = sarawak_news.1.t
desc = sarawak_news.1.d
picture = GFX_news_event_hitler_handshake
major = yes # ニュースイベントには必要
fire_only_once = yes # yesで一度きりの発生
fire_for_sender = no # 発生元でも発生させるか
hidden = no # イベントを表示するか
trigger = { # トリガー(条件)
country_exists = SAR
SAR = { is_puppet_of = ENG }
date > 1936.3.1
}
mean_time_to_happen = { # 平均発生時間
days = 30
}
immediate = { # このイベントで必ず発生する効果
}
option = {
name = sarawak_news.1.a
trigger = { tag = SAR }
}
option = {
name = sarawak_news.1.b
trigger = { NOT = { tag = SAR } }
}
}
項目 | 設定値 | コメント |
---|---|---|
id | イベントID | 他のイベントIDと重複しないように記述。 |
title | タイトル | イベントのタイトルで「.t」が必要。※localisationファイルに定義。 |
desc | 本文 | イベントの本文で、「.d」が必要。※localisationファイルに定義。 |
picture | 画像 | イベントの画像。※interfaceファイルに定義。 |
hidden | yes/no | イベントを表示するかどうか。 ※他のイベントに関連するフラグ付けなどで使用している。 |
major | yes/no | ニュースイベントにはこの記述が必要。 |
is_triggered_only | トリガー(yes/no) | イベントを発生させるトリガー。yesで呼び出さない限り発生しない。 |
trigger | トリガー | イベントを発生させるトリガー。記述した条件を満たすと発生する。 |
fire_only_once | yes/no | 複数回発生させるか。yesで二度と発生しない。※triggerとセット。 |
fire_for_sender | yes/no | 発生元で発生させるか。例えばドイツから発生したニュースイベントを発生元のドイツでも発生させるか、yesで発生させる。 |
mean_time_to_happen | years/months/days | 平均発生時間(MTTH)。※triggerとセット。 triggerの条件を満たす場合に、記述した内容で発生の判定が行われる。例えばサンプルの「days = 30」だと、平均したら30日に1回は発生しますが、実際には毎日30分の1の確率でいつでも発生する可能性があるということです。※triggerの条件を満たしていない場合は、20日毎にtriggerを満たしているか判定されます。 |
immediate | 効果 | このイベントが発生したら必ず発生する効果。※選択肢を選ぶ前に発生するため、主にフラグのON/OFFなどで使用されています。 |
option | 選択肢 | イベントが発生した時に選択できる選択肢で「.a」や「.b」などが必要。※IDやタイトルと重複しないように注意。 |
ai_chance | AI用 | AIが選択する優先度。 |
タイトルと本文の設定
- japaneseフォルダの中にファイルを作成する。
※…/localisation/japanese/SAR_events_l_japanese.yml
※UTF-8 BOM付で保存しましょう。 - ファイルを編集する。
記述したタイトルと本文に紐づくようにlocalisationファイルに記述しましょう。
l_japanese:
sarawak.1.t: "サラワク王国MODにようこそ!"
sarawak.1.d: "このMODはかつて東南アジアに存在したサラワク王国を追加するMODです。"
sarawak.1.a: "やってやるぞ!"
sarawak.1.b: "二度と表示しないで"
sarawak_news.1.t: "サラワク王国がボルネオ島を統一"
sarawak_news.1.d: "勇敢なる兵士たちの奮闘により、ボルネオ島からオランダ軍をたたき出すことに成功した。オランダの植民地政府が撤退したことで民衆は混乱している。民衆を守るべく国王ヴァイナー・ブルックはサラワク王国の下にボルネオ島の統一を宣言するのだった。"
sarawak_news.1.a: "サラワク王国万歳!"
sarawak_news.1.b: "サラワク王国……?"
イベントの確認方法
イベントを確認するにはコンソールコマンドの「event」を使用すると便利です。
コンソールコマンドについては下記で解説しています。
こんにちは。 「hoi4 チート」「hoi4 チート 使い方」などでこのサイトに来られている方が多いようなのでまとめてみました。 コンソールコマンドで使用できるデータはこちらでご覧ください。 [sitecard s[…]
コンソールコマンド入力欄に「event イベントID」と入力しましょう。
正常に設定できていれば下記のようにイベントが発生します。
条件を満たしていない場合でもeventコマンドを使えば発生させることができます。
その場合、コンソールに条件の達成状態が分かりやすく表示されます。
最後に
特にtriggerを設定した自動型のイベントは意図していないタイミングで発生したりするのでしっかりテストすることが重要です。