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

搜索教程

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

输入教程标题开始搜索。

教程目录

法术详解

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

法术复用部队技能的底层框架,但一条能正常施放的法术还要同时处理魔法之风消耗、施法目标、载荷、失误、普通版与增幅版、魔法之风分组,以及法术怎样被人物技能、兵种或 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 添加或压制属性 修改潜行、心理免疫等属性;以实际属性 Key 和官方游戏名称核对。
special_ability_phase_displays_tables及界面效果表 阶段需要特效和说明 负责阶段视觉与玩家看到的额外效果条目。
unit_abilities_to_additional_ui_effects_juncs_tables、special_ability_phases_to_additional_ui_effects_junctions_tables、unit_abilities_additional_ui_effects_tables 法术自身或阶段需要额外说明 前两张分别连接法术 Key 和阶段 Key,最后一张定义说明身份;具体文字另写入 Loc,不在这里修改机制数值。
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

这只是常见结构,不是硬编码规则。特殊装备、派系机制或新版内容可能使用不同次数、冷却和授予方式,应以同类原版为准。

魔法之风

这里要分清资源、法术类型和法术分组:战斗中消耗的是“魔法之风”;类型 Key wh_type_wind在游戏里也显示“魔法之风”,用于一种沿地面移动的法术类型;而special_ability_groups_tables中的wh_main_lore_fire,官方名称是“火焰系法术”。它们不是同一张表,也不是同一种数值。下文说“魔法之风分组”时指法术列表的组织关系,具体分组仍写官方名称,例如“火焰系法术”,不把英文lore机翻成新的游戏术语。

怎样选择原版法术模板

不要只看名称、颜色和伤害数字。模板应按施法机制选择。

目标法术 优先比较的原版模板
单体魔法射击 同样以敌军为目标、从施法者发射制导或非制导弹丸的法术。
地面直线吹息 同样允许地面目标、方向选择和相似施法距离的吹息法术。
移动风类法术 同样使用移动区域载荷、宽度、速度和方向控制的原版法术。
原地魔法漩涡 同样使用battle_vortexs_tables、持续时间和移动规则相近的法术。
头顶轰击 同样使用projectile_bombardments_tables、落点分布和预警时间相近的法术。
单体增益或妖法 同样以单位为目标、阶段数量和数值类型相近的法术。
范围增益或妖法 同样允许地面或单位目标、影响人数和目标刷新方式相近的法术。
直接伤害或持续治疗 同样使用阶段生命变化频率、实体上限和持续时间的法术。
召唤 同样的生成类型、持续方式、单位许可和 AI 用法。
绑定法术 同样不消耗魔法之风、次数和冷却接近的绑定法术。

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

八个可以直接复制研究的入口

在unit_abilities_tables.key按完整 Key 筛选,再以相同 Key 打开unit_special_abilities_tables。名称已按相同 Loc Key 对照官方英文、繁体中文和简体中文;下表显示简中名称。八条均为source_type=spell,各自的增幅入口均为本 Key 后加_upgraded,复制时分别保留两版实际数据。

官方名称 普通法术 Key 原版类型 首先追踪的运行载荷
火球术 wh_main_spell_fire_fireball wh_type_magic_missile activated_projectile=wh_main_spell_fire_fireball
鲁因火焰剑 wh_main_spell_fire_flaming_sword_of_rhuin wh_type_area_of_augments 阶段连接及阶段效果
大地之血 wh_dlc05_spell_life_earth_blood wh_type_area_of_regeneration 阶段连接及阶段效果
灵魂榨取 wh_main_spell_death_spirit_leech wh_type_direct_damage 阶段连接及阶段效果
尤瑞诺闪电箭 wh_main_spell_heavens_urannons_thunderbolt wh_type_bombardment bombardment=wh3_dlc27_spell_heavens_urannons_thunderbolt_v2
幽暗深渊 wh_dlc05_spell_shadow_pit_of_shades wh_type_vortex vortex=wh_dlc05_spell_shadow_pit_of_shades
烈焰之颅 wh_main_spell_fire_the_burning_head wh_type_wind vortex=wh_main_spell_fire_the_burning_head
驱役亡灵 wh_main_spell_vampires_raise_dead wh_type_summon_unit spawned_unit=wh_main_vmp_inf_zombie_summoned

绑定法术可先在unit_abilities_tables按source_type=bound筛选,再用上述普通法术 Key 的核心名称缩小结果;随后比较mana_cost、num_uses和授予入口。把source_type从spell改为bound只改分类,不能代替清除魔法之风消耗、配置次数和接入授予对象。

自行查找数据

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

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

安全复制法术

原版记录统一从依赖项 → 游戏文件查找,打开后核对Game-RO:只读页签和原版data__子表。游戏文件缓存中如果混有其他 Mod 的子表,不能仅凭Game-RO:认定它来自 CA;通过“转到定义”跳转后也要重新确认来源,并清除目标页签遗留的无关筛选。不要从Assembly Kit 文件导入、复制或编辑表单,也不要把其中的记录当作游戏引用来源。在自己的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_abilities、twcn_tutorial_unit_special_abilities等清楚的子表名。

完全复用某个原版投射物、轰击、魔法漩涡、音频或特效时,可以继续引用原版 Key。只有需要修改该资源,或必须避免影响其他引用者时,才复制子记录。

法术的界面定义:unit_abilities_tables

