【HoI4】MOD製作講座|第6回『国家方針』

こんにちは。

今回は「国家方針」の作成方法について解説します。

国家方針はHoI4から登場した新しいシステムで、初期バージョンから実装されています。

国家が採用するべき方針を直観的に選択することが出来るシステムであり、アメリカなら「レンドリース法」、ドイツなら「ラインラント」などの史実的なものから、「ヒトラーへの反抗」「ドゥーチェへの反抗」などの仮想的な要素も用意されています。

国家方針は「ナショナル・フォーカス(通称NF)」としても呼ばれることがあります。

動作環境

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

  • Windows/Steam
  • バージョン:1.14.2
  • 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
    • Trial of Allegiance

国家方針の設定

国家方針は基本的に国家タグに基づいて作成します。ドイツの国家方針は国家タグ「GER」に対して紐付けされているということです。

国家方針ファイルの作成

最初に国家方針ファイルを作成しましょう。

  1. commonフォルダの中にnational_focusフォルダを作成する。
    …/national_focus
  2. national_focusフォルダの中に国家方針ファイルを作成する。
    …/national_focus/sarawak.txt

    ※UTF-8 BOM付で保存しましょう。
    ※オリジナルファイルをコピーして名前を変更してもOKですが、最初は中身を全て消した方が良いです。

次に下記のコードを参考に基本的な定義を記述します。

focus_tree = {
	id = sarawak_focus										# 他の国家方針ツリーIDと重複しないように記述
	
	country = {												# 国家方針が有効となる条件
		factor = 0
		modifier = {
			add = 10
			tag = SAR
		}
	}
	
	default = no											# 汎用の国家方針であるかどうか
	
}
項目 設定値 コメント
id 国家方針ツリーID 他と重複しないように記述。
country 条件 国家方針が有効となる条件。
※サンプルコードは全国家で無効(factor = 0)だが、SARのみ有効(add = 10)となる。
default yes/no 汎用の国家方針かどうか(yesにすると専用の国家方針が無い国家に対して有効となる)。

ゲームを起動して国家方針ツリーを開くと以下の画像のように空っぽのツリーが表示されているはずです。

これで作成する準備が出来ました。

国家方針の作成

それでは国家方針を作成していきましょう。

まずは下記のコードを参考に国家方針を一つ追加してみて下さい。

focus_tree = {
	id = sarawak_focus										# 他の国家方針ツリーIDと重複しないように記述
	
	country = {												# 国家方針が有効となる条件
		factor = 0
		modifier = {
			add = 10
			tag = SAR
		}
	}
	
	default = no											# 汎用の国家方針であるかどうか
	
	focus = {
		id = SAR_political_effort							# 他の国家方針IDと重複しないように
		icon = GFX_goal_generic_demand_territory			# アイコン
		x = 0												# 表示位置(横軸)
		y = 0												# 表示位置(縦軸)
		cost = 10											# 完了時間(10で70日)
		search_filters = { FOCUS_FILTER_POLITICAL }		# フィルター
		available_if_capitulated = yes						# 降伏している時に実行可能かどうか
		completion_reward = {								# 完了時に発生する内容
			add_political_power = 100
		}
	}
	
}
項目 設定値 コメント
id 国家方針ID 他と重複しないように記述。
icon 画像 国家方針のアイコン
x 数値 国家方針の表示位置(横軸)
y 数値 国家方針の表示位置(縦軸)
cost コスト 完了時間(10:70日)
search_filters フィルター フィルター
available_if_capitulated yes/no 降伏している時に実行可能かどうか
completion_reward 完了時に発生する内容

localisationファイルも忘れずに作成しましょう。国家方針には名前と説明を付けることが出来ます。

  1. localisation/japaneseフォルダの中にファイルを作成する。
    …/localisation/japanese/SAR_focus_l_japanese.yml
    ※UTF-8 BOM付で保存しましょう。
    ※XXXX_focus_l_japanese.ymlなど。
  2. ファイルを編集する。
l_japanese:
SAR_political_effort:0 "王国の政治的課題"
SAR_political_effort_desc:0 "我が国の王権を守るためには何が必要だろうか?"

起動して確認しましょう。

前提が必要な国家方針

国家方針「ツリー」と名前が付けられている通り、「国家方針A」が完了したら「国家方針B」が選択可能になるという仕組みがあります。下記の画像ですと、「陸軍改革」が完了すると「ソ連との条約」が選択可能になります。


下記のコードを参考に国家方針を追加してみましょう。

prerequisiteというコードで前提となる国家方針を指定しています。

