战役效果详解
战役中的收入、控制力、补员、招募等级、行军距离、建筑成本、研究速率、兵种上限等变化,最终大多会落到 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:游戏实际执行的数值逻辑
└─ 可选目标:兵种、兵种集合、建筑链、武器、派系等
阅读时把它分成四个问题:
effects_tables:这个效果叫什么、怎样显示。effect_bonus_value_*_junctions_tables:这个数值究竟修改什么。effect_scope:修改谁、在哪里生效。- 授予入口:为什么当前角色、建筑、科技或事件会拥有它。
只看 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:界面身份
橙色框从左到右标出 Effect 身份区和图标、优先级等显示区。当前截图来自 RPFM v5.0.6 实际打开的db.pack。
| 字段 | 含义 | 使用要点 |
|---|---|---|
effect |
Effect 的唯一 Key | 自定义记录必须使用不会与原版和其他 Mod 冲突的前缀。所有连接表都引用它。 |
icon |
正面或常规显示使用的图标 | 填写原版已有图标时先从相近效果复制路径,不要猜文件名。 |
description |
玩家看到的效果说明 | 文本中常含%n、%+n等数值占位。占位格式应沿用同类原版 Effect。 |
priority |
多条效果同时显示时的界面排序权重 | 它不代表效果强度。没有明确需求时复制同类模板。 |
icon_negative |
负值或负面显示使用的图标 | 某些效果与icon相同,某些效果需要单独的负面图标。 |
category |
界面分类 | 影响归类或显示方式,不是 Bonus Value。 |
is_positive_value_good |
正数是否被视为有利 | 用于说明和颜色倾向。它不会自动把数值取反,也不会改变底层计算公式。 |
说明文字的正负方向
不要只根据中文句子判断正负:
- “建筑成本降低”可能由负值配合“成本修正”实现。
- “补员速率提高”通常使用正值。
- 某些处理器把
1当开关,而不是百分比。 - 某些说明需要
%+n显示正负号,某些需要%n%显示百分号。
最稳妥的方法是找到游戏中已经产生相同结果的原版条目,同时查看它的 Effect、Bonus Value、Scope 和 Value,而不是只复制文字相似的 Key。
Bonus Value:真正执行的逻辑
橙色框从左到右分别框出effect和bonus_value_id。这张表说明一个关键事实: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 |
一个部队技能。 |
这不是完整清单。正确选择方法是:
- 用 RPFM 全局搜索找到产生目标结果的原版 Effect。
- 对该 Effect Key 执行全局搜索。
- 查看它出现在哪张
effect_bonus_value_*连接表中。 - 复制那张表的记录结构,再替换成自己的目标 Key。
如果一个 Effect 同时出现在多个 Bonus Value 连接表中,它可能同时驱动多种逻辑。复制时不能只拿其中一条。
campaign_effect_scopes_tables:效果作用于谁
Scope 不是装饰字段。相同 Effect 和相同 Value 换一个 Scope,生效对象就可能完全不同。
campaign_effect_scopes_tables通过以下维度描述关系:
| 字段 | 关注的问题 |
|---|---|
source |
效果从谁或什么对象出发。 |
target |
最终影响谁。 |
ownership |
是否要求己方、敌方或特定所有权关系。 |
location |
是否受所在地区、省份、军队位置等关系限制。 |
territory |
是否要求位于己方、敌方或其他领土。 |
localised_text |
RPFM 或游戏界面用于解释该 Scope 的文字。 |
Scope Key 往往很长,但长名字只是一条线索。不能把faction_to_force_own之类的英文凭感觉直译后直接使用;应当查找原版中与自己授予入口相同的记录。
选择 Scope 的实用顺序
- 先找相同授予入口:建筑效果优先参考建筑,角色技能优先参考角色技能。
- 再找相同目标:派系、所属军队、地区、省份、角色或单位。
- 最后比较 Value 的符号和说明文字。
- 游戏内分别检查拥有者、盟友、敌人和离开地区后的状态。
不要因为某个 Scope 在一项科技上正常,就假定它放进建筑、特性或效果包后仍有相同上下文。Scope 的 source 必须能由授予系统提供。
效果包:一次授予多条效果
橙色框从左到右标出effect_bundle_key、effect_key、effect_scope和value区域。一个效果包可以包含多行,因此可以同时改变多个战役数值。
effect_bundles_tables
| 字段 | 含义 |
|---|---|
key |
效果包唯一 Key。脚本和其他系统通常引用它。 |
localised_title |
效果包标题。 |
localised_description |
效果包说明。 |
ui_icon |
效果包图标。 |
bundle_target |
效果包预期附着的对象类型。 |
priority |
界面显示顺序。 |
is_global_effect |
是否按全局效果处理。不要脱离模板开启。 |
show_in_3d_space |
是否允许在三维战役空间中显示相关表现。 |
owner_only |
是否只向拥有者显示。 |
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
从游戏里的中文说明出发
- 记下游戏中完整说明,例如“补员速率:+5%”。
- 在 RPFM 全局搜索中先搜中文关键词。
- 从本地化结果定位 Effect 或授予对象 Key。
- 搜索该 Key 的全部引用。
- 记录 Effect、Bonus Value、Scope、Value 和授予入口五项信息。
从已知对象出发
如果已经知道某项建筑、科技、技能、特性或物品:
- 先在对应定义表找到它的 Key。
- 打开它的效果连接表。
- 复制目标行中的 Effect Key。
- 全局搜索该 Effect,确认 Bonus Value 连接。
- 查看是否还引用兵种集合、建筑链、招募来源等额外目标。
从 Bonus Value 出发
如果只知道想修改的机制:
- 在
campaign_bonus_value_ids_*或已有 Effect 连接中搜索英文机制关键词。 - 查看哪些 Effect 使用该 Bonus Value。
- 优先挑选与目标授予入口和 Scope 相同的模板。
- 回到游戏中文本,确认该模板的玩家术语与目标一致。
新建自定义 Effect 的步骤
- 找到行为、授予入口和 Scope 都接近的原版模板。
- 把所需表导入自己的 Pack,只保留要参考的记录。
- 为自定义
effects_tables.effect改成唯一 Key。 - 创建或复制正确的
effect_bonus_value_*连接记录,并改为新 Effect Key。 - 在建筑、科技、技能、特性、物品或效果包的连接表中引用新 Effect。
- 添加或检查本地化说明和图标。
- 运行 RPFM 诊断,处理缺失引用和重复 Key。
- 进游戏检查实际对象、数值方向、范围、持续时间和提示文字。
从原版
db.pack导入表单后,必须把 Pack 内的原版data__表名改成自己的唯一名称。保留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 诊断可以证明引用和表结构是否明显有错,但不能证明游戏的运行时上下文、叠加规则和中文提示完全正确。最终结果必须在游戏中验收。