法术记录、图标和普通版到增幅版的连接

截图中可以看到多组普通法术和带_upgraded后缀的增幅记录;普通版的Overpower Option指向对应增幅版。后缀只是原版命名习惯,真正的连接仍由字段决定。

字段 法术中的作用
key 法术唯一 Key。普通版和增幅版必须是两条不同记录。
requires_effect_enabling 是否需要 Effect 启用。由人物技能解锁的普通法术通常会使用此机制。
onscreen_name(本地化,不是 Pack DB 列) 在 Loc 中建立unit_abilities_onscreen_name_法术Key,填写法术名称,不要在这张 DB 表里找这一列。
tooltip_text(本地化,不是 Pack DB 列) 在 Loc 中建立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 法术替代集合。只有模板使用升级替代关系时才复制。

技能类型完整对照

type引用unit_ability_types_tables.key。下面是当前原版全部 30 项及其官方简中显示名称,可直接按所需效果查 Key;分类名称不会代替投射物、阶段或召唤等实际载荷。先选一个同类型、同目标方式的原版技能,再复制其完整运行规则。

type 官方简中名称
wh_type_area_of_augments 增益(区域)
wh_type_area_of_augments_of_the_winds 魔法之风强化(区域)
wh_type_area_of_direct_damage 直接伤害(区域)
wh_type_area_of_hexes 妖法(区域)
wh_type_area_of_regeneration 重生(区域)
wh_type_area_of_ward_save 特殊保护(区域)
wh_type_area_of_ward_save_hex 特殊保护妖法(区域)
wh_type_augment 增益
wh_type_augment_of_the_winds 魔法之风强化
wh_type_bombardment 轰击
wh_type_breath 吹息
wh_type_chain_augment 链式增益
wh_type_chain_direct_damage 链式直接伤害
wh_type_chain_hex 链式妖术
wh_type_chain_regeneration 链式重生
wh_type_direct_damage 直接伤害
wh_type_explosion 爆炸
wh_type_formation 阵型
wh_type_hex 妖法
wh_type_hex_of_the_winds 魔法之风妖法
wh_type_hiding 隐蔽
wh_type_magic_missile 魔法射击
wh_type_magic_missiles 魔法射击
wh_type_regeneration 重生
wh_type_summon_unit 召唤部队
wh_type_transform 变形
wh_type_vortex 魔法漩涡
wh_type_ward_save 特殊保护
wh_type_ward_save_hex 特殊保护妖法
wh_type_wind 魔法之风

wh_type_magic_missile与wh_type_magic_missiles的官方显示名相同,选择时仍要区分单个模板的载荷和发射方式。wh_type_wind在这一类型表中显示为“魔法之风”,这里指技能类型,不能与魔法之风资源或法术分组混为同一个字段。

普通版与增幅版的 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对应。

火球术的持续时间、冷却、次数与阶段作用范围

截图最后两行是标准“火球术”和“高级火球术”;上面的特殊人物、召唤和绑定版本只是筛选时一并命中的记录,不能把它们混成同一法术。标准两行的冷却为29、次数为-1;这里的-1表示不按有限次数使用,并不是冷却也无限。

魔法之风、失误、冷却和施法时间

字段 含义与使用要点
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,并连接失误爆炸。这个例子只说明普通版和增幅版可以分别配置,不是所有法术都应照抄这些数值。

火球术两版的前摇、唯一标识和魔法之风消耗

火球术两版的失误概率、爆炸和AI模板

横向滚动后 Key 列暂时离开画面,可用左侧原始行号2768、2769对照前图的标准两版。行号只帮助识别这次截图,游戏更新后可能变化,实际查找始终使用 Key。创建新法术时还要替换unique_id,不能因为沿用原版动作而把原版数值标识也复制给新记录。

目标与范围

火球术的投射物引用、敌军目标与施法距离

标准两版允许选择敌军,不允许选择地面,目标距离均为300,但分别引用普通与高级投射物。前图中阶段可影响的敌军部队数量为0,不代表弹丸无法伤害敌军:这条法术主要通过投射物产生效果,阶段可影响的部队、光标允许选取的目标和弹丸碰撞各有控制条件。

字段 含义与使用要点
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。轰击记录再决定生成哪些投射物、数量、分布、高度、延迟和落点。法术本体负责目标、魔法之风和施放;轰击链负责真正落下什么。

先区分标准法术与引用相同资源的特殊版本

下面的运行表对照同时筛选穿刺焰矢与烈焰风暴,因此包含特殊和绑定版本。当前截图后四行才是标准的两组普通/高级法术,行号分别为2770、2771、2774、2775;行号只是本次查看定位,不是要填写的 Key。查看自己的版本时以完整 Key 为准。

运行表的Bombardment连接轰击载荷

标准穿刺焰矢的最后两行在bombardment中分别填写普通与高级载荷,前摇均为5,施法动作均为cast_up_long,魔法之风消耗分别为10与16。这些字段各司其职:提高消耗不会自动增加弹丸,修改动作名称也不会创建轰击。

穿刺焰矢的弹丸数量与散布

主案例使用“穿刺焰矢”和“高级穿刺焰矢”。筛选piercing_bolts_of_burning时,截图还命中一条共用相关资源的其他记录;真正的两版载荷是后两行wh_main_spell_fire_piercing_bolts_of_burning及其_upgraded版。任意列搜索不是只搜 Key,复制前一定看清左列。

