【HoI4】MOD制作講座|第5回『イベント』

こんにちは。

今回はイベントの設定について解説します。

国家方針が完了したり時間経過で発生したりするのがイベントです。


前回をご覧になっていない方はこちらをご覧下さい。

関連記事

こんにちは。 今回は従属国の設定について解説します。 従属国とは主権国家(独立国)であるが政治・経済・軍事などの面で他国の影響下にある国家のことで、 ゲーム開始時におけるインドやマラヤはイギリスの従属国として設定されていま[…]

動作環境

この記事は以下の条件で執筆しています。

  • 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種類が存在します。例えばドイツだけにイベントを発生させたい場合は国家イベント、世界的なイベント(陣営が結成されたなど)が発生した場合はニュースイベントという風に使い分けましょう。

下記のイベントはニュースイベントです。

イベントファイルの作成

イベントの設定はイベントファイルに記述します。まずはイベントファイルを格納するフォルダを作成し、その中に格納しましょう。

  1. MODフォルダの中にeventsフォルダを作成する。
    …/events
  2. eventsフォルダの中にイベントファイルを作成する。
    …/events/Sarawak.txt

    ※UTF-8 BOM付で保存しましょう。
    ※オリジナルファイルをコピーして名前を変更してもOKです。

それではイベントファイルを開いて以下のように記述しましょう。

このadd_namespaceの部分がイベントを定義するための名前付けのようなものです。

add_namespace = sarawak					# 国家イベント用
add_namespace = sarawak_news			# ニュースイベント用
オリジナルファイルでは国家イベントとニュースイベントでファイルを分けていますが、上記のように記述することで一つのファイルにまとめることもできます。

これで作成準備が完了しました。

イベントの作成

  1. イベントファイルを開く
    …/events/Sarawak.txt
  2. ファイルを編集する。

国家イベントとニュースイベントは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が選択する優先度。

タイトルと本文の設定

  1. japaneseフォルダの中にファイルを作成する。
    ※…/localisation/japanese/SAR_events_l_japanese.yml
    ※UTF-8 BOM付で保存しましょう。
  2. ファイルを編集する。

記述したタイトルと本文に紐づくように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コマンドを使えば発生させることができます。

その場合、コンソールに条件の達成状態が分かりやすく表示されます。

まとめ

  1.  イベントの設定はイベントファイルに記述する。
    1. 国家イベントとニュースイベントの2種類があり、記述方法はほとんと同じ。
    2. 起動型と自動型の2種類がある。
  2. テストはコンソールコマンドが便利

特にtriggerを設定した自動型のイベントは意図していないタイミングで発生したりするのでしっかりテストすることが重要です。