历史修改

《欧陆风云4》使用历史文件来构建特定日期下世界的大部分内容。

国家

国家文件位于/Europa Universalis IV/history/countries/*.txt。这些文件控制构成一个国家的游戏参数。存档文件中可见的许多条目(例如 monarch_consort)同样兼容国家历史文件。

每个国家都有各自的文件,命名规则为:<tag> - <name>。

以下是国家文件的一般格式:

technology_group = <group>      # 国家的科技组,同时也会将兵种类型设为该科技组
unit_type = <group>             # 如果希望使用与所定义科技组不同的兵种组,可使用此项

government = <government>       # 国家的政体
government_rank = <rank>        # 当前政府等级:1、2 或 3

primary_culture = <culture>     # 国家的主体文化
religion = <religion>           # 国家的宗教

add_accepted_culture = <culture>    # 添加一个接受文化
remove_accepted_culture = <culture> # 移除一个接受文化

historical_friend = <tag>        # 添加一个历史友好国
historical_rival = <tag>        # 添加一个历史宿敌

mercantilism = <int>            # 初始重商主义值
religious_school = <school>     # 对于信仰使用宗教学派的宗教的国家,指定其初始学派

add_army_professionalism = <value> # 初始的军队职业度

capital = <id>                  # 默认作为首都的省份
fixed_capital = <id>            # 强制 AI 永远不会将首都迁离指定的 id,若被迁走,它们也会设法迁回该处

# 为国家定义一位统治者。通常在历史条目内使用
monarch = {
    name = <string>             # 统治者的名字
    dynasty = <string>          # 统治者的王朝
    adm = <int>                 # 统治者的行政能力
    dip = <int>                 # 统治者的外交能力
    mil = <int>                 # 统治者的军事能力
    birth_date = <date>         # 用于设定统治者的年龄。以该 monarch 作用域所在历史条目的日期为基准推算。
    female = yes                # 统治者是否为女性
    regent = yes                # 统治者是否被视为摄政
    religion = <religion>       # 统治者的宗教
    culture = <culture>         # 统治者的文化

    # 使所定义的统治者同时成为一名领袖
    leader = {
        name = <string>         # 领袖的名字
        type = <type>           # 领袖类型:general、admiral、explorer、conquistidor
        death_date = <date>     # 领袖被移除的时间
        fire = <int>            # 领袖的射击值
        shock = <int>           # 领袖的冲击值
        manuever = <int>        # 领袖的机动值
        siege = <int>           # 领袖的围城值
        personality = <string>  # 要分配的领袖特质
    }
}

# 为国家定义一位继承人。通常在历史条目内使用
heir = {
    name = <string>             # 继承人的名字
    monarch_name = <string>     # 继承人即位后所用的名字
    dynasty = <string>          # 继承人的王朝
    birth_date = <date>         # 用于设定继承人的年龄。以该 monarch 作用域所在历史条目的日期为基准推算。
    death_date = <date>         # 继承人应被移除的时间。
    claim = <int>               # 继承人的继承权强度
    adm = <int>                 # 继承人的行政能力
    dip = <int>                 # 继承人的外交能力
    mil = <int>                 # 继承人的军事能力
    female = yes                # 继承人是否为女性
    religion = <religion>       # 继承人的宗教
    culture = <culture>         # 继承人的文化
    leader = { <args> }         # 使继承人成为领袖。接受与 monarch 中相同的参数
}

# 为国家定义一位配偶。通常在历史条目内使用
queen = {
    name = <string>             # 配偶的名字
    dynasty = <string>          # 配偶的王朝
    birth_date = <date>         # 用于设定配偶的年龄。以该 monarch 作用域所在历史条目的日期为基准推算。
    death_date = <date>         # 配偶应被移除的时间。
    adm = <int>                 # 配偶的行政能力
    dip = <int>                 # 配偶的外交能力
    mil = <int>                 # 配偶的军事能力
    female = yes                # 配偶是否为女性
    country_of_origin = <tag>   # 配偶来自哪个国家
    religion = <religion>       # 配偶的宗教
    culture = <culture>         # 配偶的文化
    leader = { <args> }         # 使配偶成为领袖。接受与 monarch 中相同的参数。这是为配偶领袖赋予领袖特质的唯一方法。
}
add_ruler_personality = <string> # 添加一个统治者性格
add_heir_personality = <string> # 添加一个继承人性格
add_consort personality = <string> # 添加一个配偶性格

#许多常规效果都可以在国家历史文件中使用,但可能会受到加载顺序问题的影响。
#也可以使用脚本化效果。

# 历史条目,可以包含上述任意值以及常规的国家效果
<year>.<month>.<day> = {
    <country effects>
}

兼容性——局部编辑

虽然基础游戏的格式为 <tag> - <name>,但只要文件名的前三个字母是 <tag>,就会被视为该标签有效的历史文件。这意味着可以在不修改原版文件的情况下,对历史文件进行局部编辑或覆盖。

例如,在“FRA - FranceMODNAMEAdditions.txt”中:

historical_friend = SCO

而在“SCO - ScotlandMODNAMEAdditions.txt”中:

primary_culture = scottish
remove_accepted_culture = highland_scottish
add_accepted_culture = scottish
historical_friend = FRA

这组编辑在不触碰基础游戏文件的前提下,为法国与苏格兰之间增加了关系加成,并将苏格兰的主体文化改为高地苏格兰文化。

省份

省份文件位于/Europa Universalis IV/history/provinces/*.txt。这些文件控制构成一个省份的游戏参数。

每个省份都有各自的文件,命名规则为:<id> - <name>。

以下是省份文件的一般格式:

owner = <tag>                # 省份当前的所有者
controller = <tag>           # 省份当前的控制者
add_core = <tag>             # 为指定标签添加一个核心
add_to_trade_company = <tag> # 将省份划入指定标签的贸易公司
is_city = yes / no           # 此省份是否为正式的城市,即不是殖民地。

culture = <culture>     # 省份的文化
religion = <culture>    # 省份的宗教

base_tax = <int>        # 省份的基础税收
base_production = <int> # 省份的基础生产
base_manpower = <int>   # 省份的基础人力

native_size = <int>                 # 发动攻击的原住民军队规模(请确保“is_city = no”,否则省份中不会出现任何原住民)
native_ferocity = <int>             # 原住民攻击的强悍程度
native_hostileness = <int>          # 原住民发动攻击的可能性
tribal_owner = <tag>                # 设定省份的部落所有者

trade_goods = <goods>               # 分配给此省份的商品,取自 00_tradegoods.txt
estate = <estate>                   # 将该阶层添加到省份(已废弃)
hre = yes / no                      # 此省份是否属于神圣罗马帝国
capital = "<string>"                # 用于该省份的首都名称,否则以省份名称作为首都名称。
seat_in_parliament = yes / no       # 授予或移除该省份在议会中的席位

discovered_by = <technology group>  # 使指定科技组获得此省份的视野
reformation_center = <religion>     # 将此省份设为指定宗教的改革中心
unrest = <int>                      # 增加基础动乱
<building> = yes / no               # 添加或移除指定建筑
center_of_trade = <int>

# 添加一场叛乱
revolt = {
    type = <rebel type>
    size = <float>
    name = <string>
    leader = <string>
}

# 历史条目,可以包含上述任意值以及常规的省份效果
<year>.<month>.<day> = {
    <province effects>
}

兼容性——局部覆盖

省份历史可以通过同名文件完全覆盖。不过,若只想局部编辑,也可以创建一个以相同省份 ID # 开头的文件。

例如,要在不替换原文件的前提下,为“4387 - Angouleme”添加 14 世纪初的历史,我们可以新建一个名为“4387 - YourTextHere”的 .txt 文件,并按如下内容添加:

culture = occitain    # 直到 14 世纪初都是奥克语文化。
remove_core = FRA     # 取消基础游戏中为法国添加的核心,因为 1300 年时它是附庸。
owner = AGM           # 本示例中虚构的昂古穆瓦标签。
controller = AGM      # 本示例中虚构的昂古穆瓦标签。
add_core = AGM        # 本示例中虚构的昂古穆瓦标签。

1308.11.1 = {
    culture = cosmopolitan_french # 居伊·德·吕西尼昂去世——确切日期不详。CK2 以这一年作为该省份转为讲法语的时间。
    add_core = FRA # 归入王室领地,百年战争期间曾被争夺,并于 1394 年转归奥尔良。
    owner = FRA # 归入王室领地,百年战争期间曾被争夺,并于 1394 年转归奥尔良。
    controller = FRA # 归入王室领地,百年战争期间曾被争夺,并于 1394 年转归奥尔良。
}
1360.10.24 = {# 布雷蒂尼条约。
    owner = ENG
    controller = ENG
}
1372.1.1 = { # 法国收复阿基坦。
    owner = FRA
    controller = FRA
}
1394.1.1 = { # 该省份成为奥尔良地区。
    add_core = ORL
    owner = ORL
    controller = ORL
}

这样,昂古莱姆从 1300 年到 1444 年的演变过程——讲奥克语的附庸、随后成为争夺对象的王室领地、再到由奥尔良持有——便都得以呈现,而且完全没有改动原版文件。

外交

外交文件位于/Europa Universalis IV/history/diplomacy/*.txt。这些文件用于定义外交关系,例如附属国。

神圣罗马帝国皇帝

设定当前的神圣罗马帝国皇帝

<year>.<month>.<day> = {
    emperor = <tag>
}

天朝皇帝

设定当前的天朝皇帝

<year>.<month>.<day> = {
    celestial_emperor = <tag>
}

关系

所有关系都遵循以下格式:

<type> = {
    first = <tag>       # 若该关系为宗主-附属国关系,则为宗主国
    second = <tag>      # 若该关系为宗主-附属国关系,则为附属国
    start_date = <date> # 关系开始生效的时间
    end_date = <date>   # 关系停止生效的时间
}

有效的关系如下:

  • alliance
  • royal_marriage
  • guarantee
  • warning
  • vassal
  • march
  • union

从属关系

对于自定义的附属国类型,可以使用 dependency 效果,它允许指定 subject_type:

dependency = {
    subject_type = "<subject type>"
    first = <tag>       # 若该关系为宗主-附属国关系,则为宗主国
    second = <tag>      # 若该关系为宗主-附属国关系,则为附属国
    start_date = <date> # 关系开始生效的时间
    end_date = <date>   # 关系停止生效的时间
}

通常用于朝贡国。

战争

战争文件位于/Europa Universalis IV/history/wars/*.txt。这些文件用于定义正在进行的战争,或刚刚结束的战争(用于生成停战)。

每场战争必须有各自独立的文件。

战争遵循以下格式:

name = "<string>"           # 战争界面中显示的战争名称
war_goal = {
    type = <wargoal>        # 使用 00_wargoals.txt 中的战争目标
    casus_belli = <cb>      # 使用 00_cb_types.txt 中的宣战理由
}

# 用于在指定日期开始战争
<year>.<month>.<day> = {
    add_attacker = <tag>    # 将一个国家加入进攻方
    add_defender = <tag>    # 将一个国家加入防守方
}

# 用于添加正在进行的战役
<year>.<month>.<day> = {
    battle = {
        name = "<string>"   # 省份名称
        location = <id>     # 战役所在的省份

        attacker = {
            commander = "<string>"  # 进攻方军队的指挥官
            infantry = <int>        # 步兵数量。1 相当于 1 名士兵
            cavalry = <int>         # 骑兵数量
            artillery = <int>       # 炮兵数量
            losses = <float>        # 已经阵亡的兵力数量
            country = <tag>         # 进攻的国家
        }

        defender = {
            commander = "<string>"  # 防守方军队的指挥官
            infantry = <int>        # 步兵数量。1 相当于 1 名士兵
            cavalry = <int>         # 骑兵数量
            artillery = <int>       # 炮兵数量
            losses = <float>        # 已经阵亡的兵力数量
            country = <tag>         # 防守的国家
        }

        result = yes    # 显示结果
    }
}

# 用于在指定日期结束战争
<year>.<month>.<day> = {
    rem_attacker = <tag>    # 将一个国家从进攻方移除
    rem_defender = <tag>    # 将一个国家从防守方移除
}

顾问

历史顾问文件位于/Europa Universalis IV/history/advisors/*.txt。历史顾问是预先定义好的顾问,会在特定日期范围内与特定省份相关联。

历史顾问遵循以下格式:

advisor = {
    advisor_id = <id>           # 顾问的唯一 id
    name = <string>             # 顾问的全名
    location = <province id>    # 顾问所关联的省份。
    skill = <int>               # 顾问的能力等级
    type = <advisortype>        # 顾问的类型
    discount = yes              # 是否将 SCRIPTED_ADVISOR_DISCOUNT 所定义的数值应用于该顾问的每月费用
    date = <year>.<month>.<day>         # 该顾问开始出现的时间
    death_date = <year>.<month>.<day>   # 该顾问不再出现的时间
    culture = <culture>         # 顾问的文化
    religion = <religion>       # 顾问的宗教
}

历史顾问会被加入顾问池,与常规生成的顾问并存。

故障排查

历史文件中的问题往往会导致难以诊断的崩溃。例如,国家历史文件中 capital = 一行里的省份 id 有误,就会导致崩溃。

因此,在编辑历史文件时,请确保你用到的所有引用(如省份 id)都是有效的。

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