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

搜索教程

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

输入教程标题开始搜索。

教程目录

法术详解

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

法术复用部队技能的底层框架,但一条能正常施放的法术还要同时处理魔法之风消耗、施法目标、载荷、失误、普通版与增幅版、魔法之风分组,以及法术怎样被角色技能、兵种或 Effect 授予。只创建unit_abilities_tables一行,只会得到一个界面身份,不会自动产生完整法术。

本文只讲 RPFM 中可完成的数据配置。施法动作、投射物模型、爆炸、魔法漩涡、粒子特效、声音和复合场景必须引用已经存在的资源,或另行制作后放入 Pack。

本文使用游戏内术语“法术”“绑定法术”“魔法之风”“增幅法术”“法术精通”和“法术失误”。数据库中的loreoverpoweroverchagemana等标识保留原文,只用于搜索和技术索引,不把它们直接翻译成新的游戏术语。

先看完整数据链

法术界面与普通/增幅关系
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_tablesunit_special_abilities_tables记录;
  • 增幅版可以使用更高mana_cost、不同目标、不同范围、不同载荷或不同阶段;
  • Effect 使用enable_overchage启用增幅施放。

数据库保留了overchage这个拼写。搜索和填写 Bonus Value 时必须使用真实 Key enable_overchagedisable_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 用法。
绑定法术 同样不消耗魔法之风、次数和冷却接近的绑定法术。

至少比较普通版和增幅版两条记录。某些增幅法术只增加范围,某些改变目标数量,某些更换载荷,还有些只提高伤害;不能假设增幅版就是“所有数字乘二”。

自行查找数据

  1. 在游戏中记录法术准确名称、所属魔法之风和一个确实会使用它的角色。
  2. 在 RPFM 全局搜索的 Loc 范围搜索中文名称,找到unit_abilities_onscreen_name_法术Key
  3. 搜索法术 Key,打开unit_abilities_tablesunit_special_abilities_tables
  4. 查看普通版的overpower_option,找到增幅版 Key。
  5. 继续搜索普通版和增幅版,记录它们的阶段、投射物、轰击、魔法漩涡、分组和 Effect 引用。
  6. 使用查找引用确定哪些角色技能、单位和魔法之风分组使用它。
  7. 再找一个同类型法术作对照,确认哪些字段属于共通机制,哪些是单个法术特例。

不要只按 Key 中的spell_firevortexupgraded判断结构。原版历史数据会保留旧命名,真正的运行方式以字段引用为准。

安全复制法术

不要直接修改或保存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,除非已经完全理解所选载荷和所有末尾字段。

导入原版表单

  1. 从依赖项找到普通版和增幅版原版记录。
  2. 导入本次真正需要的表单。
  3. 把每张导入表的data__改成自己的唯一子表名。
  4. 只保留目标法术及相关记录,反选删除其他行。
  5. 先改界面与运行记录 Key,再按引用依次修改阶段、载荷、显示、分组和 Effect Key。
  6. 全局搜索旧 Key,确认没有漏改,也没有误把共享原版资源全部复制成自定义资源。

保留db/某表/data__可能覆盖原版同名子表。法术涉及的表多,任何一张漏改都可能让 Mod 覆盖一整块原版数据。建议使用twcn_tutorial_unit_abilitiestwcn_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_typespawn_is_transformationspawn_is_decoyspawn_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包含phasestatvaluehow。常见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_vfxactive_vfxentity_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 经常包含notnoabovebelow等词,而连接表本身又代表“无效”,容易形成双重否定。不要凭英文名称直接填写,必须读取说明并检查一个实际使用者。

魔法之风分组

special_ability_groups_tables

这张表定义某种魔法之风或复合施法分组在战斗界面中的身份。

字段 含义与使用要点
ability_group 分组唯一 Key。
name 分组名称对应的本地化字段。面向玩家应使用游戏中的魔法之风名称。
icon_path 分组图标路径。
sort_order 自定义战斗或法术选择界面中的排序,数值较小通常更靠前。
colour_rcolour_gcolour_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_groupunitgroup_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,不要误伤同组所有法术。

制作普通版与增幅版

第一步:复制两条界面记录

  1. 复制普通版和增幅版unit_abilities_tables记录。
  2. 改成两个自定义 Key。
  3. 普通版overpower_option指向自定义增幅版。
  4. 增幅版overpower_option留空,除非原版机制明确还有下一层。
  5. 为两条记录分别建立名称和说明 Loc。

第二步:复制两条运行记录

  1. unit_special_abilities_tables中复制普通版和增幅版。
  2. 让 Key 与界面记录一一对应。
  3. 分别设置魔法之风消耗、失误、目标、范围、冷却和载荷。
  4. 为新unique_id检查冲突。
  5. 保留机制相近模板的 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,再在游戏内对比修改前后面板和实际消耗。

制作绑定法术

  1. 选择一个载荷、目标方式和施法动作相近的原版绑定法术。
  2. 复制unit_abilities_tables并使用source_type=bound
  3. 复制unit_special_abilities_tables,通常将mana_cost设为0,用num_usesrecharge_time控制。
  4. 按模板保留或清除失误设置;不要仅凭“绑定法术不会失误”删除特殊机制。
  5. 复制实际阶段或载荷。
  6. 通过兵种、装备、Effect 或其他符合设计的来源授予。
  7. 检查游戏界面显示为“绑定法术”,而不是普通法术或主动技能。

绑定法术不是普通法术把消耗改成 0 就结束了。来源类型、次数、授予来源、分组、冷却和界面说明都要一致。

常见故障

法术完全不出现

依次检查:

  1. 法术是否被兵种、魔法之风分组或角色技能正确授予。
  2. unit_abilities_tablesunit_special_abilities_tablesKey 是否一致。
  3. requires_effect_enabling是否需要enableEffect。
  4. 角色技能等级、Effect、作用范围和数值是否正确。
  5. is_hidden_in_ui是否误勾选。
  6. 普通版是否加入正确的魔法之风分组。

普通版出现但不能增幅

检查普通版overpower_option、增幅版两张核心表、enable_overchageEffect、增幅分组连接、魔法之风消耗和角色技能等级。数据库字段拼写必须是overchage

可以选择目标但施放后没有效果

检查法术目标字段、阶段连接的目标勾选、阶段 Key、阶段效果引用,以及载荷字段是否指向有效投射物、轰击、魔法漩涡或召唤单位。

法术打错目标

同时检查target_friendstarget_enemiestarget_ground、地面目标下方限制、阶段连接目标、阶段affects_allies/affects_enemies和无效目标条件。

增幅版与普通版伤害相同

检查两者是否意外共用同一阶段或载荷,以及增幅版是否真的连接到自定义阶段、投射物、轰击或魔法漩涡。只提高mana_cost不会自动提高效果。

法术失误不生效或概率异常

检查miscast_chancemiscast_explosionmiscast_global_bonus、个人与分组 Effect 的miscast_percentage_mod。确认数值是比例还是百分比修正,不要混用。

法术图标、名称或说明错误

检查icon_name、普通与增幅 Loc Key、typesource_type、额外界面效果和魔法之风分组名称。不要直接覆盖原版 Loc。

角色学会技能后仍没有法术

检查角色技能等级是否连接正确 Effect、Effect 是否连接enableeffect_scope是否作用于角色自身,以及法术requires_effect_enabling和授予分组是否匹配。

AI 不会施法

检查ai_usage、AI 模板组、目标类型、施法距离、载荷、魔法之风消耗和自动战斗字段。复制外观相似但目标机制不同的模板,最容易导致 AI 无法选点。

游戏内验收清单

RPFM 诊断不能验证施法动画、目标选择、总伤害和游戏内术语。至少进行以下检查:

  1. 法术名称、说明、图标、类型和来源显示正确。
  2. 普通版与增幅版可以按预期切换,消耗和失误概率正确。
  3. 魔法之风分组名称、图标、颜色、顺序和页面位置正确。
  4. 自身、友军、敌军、地面、飞行与大型目标的允许和禁止状态正确。
  5. 最小距离、最大目标距离、作用范围和载荷射程互相匹配。
  6. 前摇、施法动作、声音、粒子特效和载荷出现时间同步。
  7. 阶段持续时间、结算频率、实体上限、数值和属性与说明一致。
  8. 投射物、轰击、魔法漩涡、爆炸和阶段没有重复结算伤害。
  9. 增幅版确实使用自己的阶段或载荷,没有意外继续引用普通版共享记录。
  10. 法术失误会在正确条件下发生,并使用正确爆炸或惩罚。
  11. 绑定法术不错误消耗魔法之风,次数和冷却正确。
  12. 角色技能在未学习、普通等级、增幅等级和重置技能后分别表现正确。
  13. AI 能在合理目标和时机施法,自动战斗没有明显异常。
  14. 与其他 Mod 同时加载时,没有法术 Key、分组 Key、unique_id和 Loc Key 冲突。