灾难修改

灾难是 1.9 补丁引入的新系统,取代了 EU4 此前用来模拟国家灾难的基于 MTTH(平均发生时间)事件的系统。

灾难文件

首先需要在/Europa Universalis IV/common/disasters文件夹中创建一个空白文本文件。

在这个文本文件中,脚本的第一行是灾难的名称,例如:

influenza_epidemic = {
}

所有需要编写的脚本都放在这对大括号之内。在这个例子中,我们使用的是令新世界人口锐减的流感疫情。

接下来确定灾难在什么情况下有可能发生。当 potential 触发条件成立时,玩家就可以在稳定度界面中看到该灾难。这与真正推动灾难进程前进的条件是两回事。可使用的参数种类与决议、事件和任务中完全相同。

potential = {
        NOT = {
                has_country_flag = had_influenza_epidemic
        }
        OR = {
                technology_group = north_american
                technology_group = mesoamerican
                technology_group = andean
                technology_group = south_american
        }
        any_country = {
                technology_group = western
                has_discovered = ROOT
        }
}

也就是说,该国不能已经经历过这场灾难,必须属于新世界科技组之一,并且已被西方组的某个国家发现。

现在确定是什么激活该灾难。这会启用界面中的“灾难将至”警报。

can_start = {
        has_any_disaster = no
        is_year = 1500
}

自 1.10 起,你可以设置使灾难进程立即停止的条件:

can_stop = {
        has_any_disaster = yes
}

如果该国在本灾难开始之前就陷入了另一场灾难,此条件将终止本灾难的进程。

接下来让灾难的进程向前推进。这是通过 modifier 实现的。你可以决定由什么条件推进灾难,以及推进多少。

progress = {
        modifier = {
                factor = 1
                any_country = {
                        technology_group = western
                        has_discovered = ROOT
                }
        }
        modifier = {
                factor = 2
                any_neighbor_country = {
                        technology_group = western
                }
        }
        modifier = {
                factor = 1
                any_neighbor_country = {
                        OR = {
                                has_country_flag = had_influenza_epidemic
                                has_disaster = influenza_epidemic
                        }
                }
        }
}

仅仅满足灾难的一个条件(被西方国家发现)就会推进 1 点进程。如果该国确实与某个西方国家接壤,则会推进 2 点。最后,如果该国与另一个正在经历或曾经历过这场灾难的国家接壤,还会再推进 1 点。

接下来编写使灾难结束的条件:

can_end = {
        had_country_flag = { flag = flu_epidemic days = 3650 }
        stability = 2
}

在本例中,该国必须拥有某个标记(稍后会通过事件设置)至少 10 年,并且稳定度达到 2。

如果该国沦为叛军,灾难也会随之结束,除非在灾难中加入以下一行:

ended_by_country_breaking_to_rebels = no

你可能想创建一个国家修正,使其在灾难结束之前一直作用于该国。灾难通常会增加国内动荡。

modifier = {
        global_unrest = 3
        stability_cost_modifier = 0.5
}

这场灾难使国内动荡增加 3,并使提升稳定度的花费增加 50%。

在最后几个部分,我们为与灾难相关的事件设置触发。首先,你大概会想要在灾难开始和结束时各触发一个事件:

on_start = epidemic.1
on_end = epidemic.2

记得在这些事件中适当地设置或移除标记。例如,epidemic.1 应当设置 flue_epidemic 标记;这一点很重要,因为拥有该标记满 10 年是灾难结束的关键触发条件。

最后,我们可以设置一些在灾难持续期间按月触发的事件。

on_monthly = {
        events = {
        }
        random_events = { 
                1000 = 0
                100 = epidemic.3
                100 = epidemic.4	
        }
}

只要事件自身的触发条件得到满足,“events”中的事件就一定会在每月触发。“random_events”则带有权重。在这里,每月大约有 1/6 的几率触发这两个事件之一。至此,这个文本文件就完成了。

本地化

写完灾难触发的所有事件之后,需要编写一些本地化,如下所示:

influenza_epidemic: "流感疫情"
desc_influenza_epidemic: "这个国家正饱受一场致命瘟疫的折磨,它由来自海外的白色恶魔传入。"

别忘了同时为事件的标题、描述和选项编写本地化。

灾难图标

最后,灾难还需要一张图片。你可以复制现有的灾难图片,也可以自己制作。灾难图标位于/Europa Universalis IV/gfx/interface/disasters。将其中一张复制到你的模组中,重命名为你的灾难的名称,然后既可以用你高超的 PS 技术修改这张图片,也可以保持原样。

要让图片显示在游戏中,最后还需要在界面文件中将该图标定义为一个 sprite。在你的模组的/Europa Universalis IV/interface/文件夹中创建一个名为 influenza_epidemic.gfx 的文件(也可以取其他任何名称,只要它是唯一的并且以 .gfx 结尾),并加入以下条目:

spriteTypes = {
 spriteType = {
  name = "GFX_disaster_influenza_epidemic"
  texturefile = "gfx//interface//disasters//influenza_epidemic.dds"
  noOfFrames = 3
  loadType = "INGAME"
 }
}

注意:无论你的灾难叫什么名称,“name = "GFX_disaster_influenza_epidemic"”这一项都必须以“GFX_disaster”开头。因此,如果你的灾难名为“disaster_3rd_century_crisis”,那么 spriteType 的 name 应写作“name = "GFX_disaster_disaster_3rd_century_crisis"”


大功告成,我们创建了一场灾难!

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