全面战争模组中文站全面战争模组中文站
搜索/

搜索教程

输入标题,直接打开已发布教程。

输入教程标题开始搜索。

教程目录

战役效果详解

创建时间:2026年9月4日最后更新:2026年9月6日

战役中的收入、控制力、补员、招募等级、行军距离、建筑成本、研究速率、兵种上限等变化,最终大多会落到 Effect 数据链上。Effect 不是“一个能独立运行的 Buff”,而是告诉游戏:显示什么说明、把数值交给哪一种处理逻辑、影响什么对象,以及由哪个系统授予。

本文讲通用 Effect 框架。建筑、科技、人物技能、特性和物品怎样连接 Effect,会在各自教程中继续展开。不要为了“做一个效果”复制所有含effect的表;先确定授予入口,再沿引用关系补齐实际使用的分支。

先看完整数据链

授予入口
├─ building_effects_junction_tables
├─ technology_effects_junction_tables
├─ character_skill_level_to_effects_junctions_tables
├─ trait_level_effects_tables
├─ ancillary_to_effects_tables
└─ effect_bundles_to_effects_junctions_tables
        │
        ├─ effect_key ───────────→ effects_tables
        ├─ effect_scope ─────────→ campaign_effect_scopes_tables
        └─ value

effects_tables.effect
        ↓
effect_bonus_value_*_junctions_tables
        ├─ bonus_value_id:游戏实际执行的数值逻辑
        └─ 可选目标:兵种、兵种集合、建筑链、武器、派系等

阅读时把它分成四个问题:

  1. effects_tables:这个效果叫什么、怎样显示。
  2. effect_bonus_value_*_junctions_tables:这个数值究竟修改什么。
  3. effect_scope:修改谁、在哪里生效。
  4. 授予入口:为什么当前人物、建筑、科技或事件会拥有它。

只看 Effect 的 Key 无法判断完整行为;只看授予表也无法判断底层处理器。排错时必须把四层串起来。

需要认识的表单

表单 作用
effects_tables 定义 Effect Key、说明、图标、界面优先级、类别和数值正负的显示倾向。
effect_bonus_value_basic_junction_tables 把 Effect 连接到不需要额外目标的基础 Bonus Value。
effect_bonus_value_*_junctions_tables 把 Effect 连接到特定目标类型,例如兵种、兵种集合、建筑链、远程武器、人物类型或派系。
campaign_effect_scopes_tables 定义战役效果作用对象之间的关系,例如己方派系、所属军队、所在地区或省份。
effect_bundles_tables 定义一个可以被脚本、事件或系统整体添加、移除的效果包。
effect_bundles_to_effects_junctions_tables 把若干 Effect、数值和作用范围装进效果包。
effect_bundle_advancement_stages_tables 当原版效果包采用阶段变化时,定义阶段入口。只在模板实际使用时复制。
effect_bundle_exclusion_groups_tables及连接表 处理互斥效果包。普通独立效果包通常不需要。
unit_sets_tables 定义可被 Effect 指向的一组兵种。
unit_set_to_unit_junctions_tables 用具体兵种、兵种类型、类别或排除条件组成兵种集合。

effects_tables:界面身份

effects表中的核心显示字段

图中①是 Effect Key,②是常规图标,③是显示优先级。筛选wh_main_effect_economy_gdp_mod_all后能看到基础条目及带不同后缀的变体;基础条目的官方简中说明是“所有建筑收入产值:%+n%”。后缀相似不代表显示或授予方式完全相同。查看原版数据时,从依赖项 → 游戏文件打开对应表,确认标签页带有Game-RO:;需要修改的记录导入自己的 Mod Pack 后再编辑。

字段 含义 使用要点
effect Effect 的唯一 Key 自定义记录必须使用不会与原版和其他 Mod 冲突的前缀。所有连接表都引用它。
icon 正面或常规显示使用的图标 填写原版已有图标时先从相近效果复制路径,不要猜文件名。
description(本地化字段) 玩家看到的效果说明 保存在.loc中,不是普通 DB 单元格。Key 为effects_description_加 Effect Key;文本中常含%n、%+n等数值占位。占位格式应沿用同类原版 Effect。
priority 多条效果同时显示时的排序与隐藏设置 当前 Schema 说明数值越大越靠下,0隐藏该条效果的界面显示。它不代表效果强度,隐藏也不是停用实际效果。
icon_negative 负面显示使用的图标 不要把“负数”和“负面”混为一谈,成本降低等负值可能有利;与显示倾向字段一起对照同类原版记录。
category 界面分类 影响归类或显示方式,不是 Bonus Value。
is_positive_value_good 正数是否被视为有利 用于说明和颜色倾向。它不会自动把数值取反,也不会改变底层计算公式。

