📖 表说明

法术自定义属性表用于存储法术的额外自定义属性标志。这个表允许开发者在不修改客户端DBC文件的情况下,为法术添加自定义行为和属性。这些自定义属性可以控制法术的特殊行为,例如:是否可以暴击、是否受光环影响、是否触发冷却等。

数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。

官方文档: AzerothCore Wiki - spell_custom_attr

📊 表结构

字段名 数据类型 属性 默认值 描述
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既不能暴击,也没有冷却时间。

🔗 相关表格