伟大工程是国家可以建造的特殊建筑,通常是名胜,它可以通过添加河流和环境装饰物来改变地图,同时提供加成。
要完整地实现一个伟大工程,需要编辑多个不同的文件。
伟大工程
伟大工程本身位于/Europa Universalis IV/common/great_projects/*.txt。它们遵循如下格式:
<project> = {
# 工程起始所在的省份
start = <province id>
# 现实中的建成日期(如果你在晚于该日期的时间开始游戏,则该工程会显示出来)
date = year.month.date
# 建造所需花费
build_cost = <ducats>
# 工程是否可以被移动
can_be_moved = yes/no
# 工程的起始等级
starting_tier = <tier>
# 工程类型
type = canal/monument
# 建造工程的条件
build_trigger = {
<conditions>
}
# 工程建成时会发生什么
on_built = {
<do stuff> # 例如:add_prestige = 25
# 对于运河,执行 add_canal = <canal_name>
}
# 工程被摧毁时会发生什么
on_destroyed = {
<do stuff> # 例如:add_prestige = -25
# 对于运河,执行 remove_canal = <canal_name>
}
# 使用工程效果的条件
can_use_modifiers_trigger = {
<conditions>
}
# 升级工程的条件
can_upgrade_trigger = {
<conditions>
}
# 工程被征服时是否会被摧毁的条件
keep_trigger = {
<conditions>
}
# 等级
tier_<tier> = {
# 升级工程所需的时间
upgrade_time = {
months = <months>
}
# 升级工程的花费
cost_to_upgrade = {
factor = <ducats>
}
# 授予工程所在省份的修正
province_modifiers = {
<modifiers>
}
# 授予工程所在省份所属地区的修正
area_modifier = {
<modifiers>
}
# 授予拥有该名胜的国家的修正
country_modifiers = {
<modifiers>
}
# 授予工程所在省份所属大区的修正
region_modifier = {
<modifiers>
}
# 升级完成时会发生什么
on_upgraded = {
<do stuff> # 作用域为名胜所在的省份;可以通过 owner 作用域影响国家。例如:owner = {add_prestige = 25}
}
conditional_modifier = {
<modifiers> #全国范围的修正。要求 country_modifiers 下至少有 1 个修正
}
}
}
注意:原版中共有 4 个等级(包括已毁坏/尚未建成的等级),依次为:tier_0、tier_1、tier_2、tier_3
伟大工程图片
伟大工程需要一张图片,用于省份建筑界面。
你需要在/Europa Universalis IV/gfx/interface/great_projects/great_project_<project_name>.dds创建一张图片,该图片应为 300x150,并保存为 DirectDraw Surface(.dds)文件类型。 你还需要在/Europa Universalis IV/interface/<filename>.gfx中添加这张图片,写法如下:
spriteTypes = { # 如果是编辑现有的 .gfx 文件,这一行很可能已经存在,那么你可能无需再写。不过,请确保下面的内容位于其中。
spriteType = {
name = "GFX_great_project_<project_name>"
texturefile = "gfx//interface//great_projects//great_project_<project_name>.dds"
}
}
邻接
运河需要在 adjacencies.csv 中定义一个特殊的邻接。
<id>;<id>;canal;<id>;-1;-1;-1;-1;comment
前两个 id 是运河所连接的海域。第三个 id 是伟大工程文件中定义的省份。
地图
工程完成后,运河会在地图上生成一条新的河流。这是通过一个与你的伟大工程相关联的特殊河流图块来实现的。
要创建河流图块,你需要把地图裁剪为边长为 128 的倍数的分辨率(即 128x128、256x256 等)。做法是复制 rivers.bmp 并裁剪出所需的区域,这样可以保留其颜色表。
在图块中添加你的新河流,遵循添加河流的常规规则。
将该文件保存为 <project>_river.bmp,其中 <project> 是你的工程名称。
重要:请记下你的图块左上角和左下角在原始 rivers.bmp 中的坐标。你需要在真正裁剪之前完成这一步。
在 default.map 中,你需要添加一个新的运河定义:
canal_definition = {
name = "<project_name>" # 你的伟大工程的名称。
x = <x> # 图块左上角的 x 坐标。
y = <y> # 地图高度减去图块左下角的 y 坐标。
}
这里的地图高度数值取自 Victorum Universalis 的 rivers.bmp 文件。注意!高度图会因你所使用的地图文件而异。例如,EU4 原版的地图高度为 2048px。因此,在计算运河的 Y 坐标之前请牢记这一点,否则你的运河可能会生成在与预期不同的位置。
Y 坐标 = 1176(本运河地图示例中绿点的第一个数值)注意!这并不是你最终要填入 default.map 的值。 要得到最终值,你必须按以下步骤操作:
- 列表项 使用你喜欢的软件打开你的 rivers.bmp(我用的是 GIMP,但你也可以使用 Photoshop 等)。
- 列表项 使用矩形选择工具在 rivers.bmp 中选中并高亮你所选的运河区域(在 GIMP 中这被称为矩形选择工具,GIMP 是我除 Photoshop 之外偏好的图形编辑软件之一),然后将鼠标悬停在所选区域的左上角和左下角(此处以红点和绿点表示),并把数值记下来。你不需要计算或处理红点的坐标;它始终保持不变。
- 列表项 用你的 rivers.bmp(主)地图文件的高度减去运河地图上绿点的数值。在本例中,我们要用这张 rivers.bmp 地图(取自 Victorum Universalis)的高度 2304px 减去 1176(绿点的数值)。
在得到绿点的第一个数值之后 计算公式如下: Y = MH(地图高度)- GD(绿点的第一个数值) Y = 2304 - 1176 = 1128 Y 坐标 = 1128(最终值)
因此,填入 default.map 的最终 Y 坐标值为 1128,最终条目如下:
canal_definition = { name = "kra_canal" x = 4151 y = 1128 }
以上说明和条目由 San Felipe(又名 Darth Modus,Victorum Universalis 的作者及 EU4 模组作者)撰写。
再举一个例子:如果你的图块左下角的 y 坐标是 1407,那么你需要计算 2048 - 1407 得到 641,这就是你应当填入定义中的值。
决议
为了让玩家或 AI 能够与运河类伟大工程互动,你需要创建两个决议,一个用于允许建造,另一个用于取消建造。
以下是两个模板:
country_decisions = {
construct_<project> = {
major = yes
potential = {
is_random_new_world = no
OR = {
ai = no
AND = {
treasury = 60000
owns_or_vassal_of = <province id>
}
}
has_discovered = <province id>
<province id> = {
range = ROOT
NOT = { has_great_project = <project> }
NOT = { has_construction = canal }
}
}
allow = {
owns_or_vassal_of = <province id>
is_subject = no
treasury = 30000
}
effect = {
add_treasury = -30000
<province id> = {
add_great_project = <project>
}
}
ai_will_do = {
factor = 1
}
}
cancel_<project> = {
major = yes
potential = {
ai = no
owns_or_vassal_of = <province id>
is_subject = no
<province id> = {
has_construction = canal
}
}
allow = {
<province id> = {
has_construction = canal
}
}
effect = {
<province id> = {
cancel_construction = yes
}
}
ai_will_do = {
factor = 0
}
}
}
本地化
伟大工程需要定义以下本地化键:
<project>: "Name"
虽然原版中没有使用,但伟大工程也可以选择性地按如下方式添加描述:
<project>_desc: "Description"
| 文档 | 效果 • 触发条件 • 修正列表 • 作用域 • 变量 • 本地化 • 可自定义本地化 • 运行文件 • 事件图片列表 |
| 脚本 | 脚本函数 • 顾问 • 时代 • 开局设定 • 建筑 • 宣战理由 • 殖民区域 • 国家创建 • 文化 • 决议 • Defines • 外交行动 • 灾难 • 中华帝国 • 阶层 • 事件 • 派系 • 政府 • 政府互动 • 伟大工程 • 历史 • 神圣罗马帝国 • 理念组 • 思潮 • 佣兵 • 任务树 • 修正 • On Actions • 议会 • 和约 • 君主性格 • 政策 • 叛军类型 • 宗教 • 附属国类型 • 科技 • 贸易公司 • 商品 • 单位 |
| 地图 | 地图 • 地图修改速查 • 随机新世界 • 贸易节点 |
| 图形 | 模型 • 界面 • 贴图库 • 字体 • 单位模型 |
| 音频 | 音乐 • 音效 |
| 其他 | 控制台命令 • 校验和 • 模组结构 • 故障排查 • 运行文件 |
| 工具 | 克劳塞维茨开局编辑器 • EU4模组编辑工具 • JoroDox模组制作工具 • The Validator |
| 指南 | 省份 • 地图修改速查 • 存档编辑 • 脚本教程 |