字段 含义与使用要点
bombardment_key 轰击载荷唯一 Key。法术运行表的bombardment引用它,不是直接引用弹丸。
projectile_type 实际生成的projectiles_tables记录,弹丸的直击、爆炸、破片还要往下追。
num_projectiles 此轰击生成的投射物数量。不是目标部队数,也不是每枚伤害。
arrival_window 投射物生成所分布的时间窗口;与最早生成时间一起阅读。不能把它直接当成弹丸飞行时间。
start_time 载荷开始后最早生成投射物的时间。前面还可能有法术前摇,不能简单当成点击后立即开始倒数的唯一延迟。
radius_spread 相对于目标中心的落点散布半径,不是每枚弹丸的爆炸半径。
launch_source 生成位置模式,引用原版枚举定义,例如本例的above_target。其他模板也可以从施法者实体或其他位置生成,不限于天空轰击。
launch_vfx 生成时使用的特效引用,不决定伤害。
launch_height 常规战场生成高度。高度会与弹丸速度共同影响玩家看到的落下过程。
launch_height_underground 地下战场使用的生成高度,不应因为普通地图测试正常便忽略。
audio_type 轰击声音定义,继续查看audio_projectile_bombardments_tables。
randomise_launch 随机化生成的开关。按同类原版模板配置,不把它理解成“勾选就会随机选择一种法术”。
deterministic_launch_cadence 采用固定生成节奏的开关,和随机化生成不是同一个字段。当前原版表中两版均未勾选。

两版都是arrival_window=3、start_time=2、launch_source=above_target,但普通版num_projectiles=30、radius_spread=8,高级版分别为60与16,并引用各自的投射物。这不能简化为“高级版伤害翻倍”:落点区域也扩大了,同一敌军实际吃到多少弹丸,取决于队形、移动和每枚弹丸的爆炸等设置。

穿刺焰矢的生成高度与视觉声音

向右看,两版共用wh3_dlc23_bolts_of_burning生成特效,常规高度为150、地下高度为75,并勾选randomise_launch。这些是当前原版案例值,不是所有轰击都必须照抄的规定。

制作自己的轰击时按这条顺序接线:

  1. 在自建 Pack 复制同类轰击记录,把bombardment_key改成独立 Key。
  2. 如果只改变数量、时间或散布,保留已有projectile_type;如果改变弹丸本身,则复制投射物及需要独立修改的爆炸等子记录,并改好引用。
  3. 在新法术的unit_special_abilities_tables.bombardment填入新轰击 Key,不是填新投射物 Key。
  4. 核对允许的目标、地面选点、目标距离、前摇、范围指示和声音。范围圈只是显示,不能代替实际散布与爆炸半径。
  5. 分别在常规与地下战场检查第一枚出现时间、最后一枚落下时间、散布、伤害、友军影响及特效收尾。本文没有把 DB 检查当成这些游戏内测试已经通过。

轰击生成位置的全部定义

projectile_bombardment_launch_sources_tables提供六个 Key;下列中文解释依据定义表说明,属于技术说明。

launch_source 生成位置或方式 当前轰击记录使用情况
above_activater 尝试在施放者上方生成。Key 中activater按原拼写保留。 未找到使用记录。
above_target 尝试在目标上方生成。 有,适合从上空轰击的模板。
activaters_entities 从施放者的实体生成;定义说明会忽略普通弹丸数量参数。 有,不能照搬天空轰击的数量配置。
at_target 在目标附近、稍高于目标的位置生成。 有。
launch_and_explode 直接产生爆炸。 有。
off_map 按投射物射程朝部署区域方向偏移生成位置。 有。

实际显示还受launch_height、地下战斗高度、粒子效果和投射物控制。没有施放者的生成入口不能直接套用依赖施放者实体的模式。

魔法漩涡、风类和部分吹息

vortex指向battle_vortexs_tables。这条链控制区域载荷的持续时间、移动、碰撞、影响范围、伤害和特效。游戏界面类型为“吹息”或“魔法漩涡”,不保证底层只使用某一种表;以原版引用为准。也不要把阶段表的hp_change_frequency套到这张表上,它们不是同一个结算分支。

运行表通过Vortex引用区域载荷

同一组运行记录中,标准烈焰风暴的2770、2771两行通过vortex引用各自载荷。左侧范围指示与右侧实际载荷是不同字段;只复制范围指示会让玩家看到选点圈,却不会自动生成烈焰风暴。

烈焰风暴两版的伤害和持续时间

主案例是“烈焰风暴”与“高级烈焰风暴”,两条载荷 Key 为wh_main_spell_fire_flame_storm及其_upgraded版。这张表也服务于其他区域效果,不是每一行都对应玩家法术;选择模板时要看生成、移动和目标机制,不能只搜颜色相近的名称。

伤害、持续时间和附带状态:

字段 含义与使用要点
vortex_key 区域载荷唯一 Key,法术运行表的vortex引用它。
damage 基础伤害参数。Schema 说明伤害会向区域边缘衰减,不能把这个数字当成整场法术的固定总伤害。
damage_ap 破甲伤害参数,和基础伤害分别设置。
duration 载荷持续秒数,不等于阶段持续时间,也不等于法术冷却。
contact_effect 命中实体时向其部队附加的阶段 Key。若只改载荷伤害,不必克隆不变的接触阶段;若要改附带状态,则复制阶段并改引用。
ignition_amount 大于零时带有火焰伤害性质。不是额外增加同值伤害。
is_magical 魔法攻击性质,不自动提供火焰伤害或破甲伤害。
is_spell 此伤害是否受法术抗性影响,和is_magical是独立字段。
affects_allies、affects_enemies 载荷是否影响友军、敌军,不能只检查法术选点时允许选谁。

当前原版普通版damage=11、damage_ap=6、duration=27,高级版为16、6、54。高级版既调整基础伤害,也延长存在时间,但破甲部分没有跟着翻倍。实际总伤害还受目标在区域内停留多久、区域移动、伤害衰减及抗性等影响,本教程没有用字段相乘冒充实测总伤害。

漩涡的范围扩张和移动规则

形状、半径和移动:

字段 含义与使用要点
shape 区域形状,例如本例的circle。其他形状要沿用同类原版的尺寸组合。
start_radius、goal_radius 初始半径与最终半径,单位为米。不是直径,也不是法术施放距离。
expansion_speed 每秒扩张速度;还与detonation_force共同参与冲击动量。负值可产生向中心拉动的情况,Schema 要求此时起始与最终半径相同;不是“负数会自动成为另一种法术”。
infinite_height 勾选时使用无限高度柱状体而不是球状体。仍需结合目标限制与其他空间设置测试飞行、平台等对象。
start_height、goal_height shape=rectangle时使用的形状尺寸参数。不是生成点离地高度;圆形案例的值不能当作矩形模板。
height_off_ground 区域中心离地高度。普通贴地案例通常为0。
movement_speed 中心移动速度,米/秒;0表示中心保持不动,不代表取消伤害或停止范围扩张。
move_change_freq 移动方向改变的时间间隔,单位是秒,不是“每秒改变几次”。
change_max_angle 随机改变方向的最大角度,最大360;0表示不改变方向。
follow_target 勾选时按movement_speed跟随目标单位,并忽略其他移动属性。不能同时假设随机游走参数仍按原方式生效。

两版烈焰风暴都是初始半径1、最终半径10、扩张速度20、中心移动速度2、改向间隔1、最大改向角360,并勾选infinite_height。想制作原地持续区域可从同类静止模板入手;想制作沿直线移动的法术,要对照原版同类的方向、生成点与形状,而不是只把烈焰风暴改向角设为零便宣布完成。

漩涡生成位置、碰撞与视觉资源

生成、碰撞和表现:

字段 含义与使用要点
launch_source 生成位置模式。本例为target_centre,其他模板可能使用target_near_edge、activator_front等,必须从实际枚举选择。
launch_source_offset 为 AI 的吹息、风类选点提供偏移参数,不是任意模型位移。
delay 载荷生成后等待多久才开始造成伤害、移动和碰撞等;不能直接等同于“特效也晚这么久生成”。
num_vortexes 生成多少个区域载荷,不是伤害结算次数。
delay_between_vortexes 多个载荷之间的生成间隔。不要照旧注释认定永远每秒一个。
detonation_force 冲击力度,与扩张速度一起影响击退、击倒等表现,不是生命伤害值。
building_collision 区域中心遇到建筑时的处理类型,完整两项为1.ignore与2.expire;第一项的定义说明与 Schema 注释存在冲突,见下文。
launch_vfx 生成时的特效引用,可与持续视觉资源分开。
composite_scene 区域使用的 Composite Scene 资源,可以包含特效和声音。修改路径不会自动创建资源。
composite_scene_blood 血腥表现对应资源,沿同类原版处理。
composite_scene_group 通过场景组组织多个 Composite Scene;需继续追踪组内资源,不是法术分组表。

battle_vortex_launch_sources_tables只有三个定义,当前原版均有使用:activator_front在施放者前方,target_centre在指定目标位置,target_near_edge在指定区域靠近施放者的一侧边缘。不存在本教程可供选用的target_near_centre定义。shape当前使用circle与rectangle;选择矩形还要配置对应长宽,不能只换形状名称。

battle_vortex_collision_responses_tables完整定义为1.ignore与2.expire。2.expire的定义说明是在碰撞时结束;1.ignore的定义说明是忽略建筑继续移动,但 RPFM Schema 注释将同一值解释为反向反弹。两份只读资料存在冲突,本教程保留原版1.ignore,不将穿过或反弹当作已验证表现。需要改变建筑碰撞时,直接以同一法术对照两值,在同一建筑位置验收。

烈焰风暴两版各自引用flame_storm.csc与flame_storm_upgraded.csc,生成点为target_centre、冲击力度500。数值修改不会自动重做这两个视觉资源,尤其扩大范围或延长时间后,应检查视觉大小、声音和结束时刻是否仍与伤害区域一致。

漩涡生成数量及友军开关

两版的delay=0、num_vortexes=1,并勾选affects_allies。法术允许玩家选择地面,并不意味着伤害只打敌军;友军伤害必须到载荷这一层核对。composite_scene_group为空,也不能得出没有视觉效果的结论,因为前面的composite_scene已有资源引用。

漩涡形状、法术标记与目标跟随

两版勾选is_spell与affects_enemies,形状为circle,没有勾选follow_target。因此本例不能当作持续追踪目标的模板;需要追踪时要同时考虑移动速度、目标能否失效及 AI 使用方式。

制作新区域载荷时,先复制并重命名vortex_key,只克隆需要改变的接触阶段或表现引用,再把新法术运行记录的vortex改指新载荷。分别测试选点、移动路径、边缘伤害、友军、建筑碰撞、飞行单位、持续时间和结束清理。仅把法术type改成“魔法漩涡”,不会自动建立这些连接。

增益、妖法、直接伤害和治疗

这些法术常由阶段直接完成数值、属性或生命变化。它们也可以附带显示、音频、接触效果或其他载荷。

召唤和变身

spawn_type在当前unit_special_abilities_tables中的非空值为unit_position和unit_position_offset。它们用于生成位置配置,不能仅凭名称推导偏移距离;在spawn_type列筛选后,连同spawned_unit、生成朝向、动作和生命处理一起比较,普通法术没有生成部队时保留空值。

这类法术不是把普通伤害数值换成一个单位名称,而是由运行记录选择生成的陆战单位,并决定它与施法者是什么关系。以下列都位于unit_special_abilities_tables,不是main_units_tables:

字段 应怎样理解和检查
spawned_unit 生成目标,引用land_units_tables.key。不要填写主单位 Key、模型路径或中文兵种名。
spawn_type 引用special_ability_spawn_types_tables.key,选择生成方式;先从同类原版法术追踪,不要凭英文名称自造值。
spawn_is_transformation 描述生成新单位时是否替换施法者,区分“额外召唤一支部队”和“施法者变成另一种形态”。
spawn_is_decoy 表示生成的是施法者的诱饵副本,界面可使用原施法者的数据;它不是普通召唤必勾的开关。
spawn_shares_health_and_fatigue 控制变身单位与原施法者是否共享生命和疲劳状态。不是给新单位回满生命,也不是随意填写生命值的列。
can_be_copied_to_transformation_unit 决定这项技能是否可以复制到相关变身单位;不是决定模型能否完成变形。

选择模板时先分清目标是普通召唤、替换形态还是诱饵。用游戏中的法术名称找到 Loc 和技能 Key,再在unit_special_abilities_tables中对比上述列,沿spawned_unit追到陆战记录,沿spawn_type追到生成方式;如果目标是自己制作的新部队,必须先把它的单位数据、实体、模型和动作配齐。

普通召唤不应照搬变身的生命共享开关,变身也不能只照搬普通召唤的施法动作。还要对照同类模板检查阶段中的持续、召唤后限制、结束处理以及相关许可。自定义战斗能选到某部队,与该部队能否被特定法术正确生成,是两件需要分别验证的事。

上述字段关系可在当前 Schema 中核对,但不同原版机制的生成和回收行为不能只凭列名断言。完成后在游戏里检查生成数量与位置、所属玩家、寻路、兵牌、动作、剩余生命、疲劳、法术结束和施法者死亡时的处理。不能只看到模型出现,就认为召唤或变身已经完整实现。

法术与阶段的连接

special_ability_to_special_ability_phase_junctions_tables包含:

字段 含义
special_ability 普通版或增幅版法术 Key,直接引用unit_abilities_tables.key,与对应运行记录使用同一个值。
phase 阶段 Key。
order 多阶段顺序。
target_self 阶段作用于施法者。
target_friends 阶段作用于友军。
target_enemies 阶段作用于敌军。

普通版和增幅版可以共用阶段,但这会让两者同步变化。需要不同持续时间、数值或显示时,应复制成两个阶段 Key,再分别连接。

尼科之咒两版与各自治疗阶段的连接

“尼科之咒”和“高级尼科之咒”的标准两行分别连接同名阶段,允许阶段作用于自身和友军,不作用于敌军。其他特殊版本可能共用标准阶段,所以改原版共享阶段前必须查找引用;新法术需要独立治疗强度时,应复制阶段并改连接,而不是改所有使用者共用的那一行。

多阶段法术不一定按“第一阶段结束后才进入第二阶段”这么简单。order、持续时间、目标和引擎处理会共同决定表现;复制模板时保留完整记录,并通过实战观察每个阶段的出现和移除时机。

法术阶段详解

持续时间、正负面和动作控制

法术阶段的持续时间、正负面和基础控制

字段 含义与使用要点
id 阶段唯一 Key。
duration 阶段持续秒数。应与法术持续时间和界面说明一致。
effect_type 阶段的正面或负面分类,影响界面表达;不会自动替你改变数值正负,也不是属性连接表的attribute_type。
requested_stance 阶段期间请求的动作姿态。
cant_move 阶段期间不能接收普通移动或攻击命令。
freeze_fatigue 阶段期间将体力保持为“精神饱满”(疲劳数值为0),不会把已经疲劳的状态原样锁住。
fatigue_change_ratio 按比例改变疲劳。
inspiration_aura_range_mod 修改激励光环范围。
ability_recharge_change 修改目标的技能冷却。

伤害、治疗、复活和魔法之风

法术阶段的伤害、治疗、复活与魔法之风字段

字段 含义与使用要点
hp_change_frequency 每隔多少秒结算一次生命变化。
damage_amount 每个受影响实体、每次结算的伤害量。
heal_amount 《战锤 III》的生命恢复比例参数,不能把旧 Schema 中“总治疗量”的注释理解成固定生命点。当前标准尼科之咒两版均为0.008,按比例为0.8%;同时查看生命变化间隔、持续时间和治疗上限。不是每个士兵固定恢复0.008点。
max_damaged_entities 每次最多影响多少实体。负值常表示不使用普通上限,但要按模板验证。
resurrect 过量治疗能否复活阵亡士兵。
mana_regen_mod 每秒改变魔法之风恢复。
mana_max_depletion_mod 修改魔法之风系统的最大耗竭参数。Schema 没有给出它在当前游戏中的完整结算关系,不能直接当作法术消耗或储量上限;沿用同类原版模板并实测。
imbue_magical 赋予魔法攻击。
imbue_ignition 赋予火焰攻击相关状态。

直接伤害和治疗法术必须同时考虑单位人数。每实体伤害、实体上限、结算频率和持续时间会共同决定总效果;不能只看damage_amount一个数字。

这次截图中标准尼科之咒两版持续18秒,生命变化间隔1秒,勾选resurrect,damage_amount=0。两版的阶段治疗参数相同并不代表高级版没有变化,还要回到运行表比较作用半径、目标数量和魔法之风消耗。实际总回复还受治疗上限、剩余实体、修正效果和结算时机影响,不能仅凭18 × 0.8%承诺实战一定回复多少;本轮未运行游戏验证边界帧和实体分配。

接触效果、显示、音频和作用对象

法术阶段的接触效果、显示、音频与作用对象

字段 含义与使用要点
imbue_contact 让目标攻击临时附带另一个接触阶段。
phase_display 连接阶段显示效果。
phase_audio 阶段音频。
is_hidden_in_ui 隐藏阶段的界面条目,不会关闭效果。
affects_allies 阶段标记为影响友军。
affects_enemies 阶段标记为影响敌军。

原版尼科之咒阶段里的affects_allies和affects_enemies都勾选,但前面的阶段连接明确不选择敌军。这正说明这些字段不能机械地设成一模一样,更不能只看阶段表便断言该治疗法术会治疗敌军。保持所选原版链完整,改目标时同时核对运行表、阶段连接和排除条件,再在游戏中测试。

弹药、传播和冷却控制

法术阶段的弹药、传播和冷却控制

字段 含义与使用要点
replenish_ammo 按最大弹药比例恢复或消耗弹药。
composite_scene_group 阶段开始时触发复合场景。
spreading 连接传播规则。
freeze_recharge 阶段期间暂停目标技能的冷却计时。

治疗、移除魔法攻击和斩杀

法术阶段末尾的治疗、移除魔法攻击和斩杀阈值

字段 含义与使用要点
heal_amount 前面生命变化章节解释的同一个治疗量字段,实际位于当前表右侧,不是第二个需要重复填写的治疗量。
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 点。

一个阶段可以有多行数值效果。截图里的“灵魂枯萎”和“高级灵魂枯萎”各有三行:stat_armour=-30 add降低 30 点护甲强度,stat_melee_damage_ap=0.75 mult和stat_melee_damage_base=0.75 mult分别把破甲武器杀伤与基础武器杀伤乘以 0.75。这里不是“减少 0.75 点”,也不是“增加 75%”。

两版这三项数值恰好相同,所以不能把“高级版”理解成每项减益都翻倍;差异还可能在目标、范围、持续时间等位置。自定义高级版若要把护甲减益改成-60 add,应只修改新高级阶段的对应行;如果两版共用一个阶段,修改阶段会同时改变两者。

法术阶段属性效果

special_ability_phase_attribute_effects_tables使用:

字段 含义
phase 阶段 Key。
attribute unit_attributes_tables中的引擎属性。
attribute_type positive通常添加,negative通常压制。

属性与数值是两套机制。想临时赋予潜行,应使用属性效果;想提高远程抗性,应使用阶段数值效果。不要根据游戏说明文字猜表单。

截图中的“征战之光”和“高级征战之光”使用unbreakable,官方名称为“永不战败”,并用positive赋予属性。这里的正负表示“获得还是压制该属性”,不是对玩家有利还是有害;例如赋予silenced(沉默)也可以是positive,不能因沉默是负面状态便填成negative。阶段的effect_type与这里的attribute_type不要混淆。

阶段显示和额外说明

法术阶段的旗帜、激活特效和实体特效

法术阶段的特效挂点和缩放方式

special_ability_phase_displays_tables负责旗帜底部特效(banner_vfx)、激活特效(active_vfx)、实体特效(entity_vfx)、挂接方式和缩放方式。它只控制表现,不提供伤害或属性。

尼科之咒的普通与高级阶段共用wh_main_spell_vampires_invocation_of_nehek显示记录:active_vfx为空,banner_vfx=wh_main_generic_banner_buff,entity_vfx=wh_main_generic_entity_hp_regen,挂接类型为top,并启用use_new_vfx_scaling。没有填写active_vfx不代表没有特效,因为旗帜与实体分支仍有引用。复制新显示记录后,还要把新阶段的phase_display改到新 Key;只建显示记录而不连接不会自动生效。

尼科之咒法术自身连接额外说明

额外说明有两种入口,不能把它们混成一张表。法术按钮自身的说明使用:

unit_abilities_tables.key
    ↓ ability
unit_abilities_to_additional_ui_effects_juncs_tables
    ↓ effect
unit_abilities_additional_ui_effects_tables.key

截图中标准尼科之咒连接三条说明,高级版连接四条,多出wh_main_spell_upgraded_added_effect_range(效果范围扩大)。左列是法术 Key,右列是额外说明 Key;不是治疗量,也不是战役effects_tables中的 Effect。要给新法术添加一条说明,在自己的连接表新增ability=新法术Key、effect=说明Key,并保证这两个值的组合不重复。

如果是某个阶段生效后才需要补充说明,另一条入口是:

special_ability_phases_tables
    ↓
special_ability_phases_to_additional_ui_effects_junctions_tables
    ↓
unit_abilities_additional_ui_effects_tables

这条链负责补充需要单独说明的界面文字,不是所有“近战攻击”“护甲”等自动数值提示都必须走这条链。额外说明的定义只保存 Key、排序和显示状态,文字在 Loc 中,Key 格式为unit_abilities_additional_ui_effects_localised_text_说明Key。它不会替代阶段实际效果;修改机制后要核对说明是否仍然准确。

效果范围扩大这条说明的定义

原版wh_main_spell_upgraded_added_effect_range的sort_order=1、effect_state=magic,对应 Loc 文本是“效果范围扩大”。这些值只负责提示的排序与样式,不会把范围改成 1,也不会自动给法术增加范围。新说明需要独立 Key、定义行、Loc 和正确的法术或阶段连接;只写一句 Loc 而没有连接,按钮不会凭空找到它。

阶段特效挂接位置速查

special_ability_phase_displays_tables.entity_vfx_attach_type在当前原版中实际使用七项:bottom、bottom_rotated、front、front_rotated、hips、top、top_rotated。它们分别以底部、前方、髋部或顶部作为挂接位置;带_rotated的值采用对应旋转方式,模型朝向仍须实看。

先在同表按已有entity_vfx筛选,比较它搭配的挂接类型与use_new_vfx_scaling。只换同尺寸效果时保留挂接方式;要从脚下光环改为头顶效果,再选择top同类记录作为整体模板。没有实体特效时,不需要为凑齐字段新建粒子 Key。

施法目标和使用限制

无效目标

special_ability_to_invalid_target_flags_tables把法术连接到不能成为目标的状态或类别。例如飞行、地面、大型、生命比例、单位类型或特殊派系属性。

无效使用条件

special_ability_to_invalid_usage_flags_tables在施法者或战场满足某条件时禁止使用,例如正在近战、正在移动、魔法之风不足、没有目标在范围内或其他法术正在施放。

自动关闭

special_ability_to_auto_deactivate_flags_tables用于已经激活的技能在条件出现后自动结束,常见于被动、姿态和特殊持续法术。

法术与无效目标标记的连接

图中编号①是无效目标标记,②是使用该限制的法术。这里的关系表示“遇到这种目标时不可用”,不能把标记名称当作允许目标理解。

尼科之咒的普通与高级版各连接hp_replenish_cap_reached、living_unit和on_a_platform。第一项在官方提示中是“已达到生命恢复上限”;living_unit的对应另一面提示是“亡灵”,不能把它理解成“只要还有生命值就不能治疗”。第三项的官方提示为“位于平台上或下”,不要自行缩写成只禁止某一种城墙目标。

做一种可治疗其他对象的新法术时,复制治疗阶段还不够:还要检查并调整新法术的这些限制连接。只给新 Key 增删连接,不去改全游戏共用的标记定义;删掉一个限制也不表示所有对象都变成合法目标,运行规则和阶段对象设置仍会参与判断。

这些连接引用special_ability_invalid_usage_flags_tables.flag_key。原版 Key 经常包含not、no、above、below等词,而连接表本身又代表“无效”,容易形成双重否定。不要凭英文名称直接填写,必须读取说明并检查一个实际使用者。

查说明时,在 Loc 搜索special_ability_invalid_usage_flags_flag_description_标记Key和special_ability_invalid_usage_flags_alt_description_标记Key。两条提示常从相反方向描述条件,应结合连接表用途阅读,不能随便选一条当成“允许条件”。

常用条件 Key 与两种提示

条件定义共有 229 项,包含大量特定资源、生命阈值和派系机制。普通技能先使用下面这些已核对的常见项;需要特殊条件时,在special_ability_invalid_usage_flags_tables.flag_key筛选完整 Key,再用同值在目标、使用或自动关闭连接表中查实际使用者。

条件 Key 官方主提示 官方反向提示
flying_currently 飞行时 已落地
flying_unit 飞行部队 地面部队
ground_unit 地面部队 飞行部队
grounded 已落地 飞行时
unit_is_large 兵模体积必须为小 兵模体积为小
unit_is_not_large 兵模体积必须为大 兵模体积为大
on_a_platform 位于平台上或下 不位于平台上或下
moving 移动时 未移动
not_moving 未移动 移动时
engaged_in_melee 陷入近战 脱离近战
out_of_melee 脱离近战 近战时
health_above_50% 生命值高于50% 生命值低于50%
undead_unit 亡灵 存活时

这两列是界面提示,不应直接当成同方向的逻辑表达式。例如在无效目标表中用unit_is_large排除大型目标时,玩家会看到要求小型目标的提示。限制目标用special_ability_to_invalid_target_flags_tables.invalid_target;限制施放者使用条件用special_ability_to_invalid_usage_flags_tables.invalid_usage_flag;要求技能运行中停止用special_ability_to_auto_deactivate_flags_tables.deactivate_flag。三张表都在special_ability填写技能 Key,每个条件各建一行。