localisationファイルは説明を省略します。

	focus = {
		id = SAR_administrative_agency
		icon = GFX_focus_generic_treaty
		prerequisite = { focus = SAR_political_effort }		# 前提の国家方針
		x = 0
		y = 1												# 表示位置に注意
		cost = 10
		search_filters = { FOCUS_FILTER_POLITICAL }
		available_if_capitulated = yes
		completion_reward = {
			add_political_power = 100
		}
	}
	
項目 設定値 コメント
prerequisite 国家方針ID 前提となる国家方針を記述。
書き方には「and」条件と「or」条件があります。
以下のように2つに分けて記述するとAとB両方の完了が必要です。
prerequisite = { focus = A }
prerequisite = { focus = B }
1つの中で記述するとAかBのどちらかの完了が必要です。
prerequisite = { focus = A focus = B }
※上記の例は2つですが、2つ以上指定することも可能です。

起動して確認しましょう。

択一的な国家方針

この国家方針を選択すると、この国家方針が選択出来なくなるという仕組みがあります。下記の画像を見てみると、「中国との友好」と「日本との友好」が択一的として設定されているのが分かります。


下記のコードを参考に国家方針を追加してみましょう。

mutually_exclusiveコードで設定しています。択一的にしたい両方の国家方針に記述します。また、縦軸(y=0の所)を合わせましょう。合わせなくても設定は出来ますが、見た目で分かりやすくなります。

localisationファイルは説明を省略します。

	focus = {
		id = SAR_political_effort							# 他の国家方針IDと重複しないように
		icon = GFX_goal_generic_demand_territory			# アイコン
		mutually_exclusive = { focus = SAR_if_scenario }	# 択一的にする相手の国家方針IDを指定する
		x = 0												# 表示位置(横軸)
		y = 0												# 表示位置(縦軸)
		cost = 10											# 完了時間(10で70日)
		search_filters = { FOCUS_FILTER_POLITICAL }			# フィルター
		available_if_capitulated = yes						# 降伏している時に実行可能かどうか
		completion_reward = {								# 完了時に発生する内容
			add_political_power = 100
		}
	}
	
	focus = {
		id = SAR_if_scenario
		icon = GFX_goal_generic_political_pressure
		mutually_exclusive = { focus = SAR_political_effort }	# 択一的にする相手の国家方針IDを指定する
		x = 4
		y = 0													# 縦軸を合わせる
		cost = 10
		search_filters = { FOCUS_FILTER_POLITICAL }
		available_if_capitulated = no
		completion_reward = {
			add_stability = -0.05
		}
	}
項目 設定値 コメント
mutually_exclusive 国家方針ID 択一的にする相手先の国家方針を記述。
mutually_exclusiveも複数を指定できます。
以下のように記述すると複数の国家方針を択一的にすることができます。
mutually_exclusive = { focus = A focus = B focus = C }

起動して確認しましょう。

トリガー設定

この条件を満たすと利用可能になったり、自動的に達成されたり、キャンセルされたりするように設定することが出来ます。設定したら以下のように表示されます。


下記のコードを参考に国家方針を追加してみましょう。

	focus = {
		id = SAR_constitution_of_sarawak
		icon = GFX_focus_generic_improve_the_administration
		prerequisite = { focus = SAR_administrative_agency }
		available = {										# 前提条件
			date > 1939.1.1
			has_government = neutrality
		}
		bypass = {											# 自動達成条件
			has_ideas = SAR_constitution_of_sarawak
		}
		cancel = {											# キャンセル条件
			NOT = { has_government = neutrality }
		}
		x = 0
		y = 2
		cost = 10
		search_filters = { FOCUS_FILTER_POLITICAL }
		cancel_if_invalid = yes
		continue_if_invalid = no
		available_if_capitulated = yes
		completion_reward = {
			add_ideas = SAR_constitution_of_sarawak
		}
	}
項目 設定値 コメント
available 前提条件 条件を満たすと国家方針が利用可能になります。
bypass 自動達成条件 条件を満たすと国家方針が自動的に達成されます。
cancel キャンセル条件 条件を満たすと国家方針がキャンセルされます。
cancel_if_invalid yes/no 国家方針実行中にavailableの条件を満たさなくなった場合にキャンセルされるかどうか。※省略時はyes
continue_if_invalid yes/no(省略時) cancelとcancel_if_invalidを無視するかどうか。※省略時はno
上記のコードを解説すると「日時が1939.1.1移行かつ、イデオロギーが中道」の時に利用可能になり、「既にSAR_constitution_of_sarawakの国民精神を所有している」場合は自動的に達成され、「実行中にイデオロギーが中道以外になった」場合はキャンセルされるということです。サンプルではavailable・bypass・cancelの全てを記述していますが、どれか一つだけ、あるいは全て記述しないことも可能です。作成したい国家方針に合わせましょう。