界面分类怎么选

当前原版effects_tables.category实际使用三项:campaign、battle、both,分别作为战役、战斗和两者相关的界面分类。经济和建筑效果先选同类campaign记录;战斗数值效果则保留所复制记录的分类。此列不决定效果获得时间,也不能把一个只在战役授予的 Effect 变成自定义战斗直接生效。

下面三条可直接在effects_tables.effect列筛选,说明均已对照官方英文、繁中和简中 Loc:

目标 Effect Key 基础 Bonus Value 数值怎样读
所有建筑收入产值 wh_main_effect_economy_gdp_mod_all gdp_mod_all 原版有value=5表示+5%的授予记录。
所有建筑的建筑成本 wh_main_effect_building_construction_cost_mod 同时连接building_cost_mod与building_conversion_cost_mod 原版有value=-10表示-10%的授予记录;复制自定义 Effect 时两条处理器都要检查。
补员速率 wh_main_effect_force_all_campaign_replenishment_rate replenishment_percentage_bonus 科技tech_grn_start_1_3授予value=5,Scope 为faction_to_force_own_unseen。

收入与建筑成本的完整原版授予例子见下文“崇拜珐克斯”效果包。三条都不能把5改写成0.05;其他 Bonus Value 是否用相同单位,须看对应连接和原版授予值。

说明文字的正负方向

效果的负面图标、分类和数值显示倾向

这是同一组记录向右滚动后的字段。①是负面图标,②是分类,③是is_positive_value_good。带bad后缀的条目没有勾选③,而其他图中条目勾选了;这种差别影响显示倾向,不会把收入计算自动取反。还要继续查看下面的 Bonus Value 和实际授予数值。

不要只根据中文句子判断正负:

  • “建筑成本降低”可能由负值配合“成本修正”实现。
  • “补员速率提高”通常使用正值。
  • 某些处理器把1当开关,而不是百分比。
  • 某些说明需要%+n显示正负号,某些需要%n%显示百分号。

最稳妥的方法是找到游戏中已经产生相同结果的原版条目,同时查看它的 Effect、Bonus Value、Scope 和 Value,而不是只复制文字相似的 Key。

Bonus Value:真正执行的逻辑

Effect与基础Bonus Value的连接

①是 Effect,②是bonus_value_id。图中的五个显示定义都连接到gdp_mod_all:Effect 的身份和显示可以不同,实际调用的数值逻辑却可以相同。不能靠改 Effect 的中文说明来创造新的计算逻辑。

基础连接

effect_bonus_value_basic_junction_tables只有两类核心信息:

字段 含义
effect 引用effects_tables.effect。
bonus_value_id 交给战役系统处理的数值类型。

例如同样是“收入”,不同 Bonus Value 可能分别处理城镇收入、贸易收入、劫掠收入或税率。中文说明相近,不代表可以互换。

带目标的连接

很多 Effect 还必须告诉游戏“修改哪个对象”。常见分支包括:

表单 额外目标
effect_bonus_value_unit_record_junctions_tables 一个具体main_units记录。
effect_bonus_value_ids_unit_sets_tables 一个unit_sets兵种集合。
effect_bonus_value_building_chain_junctions_tables 一条建筑链。
effect_bonus_value_recruitment_source_junctions_tables 一种招募来源。
effect_bonus_value_agent_subtype_junctions_tables 一种人物类型。
effect_bonus_value_faction_junctions_tables 一个派系。
effect_bonus_value_technology_junctions_tables 一项科技。
effect_bonus_value_melee_weapon_junction_tables 一种近战武器。
effect_bonus_value_missile_weapon_junctions_tables 一种远程武器。
effect_bonus_value_projectile_junctions_tables 一种投射物。
effect_bonus_value_unit_ability_junctions_tables 一个部队技能。

这不是完整清单。正确选择方法是:

  1. 用 RPFM 全局搜索找到产生目标结果的原版 Effect。
  2. 对该 Effect Key 执行全局搜索。
  3. 查看它出现在哪张effect_bonus_value_*连接表中。
  4. 复制那张表的记录结构,再替换成自己的目标 Key。

