阶层是国家内部影响国内政治的派别。
阶层
阶层位于/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 |
| 指南 | 省份 • 地图修改速查 • 存档编辑 • 脚本教程 |