📊 OverrideSpellData.dbc
OverrideSpellData.dbc 定义了法术覆盖/替换数据。控制在某些条件下(如天赋、Buff)将一个法术替换为另一个法术,实现法术的动态升级/进化。
📋 字段结构
| 索引 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 0 | ID | uint32 | 覆盖数据唯一标识符 |
| 1-10 | SpellID[10] | uint32 | 被覆盖的法术ID列表(最多10个) |
| 11 | ActionBarSpellID | uint32 | 替换后的法术ID(显示在动作条) |
| 12 | ActionBarSpellID2 | uint32 | 第二个替换法术ID |
📌 关键字段详解
ID - 覆盖配置ID
被 Spell.dbc 的 OverrideSpellDataID 字段引用。当角色满足条件时,SpellID[1-10] 中的法术被替换为 ActionBarSpellID。
SpellID[1-10] - 被替代法术
当角色学习包含此覆盖数据的法术时,列表中所有低级法术将被替代。例如学习高级火球术时自动替换低级版本。
ActionBarSpellID - 替代法术
显示在动作条上替换原法术的新法术ID。如萨满天赋将闪电链 ID X 替换为强化版闪电链 ID Y。
💡 应用场景
| 场景 | 说明 |
|---|---|
| 法术等级替换 | 学习高级火球术(rank 2)时,动作条自动替换 rank 1 |
| 天赋增强 | 萨满天赋将闪电链替换为瞬发闪电链 |
| 形态法术 | 德鲁伊变身后部分法术被形态专属法术替换 |
🔧 使用示例
查询法术覆盖关系
-- 查询会覆盖其他法术的法术
SELECT s.ID AS SpellID, s.Name, osd.ActionBarSpellID AS ReplacesTo
FROM spell_dbc s
JOIN override_spell_data osd ON s.OverrideSpellDataID = osd.ID;💡 使用技巧
- 法术升级:配合 Spell.dbc 的 SpellFamilyName 使用,确保同系法术正确替换。
- 最大10个:每个覆盖组最多替换 10 个法术。
- 双向替换:通常只定义高级替换低级,反向替换需额外配置。
- 参考链接:AzerothCore Wiki - override_spell_data