Autonomy state modding

本頁面所適用的版本可能已經過時,最後更新於1.10

附庸系統不同變種在/Hearts of Iron IV/common/autonomous_states/*.txt路徑下定義,允許自定義新變種。

參數

  • id 是附庸狀態的鍵值,不能重複。所有附庸狀態的鍵值均不可和另一附庸狀態的鍵值重複。
  • default: 如果為真,則遊戲將嘗試使和平談判中的 '傀儡' 選項以及 '傀儡' 效果在其他默認附庸狀態中使用此附庸狀態。默認狀態下為 no。
  • is_puppet 用來檢測該國是否是傀儡國。若需要該國為傀儡國,則is_puppet或者is_puppet_of條件將會返還真值。默認狀態下為 no。
  • use_overlord_color 使附庸國使用和宗主國相同的顏色。
  • min_freedom_level 決定了自治領的等級。當遊戲使自治領作為一個降級或升級時的主體時,級別較低的自治領的自治程度,比級別較高的自治領的自治程度低。這同樣也決定了主體提升或降低等級所需的多少自治點數,即等級間的差值乘以5000. 如前所述,吞併一個min_freedom_level為0.1的自治領需要花費500點數。
  • manpower_influence附庸國人力要求,決定了宗主國的殖民地軍隊中能使用多大比例的殖民地人力。 需要共赴勝利共赴勝利 DLC.
  • rule 給主體設定「是」或「否」的遊戲規則
遊戲規則列表
以下遊戲規則作為可選擇選項:
內部名 本地化名 中文名 備註
can_access_market Can access International Market 市場准入(傀儡國和宗主國總是互有市場准入)
can_be_spymaster Can be Spy Master 可以成為間諜主管
can_boost_other_ideologies Can boost popularity of other ideologies 可以提高其他意識形態的支持率。
can_boost_own_ideology Can boost own party popularity in other countries 可以在其他國家提升本黨派支持率
can_create_collaboration_government Can create collaboration governments 可以建立合作政府
can_create_factions Can Create Factions 可以創建陣營
can_declare_war_on_same_ideology Can declare war on country with the same ideology group without a war goal 可以無需戰爭目標向同一意識形態組的國家宣戰
can_declare_war_without_wargoal_when_in_war Can declare war on a neighbor without a wargoal when at war with a major 與主要國家交戰時可以無需戰爭目標向鄰國宣戰
can_decline_call_to_war Can decline call to war 可以拒絕戰爭召喚
can_force_government Can force government of another country to adopt the same ideology 可以強迫他國政府接受本國意識形態
can_generate_female_aces Women in your country are allowed to become military pilots 在你的國家女性可以成為軍事飛行員
can_generate_female_country_leaders Can generate female country leaders 可以拔擢女性國家領導人
can_generate_female_unit_leaders Can generate female unit leaders 可以拔擢女性作為單位將領
can_guarantee_other_ideologies Can guarantee other ideologies 可以對其他意識形態的國家保障獨立
can_join_factions Can join factions 可以加入陣營
can_join_factions_not_allowed_diplomacy Country's name is not allowed to join factions 國家無法加入陣營
can_join_opposite_factions Can Join Factions led by another Ideology 可以加入由不同意識形態領導的陣營
can_lower_tension Lowers World Tension with Guarantees 通過保障獨立降低全球緊張度
can_not_build_buildings CAN_NOT_BUILD_BUILDINGS 不能修建建築 其似乎不能奏效
can_not_declare_war Can not declare wars 無法宣戰 阻止製造戰爭目標,但不阻止使用現有戰爭目標
can_occupy_non_war Can hold territory owned by a country they are not at war with 可以持有未與我們交戰的國家所擁有的領土
can_only_justify_war_on_threat_country Can justify war goals against a country that have not generated world tension 可以對沒有引起全球緊張度增長的國家正當化戰爭目標
can_puppet Can puppet a country 可以傀儡其他國家
can_send_volunteers Can send volunteer forces 可以派遣志願軍
can_use_kamikaze_pilots Can use kamikaze pilots 可以讓飛行員執行自殺性攻擊
contributes_operatives Contributes Operatives to Spy Master: Yes 可以為間諜主管貢獻特工 僅對附屬國本身有影響。
units_deployed_to_overlord Control over deployed units go to overlord 已部署部隊的控制權屬於宗主國 僅對附屬國本身有影響。
  • modifier :給附庸國添加修正所有國家修正均可以應用。
  • ai_subject_wants_higher :決定了ai國家是否專注於獲得更高的自治程度。如果設置為0,AI永遠不會在自治度系統中提升自治等級。
  • ai_overlord_wants_lower :決定了AI宗主國是否專注於降低附庸國的自治等級。如果設置為0,AI永遠不會在自治度系統中降低自治等級。
  • ai_overlord_wants_garrison: 決定了AI宗主國是否願意像衛戍自己的領土一樣給附庸國的領土派遣衛戍部隊
  • allowed: 所對應主體必須滿足必要的觸發條件,以使遊戲中的自治狀態生效。可以使用 OVERLORD 作用域來作用於 overlord(宗主國)。
  • use_for_peace_conference_weight :決定了潛在的宗主國在和平談判中附庸某國家的機會。此處ROOT是附庸國,FROM是宗主國。
  • can_take_level :決定了附庸國能夠在自治度系統中提升等級所必須滿足的條件。
  • can_lose_level :決定了只有附庸國滿足了一些條件,宗主國才能夠在自治度系統中降低附庸國等級。
  • peace_conference_initial_freedom :是和平會議後給自治領設定的初始自治等級,其範圍是0到1。如果不特別指明,則設定為0.5。
  • allowed_levels_filter :決定一個自治領能到達哪些自治等級。如果不特別指明,所有的等級都是可以的。

圖標

Sprite系統概述
遊戲使用Sprite類代碼加載圖形文件(如.GFX)。Sprite是指那些將名稱附加到圖像文件的定義類代碼,同時還可以選擇性地添加額外的信息,例如動畫、幀數、圖像的加載方式等等。綜上所述,僅僅將所使用的圖像文件放入gfx文件夾中是不夠的,還必須有圖像對應的sprite代碼來調用它。

Sprite類代碼可在任意/Hearts of Iron IV/interface/*.gfx文件中進行定義(這與/Hearts of Iron IV/gfx/interface/是不同的), 並可以通過文本編輯器打開。若要建一個新的.gfx文件,可以新建一個.txt文件然後改後綴為.gfx(在 Windows 文件管理器中需設置顯示擴展名後方能進行後綴更改)。需要注意的是,為了與文件夾中定義好的字體和地圖箭頭分開,需要在spriteTypes = { ... }代碼塊中定義對應代碼,符合必需要求的最簡單代碼是spriteType = { ... }. 最簡單的sprite定義如下:

spriteTypes = {
    spriteType = {
        name = GFX_first_sprite                         # In some cases, beginning with GFX_ is mandatory for it to work.
        texturefile = gfx/interface/folder/filename.dds # The folder and filename don't matter, as long as they are correct
    }                                                   # Only the forward slash '/' (can be doubled as '//') can be used to separate folders.
    spriteType = {                                      # The image doesn't have to be .dds, as .tga and .png are acceptable.
        name = GFX_second_sprite
        texturefile = gfx/interface/folder2/filename2.dds
        noOfFrames = 2 # Splits the image into 2 halves, which may be switched between dynamically in GUI
    }
}

在這種情況下,系統會生成一個名為GFX_first_sprite 的sprite,並將圖像/Hearts of Iron IV/gfx/interface/folder/filename.dds附加到它。第二個sprite類似,會分為兩個frame:左半部分是第一個frame,右半部分是第二個。(如果需要,可以將它們進一步細分。)雖然當前Sprite代碼塊沒有動畫效果,但可以在這兩個圖像塊之間切換。 GFX_second_sprite:1 用於引用第一個frame,可以通過GUI由不同的內容需求來切換顯示中的圖像,例如遊戲中的電台。

若想添加動畫效果,需要使用frameAnimatedSpriteType

如需對sprite類文件小改不必複製原版遊戲文件。倘若因相同名字的sprite在不同文件中導致了重複定義,遊戲將會根據文件名稱優先調用後面被定義的Sprite,舊定義會被無視。可以通過重命名文件以ASCII表靠後的字符開頭來確保正確調用新的自定義內容,通常情況下使用小寫字母「z」開頭來實現這一點。例:要將GFX_idea_traits_strip的幀數更改為10,可在模組的 /Hearts of Iron IV/modname/interface/zz_replace.gfx文件中定義一個同名且包含10幀的Sprite文件,而不必複製原版遊戲文件。

由於大多數 .gfx 文件定義了用戶界面的關鍵部分,複製它們可能會導致模組在遊戲大更新後缺失新版本的sprite類代碼,進而顯示為錯誤圖像,通常是「錯誤小狗」的圖標。除非在某些迫不得已的時候,(例:添加的文件可能會對模組功能造成損害,如/Hearts of Iron IV/interface/subuniticons.gfx)為了減少檢查文件的麻煩,儘可能不要複製.gfx文件,

遊戲將使用格式為GFX_<autonomy state>_icon的sprite類作為圖標。包含此類定義的一個 /Hearts of Iron IV/interface/*.gfx 文件可能是這樣的:

spriteTypes = {
    spriteType = {
        name = "GFX_autonomy_mod_new_icon"
        textureFile = "gfx/interface/autonomy/autonomy_mod_new_icon.dds"
    }
    spriteType = {
        name = "GFX_example_icon"
        texturefile = "another_folder/image_name.dds"
    }
}

本地化

本地化文件位置在/Hearts of Iron IV/localisation/ 文件夾的 .yml 文件中。對前面的例子autonomy_mod_new而言,文件本地化樣式大概是 autonomy_mod_new:0 "Mod's new autonomy state"

我們可以設置關於一個特定國家的項目,如GER_autonomy_mod_new:0 "New mod Germany"將使德國的名字在其自治水平為 autonomy_mod_new時變成它。相似的,ENG_FRA_autonomy_mod_new:0 "New mod French UK" 會使不列顛在其宗主國為法國且在自治狀態為 autonomy_mod_new 時擁有這個名字。

代碼示例

autonomy_state = {
	id = autonomy_example
	
	default = yes					#Will be a possible option for peace deals
	is_puppet = yes
	
	use_overlord_color = yes
	
	min_freedom_level = 0.2				#Puts it as 0.2 on the autonomy level scale, which is the same as an integrated puppet.

	peace_conference_initial_freedom = 0.9		#Close to independence
	
	manpower_influence = 0.9
	
	rule = {
		can_not_declare_war = yes
		can_decline_call_to_war = no
		units_deployed_to_overlord = yes
		can_be_spymaster = no
		contributes_operatives = no
		can_create_collaboration_government = no
	}
	
	modifier = {
		autonomy_manpower_share = 1.0
		can_master_build_for_us = 1
		extra_trade_to_overlord_factor = 1.0
		overlord_trade_cost_factor = -0.9
		cic_to_overlord_factor = 0.75
		mic_to_overlord_factor = 0.75
		research_sharing_per_country_bonus_factor = -0.5
	}
	
	ai_subject_wants_higher = {
		factor = 0.0
	}
	
	ai_overlord_wants_lower = {
		factor = 0.0
	}

	allowed = {
		has_dlc = "Together for Victory"
		OVERLORD = {
			tag = FRA
		}
	}

	allowed_levels_filter = {
		autonomy_example
		autonomy_example_1
		autonomy_example_2
	}

	use_for_peace_conference_weight = {
		base = 0
		modifier = {
			add = 10
			FROM = {
				has_wargoal_against = { target = ROOT type = puppet_wargoal_focus }
			}			# Adds 10 to the chance if the overlord has a wargoal to puppet the country.
		}
		modifier = {
			factor = 2
			tag = ENG	# Multiplies the chance by 2 if the subject is UK.	
		}
	}

	can_take_level = {
		OVERLORD = {
			NOT = {
				controls_state = 123
			}	# If the overlord does not control state 123, the subject can gain a level.
		}
	}

	can_lose_level = {
		OVERLORD = {
			controls_state = 123
		}	# If the overlord controls state 123, it can decrease the subject's autonomy level.
	}
}

相關定義

一些定義通過特殊的方式影響自治領系統,它們是:

  • RESOURCE_SENT_AUTONOMY_DAILY_BASE這是宗主國購買資源時自治領獲得的基礎獨立傾向增長。
  • RESOURCE_SENT_AUTONOMY_DAILY_FACTOR 這是宗主國購買資源時自治領獲得的獨立增益因子。(用於調整自治增長速度)
  • WAR_SCORE_AUTONOMY_BASE 自治領在戰爭中獲得戰爭積分所帶來的基礎獨立傾向增長。
  • WAR_SCORE_AUTONOMY_FACTOR 自治領在戰爭中獲得戰爭積分所帶來的獨立增益因子。(用於調整其自治增長速度)
  • LL_TO_OVERLORD_AUTONOMY_DAILY_BASE 自治領向宗主國起草租借法案所獲得的基礎獨立傾向增益。
  • LL_TO_OVERLORD_AUTONOMY_DAILY_FACTOR 自治領向宗主國起草租借法案的獨立增益因子。(用於調整自治增長速度)
  • LL_TO_PUPPET_AUTONOMY_DAILY_BASE 宗主國向自治領起草租借法案所獲得的基礎獨立傾向壓制。(基礎獨立壓制必須為負值才能減少自治增長)
  • LL_TO_PUPPET_AUTONOMY_DAILY_BASE 宗主國向自治領起草租借法案所獲得的獨立壓制因子。(基礎獨立壓制必須為負值才能減少自治增長)
  • AUTONOMY_FREEDOM_FROM_CAPITULATE 在宗主國投降後,自治領的獨立傾向將大幅上升。
  • ATTACHE_TO_SUBJECT_EFFECT 宗主國向自治領派遣軍事顧問所獲得的基礎獨立傾向壓制。(基礎獨立傾向壓制必須為負值才能減少自治增長)
  • ATTACHE_TO_OVERLORD_EFFECT宗主國向自治領派遣軍事顧問所獲得的獨立壓制因子。(基礎獨立傾向壓制必須為負值才能減少自治增長)
  • AUTONOMY_LEVEL_CHANGE_PP_COST_BASE 在不同自治狀態下進行轉換所需要的政治點數。
  • AUTONOMY_LEVEL_CHANGE_PP_ANNEX宗主國吞併半吞併傀儡國所需要花費的政治點數。
  • AUTONOMY_LEVEL_CHANGE_PP_FREE 作為附庸獲得獨立所需要的政治點數。
  • MAX_SCORE_DIFF_TO_CHANGE_AUTONOMY 自治領當前獨立點數與升級或降級點數的最大差值。
  • MASTER_BUILD_AUTONOMY_FACTOR 宗主國向自治領進行援建所獲得的獨立傾向壓制因子。(基礎獨立傾向壓制必須為負值才能減少自治增長)
  • AUTONOMOUS_TOTAL_SCORE 自治領國家被吞併與獨立間的總自治點數。
  • AUTONOMOUS_SPILLOVER 各自治等級間可保存的自治點數上限。

額外說明

在對國家歷史文件中的自治等級進行設置時,可能會使對應國家的政黨受支持度和當前執政黨等數據遭到覆蓋後丟失。以防萬一,建議將作用域(scope)設置為宗主國,如

TAG = {
	if = {
		limit = {
			has_dlc = "Together for Victory"
		}
		set_autonomy = {
			target = TAG2
			autonomy_state = autonomy_mod_new
		}
	}
	else = {
		puppet = TAG2
	}
}

在自治領的歷史文件中,也可以將其放在定義執政黨和對應支持度之前。另一種方法是可以更改 /Hearts of Iron IV/common/country_tags/中標籤的順序,使得宗主國在自治領之前被定義。

若決定創建一個類似於日本獨特自治的新自治系統,則需要禁用默認的自治省份,以防新系統下的自治領中出現調用allowed = {}allowed_levels_filter = {}的情況。如果選擇第二個選項,需注意的是仍需禁用默認的自治省份,以確保它們在新建傀儡國家時不出現。

新的自治等級應當只能通過 set_autonomy 效果手動分配,那麼可以這樣設置允許狀態,使用 ID 為 autonomy_my_state的自治領:

allowed = {
    OR = {
        is_subject = no
        has_autonomy_state = autonomy_my_state
    }
}

通過對自治等級進行升降級改動是無法實現目標國際自治狀態的,因為若目標國家具有其他自治狀態,則allowed 將為假。這確保只要目標國家在被命令執行時是獨立的,就可以安全執行set_autonomy ,並且一旦被賦予該自治狀態,該狀態在存在時不會被清除。

在創建自治系統時,避免兩個不同的省份具有相同的min_freedom_level。