spell_template表

概述

spell_template表是AzerothCore中法术系统的核心表格,用于存储自定义法术的模板数据。它允许服务器管理员创建新的法术或修改现有法术的属性,而无需修改DBC文件。这个表格与Spell.dbc文件配合工作,提供了灵活的法术定制功能。

表格作用

表格结构

字段名 数据类型 默认值 说明
ID INT UNSIGNED 0 法术ID
Attributes INT UNSIGNED 0 法术属性
AttributesEx INT UNSIGNED 0 扩展属性1
AttributesEx2 INT UNSIGNED 0 扩展属性2
AttributesEx3 INT UNSIGNED 0 扩展属性3
AttributesEx4 INT UNSIGNED 0 扩展属性4
AttributesEx5 INT UNSIGNED 0 扩展属性5
AttributesEx6 INT UNSIGNED 0 扩展属性6
AttributesEx7 INT UNSIGNED 0 扩展属性7
CastingTimeIndex TINYINT UNSIGNED 1 施法时间索引
DurationIndex TINYINT UNSIGNED 0 持续时间索引
PowerType TINYINT UNSIGNED 0 能量类型
RangeIndex TINYINT UNSIGNED 1 施法距离索引
Speed FLOAT 0 法术飞行速度
SpellIconID TINYINT UNSIGNED 1 法术图标ID
ActiveIconID TINYINT UNSIGNED 0 激活图标ID
Name VARCHAR(255) '' 法术名称
Rank VARCHAR(255) '' 法术等级
Description VARCHAR(255) '' 法术描述
ToolTip VARCHAR(255) '' 法术提示文本
SchoolMask TINYINT UNSIGNED 1 法术学派掩码
RuneCostID TINYINT UNSIGNED 0 符文消耗ID
SpellMissileID TINYINT UNSIGNED 0 法术弹道ID
PowerDisplayId TINYINT UNSIGNED 0 能量显示ID
EffectBasePoints1 INT 0 效果1基础点数
EffectBasePoints2 INT 0 效果2基础点数
EffectBasePoints3 INT 0 效果3基础点数
EffectAmplitude1 INT 0 效果1振幅
EffectAmplitude2 INT 0 效果2振幅
EffectAmplitude3 INT 0 效果3振幅

字段详细说明

ID (法术ID)

法术的唯一标识符,必须是唯一值。建议使用高于官方法术ID的数值(如从100000开始)以避免冲突。

Attributes系列 (法术属性)

法术属性是控制法术行为的关键字段,使用位掩码表示:

Attributes (基础属性)

位值 属性名称 说明
0x00000001 SPELL_ATTR0_UNK0 未知属性0
0x00000002 SPELL_ATTR0_REQ_AMMO 需要弹药
0x00000004 SPELL_ATTR0_ON_NEXT_SWING 下次攻击时触发
0x00000008 SPELL_ATTR0_IS_REPLENISHMENT 是补充效果
0x00000010 SPELL_ATTR0_ABILITY 是技能
0x00000020 SPELL_ATTR0_TRADESPELL 是商业技能
0x00000040 SPELL_ATTR0_PASSIVE 被动法术
0x00000080 SPELL_ATTR0_HIDDEN_CLIENTSIDE 客户端隐藏
0x00000100 SPELL_ATTR0_HIDE_IN_COMBAT_LOG 战斗日志中隐藏
0x00000200 SPELL_ATTR0_TARGET_MAINHAND_ITEM 目标主手物品

AttributesEx (扩展属性1)

位值 属性名称 说明
0x00000001 SPELL_ATTR1_DISMISS_PET 解散宠物
0x00000002 SPELL_ATTR1_DRAIN_ALL_POWER 消耗所有能量
0x00000004 SPELL_ATTR1_CHANNELED_1 引导法术1
0x00000008 SPELL_ATTR1_CANT_BE_REDIRECTED 不能被重定向
0x00000010 SPELL_ATTR1_UNK4 未知属性4
0x00000020 SPELL_ATTR1_NOT_BREAK_STEALTH 不打破潜行
0x00000040 SPELL_ATTR1_CHANNELED_2 引导法术2
0x00000080 SPELL_ATTR1_CANT_BE_REFLECTED 不能被反射
0x00000100 SPELL_ATTR1_NOT_IN_COMBAT_TARGET 非战斗目标
0x00000200 SPELL_ATTR1_MELEE_COMBAT_START 近战战斗开始

PowerType (能量类型)

能量类型 说明
0 POWER_MANA 法力值
1 POWER_RAGE 怒气
2 POWER_FOCUS 集中值
3 POWER_ENERGY 能量
4 POWER_HAPPINESS 快乐度
5 POWER_RUNE 符文
6 POWER_RUNIC_POWER 符文能量
-1 POWER_HEALTH 生命值

SchoolMask (法术学派掩码)

位值 学派名称 说明
0x01 SPELL_SCHOOL_NORMAL 物理
0x02 SPELL_SCHOOL_HOLY 神圣
0x04 SPELL_SCHOOL_FIRE 火焰
0x08 SPELL_SCHOOL_NATURE 自然
0x10 SPELL_SCHOOL_FROST 冰霜
0x20 SPELL_SCHOOL_SHADOW 暗影
0x40 SPELL_SCHOOL_ARCANE 奥术

使用示例

示例1:创建简单的火球术

场景:创建一个基础的火球法术

INSERT INTO spell_template (ID, Name, Description, SchoolMask, PowerType, CastingTimeIndex, RangeIndex, EffectBasePoints1) VALUES
(100001, '自定义火球术', '造成火焰伤害', 4, 0, 3, 4, 100);

说明:ID=100001,火焰学派(4),消耗法力(0),造成100点基础伤害

示例2:创建被动技能

场景:创建一个增加攻击力的被动技能

INSERT INTO spell_template (ID, Name, Description, Attributes, DurationIndex, EffectBasePoints1) VALUES
(100002, '力量增强', '永久增加攻击力', 0x00000040, 21, 50);

说明:被动法术属性(0x00000040),永久持续(21),增加50点攻击力

创建法术步骤

1. 确定法术ID

选择一个未使用的法术ID,建议从100000开始:

SELECT MAX(ID) FROM spell_template; -- 查看当前最大ID

2. 设置基础属性

根据法术类型设置相应的属性:

3. 配置法术效果

使用EffectBasePoints字段设置法术的具体效果数值。

4. 测试和调整

在测试环境中验证法术效果,根据需要调整参数。

注意事项

⚠️ 重要提醒

相关表格

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