- 关于该游戏机制的说明,参见建筑
建筑的定义文件位于/Europa Universalis IV/common/buildings/。
添加建筑
所有建筑都必须使用唯一的名称。一个建筑遵循以下格式:
# ROOT: 省份
# FROM: 拥有国
<name> = {
cost = <int> # 建筑造价,以达克特计
time = <months> # 建造该建筑所需的时间(以月计)
make_obsolete = <building> # 可选,建成该建筑后使列出的建筑变为过时
one_per_country = yes # 可选,限制每个国家只能建造一座
allow_in_gold_provinces = no # 可选,该建筑是否可以在产金省份建造
indestructible = yes # 可选,使该建筑不会因破产而被拆除
onmap = yes # 可选,该建筑是否应在地图上显示3D模型
influencing_fort = yes # 可选,该建筑是否按要塞方式运作
show_separate = yes # 可选,工场是否在建筑菜单中单独显示,还是合并为一个工场条目
# 可选。将建筑的可见性限制为满足触发条件的对象。注意:即使不满足要求,红框仍可能可见。
potential = {
<triggers>
}
# 可选。拥有所列贸易品的省份可以建造该建筑。
manufactory = {
<tradegoods>
}
# 可选。拥有所列贸易品的省份将获得bonus_modifier中的修正。
bonus_manufactory = {
<tradegoods>
}
# 可选。省份作用域。若不满足则限制该建筑的建造。
build_trigger = {
<triggers>
}
# 可选。省份作用域。若不再满足条件,该建筑将被移除。
keep_trigger = {
<triggers>
}
# 该建筑赋予省份的修正。
# 此处使用的国家作用域修正将改为作用于该建筑拥有国。
modifier = {
<modifiers>
}
# 可选。若省份拥有bonus_manufactory中所列的贸易品之一,该建筑赋予省份的修正。
# 此处使用的国家作用域修正将改为作用于该建筑拥有国。
bonus_modifier = {
<modifiers>
}
# AI对建造该建筑的重视程度。
ai_will_do = {
factor = <float>
}
# 可选。建成时触发的行动。
# THIS = 省份,FROM = 建造者(不一定是拥有者,也可能是宗主国)
on_built = {
}
# 可选。被拆除时(非过时)触发的行动。
# THIS = 省份,FROM = 拆除者
on_destroyed = {
}
# 可选。变为过时时(非拆除)触发的行动。
# THIS = 省份,FROM = 拆除者
on_obsolete = {
}
}
关于ai_will_do,它的用法并不直观。由于建筑AI主要是硬编码的,AI现在会估算每座建筑每年能带来多少收益,并将该数值换算为达克特。年收益占建造成本百分比最高的建筑会被优先建造。
注意:
- 若年收益低于1%,AI将不会考虑建造该建筑。
- 当AI经济状况不佳时,其所要求的年收益会相应提高。
- 要塞的年收益取决于地形、战略位置以及可用于要塞维护的预算。
ai_will_do现在只是简单地将年收益与ai_will_do的数值相乘。这意味着将ai_will_do设为0会使AI永远不会建造该建筑。
对于非经济类建筑,AI默认将每座建筑的基础价值视为每年0.01达克特。将ai_will_do提高到超过建筑造价,可以让AI考虑建造这类建筑。
例如,下面这座建筑目前永远不会被建造,因为它的年收益只有0.01%。
cultural_centre = {
cost = 100
time = 12
modifier = {
local_culture_conversion_cost = -0.1
}
ai_will_do = {
factor = 1
}
}
要让AI在某个时刻考虑建造这座建筑,应将ai_will_do在稳定度高于1时提高到105。这样年收益就变为1.05%,因此AI会考虑建造它。
cultural_centre = {
cost = 100
time = 12
modifier = {
local_culture_conversion_cost = -0.1
}
ai_will_do = {
factor = 1
modifier = {
factor = 105
FROM = { stability = 1 }
}
}
}
科技
建筑要在游戏中出现,必须被添加到某项科技中。科技文件位于/Europa Universalis IV/common/technologies/。
在某项科技内,按如下方式添加建筑:
technology = {
# ...
<building> = yes
}
如果你所修改的建筑只能通过事件、任务或决议"间接"建造,则可以跳过此步骤。反之,如果该建筑将出现在省份建筑菜单或宏建造器(见下文)中,此步骤则是必须的;若遗漏此步,通常会在鼠标悬停于该建筑图标时导致游戏崩溃。
界面
建筑需要定义图标才能在游戏中正确显示。建筑图标的默认尺寸为48×48,保存为.tga或.dds格式。
图标定义需要写在interface文件夹下的.gfx文件中。在该.gfx文件里添加如下内容:
# ...
spriteType = {
name = "GFX_<building>"
texturefile = "gfx//interface//buildings//<building icon>.tga"
loadType = "INGAME"
}
# ...
此外,修改建筑时还必须手动编辑建筑界面。你需要同时编辑provinceview.gui和macrobuildinterface.gui这两个文件。两处的界面代码可以相同,因此可以先专注编辑其中一处,完成后再将代码复制粘贴到另一处。
包含建筑列表的windowType在provinceview.gui中名为new_buildings_entry2,在macrobuildinterface.gui中名为new_buildings_entry。
虽然你无疑还需要修改更多内容,但每座建筑必须添加的两项关键内容是instantTextBoxType和checkboxType。它们遵循以下格式:
checkboxType = {
name = "build_<building>"
position = { x = 9 y = 32 }
quadTextureSprite = "GFX_courthouse_muslimgfx" #占位符,实际使用的贴图由游戏根据按钮名称决定。
}
instantTextBoxType={
name = "<building>_cost"
position = {x = 9 y = 82 }
font = "vic_18"
borderSize = {x = 0 y = 0}
maxWidth = 128
maxHeight = 18
text = "2000¤"
}
本地化
建筑的本地化遵循以下格式:
building_<building>: "名称" building_<building>_desc: "描述"
你可以使用以下格式,为不同宗教或宗教组的建筑添加不同的本地化:
building_<building>_<religion or religion group>: "备用名称" building_<building>_<religion or religion group>_desc: "备用描述"
| 文档 | 效果 • 触发条件 • 修正列表 • 作用域 • 变量 • 本地化 • 可自定义本地化 • 运行文件 • 事件图片列表 |
| 脚本 | 脚本函数 • 顾问 • 时代 • 开局设定 • 建筑 • 宣战理由 • 殖民区域 • 国家创建 • 文化 • 决议 • Defines • 外交行动 • 灾难 • 中华帝国 • 阶层 • 事件 • 派系 • 政府 • 政府互动 • 伟大工程 • 历史 • 神圣罗马帝国 • 理念组 • 思潮 • 佣兵 • 任务树 • 修正 • On Actions • 议会 • 和约 • 君主性格 • 政策 • 叛军类型 • 宗教 • 附属国类型 • 科技 • 贸易公司 • 商品 • 单位 |
| 地图 | 地图 • 地图修改速查 • 随机新世界 • 贸易节点 |
| 图形 | 3D模型 • 界面 • 贴图库 • 字体 • 单位模型 |
| 音频 | 音乐 • 音效 |
| 其他 | 控制台命令 • 校验和 • 模组结构 • 故障排查 • 运行文件 |
| 工具 | 克劳塞维茨开局编辑器 • EU4模组编辑工具 • JoroDox模组制作工具 • The Validator |
| 指南 | 省份 • 地图修改速查 • 存档编辑 • 脚本教程 |