📖 概述
quest_template_addon表存储任务的额外配置信息,包括:
- 📋 前置任务和后续任务链
- ⚔️ 职业和技能限制
- 🏆 声望要求
- 📧 奖励邮件配置
- 🔀 互斥任务组
- 🎯 特殊任务标志
📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| ID | int UNSIGNED | 0 | 任务ID,对应quest_template.ID (主键) |
| MaxLevel | tinyint UNSIGNED | 0 | 最大可接等级 |
| AllowableClasses | int UNSIGNED | 0 | 允许的职业(位掩码) |
| SourceSpellID | int UNSIGNED | 0 | 开始任务时施放的技能ID |
| PrevQuestID | int | 0 | 前置任务ID(正数必须完成,负数必须激活) |
| NextQuestID | int UNSIGNED | 0 | 后续任务ID |
| ExclusiveGroup | int | 0 | 互斥任务组ID(正数可选其一,负数必须全部完成) |
| RewardMailTemplateID | int UNSIGNED | 0 | 奖励邮件模板ID |
| RewardMailDelay | int UNSIGNED | 0 | 奖励邮件延迟时间(秒) |
| RequiredSkillID | smallint UNSIGNED | 0 | 需要的技能ID |
| RequiredSkillPoints | smallint UNSIGNED | 0 | 需要的技能等级 |
| RequiredMinRepFaction | smallint UNSIGNED | 0 | 需要的最小声望阵营 |
| RequiredMaxRepFaction | smallint UNSIGNED | 0 | 需要的最大声望阵营 |
| RequiredMinRepValue | int | 0 | 需要的最小声望值 |
| RequiredMaxRepValue | int | 0 | 需要的最大声望值 |
| ProvidedItemCount | tinyint UNSIGNED | 0 | 提供的物品数量 |
| SpecialFlags | int UNSIGNED | 0 | 特殊标志(位掩码) |
🔑 核心字段详解
ID - 任务ID
唯一任务ID,必须与quest_template.ID匹配。这是主键字段。
PrevQuestID - 前置任务
定义任务的前置依赖关系:
- 值 > 0: 包含前置任务ID,必须完成该任务才能开始当前任务
- 值 < 0: 包含父任务ID,该任务必须处于激活状态才能开始当前任务
- 值 = 0: 无前置任务要求
ExclusiveGroup - 互斥任务组
定义任务的互斥关系:
- 值 > 0: 同一组任务只能选择其中一个完成(例如任务1200、1201、1202都设置ExclusiveGroup=1200,则只能选一个)
- 值 < 0: 同一组任务必须全部完成才能开始后续任务
注意: 使用ExclusiveGroup的任务必须在pool_template和pool_quest中添加相应条目。
AllowableClasses - 职业限制
使用位掩码定义允许的职业。0表示所有职业都可接取。可组合多个职业值:
| 职业 | 掩码值 |
|---|---|
| 战士 | 1 |
| 圣骑士 | 2 |
| 猎人 | 4 |
| 盗贼 | 8 |
| 牧师 | 16 |
| 死亡骑士 | 32 |
| 萨满祭司 | 64 |
| 法师 | 128 |
| 术士 | 256 |
| 德鲁伊 | 1024 |
示例: 法师+术士+牧师 = 128+256+16 = 400(布甲职业)
RequiredSkillID & RequiredSkillPoints - 技能要求
定义接取任务需要的专业技能:
- RequiredSkillID: 技能ID(参考SkillLine.dbc)
- RequiredSkillPoints: 需要的技能等级
示例: 需要采矿技能300级 → RequiredSkillID=186, RequiredSkillPoints=300
RequiredMinRepFaction & RequiredMinRepValue - 声望要求
定义接取任务需要的最小声望:
- RequiredMinRepFaction: 阵营ID(参考Faction.dbc)
- RequiredMinRepValue: 需要的最小声望值
示例: 需要暴风城崇拜 → RequiredMinRepFaction=72, RequiredMinRepValue=42000
SpecialFlags - 特殊标志
定义任务的特殊行为(位掩码):
| 标志值 | 说明 |
|---|---|
| 1 | 自动完成标志 |
| 2 | 任务失败时删除物品 |
| 4 | 任务完成时删除物品 |
| 8 | 日常任务 |
| 16 | 周常任务 |
| 32 | 月常任务 |
| 64 | 可重复任务 |
| 128 | 无声望奖励 |
| 256 | 无经验奖励 |
| 512 | 无金钱奖励 |
💡 实际案例
任务链 前置任务示例 - 任务ID 750
必须完成任务747才能接取任务750
-- PrevQuestID=747(必须完成任务747), MaxLevel=5(最高5级可接)
DELETE FROM quest_template_addon WHERE ID = 750;
INSERT INTO quest_template_addon VALUES
(750,5,0,0,747,0,0,0,0,0,0,0,0,0,0,0,0);职业 职业限制示例 - 任务ID 1598
术士职业任务,只有术士可接(AllowableClasses=256)
-- AllowableClasses=256(术士), PrevQuestID=0(无前置)
DELETE FROM quest_template_addon WHERE ID = 1598;
INSERT INTO quest_template_addon VALUES
(1598,0,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0);技能 技能要求示例 - 任务ID 9000
需要采矿技能300级才能接取
-- RequiredSkillID=186(采矿), RequiredSkillPoints=300
DELETE FROM quest_template_addon WHERE ID = 9000;
INSERT INTO quest_template_addon VALUES
(9000,0,0,0,0,0,0,0,0,186,300,0,0,0,0,0,0);声望 声望要求示例 - 任务ID 8000
需要暴风城崇拜声望才能接取
-- RequiredMinRepFaction=72(暴风城), RequiredMinRepValue=42000(崇拜)
DELETE FROM quest_template_addon WHERE ID = 8000;
INSERT INTO quest_template_addon VALUES
(8000,0,0,0,0,0,0,0,0,0,0,72,0,42000,0,0,0);互斥 互斥任务组示例 - 任务ID 1200/1201/1202
三个任务只能选择一个完成(ExclusiveGroup=1200)
-- ExclusiveGroup=1200(同一组只能选其一)
DELETE FROM quest_template_addon WHERE ID IN (1200,1201,1202);
INSERT INTO quest_template_addon VALUES
(1200,0,0,0,0,0,1200,0,0,0,0,0,0,0,0,0,0),
(1201,0,0,0,0,0,1200,0,0,0,0,0,0,0,0,0,0),
(1202,0,0,0,0,0,1200,0,0,0,0,0,0,0,0,0,0);日常 日常任务示例 - 任务ID 10000
每日可重复完成的任务(SpecialFlags=8)
-- SpecialFlags=8(日常任务标志)
DELETE FROM quest_template_addon WHERE ID = 10000;
INSERT INTO quest_template_addon VALUES
(10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8);邮件 奖励邮件示例 - 任务ID 6000
完成任务后延迟1小时发送奖励邮件
-- RewardMailTemplateID=100(邮件模板), RewardMailDelay=3600(延迟1小时)
DELETE FROM quest_template_addon WHERE ID = 6000;
INSERT INTO quest_template_addon VALUES
(6000,0,0,0,0,0,0,100,3600,0,0,0,0,0,0,0,0);⚡ 快速参考
常用字段组合
| 任务链 | PrevQuestID + NextQuestID |
| 职业任务 | AllowableClasses |
| 专业技能 | RequiredSkillID + RequiredSkillPoints |
| 声望任务 | RequiredMinRepFaction + RequiredMinRepValue |
| 互斥任务 | ExclusiveGroup |
| 日常任务 | SpecialFlags=8 |
职业掩码速查
| 战士=1 | 圣骑=2 |
| 猎人=4 | 盗贼=8 |
| 牧师=16 | DK=32 |
| 萨满=64 | 法师=128 |
| 术士=256 | 德鲁伊=1024 |
❓ 常见问题
Q: PrevQuestID的正数和负数有什么区别?
A: 正数表示必须完成该前置任务才能接取当前任务;负数表示父任务必须处于激活状态(未完成)才能接取当前任务。
Q: ExclusiveGroup如何使用?
A: 正数表示同一组任务只能选择一个完成(如1200、1201、1202都设置ExclusiveGroup=1200);负数表示同一组任务必须全部完成才能开启后续任务。使用ExclusiveGroup的任务必须在pool_template和pool_quest中添加相应条目。
Q: 如何设置多职业限制?
A: 使用位掩码组合。例如法师+术士+牧师 = 128+256+16 = 400。0表示所有职业都可接取。
Q: SpecialFlags可以组合吗?
A: 可以。例如日常+可重复 = 8+64 = 72。使用位掩码组合多个标志。
🔗 相关表格
- quest_template - 任务模板表(主表)
- quest_template_locale - 任务模板本地化表
- pool_quest - 任务池表(配合ExclusiveGroup使用)
- pool_template - 池模板表