📖 表说明
法术自定义属性表用于存储法术的额外自定义属性标志。这个表允许开发者在不修改客户端DBC文件的情况下,为法术添加自定义行为和属性。这些自定义属性可以控制法术的特殊行为,例如:是否可以暴击、是否受光环影响、是否触发冷却等。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 属性 | 键 | 默认值 | 描述 |
|---|---|---|---|---|---|
| spell_id | int UNSIGNED | 不为空 | 主键 | 0 | 法术ID |
| attributes | int UNSIGNED | 不为空 | 0 | 自定义属性标志 |
主键: spell_id
表注释: SpellInfo custom attributes
🔑 核心字段详解
🆔 spell_id - 法术ID
详细说明:法术的ID,对应Spell.dbc文件中的法术记录。
取值范围:对应Spell.dbc中的法术ID
- 主键字段,标识法术
- 对应Spell.dbc中的法术ID
- 用于定义法术的自定义属性
- 每个法术只能有一条记录
示例:
- spell_id=12345 - 特定法术
⚙️ attributes - 自定义属性标志
详细说明:法术的自定义属性标志,使用位掩码存储多个属性。
取值范围:位掩码值(整数)
- 使用位掩码组合多个自定义属性
- 每个位代表一个特定的自定义属性
- 可以同时设置多个属性
- 具体属性值参考官方文档
常见属性值:
- SPELL_ATTR_CANT_CRIT=0x00000001 - 不能暴击
- SPELL_ATTR_NO_AURA_EFFECT=0x00000002 - 不受光环影响
- SPELL_ATTR_NO_COOLDOWN=0x00000004 - 无冷却时间
💡 实际案例
自定义 禁止暴击的法术
设置法术不能产生暴击效果
-- 禁止暴击的法术
DELETE FROM spell_custom_attr WHERE spell_id = 12345;
INSERT INTO spell_custom_attr VALUES
(12345, 0x00000001);
效果: 法术12345不能产生暴击效果。
自定义 无冷却时间的法术
设置法术没有冷却时间限制
-- 无冷却时间的法术
DELETE FROM spell_custom_attr WHERE spell_id = 67890;
INSERT INTO spell_custom_attr VALUES
(67890, 0x00000004);
效果: 法术67890没有冷却时间,可以连续施放。
自定义 组合多个属性
同时设置多个自定义属性
-- 组合多个属性:不能暴击 + 无冷却时间
DELETE FROM spell_custom_attr WHERE spell_id = 11111;
INSERT INTO spell_custom_attr VALUES
(11111, 0x00000005); -- 0x01 + 0x04 = 0x05
效果: 法术11111既不能暴击,也没有冷却时间。
🔗 相关表格
- spell_dbc - 法术数据表
- spell_proc - 法术触发表