法术详解
法术复用部队技能的底层框架,但一条能正常施放的法术还要同时处理魔法之风消耗、施法目标、载荷、失误、普通版与增幅版、魔法之风分组,以及法术怎样被角色技能、兵种或 Effect 授予。只创建unit_abilities_tables一行,只会得到一个界面身份,不会自动产生完整法术。
本文只讲 RPFM 中可完成的数据配置。施法动作、投射物模型、爆炸、魔法漩涡、粒子特效、声音和复合场景必须引用已经存在的资源,或另行制作后放入 Pack。
本文使用游戏内术语“法术”“绑定法术”“魔法之风”“增幅法术”“法术精通”和“法术失误”。数据库中的
lore、overpower、overchage、mana等标识保留原文,只用于搜索和技术索引,不把它们直接翻译成新的游戏术语。
先看完整数据链
法术界面与普通/增幅关系
unit_abilities_tables
├─ key
├─ source_type = spell / bound
├─ type = 增益 / 妖法 / 魔法射击 / 轰击 / 吹息 / 魔法漩涡……
└─ overpower_option ─────────→ 增幅法术 Key
│ 相同 Key
↓
法术运行规则
unit_special_abilities_tables
├─ mana_cost / miscast_chance / target_* / range / wind_up
├─ activated_projectile ─────→ projectiles_tables
├─ bombardment ──────────────→ projectile_bombardments_tables
├─ vortex ───────────────────→ battle_vortexs_tables
├─ spawned_unit ─────────────→ land_units_tables
└─ special_ability_to_special_ability_phase_junctions_tables
↓
special_ability_phases_tables
├─ special_ability_phase_stat_effects_tables
├─ special_ability_phase_attribute_effects_tables
├─ special_ability_phase_displays_tables
└─ additional UI effects
魔法之风分组与战斗界面
special_ability_groups_tables
├─ special_ability_groups_to_unit_abilities_junctions_tables
└─ special_ability_groups_to_units_junctions_tables
角色技能授予
character_skills_tables
↓
character_skill_level_to_effects_junctions_tables
↓
effects_tables
↓
effect_bonus_value_unit_ability_junctions_tables
├─ enable
└─ enable_overchage
这条链不是所有法术都完整使用:
- 增益、妖法、直接伤害和治疗常以阶段为主要效果;
- 魔法射击常以
activated_projectile为主要伤害来源; - 轰击常使用
bombardment; - 魔法漩涡和部分吹息、风类法术可能使用
vortex; - 召唤和变身使用
spawned_unit及生成字段; - 绑定法术常不消耗魔法之风,而用有限次数控制;
- 特殊法术可以同时使用阶段和载荷。
游戏界面显示的法术类型不会自动决定底层载荷。制作前必须查看相似原版法术实际填写了哪条分支。
需要哪些表单
| 表单 | 什么时候需要 | 负责什么 |
|---|---|---|
unit_abilities_tables |
所有可见法术 | 定义法术 Key、名称、说明、图标、游戏内类型、来源类型和增幅版本入口。 |
unit_special_abilities_tables |
所有可施放法术 | 定义魔法之风消耗、失误概率、施放时间、冷却、目标、范围、载荷、动画、AI 和自动战斗数据。 |
special_ability_to_special_ability_phase_junctions_tables |
法术使用阶段时 | 连接法术与一个或多个阶段,并指定阶段作用对象。 |
special_ability_phases_tables |
增益、减益、持续伤害、治疗、附魔等 | 定义阶段持续时间和阶段级效果。 |
special_ability_phase_stat_effects_tables |
修改战斗数值 | 修改近战攻防、护甲、领导力、速度、抗性等。 |
special_ability_phase_attribute_effects_tables |
添加或压制属性 | 修改潜行、免疫心理等引擎属性。 |
special_ability_phase_displays_tables及界面效果表 |
阶段需要特效和说明 | 负责阶段视觉与玩家看到的额外效果条目。 |
projectiles_tables及其子表 |
魔法射击、弹丸或爆炸载荷 | 定义弹道、制导、直击伤害、爆炸、破片、显示和命中效果。 |
projectile_bombardments_tables及相关表 |
轰击法术 | 定义从目标上空生成的投射物组。 |
battle_vortexs_tables及相关表 |
魔法漩涡、风类和持续区域载荷 | 定义移动、持续时间、伤害、半径和表现。 |
special_ability_groups_tables |
法术需要进入某种魔法之风分组 | 定义分组的图标、名称、颜色、排序和界面行为。 |
special_ability_groups_to_unit_abilities_junctions_tables |
把法术加入魔法之风分组 | 连接分组与普通版、增幅版或其他法术。 |
special_ability_groups_to_units_junctions_tables |
让单位在战斗界面拥有该分组 | 连接魔法之风分组与main_units_tables记录,并设置页面顺序。 |
effect_bonus_value_unit_ability_junctions_tables |
通过 Effect 启用法术、增幅版或修改消耗等 | 连接 Effect、Bonus Value 和法术 Key。 |
character_skill_level_to_effects_junctions_tables |
角色技能升级授予法术 | 规定角色技能第几级应用哪个 Effect。 |
land_units_to_unit_abilites_junctions_tables |
兵种固定自带法术或绑定法术 | 直接把法术连接给land_units_tables。 |
| 限制、自动关闭、冷却上下文和行为组表 | 模板本身使用时 | 控制目标排除、战场状态、互斥、共享冷却和特殊施法条件。 |
如果只是把一个已有绑定法术永久给某个兵种,通常只需要新增授予连接;如果要制作全新普通法术与增幅法术,则要复制并改完两套界面记录、运行记录和实际载荷。
先分清四个容易混淆的概念
普通法术
普通法术通常使用source_type=spell,消耗魔法之风,并可能由角色技能或其他 Effect 启用。它可以没有增幅版本,但大多数标准魔法之风法术具有普通版与增幅版。
增幅法术
增幅法术是普通法术的强化施放版本。常见数据关系是:
- 普通版
unit_abilities_tables.overpower_option指向增幅版 Key; - 增幅版拥有独立的
unit_abilities_tables和unit_special_abilities_tables记录; - 增幅版可以使用更高
mana_cost、不同目标、不同范围、不同载荷或不同阶段; - Effect 使用
enable_overchage启用增幅施放。
数据库保留了overchage这个拼写。搜索和填写 Bonus Value 时必须使用真实 Key enable_overchage或disable_overchage,不要擅自改成overcharge。
绑定法术
绑定法术在游戏中通常表现为不消耗魔法之风、由有限使用次数控制的法术。常见模板会使用:
source_type = bound
mana_cost = 0
num_uses = 有限正整数
miscast_chance = 0
这只是常见结构,不是硬编码规则。特殊装备、派系机制或新版内容可能使用不同次数、冷却和授予方式,应以同类原版为准。
魔法之风
“魔法之风”既是战斗中的施法资源,也用于组织法术列表和界面分组。数据库中的special_ability_groups_tables常用 Key 包含lore,但面向玩家时应使用游戏内的“魔法之风”或具体法术系名称,不把数据库标识直接翻译成另一套玩家看不到的术语。
怎样选择原版法术模板
不要只看名称、颜色和伤害数字。模板应按施法机制选择。
| 目标法术 | 优先比较的原版模板 |
|---|---|
| 单体魔法射击 | 同样以敌军为目标、从施法者发射制导或非制导弹丸的法术。 |
| 地面直线吹息 | 同样允许地面目标、方向选择和相似施法距离的吹息法术。 |
| 移动风类法术 | 同样使用移动区域载荷、宽度、速度和方向控制的原版法术。 |
| 原地魔法漩涡 | 同样使用battle_vortexs_tables、持续时间和移动规则相近的法术。 |
| 头顶轰击 | 同样使用projectile_bombardments_tables、落点分布和预警时间相近的法术。 |
| 单体增益或妖法 | 同样以单位为目标、阶段数量和数值类型相近的法术。 |
| 范围增益或妖法 | 同样允许地面或单位目标、影响人数和目标刷新方式相近的法术。 |
| 直接伤害或持续治疗 | 同样使用阶段生命变化频率、实体上限和持续时间的法术。 |
| 召唤 | 同样的生成类型、持续方式、单位许可和 AI 用法。 |
| 绑定法术 | 同样不消耗魔法之风、次数和冷却接近的绑定法术。 |
至少比较普通版和增幅版两条记录。某些增幅法术只增加范围,某些改变目标数量,某些更换载荷,还有些只提高伤害;不能假设增幅版就是“所有数字乘二”。
自行查找数据
- 在游戏中记录法术准确名称、所属魔法之风和一个确实会使用它的角色。
- 在 RPFM 全局搜索的 Loc 范围搜索中文名称,找到
unit_abilities_onscreen_name_法术Key。 - 搜索法术 Key,打开
unit_abilities_tables与unit_special_abilities_tables。 - 查看普通版的
overpower_option,找到增幅版 Key。 - 继续搜索普通版和增幅版,记录它们的阶段、投射物、轰击、魔法漩涡、分组和 Effect 引用。
- 使用
查找引用确定哪些角色技能、单位和魔法之风分组使用它。 - 再找一个同类型法术作对照,确认哪些字段属于共通机制,哪些是单个法术特例。
不要只按 Key 中的spell_fire、vortex或upgraded判断结构。原版历史数据会保留旧命名,真正的运行方式以字段引用为准。
安全复制法术
不要直接修改或保存db.pack。在自己的Mod类型 Pack 中复制时,先建立完整 Key 映射。
twcn_tutorial_spell_ember
twcn_tutorial_spell_ember_upgraded
twcn_tutorial_spell_ember_phase
twcn_tutorial_spell_ember_phase_upgraded
twcn_tutorial_spell_ember_projectile
twcn_tutorial_lore_ember
twcn_tutorial_effect_enable_ember
twcn_tutorial_effect_enable_ember_overcast
新建空表单
适合字段很少的连接表,例如法术—阶段连接或分组—法术连接。不要手工从零填写字段众多的unit_special_abilities_tables,除非已经完全理解所选载荷和所有末尾字段。
导入原版表单
- 从依赖项找到普通版和增幅版原版记录。
- 导入本次真正需要的表单。
- 把每张导入表的
data__改成自己的唯一子表名。 - 只保留目标法术及相关记录,反选删除其他行。
- 先改界面与运行记录 Key,再按引用依次修改阶段、载荷、显示、分组和 Effect Key。
- 全局搜索旧 Key,确认没有漏改,也没有误把共享原版资源全部复制成自定义资源。
保留
db/某表/data__可能覆盖原版同名子表。法术涉及的表多,任何一张漏改都可能让 Mod 覆盖一整块原版数据。建议使用twcn_tutorial_unit_abilities、twcn_tutorial_unit_special_abilities等清楚的子表名。
完全复用某个原版投射物、轰击、魔法漩涡、音频或特效时,可以继续引用原版 Key。只有需要修改该资源,或必须避免影响其他引用者时,才复制子记录。
法术的界面定义:unit_abilities_tables
截图中可以看到多组普通法术和带_upgraded后缀的增幅记录;普通版的Overpower Option指向对应增幅版。后缀只是原版命名习惯,真正的连接仍由字段决定。
| 字段 | 法术中的作用 |
|---|---|
key |
法术唯一 Key。普通版和增幅版必须是两条不同记录。 |
requires_effect_enabling |
是否需要 Effect 启用。由角色技能解锁的普通法术通常会使用此机制。 |
onscreen_name |
游戏内法术名称对应的本地化字段。Pack 中通常使用 Loc Key unit_abilities_onscreen_name_法术Key。 |
tooltip_text |
法术说明对应的本地化字段。Pack 中通常使用 Loc Key unit_abilities_tooltip_text_法术Key。 |
icon_name |
法术图标名,常从ui/battle ui/ability_icons/读取。普通版和增幅版可以共用图标。 |
overpower_option |
普通版指向增幅版。增幅版通常留空,避免形成循环。 |
type |
游戏内法术类型,例如增益、妖法、直接伤害、魔法射击、轰击、吹息或魔法漩涡。它影响界面说明,但不会自动创建载荷。 |
video |
法术预览视频入口。复用原版视频时必须确保它确实描述当前法术;自定义法术可以暂时留空。 |
uniqueness |
界面稀有度或分类。不是施法次数。 |
is_unit_upgrade |
是否参与前端单位升级开关。普通法术通常沿用模板。 |
is_hidden_in_ui |
是否在通常界面隐藏。隐藏记录仍可能被脚本或其他技能调用。 |
source_type |
普通法术使用spell,绑定法术使用bound;特殊灾变法术、装备或军队技能应按实际来源选择。 |
is_hidden_in_ui_for_enemy |
是否对敌方隐藏。普通公开法术通常沿用原版模板。 |
superseded_abilities_set |
法术替代集合。只有模板使用升级替代关系时才复制。 |
普通版与增幅版的 Loc
两条记录需要各自的名称和说明 Loc。普通版和增幅版可以显示相同名称,但说明应准确反映差异。不要直接复制原版 Loc Key 而只改文本,否则会覆盖原版法术。
unit_abilities_onscreen_name_twcn_tutorial_spell_ember
unit_abilities_tooltip_text_twcn_tutorial_spell_ember
unit_abilities_onscreen_name_twcn_tutorial_spell_ember_upgraded
unit_abilities_tooltip_text_twcn_tutorial_spell_ember_upgraded
法术运行规则:unit_special_abilities_tables
普通版和增幅版各有一条记录,Key 分别与unit_abilities_tables对应。
魔法之风、失误、冷却和施法时间
| 字段 | 含义与使用要点 |
|---|---|
mana_cost |
本次施放消耗的魔法之风。增幅版通常更高,但应按效果收益和平衡设计。 |
miscast_chance |
法术失误概率,通常按比例表示,例如0.5为 50%。普通版常为0,增幅版按模板设置。 |
miscast_explosion |
失误时使用的爆炸记录。只提高概率而不连接有效失误效果,可能与预期不一致。 |
miscast_global_bonus |
是否接受全局失误概率修正。 |
wind_up_time |
下令后到法术正式生效的前摇时间。要与施法动作、音频和载荷出现时机一致。 |
active_time |
法术活动时间。投射物法术常用-1,因为弹丸寿命由投射物控制;阶段或区域法术应与实际持续时间协调。 |
recharge_time |
普通冷却时间。法术树解锁和魔法之风不足与冷却是不同限制。 |
initial_recharge |
战斗开始或获得法术后的初始冷却。 |
shared_recharge_time |
与同组其他法术共享的冷却时间。只有模板明确使用共享冷却时填写。 |
num_uses |
每场次数。普通法术常不靠次数限制,绑定法术常使用有限次数。 |
current_mana_moves_to_reserve |
特殊魔法之风机制。没有同类原版模板时保持为空或默认。 |
以当前原版“火球术”数据为例,普通版wh_main_spell_fire_fireball消耗 5 点魔法之风,增幅版消耗 9 点;普通版失误概率为 0,增幅版为 0.5,并连接失误爆炸。这个例子只说明普通版和增幅版可以分别配置,不是所有法术都应照抄这些数值。
目标与范围
| 字段 | 含义与使用要点 |
|---|---|
target_self |
是否允许以自身为目标。普通法术通常不能对施法者自身施放,但特殊法术可以。 |
target_friends |
是否允许友军目标。 |
target_enemies |
是否允许敌军目标。 |
target_ground |
是否允许选择地面位置。吹息、轰击、风类和魔法漩涡常需要地面目标。 |
target_ground_under_allies |
是否允许选择友军脚下地面。 |
target_ground_under_enemies |
是否允许选择敌军脚下地面。 |
min_range |
最小施法距离。 |
target_intercept_range |
目标搜索或施法距离。不要把它和载荷自身射程、魔法漩涡移动距离混为一谈。 |
effect_range |
收集受影响单位的作用半径。单体弹丸法术可以为 0,范围阶段法术通常按模板设置。 |
num_effected_friendly_units |
最多影响多少友军。 |
num_effected_enemy_units |
最多影响多少敌军。 |
affect_self |
范围收集时是否包含施法者。 |
always_affect_self |
无论普通目标筛选如何都强制包含施法者。 |
only_affect_target |
只影响直接选择的单位,不继续搜索周围单位。 |
update_targets_every_frame |
持续重新计算范围内目标。移动区域、持续光环和一次性选择的法术通常设置不同。 |
affect_siege_equipment |
是否影响攻城器械实体。 |
only_affect_owned_units |
只影响拥有关系符合条件的单位。 |
目标链至少要同时检查三处:
unit_special_abilities_tables 的可选目标
special_ability_to_special_ability_phase_junctions_tables 的阶段作用对象
special_ability_to_invalid_target_flags_tables 的排除条件
其中一处填反,都可能出现光标允许施放但没有效果,或法术影响了不应影响的对象。
范围显示与施法表现
| 字段 | 含义与使用要点 |
|---|---|
targetting_aoe |
选择目标时显示的圆、线或区域样式。 |
passive_aoe |
已下令但仍在移动或等待施放时的区域显示。 |
active_aoe |
法术正式生效时的区域显示。 |
wind_up_stance |
施法前摇动作。 |
wind_down_stance |
施法结束动作。 |
use_loop_stance |
是否循环施法姿态。 |
activation_effect |
下令或生效时的一次性粒子特效。 |
special_ability_display |
特殊显示记录,常与施法动画元数据配合。 |
composite_scene_group_on_wind_up |
前摇期间触发的复合场景。 |
composite_scene_group_on_active |
生效时触发的复合场景。 |
display_stops_when_display_expires |
让载荷显示按资产自然结束。循环资产设置错误可能残留。 |
复制不同角色的法术时,不能只看法术本身。角色动画套装是否包含模板要求的wind_up_stance,也会影响实际施法表现。
AI、自动战斗和音频
| 字段 | 含义与使用要点 |
|---|---|
ai_usage |
AI 使用模板,例如单体弹丸、范围增益、近战减益等。 |
ai_usage_template_group |
AI 模板组。 |
autoresolver_usage |
自动战斗如何理解法术,不能为空。 |
autoresolve_cp_multiplier |
自动战斗战力倍率。 |
autoresolver_targets |
自动战斗估算的目标数量。 |
additional_melee_cp |
增加的近战战力估值,不能为负。 |
additional_missile_cp |
增加的远程战力估值,不能为负。 |
audio |
法术音频定义。 |
voiceover_state |
施法语音状态。 |
audio_switch_casting_override |
覆盖模块化施法音频。 |
audio_switch_ui_override |
覆盖模块化界面音频。 |
audio_vo_actor_override |
覆盖语音演员。 |
增幅版可以沿用普通版 AI 模板,也可以使用不同模板。改变范围、目标数或载荷后,应重新评估 AI 是否仍能正确选点。
法术类型与实际载荷
魔法射击
常见入口是activated_projectile,指向projectiles_tables.key。
投射物表负责弹道、速度、射程、制导、直击伤害、爆炸和显示。法术的target_intercept_range与投射物的有效射程都要合理;只增加其中一个,可能让法术能选择远处目标却打不到,或弹丸射程足够但法术按钮无法选中。
普通版和增幅版可以:
- 使用不同投射物;
- 共用投射物,但通过其他阶段增加效果;
- 共用图标和动画,只改变魔法之风消耗与目标;
- 完全更换为不同载荷。
需要修改投射物时,继续按《远程武器详解》复制并检查投射物、爆炸、破片、制导和显示链。不要直接改共享原版投射物,否则所有引用它的单位和法术都会变化。
轰击
bombardment指向projectile_bombardments_tables。轰击记录再决定生成哪些投射物、数量、分布、高度、延迟和落点。法术本体负责目标、魔法之风和施放;轰击链负责真正落下什么。
魔法漩涡、风类和部分吹息
vortex指向battle_vortexs_tables。魔法漩涡链可能控制持续时间、移动、碰撞、影响半径、伤害频率、方向和特效。游戏界面类型为“吹息”或“魔法漩涡”,不保证底层只使用某一种表;以原版引用为准。
增益、妖法、直接伤害和治疗
这些法术常由阶段直接完成数值、属性或生命变化。它们也可以附带显示、音频、接触效果或其他载荷。
召唤和变身
spawned_unit指向land_units_tables.key,还要检查spawn_type、spawn_is_transformation、spawn_is_decoy、spawn_shares_health_and_fatigue、单位许可和动画。只填一个单位 Key 并不能完整复现原版召唤或变身。
法术与阶段的连接
special_ability_to_special_ability_phase_junctions_tables包含:
| 字段 | 含义 |
|---|---|
special_ability |
普通版或增幅版法术 Key。 |
phase |
阶段 Key。 |
order |
多阶段顺序。 |
target_self |
阶段作用于施法者。 |
target_friends |
阶段作用于友军。 |
target_enemies |
阶段作用于敌军。 |
普通版和增幅版可以共用阶段,但这会让两者同步变化。需要不同持续时间、数值或显示时,应复制成两个阶段 Key,再分别连接。
多阶段法术不一定按“第一阶段结束后才进入第二阶段”这么简单。order、活动时间、目标和引擎处理会共同决定表现;复制模板时保留完整记录,并通过实战观察每个阶段的出现和移除时机。
法术阶段详解
持续时间、正负面和动作控制
| 字段 | 含义与使用要点 |
|---|---|
id |
阶段唯一 Key。 |
duration |
阶段持续秒数。应与法术活动时间和界面说明一致。 |
effect_type |
正面或负面分类,影响界面与属性方向,但不会自动替你改变数值正负。 |
requested_stance |
阶段期间请求的动作姿态。 |
cant_move |
阶段期间不能接收普通移动或攻击命令。 |
freeze_fatigue |
固定目标疲劳状态。 |
fatigue_change_ratio |
按比例改变疲劳。 |
inspiration_aura_range_mod |
修改激励光环范围。 |
ability_recharge_change |
修改目标的技能冷却。 |
伤害、治疗、复活和魔法之风
| 字段 | 含义与使用要点 |
|---|---|
hp_change_frequency |
每隔多少秒结算一次生命变化。 |
damage_amount |
每个受影响实体、每次结算的伤害量。 |
heal_amount |
每次结算的总治疗量,在受影响实体之间分配。 |
max_damaged_entities |
每次最多影响多少实体。负值常表示不使用普通上限,但要按模板验证。 |
resurrect |
过量治疗能否复活阵亡士兵。 |
mana_regen_mod |
每秒改变魔法之风恢复。 |
mana_max_depletion_mod |
改变魔法之风最大耗竭值。 |
imbue_magical |
赋予魔法攻击。 |
imbue_ignition |
赋予燃烧攻击相关状态。 |
直接伤害和治疗法术必须同时考虑单位人数。每实体伤害、实体上限、结算频率和持续时间会共同决定总效果;不能只看damage_amount一个数字。
接触效果、显示、音频和作用对象
| 字段 | 含义与使用要点 |
|---|---|
imbue_contact |
让目标攻击临时附带另一个接触阶段。 |
phase_display |
连接阶段显示效果。 |
phase_audio |
阶段音频。 |
is_hidden_in_ui |
隐藏阶段的界面条目,不会关闭效果。 |
affects_allies |
阶段标记为影响友军。 |
affects_enemies |
阶段标记为影响敌军。 |
弹药、传播、屏障和移除魔法攻击
| 字段 | 含义与使用要点 |
|---|---|
replenish_ammo |
按最大弹药比例恢复或消耗弹药。 |
composite_scene_group |
阶段开始时触发复合场景。 |
spreading |
连接传播规则。 |
freeze_recharge |
阶段期间停止目标技能冷却。 |
barrier_heal_amount |
按最大屏障生命比例恢复屏障。 |
remove_magical |
移除魔法攻击。 |
治疗、驱散和斩杀
| 字段 | 含义与使用要点 |
|---|---|
heal_amount |
当前 Schema 使用的治疗字段。导入旧表时应先让 RPFM 完成架构升级。 |
barrier_heal_amount |
屏障恢复比例。没有屏障系统的单位不会因此自动获得屏障。 |
remove_magical |
临时移除魔法攻击。 |
execute_ratio |
生命比例低于或等于阈值时直接击杀。 |
阶段数值和属性效果
special_ability_phase_stat_effects_tables包含phase、stat、value和how。常见add用于固定加减,mult用于倍率。倍率1.15通常表示乘以 1.15,而不是增加 1.15 点。
一个阶段可以有多行数值效果。例如增幅版可以复用普通版的目标和动画,但使用自己的阶段,把护甲降低从-30 add改为-60 add。如果两个版本共用同一个阶段,修改阶段会同时改变两者。
special_ability_phase_attribute_effects_tables使用:
| 字段 | 含义 |
|---|---|
phase |
阶段 Key。 |
attribute |
unit_attributes_tables中的引擎属性。 |
attribute_type |
positive通常添加,negative通常压制。 |
属性与数值是两套机制。想临时赋予潜行,应使用属性效果;想提高远程抗性,应使用阶段数值效果。不要根据游戏说明文字猜表单。
阶段显示和额外说明
special_ability_phase_displays_tables负责banner_vfx、active_vfx、entity_vfx、挂接方式和缩放方式。它只控制表现,不提供伤害或属性。
额外说明链为:
special_ability_phases_tables
↓
special_ability_phases_to_additional_ui_effects_junctions_tables
↓
unit_abilities_additional_ui_effects_tables
这条链负责在法术提示中显示“近战攻击”“护甲”“持续伤害”等附加条目。它不会自动读取阶段真实数值,也不会替代阶段效果。修改运行数值后要同步核对玩家看到的说明。
施法目标和使用限制
无效目标
special_ability_to_invalid_target_flags_tables把法术连接到不能成为目标的状态或类别。例如飞行、地面、大型、生命比例、单位类型或特殊派系属性。
无效使用条件
special_ability_to_invalid_usage_flags_tables在施法者或战场满足某条件时禁止使用,例如正在近战、正在移动、魔法之风不足、没有目标在范围内或其他法术正在施放。
自动关闭
special_ability_to_auto_deactivate_flags_tables用于已经激活的技能在条件出现后自动结束,常见于被动、姿态和特殊持续法术。
这些连接引用special_ability_invalid_usage_flags_tables.flag_key。原版 Key 经常包含not、no、above、below等词,而连接表本身又代表“无效”,容易形成双重否定。不要凭英文名称直接填写,必须读取说明并检查一个实际使用者。
魔法之风分组
special_ability_groups_tables
这张表定义某种魔法之风或复合施法分组在战斗界面中的身份。
| 字段 | 含义与使用要点 |
|---|---|
ability_group |
分组唯一 Key。 |
name |
分组名称对应的本地化字段。面向玩家应使用游戏中的魔法之风名称。 |
icon_path |
分组图标路径。 |
sort_order |
自定义战斗或法术选择界面中的排序,数值较小通常更靠前。 |
colour_r、colour_g、colour_b |
分组界面颜色。 |
button_name |
战斗界面分组按钮图片的查找名。 |
sound_event |
分组界面声音事件。 |
sound_switch |
模块化界面音频开关。 |
is_naval |
是否用于海军或海军角色的历史字段。普通陆战法术不要随意勾选。 |
is_composite_group |
是否为从多个魔法之风组合出来的复合分组。复合分组在界面中的处理不同。 |
unique_id |
分组唯一数值标识,不能与其他分组冲突。 |
show_lore_icon |
是否在单位卡或战斗界面显示魔法之风图标。 |
special_edition_mask |
特殊版本掩码。没有明确模板时沿用同类原版。 |
把法术加入分组
special_ability_groups_to_unit_abilities_junctions_tables包含:
| 字段 | 含义 |
|---|---|
special_ability_groups |
魔法之风分组 Key。 |
unit_special_abilities |
加入该分组的法术 Key。 |
普通分组与增幅分组可能分别连接普通版和增幅版。当前原版“火球术”普通版出现在wh_main_lore_fire等分组中,增幅版出现在对应的wh_main_lore_fire_upgraded分组中。不同角色还可能使用复合分组或专用分组,所以不能看到法术属于火焰系就只搜索一个固定分组。
把分组给单位
special_ability_groups_to_units_junctions_tables包含ability_group、unit和group_page_order。其中unit引用main_units_tables.unit,不是land_units_tables.key。
这张表主要决定单位在战斗界面拥有哪个法术分组和页面顺序。把分组连接给单位,不等于其中所有requires_effect_enabling法术都会自动解锁;具体法术仍可能需要角色技能或 Effect 启用。
修改整组法术
effect_bonus_value_special_ability_group_junctions_tables可以让 Effect 修改整个魔法之风分组。当前可用 Bonus Value 包括:
| Key | 作用 |
|---|---|
cost_percentage_mod |
按百分比修改组内法术的魔法之风消耗。 |
miscast_percentage_mod |
按百分比修改组内法术失误概率。 |
recharge_rate_percentage_mod |
按百分比修改组内法术冷却速度。 |
spell_mastery_percentage_mod |
修改法术精通。 |
target_intercept_range_mod |
按百分比修改组内法术目标距离。 |
storm_of_magic_ascendency_weight_mod |
修改特殊魔法风暴模式中的优势权重。 |
整组修正适合“某角色更擅长一种魔法之风”之类设计;只想修改一个法术时,应使用effect_bonus_value_unit_ability_junctions_tables,不要误伤同组所有法术。
制作普通版与增幅版
第一步:复制两条界面记录
- 复制普通版和增幅版
unit_abilities_tables记录。 - 改成两个自定义 Key。
- 普通版
overpower_option指向自定义增幅版。 - 增幅版
overpower_option留空,除非原版机制明确还有下一层。 - 为两条记录分别建立名称和说明 Loc。
第二步:复制两条运行记录
- 在
unit_special_abilities_tables中复制普通版和增幅版。 - 让 Key 与界面记录一一对应。
- 分别设置魔法之风消耗、失误、目标、范围、冷却和载荷。
- 为新
unique_id检查冲突。 - 保留机制相近模板的 AI、自动战斗、声音和施法动作。
第三步:处理实际效果
- 阶段型:复制两组阶段和效果,或有意共用不变部分。
- 投射物型:分别连接普通和增幅投射物,或共用投射物后用阶段增加差异。
- 轰击、魔法漩涡:复制相应载荷及其子记录。
- 召唤:检查生成单位、生成类型、生命共享和许可。
第四步:加入魔法之风分组
把普通版和增幅版分别连接到正确的普通分组与增幅分组。复合施法者、特殊角色和独立法术页面可能使用不同分组路径,应沿目标角色的原版数据复制。
第五步:授予并解锁
选择兵种固定自带、角色技能 Effect、装备、科技、特性或脚本中的一种真实入口。不要同时添加多条授予路径,除非设计上确实需要。
授予法术
路线一:兵种永久自带
land_units_to_unit_abilites_junctions_tables可以直接把法术 Key 连接给land_units_tables.key。这条路径适合:
- 兵种天生拥有的主动技能式法术;
- 固定绑定法术;
- 不需要角色技能树解锁的特殊单位法术。
如果requires_effect_enabling已勾选,直接连接后仍可能因为缺少enableEffect而不可见。复用原版法术时先检查原法术的启用方式,不要只复制拥有者连接。
路线二:角色技能解锁
常见链路是:
character_skills_tables
↓ 第几级应用什么 Effect
character_skill_level_to_effects_junctions_tables
↓
effects_tables
↓ Effect 对法术做什么
effect_bonus_value_unit_ability_junctions_tables
├─ bonus_value_id = enable
└─ bonus_value_id = enable_overchage
character_skill_level_to_effects_junctions_tables关键字段:
| 字段 | 含义 |
|---|---|
character_skill_key |
角色技能 Key。 |
level |
该技能等级。 |
effect_key |
应用的 Effect。 |
value |
Effect 数值。启用类通常参考原版使用1。 |
is_factionwide |
是否全派系生效。授予个人法术通常不要误勾选。 |
effect_scope |
Effect 作用范围。个人法术常参考character_to_character_own等角色自身范围。 |
effect_bonus_value_unit_ability_junctions_tables关键字段:
| 字段 | 含义 |
|---|---|
effect |
effects_tables.effect。 |
bonus_value_id |
启用、增幅、消耗、冷却、失误等操作。 |
unit_ability |
普通法术 Key。增幅关系通常由该法术的overpower_option继续找到增幅版。 |
当前原版“火球术”的角色技能链说明了为什么必须追完整引用:wh_main_skill_all_magic_fire_01_fireball应用wh2_main_effect_ability_overcast_fireball;这个 Effect 在技能 Bonus Value 表中既有enable,也有enable_overchage,目标都是普通版wh_main_spell_fire_fireball,普通版再通过overpower_option指向增幅版。不能只看 Effect 名称猜它只启用增幅版。
不同原版法术可能把普通解锁和增幅解锁拆成两个 Effect,也可能由虚拟角色技能、专用角色技能或脚本处理。复制前必须搜索你选定模板的实际链。
把角色技能放进技能树
如果使用已有角色技能,只需复用或扩展它的 Effect 链。新建角色技能时,还要处理:
character_skills_tables
character_skill_nodes_tables
character_skill_node_sets_tables
character_skill_node_set_items_tables
character_skill_node_links_tables
这些表决定技能节点属于哪个角色技能树、位置、前置和连线。它们不是法术运行链本身。只建立法术 Effect 而没有把角色技能节点放进目标角色的技能树,玩家仍然无法学习。
路线三:装备、科技、特性或事件
这些系统最终也常通过effects_tables进入effect_bonus_value_unit_ability_junctions_tables。区别在于 Effect 的上游来源不同:装备、科技、特性或事件各有自己的连接表和作用范围。
不要因为示例使用角色技能,就把所有法术都塞进角色技能树。先决定玩家应该通过什么条件获得法术,再从对应系统向下追到 Effect。
路线四:魔法之风分组
给单位连接special_ability_groups_tables记录主要决定战斗界面中的法术页面与分组。它不能代替单个法术的enableEffect。常见施法者同时拥有分组连接和角色技能解锁链,两者职责不同。
修改法术消耗、冷却、次数和法术精通
effect_bonus_value_unit_ability_junctions_tables当前常用 Bonus Value:
| Key | 作用 |
|---|---|
enable / disable |
启用或禁用法术。 |
enable_overchage / disable_overchage |
启用或禁用增幅施放。 |
cost_mod |
加减固定魔法之风消耗。 |
cost_percentage_mod |
按百分比修改消耗。 |
recharge_mod |
按百分比修改冷却。 |
shared_cooldown_mod |
修改共享冷却。 |
uses_mod |
加减使用次数。 |
miscast_percentage_mod |
按百分比修改失误概率。 |
active_time_mod |
按百分比修改活动时间。 |
effect_range_mod |
按百分比修改效果范围。 |
target_intercept_range_mod |
按百分比修改目标距离。 |
spell_mastery_percentage_mod |
修改法术精通。 |
forced_spell_mastery_mod |
强制替换法术精通原始值。没有明确模板时不要使用。 |
固定值和百分比修正方向不能只凭正负号猜。查看同一个 Bonus Value 的多个原版 Effect,再在游戏内对比修改前后面板和实际消耗。
制作绑定法术
- 选择一个载荷、目标方式和施法动作相近的原版绑定法术。
- 复制
unit_abilities_tables并使用source_type=bound。 - 复制
unit_special_abilities_tables,通常将mana_cost设为0,用num_uses和recharge_time控制。 - 按模板保留或清除失误设置;不要仅凭“绑定法术不会失误”删除特殊机制。
- 复制实际阶段或载荷。
- 通过兵种、装备、Effect 或其他符合设计的来源授予。
- 检查游戏界面显示为“绑定法术”,而不是普通法术或主动技能。
绑定法术不是普通法术把消耗改成 0 就结束了。来源类型、次数、授予来源、分组、冷却和界面说明都要一致。
常见故障
法术完全不出现
依次检查:
- 法术是否被兵种、魔法之风分组或角色技能正确授予。
unit_abilities_tables与unit_special_abilities_tablesKey 是否一致。requires_effect_enabling是否需要enableEffect。- 角色技能等级、Effect、作用范围和数值是否正确。
is_hidden_in_ui是否误勾选。- 普通版是否加入正确的魔法之风分组。
普通版出现但不能增幅
检查普通版overpower_option、增幅版两张核心表、enable_overchageEffect、增幅分组连接、魔法之风消耗和角色技能等级。数据库字段拼写必须是overchage。
可以选择目标但施放后没有效果
检查法术目标字段、阶段连接的目标勾选、阶段 Key、阶段效果引用,以及载荷字段是否指向有效投射物、轰击、魔法漩涡或召唤单位。
法术打错目标
同时检查target_friends、target_enemies、target_ground、地面目标下方限制、阶段连接目标、阶段affects_allies/affects_enemies和无效目标条件。
增幅版与普通版伤害相同
检查两者是否意外共用同一阶段或载荷,以及增幅版是否真的连接到自定义阶段、投射物、轰击或魔法漩涡。只提高mana_cost不会自动提高效果。
法术失误不生效或概率异常
检查miscast_chance、miscast_explosion、miscast_global_bonus、个人与分组 Effect 的miscast_percentage_mod。确认数值是比例还是百分比修正,不要混用。
法术图标、名称或说明错误
检查icon_name、普通与增幅 Loc Key、type、source_type、额外界面效果和魔法之风分组名称。不要直接覆盖原版 Loc。
角色学会技能后仍没有法术
检查角色技能等级是否连接正确 Effect、Effect 是否连接enable、effect_scope是否作用于角色自身,以及法术requires_effect_enabling和授予分组是否匹配。
AI 不会施法
检查ai_usage、AI 模板组、目标类型、施法距离、载荷、魔法之风消耗和自动战斗字段。复制外观相似但目标机制不同的模板,最容易导致 AI 无法选点。
游戏内验收清单
RPFM 诊断不能验证施法动画、目标选择、总伤害和游戏内术语。至少进行以下检查:
- 法术名称、说明、图标、类型和来源显示正确。
- 普通版与增幅版可以按预期切换,消耗和失误概率正确。
- 魔法之风分组名称、图标、颜色、顺序和页面位置正确。
- 自身、友军、敌军、地面、飞行与大型目标的允许和禁止状态正确。
- 最小距离、最大目标距离、作用范围和载荷射程互相匹配。
- 前摇、施法动作、声音、粒子特效和载荷出现时间同步。
- 阶段持续时间、结算频率、实体上限、数值和属性与说明一致。
- 投射物、轰击、魔法漩涡、爆炸和阶段没有重复结算伤害。
- 增幅版确实使用自己的阶段或载荷,没有意外继续引用普通版共享记录。
- 法术失误会在正确条件下发生,并使用正确爆炸或惩罚。
- 绑定法术不错误消耗魔法之风,次数和冷却正确。
- 角色技能在未学习、普通等级、增幅等级和重置技能后分别表现正确。
- AI 能在合理目标和时机施法,自动战斗没有明显异常。
- 与其他 Mod 同时加载时,没有法术 Key、分组 Key、
unique_id和 Loc Key 冲突。

