政体、国家理念与起源

governments 文件夹下的权力结构、国家理念、起源与政府名称,以及它们特有的列表式条件语法

文件夹结构

位置内容
common/governments/authorities/权力结构(民主制、寡头制、独裁制……)
common/governments/civics/国家理念与起源,起源就是 is_origin = yes 的理念
common/governments/*.txt政府名称(如“科学理事会”),由权力结构、理念、思潮组合推出
common/governments/councilors/议会职位
common/governments/99_README_GOVERNMENT.txt原版说明,包括下面的列表式语法

列表式条件:权力结构和理念的特殊语法

权力结构与理念的 potential、possible 不是普通触发器,而是一种列表语法:先写类别,再在类别里用 value = 列出取值。README 中的规则:

Clausewitz 脚本
possible = {
	ethics = {
		value = ethic_1            # 必须有
		OR = {                     # 至少有一个
			text = translation_key # 可选,覆盖自动生成的提示
			value = ethic_3
			value = ethic_4
		}
		NOT = {                    # 不能有(只能写一个 value)
			value = ethic_5
		}
		NOR = {                    # 一个都不能有
			value = ethic_6
			value = ethic_7
		}
	}
	authority = { ... }
	civics = { ... }
}

可用的类别有 ethics、authority、civics、country_type、ship_categories、graphical_culture、traits、preferred_planet_class 等;最外层是 AND,也可以再包 OR、AND 组合不同类别。原版中还能看到 origin = { ... }、species_archetype = { ... }。

  • potential 不成立时,选项在帝国创建界面不显示;
  • possible 不成立时,选项显示但不可选,并用 text 键作提示。

README 还列了各类对象支持哪些类别:权力结构只支持 country_type、ethics、船只类别和图形文化,理念额外支持 authority 和 civics。

国家理念

原版“技术治国”(common/governments/civics/00_civics.txt):

Clausewitz 脚本
civic_technocracy = {
	description = civic_tooltip_technocracy_effects
	potential = {
		ethics = { NOT = { value = ethic_gestalt_consciousness } }
		authority = { NOT = { value = auth_corporate } }
	}
	possible = {
		ethics = {
			OR = {
				text = civic_tooltip_materialist
				value = ethic_materialist
				value = ethic_fanatic_materialist
			}
		}
		civics = {
			NOT = {
				value = civic_shared_burden
			}
		}
	}
	modifier = {
		num_tech_alternatives_add = 1
		country_scientist_cap_add = 1
		country_official_cap_add = -1
	}
	random_weight = { base = @civic_default_random_weight }
}

常用字段(据 00_civics.txt 开头的注释):

字段说明
potential / possible列表式条件,见上文
playable / ai_playable普通触发器(无作用域);不成立时玩家/AI 不能选
pickable_at_start开局能否选,默认 yes
modification开局后能否增删;可写 no,或写成 { add = { } remove = { } } 两个条件
modifier理念生效时给国家的修正
description / negative_description“效果”“惩罚”标题下的自定义文本
random_weight / ai_weight随机生成帝国时、AI 游戏中途解锁新槽位时的权重
traits = { trait = … }强制主种族带上的特质
has_secondary_species启用第二物种
swap_type按条件换名字、描述和修正
alternate_civic_version改革成其他权力结构时用来替换本理念的版本(如公司版)
icon不写时按键名读取 gfx/interface/icons/governments/civics/<键>.dds

要判断国家有没有某个理念,用 has_valid_civic = <键>(理念有效时才成立)或 has_civic。

起源

起源也写在 civics/ 里(原版放在 00_origins.txt),加上 is_origin = yes。原版“机械主义者”:

Clausewitz 脚本
origin_mechanists = {
	is_origin = yes
	icon = "gfx/interface/icons/origins/origins_mechanist.dds"
	picture = GFX_origin_mechanist

	possible = {
		ethics = {
			NOT = { value = ethic_gestalt_consciousness }
			OR = {
				text = civic_tooltip_materialist
				value = ethic_materialist
				value = ethic_fanatic_materialist
			}
		}
		civics = { NOT = { value = civic_permanent_employment } }
		species_archetype = { NOT = { value = MACHINE } }
	}

	modifier = {
		planet_pop_assembly_mult = 0.15
		ROBOT_species_trait_picks_add = 1
		ROBOT_species_trait_points_add = 2
	}

	description = "origin_tooltip_mechanists_effects"

	advanced_start = yes
	blocks_random_machine_empire_generation	= yes

	random_weight = {
		base = 10
	}
}

起源特有的字段:

  • picture:帝国创建界面的大图(一个 sprite);
  • soft_traits:与 traits 类似,但可以被去掉而不使政体失效;
  • blocks_random_machine_empire_generation:防止随机生成出与个体机械不兼容的组合;
  • initializers、starting_colony、habitability_preference、preferred_planet_class_neighbor 等:改变开局星系和母星,原版的特殊起源大量使用。

起源的大部分“剧情”不写在这里,而是通过 has_origin = <键> 在事件、on_action 和开局效果里实现。

权力结构

原版 common/governments/authorities/00_authorities.txt 开头的注释列出了全部字段,民主制的片段:

Clausewitz 脚本
auth_democratic = {
	election_term_years = 10
	re_election_allowed = yes
	election_type = democratic

	uses_mandates = yes

	ruler_council_position = councilor_ruler_democratic

	country_modifier = {
		faction_approval = 0.10
		country_leader_pool_size = 1
	}

	random_weight = {
		base = 2
	}
}
字段说明
has_heir世袭(yes)还是选举
election_typedemocratic、oligarchic、none
election_term_years / election_term_variance任期及浮动
re_election_allowed / can_have_emergency_elections连任、紧急选举
can_reform能否改革进出这种权力结构
ruler_council_position统治者在议会中的职位,定义在 councilors/
advanced_authority_swap条件满足时换成进阶版本(名字、修正、选举规则都可换)

注意 注释说明权力结构可以“可扩展地”覆盖:再定义一个同名的 auth_democratic 可以追加 swap。但这种扩展在运行中修改后需要重启才能正确生效。

政府名称

common/governments/ 根目录下的 gov_* 只决定名字和称号,没有游戏效果。这里的 possible 是普通触发器,README 说只应使用 has_ethic、has_authority、has_valid_civic,其他触发器属于未定义行为(原版用的 is_oligarchic_authority 只是包了一层 has_authority = auth_oligarchic 的脚本化触发器)。原版 gov_science_directorate:

Clausewitz 脚本
gov_science_directorate = {
	ruler_title = RT_DIRECTOR_GENERAL
	ruler_title_female = RT_DIRECTOR_GENERAL_FEMALE

	should_force_rename = yes

	possible = {
		is_oligarchic_authority = yes
		has_valid_civic = civic_technocracy
	}

	weight = {
		base = @gov_civic_weight
	}
}

多个名称同时满足时取 weight 最高的。README 给出的优先级从高到低是:AI 政府、权力结构 swap 政府、理念政府、思潮政府、权力结构政府、兜底政府;对应的权重变量在 common/scripted_variables/08_scripted_variables_governments.txt。

本地化

对象键
理念、起源、权力结构<键>、<键>_desc
政府名称<键>;游牧版本可另加 <键>_nomadic
统治者称号ruler_title 等字段引用的键

在脚本里修改

change_government 可以改权力结构和理念,add_ascension_perk 加飞升天赋;具体参数见 effects.log。