如果一个 Effect 同时出现在多个 Bonus Value 连接表中,它可能同时驱动多种逻辑。复制时不能只拿其中一条。

campaign_effect_scopes_tables:效果作用于谁

Scope 不是装饰字段。相同 Effect 和相同 Value 换一个 Scope,生效对象就可能完全不同。

campaign_effect_scopes_tables通过以下维度描述关系:

字段 关注的问题
source 效果从谁或什么对象出发。
target 最终影响谁。
ownership 是否要求己方、敌方或特定所有权关系。
location 是否受所在地区、省份、军队位置等关系限制。
territory 是否要求位于己方、敌方或其他领土。
localised_text(本地化字段) 显示范围说明的.loc文本,Key 为campaign_effect_scopes_localised_text_加 Scope Key;不是普通 DB 列,也不负责决定实际范围。

Effect Scope的来源、目标、所有权和位置关系

图中编号①是 Scope Key,②是location与ownership,③是source,④是target与territory。选择 Scope 时必须同时满足授予来源和目标对象,不能只看 Key 中某一个词。

图中筛选province_to_region_own,四条记录的来源都是province、目标都是region,但其中一条的location是factionwide,其他图中记录是provincewide。这说明同一前缀下仍可能有不同的位置关系。下文效果包使用的是province_to_region_own_unseen;不要仅凭unseen这个词推断所有权或实际作用范围,还要检查字段、本地化显示和授予入口。

Scope Key 往往很长,但长名字只是一条线索。不能把faction_to_force_own之类的英文凭感觉直译后直接使用;应当查找原版中与自己授予入口相同的记录。

常用 Scope 可直接对照

当前定义表有 435 条 Scope,下面选出本系列实际用到的入口。中文说明按字段关系解释;只有授予系统能提供对应source时才适用。

Scope Key source → target location 可用来核对的目标关系
faction_to_faction_own_unseen faction → faction factionwide 派系自身,例如外交效果。
faction_to_force_own_unseen faction → force factionwide 派系范围内己方军队,例如科技提供补员。
faction_to_province_own_unseen faction → province factionwide 派系范围内己方省份,例如部分英雄招募等级效果。
character_to_character_own character → character character 获得效果的人物自身。
character_to_force_own character → force forcewide 人物关联的己方军队。
province_to_region_own_unseen province → region provincewide 省份内己方地区,例如省份建筑收入修正。
province_to_province_own_unseen province → province provincewide 省份自身,例如本文系列的英雄招募许可。

以上七条的ownership=yours、territory=any。当前原版ownership共使用yours、allied、yours_and_allied、enemy、any;territory共使用yours、enemy、neutral、unowned、any。前者限定对象所属关系,后者限定领土关系,二者不是同一个条件。

需要其他范围时,在campaign_effect_scopes_tables分别筛选source与target列,再检查ownership、location和territory。选中候选 Key 后查找引用,优先打开与你同属建筑、科技或人物技能的授予表;不要把一条现有 Scope 的 Key 改几个英文单词来“创造”新范围。

选择 Scope 的实用顺序

  1. 先找相同授予入口:建筑效果优先参考建筑,人物技能优先参考人物技能。
  2. 再找相同目标:派系、所属军队、地区、省份、人物或单位。
  3. 最后比较 Value 的符号和说明文字。
  4. 游戏内分别检查拥有者、盟友、敌人和离开地区后的状态。

不要因为某个 Scope 在一项科技上正常,就假定它放进建筑、特性或效果包后仍有相同上下文。Scope 的 source 必须能由授予系统提供。

效果包:一次授予多条效果

效果包连接效果、范围和数值

①至④分别是效果包、Effect、Scope 和 Value。这里是原版“崇拜珐克斯”的效果包wh2_dlc09_edict_tmb_worship_of_phakth:同一个包包含建筑成本修正-10%和所有建筑收入产值修正+5%(表中分别填-10和5),都使用province_to_region_own_unseen。这是省份相关原版案例,适合看清“一个包装多条效果”;制作人物、军队或派系效果时,应换用相同授予上下文的模板,不能原样套用这个 Scope。

effect_bundles_tables

字段 含义
key 效果包唯一 Key。脚本和其他系统通常引用它。
localised_title(本地化字段) 效果包标题,保存在.loc,Key 为effect_bundles_localised_title_加效果包 Key。
localised_description(本地化字段) 效果包说明,保存在.loc,Key 为effect_bundles_localised_description_加效果包 Key。
ui_icon 效果包图标。
bundle_target 效果包预期附着的对象类型。
priority 界面显示顺序。
is_global_effect 顶部栏和派系概览中的显示设置。当前 Schema 说明设为false会在这两处隐藏,不受priority影响;不要把它当成“把实际作用范围扩大到全派系”的开关。
show_in_3d_space 是否在人物、军队上方或聚居地标签末尾显示效果包图标。
owner_only 配合show_in_3d_space限制上述地图图标只向拥有者显示,不是效果只作用于己方的权限开关。

此表的 DB 结构还保留了与标题、说明同名的字符串列,而 Schema 同时登记了对应本地化字段。玩家实际看到的简中标题和说明,应在自己的.loc中配置;不要看到同名 DB 列就把整段中文直接填进去。原版模板中这些 DB 列的内容按模板保留,改的是效果包 Key 与对应 Loc Key。

效果包的附着对象和界面显示选项

在上一张连接表的效果包 Key 上右键,选择转到… → 转到定义,再筛选同一 Key 并向右滚动,可以看到这张图。①的 DB 标题仍是英文,但官方简中 Loc 对应“崇拜珐克斯”;②的bundle_target是province;③和④控制界面与地图图标显示。③勾选并不把②变成派系,也不替代连接表中的 Scope。

效果包的附着对象选项

当前原版bundle_target实际使用character、faction、force、province、region、none六项:人物、派系、军队、省份、地区和不声明上述附着目标的模板。按调用入口选同类记录;none不是“作用于所有对象”,force也不等于每个独立兵种。本文省份案例使用province,其中每条效果的具体目标仍由 Scope 决定。

effect_bundles_to_effects_junctions_tables

字段 含义
effect_bundle_key 连接到哪个效果包。
effect_key 装入哪个 Effect。
value 传给 Bonus Value 的数值。可能是整数、百分比或开关,取决于处理器。
effect_scope 当前条目影响谁。一个效果包内的不同条目可以使用不同 Scope。
advancement_stage 阶段型效果包使用的阶段。普通固定效果包通常沿用空值或模板设置。

效果包只负责“打包”。持续回合数、何时添加、何时移除,通常由脚本、事件、仪式、任务、系统载荷或其他引用效果包的表决定。

兵种集合

当一条 Effect 要影响一批兵种时,不一定需要为每个兵种复制一条效果。原版经常使用unit_sets_tables和unit_set_to_unit_junctions_tables。

unit_sets_tables

字段 含义
key 兵种集合 Key。
use_unit_exp_level_range 是否按部队经验等级进一步筛选。
min_unit_exp_level_inclusive 包含的最低经验等级。
max_unit_exp_level_inclusive 包含的最高经验等级。
special_category 特殊分类标记。只在相同系统模板使用时复制。

unit_set_to_unit_junctions_tables

字段 含义
unit_set 目标集合。
unit_record 直接加入某个具体兵种。
unit_caste 按兵种阶层纳入。
unit_category 按步兵、骑兵等类别纳入。
unit_class 按单位职业或细分类纳入。
exclude 把匹配项从集合中排除。

一行不必同时填写所有选择条件。应从原版同类集合复制结构,并用 RPFM 的引用和全局搜索确认实际成员。

Effect通过Bonus Value指定兵种集合目标

图中打开的是effect_bonus_value_ids_unit_sets_tables。①为战斗移动速度相关逻辑mod_land_movement_battle,②为wh_main_effect_force_stat_speed_infantry,其官方简中说明是“移动速度:步兵部队%+n%”,③为目标集合infantry_units。要确定包含哪些兵种,继续对③使用转到定义并在unit_set_to_unit_junctions_tables筛选同一个集合,而不是仅凭“步兵”两个字猜测。

注意另一张名称相近的表effect_bonus_value_unit_set_unit_attribute_junctions_tables:其中的unit_set_attribute引用unit_set_unit_attribute_junctions_tables.key,不是直接填写unit_sets_tables.key。这类连接还要经过“集合与属性”的中间记录。选择哪条路径取决于要调整数值还是授予属性,先跟踪同类原版 Effect,不能因为表名都含unit_set就混填 Key。

集合分类的填写边界

unit_sets_tables.special_category当前非空值为blessed_spawning、chieftain、crafted、elector_counts、mistwalker、rakarth_beasts、renown、tech_lab。这些是特殊系统索引;自建普通数值效果集合可保留空值,填renown等标记不会自动实现对应招募入口。

只影响新兵种时,新建集合yourmod_unit_set,在unit_set_to_unit_junctions_tables填unit_set=yourmod_unit_set、unit_record=自己的 main_units Key,unit_caste、unit_category、unit_class留空,exclude=false。需要覆盖多个兵种时增加同集合的独立行。按分类纳入时,可直接查陆战单位详解的分类取值;不要在同一行随手填满三个分类,使筛选范围偏离目标。

怎样从原版数据找到正确 Effect

从游戏里的中文说明出发

  1. 记下游戏中完整说明,例如“补员速率:+5%”。
  2. 在 RPFM 全局搜索中先搜中文关键词。
  3. 从本地化结果定位 Effect 或授予对象 Key。
  4. 搜索该 Key 的全部引用。
  5. 记录 Effect、Bonus Value、Scope、Value 和授予入口五项信息。

从已知对象出发

如果已经知道某项建筑、科技、技能、特性或物品:

  1. 先在对应定义表找到它的 Key。
  2. 打开它的效果连接表。
  3. 复制目标行中的 Effect Key。
  4. 全局搜索该 Effect,确认 Bonus Value 连接。
  5. 查看是否还引用兵种集合、建筑链、招募来源等额外目标。

从 Bonus Value 出发

如果只知道想修改的机制:

  1. 在campaign_bonus_value_ids_*或已有 Effect 连接中搜索英文机制关键词。
  2. 查看哪些 Effect 使用该 Bonus Value。
  3. 优先挑选与目标授予入口和 Scope 相同的模板。
  4. 回到游戏中文本,确认该模板的玩家术语与目标一致。

新建自定义 Effect 的步骤

  1. 找到行为、授予入口和 Scope 都接近的原版模板。
  2. 把所需表导入自己的 Pack,只保留要参考的记录。
  3. 为自定义effects_tables.effect改成唯一 Key。
  4. 创建或复制正确的effect_bonus_value_*连接记录,并改为新 Effect Key。
  5. 在建筑、科技、技能、特性、物品或效果包的连接表中引用新 Effect。
  6. 添加或检查本地化说明和图标。
  7. 运行 RPFM 诊断,处理缺失引用和重复 Key。
  8. 进游戏检查实际对象、数值方向、范围、持续时间和提示文字。

只从依赖项 → 游戏文件导入原版表,查看时确认Game-RO:页签。不能从Assembly Kit 文件复制、导入或编辑表单。导入后必须把自己 Pack 内的data__改成唯一表文件名;保留相同路径可能覆盖原版子表,而不是只新增一行。

常见错误

有说明但没有效果

通常是只创建了effects_tables,没有创建 Bonus Value 连接;或者授予入口引用了错误的 Effect Key。

效果生效但对象不对

优先检查effect_scope,再检查带目标的effect_bonus_value_*连接表。不要先改数值。

正负号或颜色反了

同时检查 Value、is_positive_value_good、说明占位符和原版同类模板。显示错误与计算方向错误是两类问题。

效果包出现但不消失

效果包表本身不一定负责持续回合。检查授予它的脚本、事件、载荷或系统是否提供了移除条件和持续时间。

改了单位集合却影响过多兵种

检查unit_caste、unit_category、unit_class以及exclude行。集合可能通过分类自动包含后续兵种。

数值写成10却得到意外结果

不同 Bonus Value 对10的解释不同:可能是+10、+10%、乘数的一部分、上限变化或开关。必须从同一个 Bonus Value 的原版记录确认单位。

游戏内验收清单

  • 游戏界面使用正确的简体中文术语和图标。
  • 正值、负值及百分号显示正确。
  • 目标派系、人物、军队、地区或省份正确。
  • 离开作用范围后效果按预期消失。
  • 多个来源叠加时结果符合预期。
  • 读取旧存档和新开战役的表现都经过检查。
  • AI 使用或获得该效果时没有明显异常。
  • 移除授予来源后不存在残留效果。

RPFM 诊断可以检查其规则覆盖的缺失引用、重复 Key 和表结构问题,但诊断通过不证明运行时上下文、叠加规则和中文提示完全正确。本篇截图核对的是原版数据关系,改出的效果仍须按上面的清单在游戏中验收。

图片查看
100%

滚轮或按钮缩放 · 拖动或滑动查看 · Esc 关闭