阶层修改

阶层是国家内部影响国内政治的派别。

阶层

阶层位于/Europa Universalis IV/common/estates/*.txt。阶层的一般格式如下:

<estate> = {
	icon = <index>
	color = { <rgb> }   # 设置该阶层在土地份额饼图中的颜色

	# 若为真,则该国会拥有此阶层
	trigger = {
		<triggers>
	}

	# 这些会随忠诚度与影响力而缩放
	country_modifier_happy = {
		<modifiers>
	}
	country_modifier_neutral = {
		<modifiers>
	}
	country_modifier_angry = {
		<modifiers>
	}

	land_ownership_modifier = {
		<modifiers>
	}

	province_independence_weight = {
		factor = <float>
		modifier = {
			factor = <float>
			#在此处填写条件
		}
	}

	# 影响力修正
	base_influence = <float>
	influence_modifier = {
		desc = <key> # 要应用的新名称
		trigger = {
			<triggers>
		}
		influence = <float>
	}
	# 忠诚度修正
	loyalty_modifier = {
		desc = <key> # 要应用的新名称
		trigger = {
			<triggers>
		}
		loyalty = <float>
	}

	custom_name = {
		desc = <key> # 要应用的新名称
		trigger = {
			OR = {

			}
		}
	}
	contributes_to_curia_treasury = <bool> #yes/no

	privileges = {
                #'privileges' 包含该阶层所使用的阶层特权的名称。
                #阶层特权可以在 {{path|common/estates_privileges/00_privileges.txt}} 中找到
	}

	agendas = {
                #'agendas' 包含该阶层所使用的阶层议程的名称。
                #阶层议程可以在 {{path|common/estates_agendas/*.txt}} 中找到
	}
	influence_from_dev_modifier = <float>	#决定来自发展度的影响力百分比
}

阶层名称只能包含小写字母和下划线,否则 add_loyalty 等某些效果可能无法被正确生成。

阶层的国家修正会随该阶层的忠诚度与影响力而缩放。

阶层特权

/Europa Universalis IV/common/estate_privileges

#所有作用域均为国家作用域
#所有参数均为可选
<estate_privilege> = {
        icon = <index>
        max_absolutism = <float>        #该特权生效期间,最大专制度的变化量
        loyalty = <float>               #该特权所造成的忠诚度百分比变化
        influence  = <float>            #该特权所造成的影响力百分比变化
 	is_valid = { <triggers> }	#该国是否可能拥有此特权的条件
 	can_select = { <triggers> } 	#该国是否被允许选择此特权的条件
 	on_granted = { <effects> } 	#特权一经授予便立即执行的效果
 	can_revoke = { <triggers> } 	#该国是否可以收回此特权的条件
 	on_revoked = { <effects> } 	#特权被该国收回时执行的效果
 	on_invalid = { <effects> } 	#特权因失效而被移除时执行的效果
 	penalties = { <modifiers> } 		#特权生效期间授予的负面修正
        benefits = { <modifiers> }              #特权生效期间授予的正面修正
	conditional_modifier = { 			#当指定条件为真时应用的修正。
 		trigger = { <triggers> }
 		modifier = { <modifiers> }
 		is_bad = <bool>				#yes/no。该修正在提示框中应列为正面还是负面。
 	}
 	modifier_by_land_ownership = { <modifiers> } 	#将修正乘以该阶层所拥有土地的 %。
 	mechanics = { <mechanics> } 			#该特权所启用的特殊机制
 	cooldown_years = <int> 				#在此时限之前,该特权无法被收回
 	on_cooldown_expires = { effects }		#指定的 cooldown_years 计时结束后执行的效果
	ai_will_do = {					#若高于 ESTATE_PRIVILEGE_GRANT_THRESHOLD define,AI 会尝试授予。若低于
                factor = <float>                                #ESTATE_PRIVILEGE_REVOKE_THRESHOLD,AI 会尝试收回。
                modifier = {
                        factor = <float>
                        <triggers>
                }
        }
}

需要注意的是新增了 'benefits = { <modifiers> }',它没有包含在/Europa Universalis IV/common/estate_privileges/xx_example.txt中

阶层议程

以下内容取自/Europa Universalis IV/common/estate_agendas/xx_example.txt

#(几乎)所有作用域均为国家作用域
#所有参数均为可选(但如果一个都不填,就算不上什么议程了……)

<estate_agenda> = {
 	max_days_active = <float> 		#允许你覆盖议程默认的 20 年时限
 	can_select = { triggers } 		#该议程能否提供给你的条件
 	provinces_to_highlight = { triggers }	#议程所要高亮显示的省份的条件。Root = 国家,this = 省份。
 	selection_weight = {			#决定该议程(相对于该阶层其他议程)被选中的可能性。
 		factor = <float>		#初始 factor 会忽略小于 1 的数值,请改用 modifier!
 		modifier = { factor = <float> triggers = <triggers> }
 	}
 	pre_effect = { effects }		#在展示给玩家之前,为设置任务(设置标记和目标)而执行的效果。
 	immediate_effect = { effects } 		#议程被该国接受时执行的效果
 	task_requirements = { triggers } 	#成功完成任务的条件
 	task_completed_effect = { effects } 	#议程成功完成时执行的效果
 	failing_effect = { effects } 		#议程失败时(即 fail_if 为真或时间耗尽时)执行的效果
 	fail_if = { triggers } 			#议程应被自动判定为失败的条件
 	on_invalid = { effects } 		#该国不再拥有该阶层,或 invalid_trigger 为真时执行的效果。
                                                #适用于清除标记、修正等。
 	invalid_trigger = { triggers } 		#议程应当结束但不计为失败的条件(执行 on_invalid
                                                #而不是 failing_effect)。如果提供该议程的阶层被移除,默认就会发生这种情况。
 	modifier = { modifier } 		#议程生效期间授予的国家修正
}

触发议程

要让新添加的阶层在召开议会时能够生成议程,必须修改位于/Europa Universalis IV/events/EstatesPrivilegesAndAgendas.txt中的事件 'estate_privileges_and_agendas_events.3'。

该事件为每一个可能生成议程的阶层都包含一个选项。为新阶层添加选项最简单的方法,就是复制其中一个选项,并把所有指向被复制阶层的引用都改为新阶层。

请注意,刚添加的选项的 trigger 要求设置国家标记 '<estate>_present_agenda'。

要让游戏能够为新阶层设置该标记,应当修改/Europa Universalis IV/common/scripted_effects/01_scripted_effects_for_estates.txt中的 'pick_random_estate_if_present' 效果。

同样地,向该效果中添加新阶层最简单的方法,是复制另一个选项,并把所有指向该阶层的引用都改为新阶层。

最后,在 'estate_privileges_and_agendas_events.3' 事件中为新选项添加本地化。

阶层预加载

必须将此块插入/Europa Universalis IV/common/estates_preload/x.txt,才能生成正确的忠诚度和影响力修正。

#在此处定义阶层的忠诚度和影响力修正

<estate> = {
	modifier_definition = {
		type = #loyalty、influence 或 privileges 之一
		key = <key> #其他文件中将引用此键
		trigger = {
			<trigger>
		}
	}
}

此外,为了在特权中生成表示忠诚度和影响力增减的图像,必须将它们各自的图标放入/Europa Universalis IV/gfx/interface/ideas_EU4/<key>.dds。

阶层王冠领地

/Europa Universalis IV/common/estate_crown_land 加成:

<bonus> = {
    key = <key>
    range_from = <float>
    range_to = <float>
    modifier = {
        <modifiers>
    }
}

互动:

<interaction> = {
    key = <key>
    random_seed = random_seed
    cooldown_months = <float>

    trigger = {
		<triggers>
    }
    effect = {
		<effect>
    }
    ai_will_do = {
		factor = <float>
		modifier = {
			factor = <float>
			<triggers>
		}
    }
}

界面

要让阶层图片生效,你需要进入 interface/countryestatesview.gfx,并将 GFX_estates_icons 和 GFX_estate_interactions 处的 noOfFrames 修改为与你的数量一致。阶层本身所使用的图标是通过 GFX_estates_icons 定义的:

spriteType = {
    name = "GFX_estates_icons"
    texturefile = "gfx//interface//estates//estates_icons.dds"
    noOfFrames = 6
    loadType = "INGAME"
}

所有特权图标都必须按如下格式定义 spriteType = { name = "<key>" texturefile = "gfx/interface/privileges/*.dds" }

GFX

阶层图标位于/Europa Universalis IV/gfx/interface/estates_icons.dds。它们用于阶层窗口中各阶层的特权部分。

  • 每个图标为 44 x 44 像素

每个阶层图标的另一个版本位于/Europa Universalis IV/gfx/interface/estates_icons_colour-stroke.dds。它们用于阶层窗口的“阶层土地”部分。

  • 每个图标为 44 x 44 像素

特权图标位于/Europa Universalis IV/gfx/interface/privileges/privilege_*.dds

本地化

通常,一个阶层需要定义以下本地化键:

<estate>: "Name"
<estate>_desc: "Description"
<privilege>: "Name"
<privilege_desc>: "Description"
<agenda>: "Name"
<agenda_desc>: "Description"

影响力和忠诚度修正在其提示框中使用 §Y$VAL$%§! 来显示它们所改变的影响力或忠诚度数值。

在本地化中可以用 $<estate>$ 来指代某个阶层,它会显示该阶层的当前名称,并适应该阶层的任何自定义名称条目。不过,这要求本地化作用域支持动态本地化(即在互动标题中无法使用)。

文档 效果 • 触发条件 • 修正列表 • 作用域 • 变量 • 本地化 • 可自定义本地化 • 运行文件 • 事件图片列表
脚本 脚本函数 • 顾问 • 时代 • 开局设定 • 建筑 • 宣战理由 • 殖民区域 • 国家创建 • 文化 • 决议 • Defines • 外交行动 • 灾难 • 中华帝国 • 阶层 • 事件 • 派系 • 政府 • 政府互动 • 伟大工程 • 历史 • 神圣罗马帝国 • 理念组 • 思潮 • 佣兵 • 任务树 • 修正 • On Actions • 议会 • 和约 • 君主性格 • 政策 • 叛军类型 • 宗教 • 附属国类型 • 科技 • 贸易公司 • 商品 • 单位
地图 地图 • 地图修改速查 • 随机新世界 • 贸易节点
图形 模型 • 界面 • 贴图库 • 字体 • 单位模型
音频 音乐 • 音效
其他 控制台命令 • 校验和 • 模组结构 • 故障排查 • 运行文件
工具 克劳塞维茨开局编辑器 • EU4模组编辑工具 • JoroDox模组制作工具 • The Validator
指南 省份 • 地图修改速查 • 存档编辑 • 脚本教程