Quest template SF
Back to world database list of tables.
The `quest_template` table
Contains all basic definitions of quests available.
Structure
Field | Type | Attributes | Key | Null | Default | Extra | Comment |
Id | mediumint(8) | unsigned | PRI | NO | 0 | ||
Method | tinyint(3) | unsigned | NO | 2 | |||
Level | smallint(3) | signed | NO | 0 | |||
MinLevel | tinyint(3) | signed | NO | 0 | |||
MaxLevel | tinyint(3) | unsigned | NO | 0 | |||
ZoneOrSort | smallint(6) | signed | NO | 1 | |||
Type | smallint(5) | unsigned | NO | 0 | |||
SuggestedPlayers | tinyint(3) | unsigned | NO | 0 | |||
LimitTime | int(10) | unsigned | NO | 0 | |||
RequiredClasses | smallint(5) | unsigned | NO | 0 | |||
RequiredRaces | smallint(5) | NO | 0 | ||||
RequiredSkillId | smallint(5) | unsigned | NO | 0 | |||
RequiredSkillPoints | smallint(5) | unsigned | NO | 0 | |||
RequiredFactionId1 | smallint(5) | unsigned | NO | 0 | |||
RequiredFactionId2 | smallint(5) | signed | NO | 0 | |||
RequiredFactionValue1 | mediumint(9) | signed | NO | 0 | |||
RequiredFactionValue2 | mediumint(9) | unsigned | NO | 0 | |||
RequiredMinRepFaction | smallint(5) | signed | NO | 0 | |||
RequiredMaxRepFaction | smallint(5) | unsigned | NO | 0 | |||
RequiredMinRepValue | mediumint(9) | signed | NO | 0 | |||
RequiredMaxRepValue | mediumint(9) | signed | NO | 0 | |||
PrevQuestId | mediumint(9) | signed | NO | 0 | |||
NextQuestId | mediumint(9) | signed | NO | 0 | |||
ExclusiveGroup | mediumint(9) | signed | NO | 0 | |||
NextQuestIdChain | mediumint(8) | unsigned | NO | 0 | |||
RewXPId | tinyint(2) | unsigned | NO | 0 | |||
RewardOrRequireMoney | int(11) | signed | NO | 0 | |||
RewardMoneyMaxLevel | int(10) | unsigned | NO | 0 | |||
RewardSpell | mediumint(8) | unsigned | NO | 0 | |||
RewardSpellCast | int(11) | signed | NO | 0 | |||
RewardHonor | int(10) | unsigned | NO | 0 | |||
RewardHonorMultiplier | float | signed | NO | 1 | |||
RewardMailTemplateId | mediumint(8) | unsigned | NO | 0 | |||
RewardMailDelay | int(11) | unsigned | NO | 0 | |||
SourceItemId | mediumint(8) | unsigned | NO | 0 | |||
SourceItemCount | tinyint(3) | unsigned | NO | 0 | |||
SourceSpell | mediumint(8) | unsigned | NO | 0 | |||
Flags | int(10) | unsigned | NO | 0 | |||
SpecialFlags | tinyint(3) | unsigned | NO | 0 | |||
RewardTitleId | tinyint(3) | unsigned | NO | 0 | |||
RequiredPlayerKills | tinyint(3) | unsigned | NO | 0 | |||
RewardTalents | tinyint(3) | unsigned | NO | 0 | |||
RewardArenaPoints | smallint(5) | unsigned | NO | 0 | |||
RewardItemId1 | mediumint(8) | unsigned | NO | 0 | |||
RewardItemId2 | mediumint(8) | unsigned | NO | 0 | |||
RewardItemId3 | mediumint(8) | unsigned | NO | 0 | |||
RewardItemId4 | mediumint(8) | unsigned | NO | 0 | |||
RewardItemCount1 | smallint(5) | unsigned | NO | 0 | |||
RewardItemCount2 | smallint(5) | unsigned | NO | 0 | |||
RewardItemCount3 | smallint(5) | unsigned | NO | 0 | |||
RewardItemCount4 | smallint(5) | unsigned | NO | 0 | |||
RewardChoiceItemId1 | mediumint(8) | unsigned | NO | 0 | |||
RewardChoiceItemId2 | mediumint(8) | unsigned | NO | 0 | |||
RewardChoiceItemId3 | mediumint(8) | unsigned | NO | 0 | |||
RewardChoiceItemId4 | mediumint(8) | unsigned | NO | 0 | |||
RewardChoiceItemId5 | mediumint(8) | unsigned | NO | 0 | |||
RewardChoiceItemId6 | mediumint(8) | unsigned | NO | 0 | |||
RewardChoiceItemCount1 | smallint(5) | unsigned | NO | 0 | |||
RewardChoiceItemCount2 | smallint(5) | unsigned | NO | 0 | |||
RewardChoiceItemCount3 | smallint(5) | unsigned | NO | 0 | |||
RewardChoiceItemCount4 | smallint(5) | unsigned | NO | 0 | |||
RewardChoiceItemCount5 | smallint(5) | unsigned | NO | 0 | |||
RewardChoiceItemCount6 | smallint(5) | unsigned | NO | 0 | |||
RewardFactionId1 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case | ||
RewardFactionId2 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case | ||
RewardFactionId3 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case | ||
RewardFactionId4 | smallint(5) | unsigned | NO | 0 | faction id from Faction.dbc in this case | ||
RewardRepValueId1 | mediumint(6) | signed | NO | 0 | |||
RewardRepValueId2 | mediumint(6) | signed | NO | 0 | |||
RewardRepValueId3 | mediumint(6) | signed | NO | 0 | |||
RewardRepValueId4 | mediumint(6) | signed | NO | 0 | |||
RewardRepValueId5 | mediumint(6) | signed | NO | 0 | |||
RewardFactionId5 | smallint(5) | unsigned | NO | 0 | |||
RewardFactionValueIdOverride1 | mediumint(9) | signed | NO | 0 | |||
RewardFactionValueIdOverride2 | mediumint(9) | signed | NO | 0 | |||
RewardFactionValueIdOverride3 | mediumint(9) | signed | NO | 0 | |||
RewardFactionValueIdOverride4 | mediumint(9) | signed | NO | 0 | |||
RewardFactionValueIdOverride5 | mediumint(9) | signed | NO | 0 | |||
PointMapId | smallint(5) | unsigned | NO | 0 | |||
PointX | float | signed | NO | 0 | |||
PointY | float | signed | NO | 0 | |||
PointOption | mediumint(8) | unsigned | NO | 0 | |||
Title | text | signed | YES | NULL | |||
Objectives | text | signed | YES | NULL | |||
Details | text | signed | YES | NULL | |||
EndText | text | signed | YES | NULL | |||
OfferRewardText | text | signed | YES | NULL | |||
RequestItemsText | text | signed | YES | NULL | |||
CompletedText | text | signed | YES | NULL | |||
RequiredNpcOrGo1 | mediumint(9) | signed | NO | 0 | |||
RequiredNpcOrGo2 | mediumint(9) | signed | NO | 0 | |||
RequiredNpcOrGo3 | mediumint(9) | signed | NO | 0 | |||
RequiredNpcOrGo4 | mediumint(9) | signed | NO | 0 | |||
RequiredNpcOrGoCount1 | smallint(5) | unsigned | NO | 0 | |||
RequiredNpcOrGoCount2 | smallint(5) | unsigned | NO | 0 | |||
RequiredNpcOrGoCount3 | smallint(5) | unsigned | NO | 0 | |||
RequiredNpcOrGoCount4 | smallint(5) | unsigned | NO | 0 | |||
RequiredSourceItemId1 | mediumint(8) | unsigned | NO | 0 | |||
RequiredSourceItemId2 | mediumint(8) | unsigned | NO | 0 | |||
RequiredSourceItemId3 | mediumint(8) | unsigned | NO | 0 | |||
RequiredSourceItemId4 | mediumint(8) | unsigned | NO | 0 | |||
RequiredSourceItemCount1 | smallint(5) | unsigned | NO | 0 | |||
RequiredSourceItemCount2 | smallint(5) | unsigned | NO | 0 | |||
RequiredSourceItemCount3 | smallint(5) | unsigned | NO | 0 | |||
RequiredSourceItemCount4 | smallint(5) | unsigned | NO | 0 | |||
RequiredItemId1 | mediumint(8) | unsigned | NO | 0 | |||
RequiredItemId2 | mediumint(8) | unsigned | NO | 0 | |||
RequiredItemId3 | mediumint(8) | unsigned | NO | 0 | |||
RequiredItemId4 | mediumint(8) | unsigned | NO | 0 | |||
RequiredItemId5 | mediumint(8) | unsigned | NO | 0 | |||
RequiredItemId6 | mediumint(8) | unsigned | NO | 0 | |||
RequiredItemCount1 | smallint(5) | unsigned | NO | 0 | |||
RequiredItemCount2 | smallint(5) | unsigned | NO | 0 | |||
RequiredItemCount3 | smallint(5) | unsigned | NO | 0 | |||
RequiredItemCount4 | smallint(5) | unsigned | NO | 0 | |||
RequiredItemCount5 | smallint(5) | unsigned | NO | 0 | |||
RequiredItemCount6 | smallint(5) | unsigned | NO | 0 | |||
RequiredSpellCast1 | mediumint(8) | unsigned | NO | 0 | |||
RequiredSpellCast2 | mediumint(8) | unsigned | NO | 0 | |||
RequiredSpellCast3 | mediumint(8) | unsigned | NO | 0 | |||
RequiredSpellCast4 | mediumint(8) | unsigned | NO | 0 | |||
Unknown0 | tinyint(2) | unsigned | NO | 0 | |||
ObjectiveText1 | text | signed | YES | NULL | |||
ObjectiveText2 | text | signed | YES | NULL | |||
ObjectiveText3 | text | signed | YES | NULL | |||
ObjectiveText4 | text | signed | YES | NULL | |||
DetailsEmote1 | smallint(5) | unsigned | NO | 0 | |||
DetailsEmote2 | smallint(5) | unsigned | NO | 0 | |||
DetailsEmote3 | smallint(5) | unsigned | NO | 0 | |||
DetailsEmote4 | smallint(5) | unsigned | NO | 0 | |||
DetailsEmoteDelay1 | int(10) | unsigned | NO | 0 | |||
DetailsEmoteDelay2 | int(10) | unsigned | NO | 0 | |||
DetailsEmoteDelay3 | int(10) | unsigned | NO | 0 | |||
DetailsEmoteDelay4 | int(10) | unsigned | NO | 0 | |||
EmoteOnIncomplete | smallint(5) | unsigned | NO | 0 | |||
EmoteOnComplete | smallint(5) | unsigned | NO | 0 | |||
OfferRewardEmote1 | smallint(5) | unsigned | NO | 0 | |||
OfferRewardEmote2 | smallint(5) | unsigned | NO | 0 | |||
OfferRewardEmote3 | smallint(5) | unsigned | NO | 0 | |||
OfferRewardEmote4 | smallint(5) | unsigned | NO | 0 | |||
OfferRewardEmoteDelay1 | int(10) | unsigned | NO | 0 | |||
OfferRewardEmoteDelay2 | int(10) | unsigned | NO | 0 | |||
OfferRewardEmoteDelay3 | int(10) | unsigned | NO | 0 | |||
OfferRewardEmoteDelay4 | int(10) | unsigned | NO | 0 | |||
StartScript | mediumint(8) | unsigned | NO | 0 | |||
CompleteScript | mediumint(8) | unsigned | NO | 0 | |||
WDBVerified | smallint(5) | signed | YES | 1 |
Description of the fields
Id
Quest Id. Quest ID is the Primary Key for the Table. Each Quest ID must be unique!
Method
Accepted values: 0, 1 or 2. If value = 0 then Quest is autocompleted (skip objectives/details). If value = 1 then Quest is disabled (not yet implemented in the core) If value = 2 them Quest is enabled and not autocomplete.
Level
Level of quest. Player recieves full experience amount only if their level is less than or equal to Level+5. If Level is set to -1, the player's level will be used as (Quest)Level for the experience calculation.
MinLevel
Minimum level required to get the quest.
MaxLevel
Maximum level at which a character can get the quest.
ZoneOrSort
This field defines under what category the quest falls in the quest log.
If value > 0 then value is Zone IDs taken from AreaTable.dbc.
if value < 0 then (-value) is quest sort id: (in general profession or class quests. Also see RequiredSkillPoints ) Value is ID from QuestSort.dbc
Type
These values are ID taken from QuestInfo.dbc
SuggestedPlayers
Recommended number of players to do the quest together.
LimitTime
Time in seconds that the player has to complete this quest.
RequiredClasses
Classes required to get the quest. 0 means the quest is available for all classes. This field is a bitmask, you can combine class values. See ChrClasses.dbc
RequiredRaces
Races required to get the quest. 0 means the is available for all races. Field's value is a decimal value that must be transform to a 8 bits binary in order to be understandable. In binary form, each different bit represent a different race. They're assigned as follow :
Race
These values are 2^ID taken from ChrRaces.dbc
Examples
0,1791 = All Races
690 (2 + 16 + 32 + 128 + 512) = Horde Quest
1101 (1 + 4 + 8 + 64 + 1024) = Alliance Quest
RequiredSkillId
Skill required to know to accept the quest. See SkillIne.dbc 0 means no skill is required.
RequiredSkillPoints
Skill points required to have in order to accept the quest.
RepObjectiveFaction
Faction ID for an objective to achieve a certain reputation value with. See Faction.dbc
RepObjectiveValue
Reputation value that the player must achieve with the faction in RepObjectiveFaction as part of the quest objectives.
RequiredMinRepFaction
Faction ID for reputation requirement. See Faction.dbc
RequiredMinRepValue
Players must have this reputation or higher in order to receive the quest.
RequiredMaxRepFaction
The Faction ID for the faction that controls the maximum reputation value that the player can have and still get the quest. See Faction.dbc
RequiredMaxRepValue
The maximum reputation value that the player can have with a faction and still get the quest. If the player has more reputation than the value in this field, the quest will not be able to be taken anymore.
PrevQuestId
if value > 0: Contains the previous quest id, that must be completed before this quest can be started.
If value < 0: Contains the parent quest id, that must be active before this quest can be started.
See the examples section for examples.
NextQuestId
If value > 0: Contains the next quest id, if PrevQuestId of that quest is not sufficient.
If value < 0: Contains the sub quest id, if PrevQuestId of that quest is not sufficient. If quest have many alternative next quests (class specific quests lead from single not class specific quest) field PrevQuestId in next quests can used for setting this dependence.
See the examples section for examples.
ExclusiveGroup
if ExclusiveGroup > 0
Allows to define a group of quests of which only one may be chosen and completed. E.g. if from quests 1200, 1201 and 1202 only one should be allowed to be chosen, insert 1200 into ExclusiveGroup of all 3 quests.
if ExclusiveGroup < 0
Allows to define a group of quests of which all must be completed and rewarded to start next quest. E.g. if quest 1000 dependent from one of quests 1200, 1201 and 1202 and all this quests have same negative exclusive group then all this quest must be completed and rewarded before quest 1000 can be started.
Note: All quests that use an ExclusiveGroup must also have entries in pool_template and pool_quest in order for the core to choose one randomly. See the examples section for examples.
NextQuestIdChain
The quest entry from a creature or gameobject that ends a quest and starts a new one. The result is, that if you end the quest, the new quest instantly appears from the quest giver.
See the examples section for examples.
RewXPId
According to the Level, the basic experience with index RewXPId is taken from QuestXP.dbc.
RewardOrRequiredMoney
Money earned by completing the quest (if value > 0). Money quest requirement (if value < 0).
RewardMoneyMaxLevel
The money a character at level 80 would get when they complete this quest. This field also controls the XP given as the XP is calculated from the value in this field by the following formula. If the quest is repeatable, XP will be given only once. The total XP that a character will receive is also affected by the level difference between the character's level and the quest's level.
The formula for calculating XP from the value in this field:
QuestLevel >= 65: XP = RewMoneyMaxLevel / 6.0
QuestLevel == 64: XP = RewMoneyMaxLevel / 4.8
QuestLevel == 63: XP = RewMoneyMaxLevel / 3.6
QuestLevel == 62: XP = RewMoneyMaxLevel / 2.4
QuestLevel == 61: XP = RewMoneyMaxLevel / 1.2
QuestLevel <= 60: XP = RewMoneyMaxLevel / 0.6
RewardSpell
Spell that is shown to be casted on quest completion in the quest log. Note that this spell will NOT be casted if RewardSpellCast is non-zero. The spell in the other field will be casted instead, in which case the spell here only serves as the visual in the quest log.
NOTE: This field comes straight from the WDB and should not be changed.
RewardSpellCast
Spell that will always be casted at player when completing the quest. This can be learn spell and player learned some spell in result, or buff spell, for example. If this field is non-zero then this spell will ALWAYS be casted and the spell in RewardSpell will not.
NOTE: This field comes straight from the WDB and should not be changed.
RewardMailTemplateId
If the quest gives as a reward an item from a possible list of items, the ID here corresponds to the proper loot template in quest_mail_loot_template. According to the rules in that loot template, items "looted" will be sent by mail at the completion of the quest.
RewardMailDelay
How many seconds to wait until the mail is sent to the character that turned in a quest rewarding items from a loot template defined in RewardMailTemplateId
RewardHonor
Number of honorable kill honor rewarded for completing this quest.
Example: An example value is 15 for quest 8388: At level 80 an honorable kill is 124 honor worth. Multiply this with 15 and you receive 1860, after the multiplication the value is rounded up. So the honor rewarded at level 80 is 1860 for this quest.
RewardHonorMultiplier
Multiplies RewardHonor, so if value is 2, it will give double.
WARNING: If this field is 1 and RewardHonor is 0, the quest will reward default honor kill value (124 honor at level 80)
SourceItemId
Item's ID given by the quest giver at beginning of the quest. Items will be deleted when quest is abandoned.
SourceItemCount
Amount of items given.
SourceSpellId
Spell casted on player when quest is started. Can be a buff or a learning spell.
Flags
This flag field defines more specifically the type of quest it is. Aside from the daily flag and sharable flag, this field is used just for grouping purposes and NOT for any other quest requirements. The quest requirements are calculated from non-zero values in other quest template fields. Also, while some of these flags are known, others have yet an unknown purpose and the comments below is simply guesswork on them.
Flag | Name | Comments |
---|---|---|
0 | QUEST_FLAGS_NONE | No flags, so no groups assigned to this quest. |
1 | QUEST_FLAGS_STAY_ALIVE | If the player dies, the quest is failed.(?) |
2 | QUEST_FLAGS_PARTY_ACCEPT | Escort quests or any other event-driven quests. If player in party, all players that can accept this quest will receive confirmation box to accept quest. |
4 | QUEST_FLAGS_EXPLORATION | Involves the activation of an areatrigger. |
8 | QUEST_FLAGS_SHARABLE | Allows the quest to be shared with other players. |
16 | QUEST_FLAGS_NONE2 | Unknown at this time and not used. |
32 | QUEST_FLAGS_EPIC | Epic class quests (hunter) (??) |
64 | QUEST_FLAGS_RAID | Raid or similiar player group needed for quest. |
128 | QUEST_FLAGS_TBC | Added with or after TBC. |
256 | QUEST_FLAGS_DELIVER_MORE | Quest needs extra non-objective items dropped (eg. RequiredSourceItemId fields) (?) |
512 | QUEST_FLAGS_HIDDEN_REWARDS | Item and monetary rewards are hidden in the initial quest details page and in the quest log but will appear once ready to be rewarded. |
1024 | QUEST_FLAGS__AUTO_REWARDED | These quests are automatically rewarded on quest complete and they will never appear in quest log client side. |
2048 | QUEST_FLAGS_TBC_RACES | Blood elf/draenei starting zone quests. |
4096 | QUEST_FLAGS_DAILY | Daily repeatable quests (only flag that the core applies specific behavior for) |
8192 | QUEST_FLAGS_REPEATABLE | Used on repeatable quests |
16384 | QUEST_FLAGS_UNAVAILABLE | Used on quests that are not generically available |
32768 | QUEST_FLAGS_WEEKLY | Weekly repeatable quests (only flag that the core applies specific behavior for) |
65536 | QUEST_FLAGS_AUTOCOMPLETE | Auto complete |
131072 | QUEST_FLAGS_SPECIAL_ITEM | has something to do with RequiredItemId and SourceItemId |
262144 | QUEST_FLAGS_OBJ_TEXT | Use Objective text as Complete text |
524288 | QUEST_FLAGS_AUTO_ACCEPT | Quests in starting areas |
Like all flag based fields, QuestFlags can be added for the different types of quest.
Note that some flags may not be supported by core.
SpecialFlags
This field is a bitmask and is for controlling server side quest functions. This data blizz keeps serverside, and is not sent to the client, so we have to populate the field manually.
- 0: No extra requirements
- 1: Makes the quest repeatable.
- 2: Makes the quest only completable by some external event (an entry in areatrigger_involvedrelation, spell effect quest complete or an entry in spell_scripts with command 7 as some examples)
- 4: Make quest auto-accept. As of patch 3.3.5a only quests in the starter area need this flag.
- 8: Only used for Dungeon Finder quests
RewardTitleId
The title the character will receive upon completion of the quest. See CharTitles.dbc
RequiredPlayerKills
Displays how much players you need to kill before completing the quest.
RewardTalents
Will give X bonus talents to the player completed the quest. Leave "0" for No Bonus Talent Points.
RewardArenaPoints
Will Give X Arena Points to the player that completes the quest. Leave "0" For no Arena Points Reward.
RewardChoiceItemId
Id of item available for reward choice.
Number of Charges in rewarded item available.
RewardChoiceItemCount
Will choose how many items will be added for reward. E.g "RewardChoiceItemId" is the reward item and "RewardChoiceItemCount" is the count of how many items will be added as a reward.
RewardItemId
item Id given for reward (no choice).
RewardItemCount
This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.
RewardFactionId
Faction Id (from Faction.dbc) for which the quest give reputation points.
Number of gain or lost reputation points for Faction at quest completion. This is special reputation rewarding. Normal reputation reward to quest rewarding creature faction calculated and added automatically.
RewardFactionValueId
This field is used for reputation lookup in QuestFactionReward.dbc if RewardFactionValueId is 0. Value X in this field indicates RepX column of QuestFactionReward.dbc. If RewardRepValueId is positive, reputation from the first row of QuestFactionReward.dbc will be used, for negative values the second row is used.
RewardFactionValueIdOverride
This field is used to give reputation values not present in QuestFactionReward.dbc or to override them if RewardRepValueId is wrong for some reason. The value in this field is 100× the intended reputation reward (if you want to give 400 rep, put 40000 in RewardFactionValueIdOverride).
PointMapId
MapId of a quest point of interest (POI - Point Of Interest). POI will be shown on the map when quest is active.
PointX
X coordinate of quest POI.
PointY
Y coordinate of quest POI.
PointOpt
This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.
Title
Title of the quest.
Objectives
Objectives of the quest. If empty, quest is an auto-complete quest that can be immediately finished without accepting it first.
Details
The quest text. You can use certain placeholders that will be filled in in-game: $B - line break, $N - name, $R - race, $C - class, $Gmale:female; (male and female can be replace with any synonymn you want, but the order must stay the same. IE: boy:girl / man:woman / sir:madam / dude:chick)
EndText
This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.
OfferRewardText
First text send to the player by the NPC when completing the quest. You can use certain placeholders that will be filled in in-game: $B - line break, $N - name, $R - race, $C - class, $Gmale:female; (male and female can be replace with any synonymn you want, but the order must stay the same. IE: boy:girl / man:woman / sir:madam / dude:chick)
RequestItemsText
Text sent to player when the player tries to talk to the NPC with the quest active but incomplete. (The text under the "Progress" title in Wowhead.) You can use certain placeholders that will be filled in in-game: $B - line break, $N - name, $R - race, $C - class, $Gmale:female; (male and female can be replace with any synonymn you want, but the order must stay the same. IE: boy:girl / man:woman / sir:madam / dude:chick)
CompletedText
This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.
RequiredNpcOrGo
Value > 0: required creature_template ID the player needs to kill/cast on in order to complete the quest.
Value < 0: required gameobject_template ID the player needs to cast on in order to complete the quest.
If RequiredSpellCast is != 0, the objective is to cast on target, else kill.
NOTE: If RequiredSpellCast is != 0 and the spell has effects Send Event or Quest Complete, this field may be left empty.
RequiredNpcOrGoCount
The number of times the creature or gameobject must be killed or casted upon.
RequiredSourceItemId
Item ID that is needed indirectly by the quest. For example, the quests asks for item X but the only way to get item X is by activating item Y; however, item Y is also a quest item. Therefore you set item Y's ID in this field. This requirement will not appear in the quest text, it is just for the core to know when to drop a quest item that isn't in the RequiredItemId field but is still needed by the quest.
RequiredSourceItemCount
The maximum number of copies of the item in RequiredSourceItemId that can be picked up (and dropped by the core).
RequiredItemId
Id of required item to complete the quest.
RequiredItemCount
Amount of required items
RequiredSpellCast
Spell ID of Spell that needs to be cast in order to fulfill a quest objective. A spell normally needs a target which is RequiredNpcOrGOId
And for spells with "SpellEffect with ImpliciteTargetA-B == 38" check Conditions table - SourceTypeOrReferenceId 13 ConditionTypeOrReference 18
NOTE: If the spell has spell effects Send Event or Quest Complete, it can be entered here WITHOUT the need for a target and count.
Unknown0
This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.
ObjectiveText
Used to define non-standard objective texts, that show up in the questlog. Example, "Heal fallen warrior" and the number gets added by Count values.
DetailsEmote
This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.
DetailsEmoteDelay
Emote delay in ms
EmoteOnIncomplete
This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.
EmoteOnComplete
Emote played by the related NPC at the time all quest objects are completed.
OfferRewardEmote
Emote played by the NPC at the time the character is rewarded for the quest.
OfferRewardEmoteDelay
Emote delay in ms
StartScript
ID of the start script. See quest_start_scripts.id
CompleteScript
ID of the end script. See quest_end_scripts.id
WDBVerified
This field is used by the TrinityDB Team to determine whether a template has been verified from WDB files. Not sure if it is used by Skyfire. It is best to get the correct data to add to database rather than waste time with wrong info.
If value is 0 then it has not been parsed yet.
If value is above 0 then it has been parsed with WDB files from that specific client build.
If value is -1 then it is just a place holder until proper data are found on WDBs.
If value is - client build then it was parsed with WDB files from that specific client build and manually edited later for some special necessity.
Examples
The "rules of engagement" dealing with quests
1. Always use PrevQuestId before using NextQuestId. NextQuestId is considered optional and to be used only when PrevQuestId is not sufficient
Basic quest
Single, stand-alone quest with no prerequisites
*questA*
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questA
When this quest require another quest to be rewarded
*questA*
PrevQuestId = questX NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questA
Chain of quests
Player get quests in a strict chain that must be completed in a specific order.
*questA* | *questB* | *questC* | *questD*
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questB entry = questAPrevQuestId = questA NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questC entry = questB PrevQuestId = questB NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questD entry = questC PrevQuestId = questC NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questD
Chain of quests with multiple start quests.
Player should only be allowed to complete one of three possible
*questA* *questB* *questC* \ | / ------ *questD* ----- | *questE*
PrevQuestId = 0 NextQuestId = questD ExclusiveGroup = questA NextQuestInChain = questD entry = questAPrevQuestId = 0 NextQuestId = questD ExclusiveGroup = questA NextQuestInChain = questD entry = questB PrevQuestId = 0 NextQuestId = questD ExclusiveGroup = questA NextQuestInChain = questD entry = questC PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questE entry = questD PrevQuestId = questD NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questE
Chain of quests with multiple start quests.
Player must complete all three initial quests before D becomes available
*questA* *questB* *questC* \ | / ------ *questD* ----- | *questE*
PrevQuestId = 0 NextQuestId = questD ExclusiveGroup = -questA NextQuestInChain = questD entry = questAPrevQuestId = 0 NextQuestId = questD ExclusiveGroup = -questA NextQuestInChain = questD entry = questB PrevQuestId = 0 NextQuestId = questD ExclusiveGroup = -questA NextQuestInChain = questD entry = questC PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questE entry = questD PrevQuestId = questD NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questE
Quests with split and a child quest
Completing A unlocks B and C that can be done at the same time. They both need to be completed before D becomes available. X is needed to obtain item for C and this quest should only be available if C is active
*questA* / \ *questB *questC* - *questX* \ / *questD*
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questAPrevQuestId = questA NextQuestId = questD ExclusiveGroup = -questB NextQuestInChain = 0 entry = questB PrevQuestId = questA NextQuestId = questD ExclusiveGroup = -questB NextQuestInChain = 0 entry = questC PrevQuestId = -questC NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questX PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questD
Multiple quest chains, leading to one final quest
Player may complete (not required to) X, but has to complete all three quest chains before final quest becomes available
*questX* | *questA* *questC* *questE* | | | *questB* *questD* *questF* \ | / ------ *questG* -----
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questC entry = questXPrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questB entry = questA PrevQuestId = questA NextQuestId = questG ExclusiveGroup = -questB NextQuestInChain = 0 entry = questB PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questD entry = questC PrevQuestId = questC NextQuestId = questG ExclusiveGroup = -questB NextQuestInChain = 0 entry = questD PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questF entry = questE PrevQuestId = questE NextQuestId = questG ExclusiveGroup = -questB NextQuestInChain = 0 entry = questF
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questG
Complicated
Player must first complete A, then B to unlock the chain from C to E. Three other quests in a group will also be unlocked, those can be done at the same time. The three grouped quests must all be completed before I becomes available. Completion of E and I is required to obtain the final quest.
*questA* | *questB* / \ *questC* *questF* | *questG* *questD* *questH* | | *questE* *questI* \ / *questJ*
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questB entry = questAPrevQuestId = questA NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questB
PrevQuestId = questB NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questD entry = questC PrevQuestId = questC NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questE entry = questD PrevQuestId = questD NextQuestId = questJ ExclusiveGroup = -questE NextQuestInChain = 0 entry = questE
PrevQuestId = questB NextQuestId = questI ExclusiveGroup = -questF NextQuestInChain = 0 entry = questF PrevQuestId = questB NextQuestId = questI ExclusiveGroup = -questF NextQuestInChain = 0 entry = questG PrevQuestId = questB NextQuestId = questI ExclusiveGroup = -questF NextQuestInChain = 0 entry = questH
PrevQuestId = 0 NextQuestId = questJ ExclusiveGroup = -questE NextQuestInChain = 0 entry = questI
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questJ
Impossible - many quests may unlock many
Player can choose between two alternative chains (Chain A or B, but not both chains). A2 or B2 should unlock C, D and E when complete. When all three complete, F should be unlocked. If player get A3 or B3 after complete F, depends on if chain A or B was chosen.
*questA1* *questB1* | | *questA2* *questB2* \ / ---- *questC* ---- *questD* *questE* | *questF* / \ *questA3* *questB3*
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questA2 entry = questA1PrevQuestId = questA1 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questA2
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = questB2 entry = questB1 PrevQuestId = questB1 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questB2
PrevQuestId = 0 NextQuestId = questF ExclusiveGroup = -questC NextQuestInChain = 0 entry = questC PrevQuestId = 0 NextQuestId = questF ExclusiveGroup = -questC NextQuestInChain = 0 entry = questD PrevQuestId = 0 NextQuestId = questF ExclusiveGroup = -questC NextQuestInChain = 0 entry = questE
PrevQuestId = 0 NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questF
PrevQuestId = questF NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questA3 PrevQuestId = questF NextQuestId = 0 ExclusiveGroup = 0 NextQuestInChain = 0 entry = questB3
Note: if player can choose between chain A or B may be determined by faction status (aldor or scryer), using ReqMinRepFaction = 1. Player should not be able to be neutral+1 with both at the same time. This may be the common threshold to obtain aldor or scryer quests (this is unsure). If that is the case, only the unlock of C, D and E after complete A2 _or_ B2 is the impossible part.
Note 2: With the Conditions table now every quest chain is possible.