起動して確認しましょう。

効果設定

国家方針が完了した際の効果はcompletion_rewardの中に記述することで設定できます。サンプルでは政治力を追加したり、国民精神を追加したりしていますが、その他にも様々な効果を設定することが出来ます。全て説明することは出来ませんが代表的な効果をご紹介します。

ここに無いものはオリジナルファイルから探して参考にしましょう。
項目 サンプル コメント
add_political_power add_political_power = 100 政治力を追加する。
add_stability add_stability = 0.1 安定度を追加する。
add_war_support add_war_support = 0.1 戦争協力度を追加する。
add_command_power add_command_power = 50 指揮力を追加する。
add_manpower add_manpower = 10000 人的資源を追加する。
army_experience army_experience = 10 陸軍経験値を追加する。
navy_experience navy_experience = 10 海軍経験値を追加する。
air_experience air_experience = 10 空軍経験値を追加する。
add_ideas add_ideas = XXX 国民精神を追加する。
remove_ideas remove_ideas = XXX 国民精神を削除する。
add_tech_bonus add_tech_bonus = {
name = industrial_bonus
bonus = 1.0
uses = 1
category = industry
}
研究ボーナスを追加する。
country_event country_event = XXX 国家イベントを発生させる。
news_event news_event = XXX ニュースイベントを発生させる。

表示位置(ポジション)s設定

これまでのサンプルコードにてご存じの通り、国家方針の表示位置はXとYで定義されています。左上を0,0として1の単位ずつ上下左右に遷移します。ただし注意が必要なのが横軸の表示位置です。上下が1ずつなのに対して、左右は2ずつであることが分かります。


ある国家方針に対して相対的に表示位置を設定することも出来ます。下記のサンプルコードは「王権への是非を問う」は「王国の政治的課題」から4単位だけ右に表示されます。

focus = {
		id = SAR_if_scenario
		icon = GFX_goal_generic_political_pressure
		mutually_exclusive = { focus = SAR_political_effort }	
		x = 4													# 相対的な表示位置(横軸)
		y = 0													# 相対的な表示位置(縦軸)
		relative_position_id = SAR_political_effort			# 相対的な位置に指定する国家方針
		cost = 10
		search_filters = { FOCUS_FILTER_POLITICAL }
		available_if_capitulated = no
		completion_reward = {
			add_stability = -0.05
		}
	}

設定先となる「王国の政治的課題」の表示位置を変更してみましょう。今回は横軸を3単位右にずらします。

focus = {
		id = SAR_political_effort
		icon = GFX_goal_generic_demand_territory
		mutually_exclusive = { focus = SAR_if_scenario }
		x = 3												# 横軸をずらしてみると……
		y = 0
		cost = 10
		search_filters = { FOCUS_FILTER_POLITICAL }
		available_if_capitulated = yes
		completion_reward = {
			add_political_power = 100
		}
	}

「王権の是非を問う」の表示位置が自動的に変更されました。設定していない「サラワク行政庁」と「サラワク王国憲法」はそのままの位置であることが分かります。

この設定をしておけば、国家方針が多くなるほど表示位置の調整がしやすくなります。

継続方針の表示位置

継続方針の表示位置を設定することが出来ます。省略した場合は初期位置(50,1000)に表示されます。

※今回は継続方針の作成方法については省略します。

focus_tree = {
	id = sarawak_focus
	
	country = {
		factor = 0
		modifier = {
			add = 10
			tag = SAR
		}
	}
	
	default = no
	
	continuous_focus_position = { x = 100 y = 800 }			# 継続方針の表示位置

初期表示位置設定

国家方針ツリーを最初に開いた時の表示位置を設定することが出来ます。省略した場合は初期位置(0,0)が表示されます。

focus_tree = {
	id = sarawak_focus
	
	country = {
		factor = 0
		modifier = {
			add = 10
			tag = SAR
		}
	}
	
	default = no
	
	initial_show_position = { x = 50 y = 0 }				# 国家方針ツリーを最初に開いた時の表示位置
	
あまり重要な設定項目ではありませんが、巨大な国家方針ツリーになるほどプレイヤーに対して親切になる項目です。

AIの設定

例えばAIドイツは史実プレイだと必ず「ラインラント」から国家方針を取得します。このような国家方針の取得順はai_will_doを追加すれば設定出来ますが、いつのバージョンからかAIの設定方法が追加され、AIが取得する国家方針は以下のフォルダにも定義出来るようになりました。今回は両方の設定方法を説明します。

common/ai_strategy_plans
AIの設定は非常に煩雑ですので、別途記事を投稿する予定です。今回は国家方針の取得順のみ作成します。

AI戦略ファイルの作成

AI戦略ファイルを作成しましょう。

  1. commonフォルダの中にai_strategy_plansフォルダを作成する。
    …/ai_strategy_plans
  2. ai_strategy_plansフォルダの中にAI戦略ファイルを作成する。
    …/ai_strategy_plans/SAR.txt

    ※UTF-8で保存しましょう。
    ※オリジナルファイルをコピーして名前を変更してもOKです(中身は削除しましょう)。
オリジナルファイルでは、史実的なAIはXXX_historical_strategy_plan、仮想的なAIはXXX_alternate_strategy_planというように名前を使い分けています。自分が分かりやすいようにファイル名を付けましょう。

以下のサンプルコードを参考に基本的な定義を記述します。

完了したらゲームが正常に起動することを確認しておきましょう。

SAR_historical = {						# AI戦略ファイルの定義
	name = "Sarawak Historical Plan"	# 名前
	desc = ""							# 説明
	
	allowed = {							# 有効となる国家
		original_tag = SAR
	}
	enable = {							# 有効となる条件
		is_historical_focus_on = yes
	}
	abort = {							# 無効になる条件
	}
	
	ai_national_focuses = {				# 国家方針取得順
	}
	
	weight = {							# 戦略の重さ
		factor = 1.0
		modifier = {
			factor = 1.0
		}
	}
}
項目 設定値 コメント
name 名前 AI戦略名。表に出ることは無い(多分)ので分かりやすいように。
desc 説明 AI戦略の説明。
allowed 条件 有効となる国家。
enable 条件 有効となる条件。
abort 条件 無効となる条件。
ai_national_focuses 国家方針ID 取得する国家方針。
weight 重さ AI戦略の重さ。※ややこしいのでよく分からない場合はサンプルの通り最小の1を設定しておきましょう。

国家方針取得順の設定

それではAIが取得する場合の、国家方針の順番を設定しましょう。以下のコードの通り、ai_national_focusesに国家方針IDを記述します。この鍵括弧の中に記述した国家方針がから順番に実行されます。国家方針が既に実行されていたり、条件を満たさないため実行できない場合は、そのの国家方針を実行します。下記のサンプルの場合、「王国の政治的課題」→「サラワク行政庁」→「サラワク王国憲法」の順番で国家方針が実行されます。

	ai_national_focuses = {				# 国家方針取得順
		SAR_political_effort
		SAR_administrative_agency
		SAR_constitution_of_sarawak
	}	

国家方針個別のAI設定

AI戦略ファイルでの定義が存在しない、もしくは条件を満たさない場合は国家方針ファイルに定義した個別の設定に従って国家方針が実行されます。これはai_will_doを使用して設定します。

focus = {
		id = SAR_political_effort
		icon = GFX_goal_generic_demand_territory
		mutually_exclusive = { focus = SAR_if_scenario }
		x = 0
		y = 0
		cost = 10
		search_filters = { FOCUS_FILTER_POLITICAL }
		available_if_capitulated = yes
		completion_reward = {
			add_political_power = 100
		}
		ai_will_do = { factor = 10 }						# AI設定
	}

	focus = {
		id = SAR_if_scenario
		icon = GFX_goal_generic_political_pressure
		mutually_exclusive = { focus = SAR_political_effort }	
		x = 4
		y = 0
		relative_position_id = SAR_political_effort
		cost = 10
		search_filters = { FOCUS_FILTER_POLITICAL }
		available_if_capitulated = no
		completion_reward = {
			add_stability = -0.05
		}
		ai_will_do = {
			factor = 0
			modifier = {
				factor = 10
				is_historical_focus_on = no
			}
		}
	}
項目 設定値 コメント
ai_will_do 条件 AIが取得する優先度。デフォルトは1。
上記のサンプルコードの解説です。「王国の政治的課題」と「王権の是非を問う」の排他的な国家方針の2つは、史実モードがONである場合、「王権の是非を問う」が選択されることはありませんが、史実モードがOFFの場合は両方の国家方針がfactor = 10となり、優先度が同じになります。

最後に

国家方針はシンプルですが奥が深いです。政治力や研究ボーナスの獲得といったシンプルなものからディシジョンやイベントチェーンの起点となるような重要なものまで幅広く作成することができ、非常に楽しい作業です。既に大量の国家方針がDLCによって提供されていますので、作成したい国家方針があったら、似たようなものを探して参考にするのが良いでしょう。