原版还定义health_above_10%、health_above_20%、health_above_25%、health_above_50%、health_above_75%等阈值条件。若希望生命值高于一半时不能使用,可从使用条件中的health_above_50%模板开始;先保留一条明确条件验证,不把多个含否定词的条件同时拼进去。

魔法之风分组

special_ability_groups_tables

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

字段 含义与使用要点
ability_group 分组唯一 Key。
name(本地化,不是 Pack DB 列) 分组名称在 Loc 中配置,Key 为special_ability_groups_name_分组Key。面向玩家使用官方游戏名称。
icon_path 分组图标路径。
sort_order 自定义战斗或法术选择界面中的排序,数值较小通常更靠前。
colour_r、colour_g、colour_b 分组界面颜色。当前 RPFM 把这组三通道合并显示为Colour Hex,不是少了三个字段。
button_name 战斗界面分组按钮图片的查找名。
sound_event 分组界面声音事件。
sound_switch 模块化界面音频开关。
is_naval 是否用于海军或海军人物的历史字段。普通陆战法术不要随意勾选。
is_composite_group 分组在界面中的复合分组标记。不能只根据名称认定它必须包含不同种类的法术:原版火焰系高级分组也勾选了它。沿用目标分组模板,并一起检查成员和显示开关。
unique_id 分组唯一数值标识,不能与其他分组冲突。
show_lore_icon 是否在兵牌或战斗界面显示魔法之风图标。
special_edition_mask 特殊版本掩码。没有明确模板时沿用同类原版。

魔法之风分组的Key、图标、排序和界面资源

图中编号①是分组 Key,②是共用的图标路径,③是排序。普通版与高级版分组各有独立记录;截图里的排序分别为4与0,不是法术的学习等级。

法术分组的声音、复合标记和颜色

向右查看这两行:普通分组没有勾选Is Composite Group,高级分组勾选;Show Lore Icon则普通分组勾选、高级分组不勾选。两者共用lore_fire按钮查找名、fire声音开关和D35F12颜色。它们说明分组还承担界面组织工作,不只是一个法术名单;不能把这些开关全改成同一个值。

把法术加入分组

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 启用。

烈焰法师各单位记录连接法术页面

原版烈焰法师的wh_main_emp_cha_wizard_fire_0至_3分别有一条连接,全部指向wh_main_lore_fire,group_page_order=0。这四行不是四个法术,而是四个单位记录使用同一法术页面。制作有不同坐骑或形态的施法者时,逐个检查实际使用的main_units_tables.unit,不要只连步行形态便认为所有形态都齐全;也不要把人物agent_subtype填进unit。

新增连接时先在自己的表里复制对应行,再把unit改成自己的 Main Units Key。复用原版分组时保留ability_group;制作独立法术列表时才新建分组和成员连接,并把这里改指新分组。之后仍要检查每个法术是否需要 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而不可见。复用原版法术时先检查原法术的启用方式,不要只复制拥有者连接。

截图使用末日火术士wh2_dlc10_def_cav_doomfire_warlocks_0。前两行分别连接“弱化毁灭魔矢”wh2_dlc10_spell_bound_lesser_doombolt和“灵魂枯萎”wh2_dlc10_spell_bound_soulblight;后面还有该兵种的其他技能,不能把筛选出的五行都当成法术。冒号后的中文是 RPFM 的查找显示,不是要写入 Key 的内容。

如果只给自己的兵种添加这里的一种已有绑定法术:在自己的连接表复制相应一行,保留ability,把land_unit改成自己的 Land Units Key,然后检查法术本身的目标、次数、冷却、载荷和启用要求。不要顺带复制该兵种的全部派系技能。要改变法术机制时才另建新法术 Key,并把这条连接的ability改指新 Key。

路线二:人物技能解锁

常见链路是:

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。
effect_scope Effect 作用范围。个人法术常参考character_to_character_own等人物自身范围。

人物技能等级连接Effect和作用范围

图中编号①是人物技能 Key,②是 Effect Key,③指向等级、作用范围与数值。这张当前 WH3 表只有五个字段,没有单独的is_factionwide列;不要寻找旧教程中的勾选框,作用对象要查看effect_scope。学会技能后是否获得法术,要沿②继续追到法术 Bonus Value 连接。

截图的两个技能等级共七条效果连接,全部使用character_to_character_own。wh2_main_effect_ability_overcast_fireball在等级 1 和等级 2 都是value=1;等级 2 还列出了高级火球术失误修正,以及普通与高级版各自的消耗修正。这里的level是该人物技能的等级,不是法术版本序号,也不是人物等级。

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 时,在effects_tables新建独立 Key,再复制这里所需的操作连接,把effect改成新 Effect,把unit_ability改成新普通法术 Key。若设计为先学普通版、再学高级版,就分别建立只含enable和只含enable_overchage的 Effect,再让人物技能相应等级授予;不能复用图中这个同时启用两者的 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_uses和recharge_time控制。
  4. 按模板保留或清除失误设置;不要仅凭“绑定法术不会失误”删除特殊机制。
  5. 复制实际阶段或载荷。
  6. 通过兵种、装备、Effect 或其他符合设计的来源授予。
  7. 检查游戏界面显示为“绑定法术”,而不是普通法术或主动技能。

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

常见故障

法术完全不出现

依次检查:

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

普通版出现但不能增幅

检查普通版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 诊断不能验证施法动画、目标选择、总伤害和游戏内术语。至少进行以下检查:

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

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