📖 表说明
法术区域表定义了在特定区域、地图或任务状态下自动应用给玩家的法术效果。这个表用于创建区域性的增益效果、环境影响或特殊的游戏机制。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写,确保字段定义的准确性和权威性。
📊 表结构
| 字段名 | 数据类型 | 属性 | 键 | 默认值 | 描述 |
|---|---|---|---|---|---|
| spell | int UNSIGNED | 不为空 | 主键 | 0 | 法术ID,对应Spell.dbc |
| area | int UNSIGNED | 不为空 | 主键 | 0 | 区域ID,对应AreaTable.dbc |
| quest_start | int UNSIGNED | 不为空 | 主键 | 0 | 开始任务ID,0表示无任务要求 |
| quest_end | int UNSIGNED | 不为空 | 0 | 结束任务ID,0表示无任务要求 | |
| aura_spell | int | 不为空 | 主键 | 0 | 光环法术ID,0表示无光环要求 |
| racemask | int UNSIGNED | 不为空 | 主键 | 0 | 种族掩码,0表示所有种族 |
| gender | tinyint UNSIGNED | 不为空 | 主键 | 2 | 性别要求(0=男性,1=女性,2=无性别要求) |
| autocast | tinyint UNSIGNED | 不为空 | 0 | 是否自动施法(0=否,1=是) | |
| quest_start_status | int | 不为空 | 64 | 任务开始状态标志 | |
| quest_end_status | int | 不为空 | 11 | 任务结束状态标志 |
主键: (spell, area, quest_start, aura_spell, racemask, gender)
🔑 核心字段详解
🆔 spell - 法术ID
详细说明:要自动应用的法术ID,对应Spell.dbc文件中的法术记录。
取值范围:对应Spell.dbc中的法术ID
- 主键字段,标识要应用的法术
- 必须对应Spell.dbc中存在的法术ID
- 通常是光环类法术或增益效果
- 用于定义区域自动应用的法术效果
示例:
- spell=28522 - 军旗光环(PvP区域效果)
- spell=57970 - 冬拥湖光环(战场区域效果)
🗺️ area - 区域ID
详细说明:法术应用的区域ID,对应AreaTable.dbc文件中的区域记录。
取值范围:对应AreaTable.dbc中的区域ID
- 主键字段,标识法术应用的区域
- 必须对应AreaTable.dbc中存在的区域ID
- 可以是具体区域或父区域
- 用于定义法术生效的地理范围
示例:
- area=1 - 杜隆塔尔(新手区域)
- area=12 - 艾尔文森林(联盟新手区域)
📋 quest_start - 开始任务ID
详细说明:触发法术应用的任务ID,玩家必须满足任务状态要求。
取值范围:对应quest_template.entry或0
- 主键字段,标识触发任务
- 设置为0表示无任务要求
- 配合quest_start_status字段控制任务状态
- 用于创建任务相关的区域效果
示例:
- quest_start=0 - 无任务要求
- quest_start=12345 - 需要任务12345处于特定状态
其他字段说明
quest_end: 结束任务ID,设置为0表示无结束任务要求。当玩家完成此任务后,法术效果将被移除。
aura_spell: 光环法术ID,设置为0表示无光环要求。玩家必须拥有此光环才能获得区域法术效果。
racemask: 种族掩码,设置为0表示所有种族都可获得。使用位掩码指定特定种族。
gender: 性别要求,0=男性,1=女性,2=无性别要求。
autocast: 是否自动施法,0=否,1=是。设置为1时,法术会自动施放给符合条件的玩家。
💡 实际案例
区域 PvP区域光环效果
在PvP区域自动应用军旗光环效果
-- PvP区域光环效果
DELETE FROM spell_area WHERE spell = 28522;
INSERT INTO spell_area VALUES
(28522, 123, 0, 0, 0, 0, 2, 1, 64, 11);
效果: 在区域123(PvP区域)中,所有玩家自动获得军旗光环效果(spell=28522)。
区域 任务相关区域效果
只有完成特定任务的玩家才能获得区域效果
-- 任务相关区域效果
DELETE FROM spell_area WHERE spell = 12345 AND area = 456;
INSERT INTO spell_area VALUES
(12345, 456, 789, 0, 0, 0, 2, 1, 64, 11);
效果: 在区域456中,只有任务789处于特定状态的玩家才能获得法术12345的效果。
⚡ 快速参考
任务状态标志
| 标志值 | 含义 | 说明 |
|---|---|---|
| 64 | QUEST_STATUS_INCOMPLETE | 任务未完成 |
| 11 | QUEST_STATUS_COMPLETE | 任务已完成 |
| 1 | QUEST_STATUS_NONE | 无任务状态 |
表关系
- 法术表: spell_dbc - 法术数据表
- 关联字段: spell → spell_dbc.ID
- 任务表: quest_template - 任务模板表
- 关联字段: quest_start → quest_template.entry
🔗 相关表格
- spell_dbc - 法术数据表
- quest_template - 任务模板表
- spell_group - 法术组表
❓ 常见问题
Q1: 如何创建区域性的增益效果?
在spell_area表中添加条目,指定法术ID和区域ID。设置autocast=1,使法术自动施放给符合条件的玩家。
Q2: 如何限制法术只对特定种族生效?
使用racemask字段设置种族掩码。例如,racemask=1表示人类,racemask=2表示兽人,racemask=0表示所有种族。
Q3: 如何创建任务相关的区域效果?
设置quest_start字段为任务ID,并配合quest_start_status字段控制任务状态要求。只有满足任务状态要求的玩家才能获得区域效果。