外交行动修改

修改外交行动有两种方法:在/Europa Universalis IV/common/diplomatic_actions中控制硬编码交互的条件,以及在/Europa Universalis IV/common/new_diplomatic_actions中添加新的交互。

外交行动

/Europa Universalis IV/common/diplomatic_actions中的 00_diplomatic_actions.txt 文件控制着原版外交行动(如王室联姻)的条件。你可以为这些行动添加效果,但无法移除原版中已有的效果。

具体做法是:在相应的行动作用域中添加一个 condition 作用域;如果该行动作用域不存在,则先创建它。例如,如果你想在当前国家是共和国时禁止使用 study_technology,可以这样做:

study_technology = {
    condition = {
        tooltip = CANNOT_STUDY_TECHNOLOGY
        potential = {
            government = republic
        }
        allow = {
            always = no
        }
    }
}

此处的 potential 用于限制该条件何时生效,而 allow 则用于限制何时阻止该行动。

ROOT 是使用该行动的国家,FROM 是该行动所针对的国家。

你可以使用 tooltip 一行添加提示框,当条件有效并禁止该行动时就会显示。

通用格式为:

<action> = {
    condition = {
        tooltip = <string>
        potential = {
            <triggers>
        }
        allow = {
            <triggers>
        }
    }
}

硬编码限制

某些外交行动似乎是硬编码的,完全无法修改。已知的有:

  • charter_company
  • fabricate_claim(似乎只对省份视图中的伪造宣称有效,而对外交行动无效)
  • slander_merchants
  • sabotage_recruitment
  • corrupt_officials

新外交行动

/Europa Universalis IV/common/new_diplomatic_actions中的 00diplomatic_actions.txt 文件用于实现新的外交行动。你可以为新的行动创建新文件。

<action> = {
    category = <category>           # 该行动将出现在哪个外交行动列表中。

    alert_index = <int>             # 该行动使用的警报。索引请参阅 static_actions。可选。
    alert_tooltip = <key>           # 在警报提示框中显示的本地化键。可选。

    require_acceptance = yes / no   # 该行动是否需要目标国家接受,才会执行接受时的效果。

    # 决定该行动何时可见
    is_visible = {
        <triggers>
    }

    # 决定该行动何时可以执行
    is_allowed = {
        <trigger>
        # 此处可以使用 variable_arithmetic_trigger,借助 export_to_variable 提取并比较诸如 ruler_age 等数值
    }

    # 接受时执行哪些效果
    on_accept = {
        <effects>
    }

    # 拒绝时(如果可以拒绝)执行哪些效果。可选。
    on_decline = {
        <effects>
    }

    # 控制 AI 对该行动的接受程度(如果可以接受)。可选。
    ai_acceptance = {
        # 添加一个 AI 因子条目
        add_entry = {
            name = <key>    # 为该因子显示的本地化键

            # 将该条目限制为满足触发条件的国家。可选。
            limit = {
                <triggers>
            }

            # ai_value 必须始终先在某个条目内创建。
            export_to_variable = {
                variable_name = ai_value
                value = <exportable value>      # 导出哪个可导出的值
                who = FROM                      # 从谁那里导出该值
                with = THIS                     # ai_value 是为谁而设
            }

            # 之后你可以通过 multiply_variable 等效果来改变 ai_value
        }
    }

    # 控制 AI 对该行动的使用
    ai_will_do = {
        <triggers>
    }
}

is_allowed 使用了变量运算触发条件,更多信息请参见变量。另外也请查看 00diplomatic_actions.txt 文件中的示例以加深理解。

ROOT 是使用该行动的国家,FROM 是该行动所针对的国家。

类别

外交行动的类别类型有:

  • alliance
  • influence
  • relation
  • dynasty
  • covert
  • economy
  • access
  • emperor
  • papacy
  • great_powers

此外,你还可以使用 "debug" 以及任何其他 eu4 关键字(例如触发条件、效果、作用域、修正)来创建新的类别。

你选择哪一个决定了它们的顺序(但始终排在原版类别之后)

图形与本地化

新类别的本地化键为 DIPLOMACYACTION_CATEGORY_<keyword>。
可以通过创建一张 24x24 的图片并在图标周围留出几个像素的边距来添加新图标。在 24x24 的图片中,图标大小取 18x18 似乎最为合适。
文件名并不重要,但通常采用 icon_diplomacy_<keyword>.dds 的形式。将文件名中的 keyword 替换为与你所创建的新类别更相关的内容可能更合理,不过这取决于个人喜好。
GFX 条目必须采用 GFX_diplomacy_action_<keyword> 的形式。
举个例子,如果你选择 random_list 作为新类别的名称,那么它的本地化键就是 DIPLOMACYACTION_CATEGORY_random_list。图形条目如下:

spriteType = {
	name = "GFX_diplomacy_action_random_list"
	texturefile = "gfx//interface//<file_name_here>.dds"
	alwaystransparent = yes
}

本地化

新的外交行动需要定义以下本地化键:

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