spell_group表是AzerothCore中定义法术分组和互斥关系的重要表格。它控制着哪些法术可以同时存在,哪些法术会相互覆盖或冲突,是法术系统中实现增益叠加规则和限制的核心机制。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
id | INT UNSIGNED | 0 | 组ID |
详细说明:法术组的唯一标识符,用于将多个法术归类到同一组。
组ID分类:
|
|||
spell_id | INT UNSIGNED | 0 | 法术ID |
详细说明:属于该组的法术ID,对应Spell.dbc或spell_template表中的法术。
常见法术类型:
|
|||
special_flag | INT UNSIGNED | 0 | 特殊标志 |
详细说明:定义该法术在组内的特殊行为和规则。
标志值:
行为说明:
|
-- 查看所有法术组的分布
SELECT id as group_id, COUNT(*) as spell_count
FROM spell_group
GROUP BY id
ORDER BY id;
-- 查看祝福组(假设组ID为1)的所有法术
SELECT spell_id, special_flag
FROM spell_group
WHERE id = 1
ORDER BY special_flag, spell_id;
-- 创建新的食物组
INSERT INTO spell_group (id, spell_id, special_flag)
VALUES
(101, 433, 0), -- 面包
(101, 1131, 0), -- 牛奶
(101, 1137, 0), -- 治疗药水
(101, 5007, 1); -- 法力面包(优先级最高)
-- 设置圣骑士祝福互斥
INSERT INTO spell_group (id, spell_id, special_flag)
VALUES
(1, 19740, 0), -- 力量祝福
(1, 19834, 0), -- 智慧祝福
(1, 20217, 0), -- 王者祝福
(1, 25898, 4); -- 强效王者祝福(最高优先级)
标志值 | 行为描述 | 应用场景 |
---|---|---|
0 | 标准互斥 | 普通的同类法术 |
1 | 组内唯一 | 特殊的独占法术 |
2 | 允许叠加 | 可以共存的增益 |
4 | 最高优先级 | 强效版本的法术 |
8 | 不被覆盖 | 重要的保护性法术 |
6 (4+2) | 高优先级且可叠加 | 特殊的强效增益 |
检查以下几点:
叠加设置方法: