spell_custom_attr表

概述

spell_custom_attr表是AzerothCore中用于存储法术自定义属性的表格。它允许服务器管理员为特定法术添加额外的属性标志,这些属性不在原始DBC文件中定义,但对于服务器的特定需求和功能实现非常重要。

表格作用

表格结构

字段名 数据类型 默认值 说明
spell_id INT UNSIGNED 0 法术ID
attributes INT UNSIGNED 0 自定义属性掩码

字段详细说明

spell_id (法术ID)

要设置自定义属性的法术ID,对应Spell.dbc或spell_template表中的法术ID。

attributes (自定义属性掩码)

使用位掩码表示的自定义属性集合。每个位代表一个特定的属性或行为。

自定义属性详解

常用自定义属性

位值 属性名称 说明
0x00000001 SPELL_ATTR0_CU_ENCHANT_PROC 附魔触发
0x00000002 SPELL_ATTR0_CU_CONE_BACK 背后锥形范围
0x00000004 SPELL_ATTR0_CU_CONE_LINE 直线锥形范围
0x00000008 SPELL_ATTR0_CU_SHARE_DAMAGE 分担伤害
0x00000010 SPELL_ATTR0_CU_NO_INITIAL_THREAT 无初始仇恨
0x00000020 SPELL_ATTR0_CU_AURA_CC 光环控制效果
0x00000040 SPELL_ATTR0_CU_DIRECT_DAMAGE 直接伤害
0x00000080 SPELL_ATTR0_CU_CHARGE 冲锋技能
0x00000100 SPELL_ATTR0_CU_PICKPOCKET 偷窃技能
0x00000200 SPELL_ATTR0_CU_NEGATIVE_EFF0 负面效果0
0x00000400 SPELL_ATTR0_CU_NEGATIVE_EFF1 负面效果1
0x00000800 SPELL_ATTR0_CU_NEGATIVE_EFF2 负面效果2
0x00001000 SPELL_ATTR0_CU_IGNORE_ARMOR 忽略护甲
0x00002000 SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER 需要目标面向施法者
0x00004000 SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET 需要施法者在目标背后
0x00008000 SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET 允许飞行中目标
0x00010000 SPELL_ATTR0_CU_NEEDS_AMMO_DATA 需要弹药数据
0x00020000 SPELL_ATTR0_CU_BINARY_SPELL 二元法术
0x00040000 SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC 物理+魔法学派
0x00080000 SPELL_ATTR0_CU_LIQUID_AURA 液体光环
0x00100000 SPELL_ATTR0_CU_WATER_SPELL 水中法术
0x00200000 SPELL_ATTR0_CU_IS_TALENT 是天赋
0x00400000 SPELL_ATTR0_CU_DONT_DISPLAY_RANGE 不显示距离
0x00800000 SPELL_ATTR0_CU_NOT_ON_AOE_IMMUNE AOE免疫时不生效
0x01000000 SPELL_ATTR0_CU_CAN_STACK_FROM_DIFF_CASTERS 不同施法者可叠加
0x02000000 SPELL_ATTR0_CU_NORMALIZE_WEAPON_DAMAGE 标准化武器伤害
0x04000000 SPELL_ATTR0_CU_IGNORE_RESISTANCES 忽略抗性
0x08000000 SPELL_ATTR0_CU_CANT_CRIT 不能暴击
0x10000000 SPELL_ATTR0_CU_TRIGGERED_IGNORE_RESISTANCES 触发时忽略抗性
0x20000000 SPELL_ATTR0_CU_AURA_CANNOT_BE_SAVED 光环不能保存
0x40000000 SPELL_ATTR0_CU_FAKE_DELAY 虚假延迟
0x80000000 SPELL_ATTR0_CU_NEVER_STACK 永不叠加

使用示例

示例1:设置法术为直接伤害

场景:将火球术设置为直接伤害,不受抗性影响

INSERT INTO spell_custom_attr (spell_id, attributes) VALUES
(133, 0x00000040); -- SPELL_ATTR0_CU_DIRECT_DAMAGE

说明:火球术(ID:133)被标记为直接伤害法术

示例2:组合多个属性

场景:设置法术忽略护甲且不能暴击

INSERT INTO spell_custom_attr (spell_id, attributes) VALUES
(12345, 0x09001000); -- IGNORE_ARMOR + CANT_CRIT

说明:组合了忽略护甲(0x00001000)和不能暴击(0x08000000)属性

示例3:设置背刺技能

场景:设置盗贼背刺需要在目标背后

INSERT INTO spell_custom_attr (spell_id, attributes) VALUES
(53, 0x00004000); -- SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET

说明:背刺(ID:53)需要施法者在目标背后才能使用

属性分类说明

位置和方向相关

属性 用途 典型应用
CONE_BACK 背后锥形范围 背后范围攻击技能
CONE_LINE 直线锥形范围 直线范围法术
REQ_TARGET_FACING_CASTER 目标需面向施法者 恐惧、魅惑类法术
REQ_CASTER_BEHIND_TARGET 施法者需在目标背后 背刺、偷袭技能

伤害和效果相关

属性 用途 典型应用
DIRECT_DAMAGE 直接伤害 即时伤害法术
IGNORE_ARMOR 忽略护甲 魔法伤害法术
IGNORE_RESISTANCES 忽略抗性 特殊伤害法术
CANT_CRIT 不能暴击 治疗法术、DOT效果
BINARY_SPELL 二元法术 命中或未命中的法术
NORMALIZE_WEAPON_DAMAGE 标准化武器伤害 技能攻击

光环和持续效果相关

属性 用途 典型应用
AURA_CC 光环控制效果 控制类光环
LIQUID_AURA 液体光环 水下呼吸等效果
CAN_STACK_FROM_DIFF_CASTERS 不同施法者可叠加 增益法术
NEVER_STACK 永不叠加 独特效果
AURA_CANNOT_BE_SAVED 光环不能保存 临时效果

特殊机制相关

属性 用途 典型应用
ENCHANT_PROC 附魔触发 武器附魔效果
CHARGE 冲锋技能 战士冲锋
PICKPOCKET 偷窃技能 盗贼偷窃
SHARE_DAMAGE 分担伤害 伤害分担效果
NO_INITIAL_THREAT 无初始仇恨 治疗法术
WATER_SPELL 水中法术 水下专用法术

属性组合技巧

计算组合属性值

要组合多个属性,需要将对应的位值相加或使用按位或运算:

-- 方法1:直接相加
IGNORE_ARMOR (0x00001000) + CANT_CRIT (0x08000000) = 0x08001000

-- 方法2:按位或运算
0x00001000 | 0x08000000 = 0x08001000

常用组合示例

组合 属性值 用途
直接伤害+忽略护甲 0x00001040 魔法伤害法术
不能暴击+忽略抗性 0x0C000000 治疗法术
背后+直接伤害 0x00004040 背刺技能
永不叠加+不能保存 0xA0000000 临时独特效果

管理和维护

查询现有属性

-- 查看所有自定义属性
SELECT * FROM spell_custom_attr;

-- 查看特定法术的属性
SELECT * FROM spell_custom_attr WHERE spell_id = 133;

-- 查看具有特定属性的法术
SELECT * FROM spell_custom_attr WHERE attributes & 0x00000040 > 0;

修改属性

-- 添加新属性
UPDATE spell_custom_attr SET attributes = attributes | 0x00001000 WHERE spell_id = 133;

-- 移除属性
UPDATE spell_custom_attr SET attributes = attributes & ~0x00001000 WHERE spell_id = 133;

-- 完全替换属性
UPDATE spell_custom_attr SET attributes = 0x08001000 WHERE spell_id = 133;

重载属性

修改属性后需要重载数据:

.reload spell_custom_attr

注意事项

⚠️ 重要提醒

相关表格

spell_custom_attr表经常与以下表格配合使用: