WoW:Questcache.wdb
Questcache.wdb is a file created by World of Warcraft to cache quest data retrieved from its game servers. This file is located in "World of Warcraft\Cache\WDB\enUS\", where enUS is your game locale.
Header
The header of the file is 24 bytes long. For more information check WDB files.
Structure
Note: All integers are stored as reversed numbers.
For example 0xC06D0000 ^= 0x00006DC0 ^= 26096
Strings are stored as normal text, but every stringends with a 0 byte.
The main struckture of questcache.wdb can split into 3 parts
1st the questid, stored in a 4 byte integer, 2nd the lenght of the questdata in byte, also a 4 byte integer, 3rd the questdata itself, lenght of the second filed
Questdata
The questdata has 130 fields, where most of the information are stored about the quest.
not completly filled yet
FieldNr | Name | Type/Lenght | Discription |
---|---|---|---|
1 | questid | integer/4 | uniqe quest id |
2 | quest type | integer/4 | function unknown, 2 values (0 + 2) |
3 | questlevel | integer/4 | the level of the quest |
4 | accept level | integer/4 | level the player needs to accept this quest |
5 | areaid/sortid | integer/4 | the areaid (worldmapid) |
6 | infoid | integer/4 | a link to questinfo.dbc |
7 | seggestedplayers | integer/4 | numof players recommend for this quest |
8 | faction1id | integer/4 | faction id |
9 | faction1amount | integer/4 | you need this rep-status to complete this quest (0 == neutral) |
10 | faction2id | integer/4 | faction id |
11 | faction2amount | integer/4 | you need this rep-status to complete this quest (0 == neutral) |
12 | nextquestid | integer/4 | the questid of the quest after completition this quest |
13 | expflag | integer/4 | flag from 0-8 see QuestXP.dbc for values |
14 | coins | integer/4 | the amount of (copper) coins player recieves when not at max level |
15 | coinsmaxlevel | integer/4 | the amount of (copper) coins player recieves when at maxlevel (dowsn't match exactly) |
16 | spell1 | integer/4 | id of a spell which is casted on/will reward the player |
17 | spell2 | integer/4 | id of a spell which is casted on/will reward the player |
18 | integer/4 | ||
19 | integer/4 | ||
20 | questitemid | integer/4 | uniqe id of a questitem, which is joined to this quest |
21 | questflags | bitmask/4 | flags of a quest |
22 | integer/4 | ||
23 | titleid | integer/4 | id of a title, which player recieves when finish the quest |
24 | killplayer | integer/4 | amount of players to kill for this quest |
25 | talentpoints | integer/4 | amount of talent points player recieves when complete this quest |
26 | integer/4 | ||
27 | professionid | integer/4 | id of an profession |
28 | professionamount | integer/4 | amount of points player recieves to profession at filed 27, when complete thisquest |
29 | integer/4 | ||
30 | integer/4 | ||
31 | integer/4 | ||
32 | rewarditem1 | integer/4 | item id of 1. item player recieves |
33 | rewarditem1amount | integer/4 | number of items |
34 | rewarditem2 | integer/4 | item id of 2. item player recieves |
35 | rewarditem2amount | integer/4 | number of items |
36 | rewarditem3 | integer/4 | item id of 3. item player recieves |
37 | rewarditem3amount | integer/4 | number of items |
38 | rewarditem4 | integer/4 | item id of 4. item player recieves |
39 | rewarditem4amount | integer/4 | number of items |
40 | chooseitem1 | integer/4 | item id of 1. item player can choose |
41 | chooseitem1amount | integer/4 | number of items |
42 | chooseitem2 | integer/4 | item id of 2. item player can choose |
43 | chooseitem2amount | integer/4 | number of items |
44 | chooseitem3 | integer/4 | item id of 3. item player can choose |
45 | chooseitem3amount | integer/4 | number of items |
46 | chooseitem4 | integer/4 | item id of 4. item player can choose |
47 | chooseitem4amount | integer/4 | number of items |
48 | chooseitem5 | integer/4 | item id of 5. item player can choose |
49 | chooseitem5amount | integer/4 | number of items |
50 | chooseitem6 | integer/4 | item id of 6. item player can choose |
51 | chooseitem6amount | integer/4 | number of items |
52 | faction1 | integer/4 | id of the faction, player recieves reputation |
53 | faction2 | integer/4 | id of the faction, player recieves reputation |
54 | faction3 | integer/4 | id of the faction, player recieves reputation |
55 | faction4 | integer/4 | id of the faction, player recieves reputation |
56 | faction5 | integer/4 | id of the faction, player recieves reputation |
57 | faction1amount | integer/4 | num of reputation player recieves (note: index from -9 to 9, values are (0 to 9) 0, 10, 25, 75, 150, 250, 350, 500, 1000, 5) |
58 | faction2amount | integer/4 | num of reputation player recieves |
59 | faction3amount | integer/4 | num of reputation player recieves |
60 | faction4amount | integer/4 | num of reputation player recieves |
61 | faction5amount | integer/4 | num of reputation player recieves |
62 | faction1absamount | integer/4 | absolute amount of points player recieve (value/10) |
63 | faction2absamount | integer/4 | absolute amount of points player recieve (value/10) |
64 | faction3absamount | integer/4 | absolute amount of points player recieve (value/10) |
65 | faction4absamount | integer/4 | absolute amount of points player recieve (value/10) |
66 | faction5absamount | integer/4 | absolute amount of points player recieve (value/10) |
67 | mapid | integer/4 | mapid of ingame map ( not worldmap id) |
68 | integer/4 | ||
69 | integer/4 | ||
70 | integer/4 | ||
71 | questname | string/flexible | the name of the quest |
72 | shortobjective | string/flexible | the short objective discription of this quest |
73 | questtext | string/flexible | the full quest text |
74 | objective event | string/flexible | objective text if quest is an event, otherwise empty |
75 | completetext | string/flexible | objective textwhen complete all objectives |
76 | objectivenpc1 | integer/4 | npcid to interact (kill/talk ...) |
77 | objectivenpc1Amount | integer/4 | number of interactions |
78 | questreagent1 | integer/4 | itemid of a reagent which is needed for this quest (not the to collected item) |
79 | questreagent1amount | integer/4 | max num of items that can be collected |
80 | objectivenpc2 | integer/4 | npcid to interact (kill/talk ...) |
81 | objectivenpc2Amount | integer/4 | number of interactions |
82 | questreagent2 | integer/4 | itemid of a reagent which is needed for this quest (not the to collected item) |
83 | questreagent2amount | integer/4 | max num of items that can be collected |
84 | objectivenpc3 | integer/4 | npcid to interact (kill/talk ...) |
85 | objectivenpc3Amount | integer/4 | number of interactions |
86 | questreagent3 | integer/4 | itemid of a reagent which is needed for this quest (not the to collected item) |
87 | questreagent3amount | integer/4 | max num of items that can be collected |
88 | objectivenpc4 | integer/4 | npcid to interact (kill/talk ...) |
89 | objectivenpc4Amount | integer/4 | number of interactions |
90 | questreagent4 | integer/4 | itemid of a reagent which is needed for this quest (not the to collected item) |
91 | questreagent4amount | integer/4 | max num of items that can be collected |
92 | collectItem1 | integer/4 | itemid for item to collect |
93 | collectItem1amount | integer/4 | number of items to collect |
94 | collectItem2 | integer/4 | itemid for item to collect |
95 | collectItem2amount | integer/4 | number of items to collect |
96 | collectItem3 | integer/4 | itemid for item to collect |
97 | collectItem3amount | integer/4 | number of items to collect |
98 | collectItem4 | integer/4 | itemid for item to collect |
99 | collectItem4amount | integer/4 | number of items to collect |
100 | collectItem5 | integer/4 | itemid for item to collect |
101 | collectItem5amount | integer/4 | number of items to collect |
102 | collectItem6 | integer/4 | itemid for item to collect |
103 | collectItem6amount | integer/4 | number of items to collect |
104 | unknown spellid | integer/4 | a spellid ( learn / use )? |
105 | objective1text | string/flexible | text for objective 1 |
106 | objective2text | string/flexible | text for objective 2 |
107 | objective3text | string/flexible | text for objective 3 |
108 | objective4text | string/flexible | text for objective 4 |
109 | rewardcurrency1 | integer/4 | |
110 | rewardcurrency1amount | integer/4 | |
111 | rewardcurrency2 | integer/4 | |
112 | rewardcurrency2amount | integer/4 | |
113 | rewardcurrency3 | integer/4 | |
114 | rewardcurrency3amount | integer/4 | |
115 | rewardcurrency4 | integer/4 | unsure for rewardcurrency 4-8, because they are evertime 0 |
116 | rewardcurrency4amount | integer/4 | |
117 | rewardcurrency5 | integer/4 | |
118 | rewardcurrency5amount | integer/4 | |
119 | rewardcurrency6 | integer/4 | |
120 | rewardcurrency6amount | integer/4 | |
121 | rewardcurrency7 | integer/4 | |
122 | rewardcurrency7amount | integer/4 | |
123 | rewardcurrency8 | integer/4 | |
124 | rewardcurrency8amount | integer/4 | |
125 | hinttext1 | string/flexible | a hint text about a npc |
126 | hintnpc1 | string/flexible | the npc for the hint text |
127 | hinttext2 | string/flexible | a hint text about a npc |
128 | hintnpc2 | string/flexible | the npc for the hint text |
129 | signature1? | integer/4 | |
130 | signature2? | integer/4 |
EOF
Questcache.wdb ends like all WDB files with 8 times \x00.