2 * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 // client supported max level for player/pets/etc. Avoid overflow or client stability affected.
23 // also see GT_MAX_LEVEL define
26 // Server side limitation. Base at used code requirements.
27 // also see MAX_LEVEL and GT_MAX_LEVEL define
28 #define STRONG_MAX_LEVEL 255
37 enum AchievementFactionFlags
39 ACHIEVEMENT_FACTION_FLAG_HORDE
= 0x00000000,
40 ACHIEVEMENT_FACTION_FLAG_ALLIANCE
= 0x00000001,
45 ACHIEVEMENT_FLAG_COUNTER
= 0x00000001, // Just count statistic (never stop and complete)
46 ACHIEVEMENT_FLAG_UNK2
= 0x00000002, // not used
47 ACHIEVEMENT_FLAG_STORE_MAX_VALUE
= 0x00000004, // Store only max value? used only in "Reach level xx"
48 ACHIEVEMENT_FLAG_SUMM
= 0x00000008, // Use summ criteria value from all reqirements (and calculate max value)
49 ACHIEVEMENT_FLAG_MAX_USED
= 0x00000010, // Show max criteria (and calculate max value ??)
50 ACHIEVEMENT_FLAG_REQ_COUNT
= 0x00000020, // Use not zero req count (and calculate max value)
51 ACHIEVEMENT_FLAG_AVERAGE
= 0x00000040, // Show as average value (value / time_in_days) depend from other flag (by def use last criteria value)
52 ACHIEVEMENT_FLAG_BAR
= 0x00000080, // Show as progress bar (value / max vale) depend from other flag (by def use last criteria value)
53 ACHIEVEMENT_FLAG_REALM_FIRST_REACH
= 0x00000100, //
54 ACHIEVEMENT_FLAG_REALM_FIRST_KILL
= 0x00000200, //
57 enum AchievementCriteriaCondition
59 ACHIEVEMENT_CRITERIA_CONDITION_NONE
= 0,
60 ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH
= 1,
61 ACHIEVEMENT_CRITERIA_CONDITION_UNK1
= 2, // only used in "Complete a daily quest every day for five consecutive days"
62 ACHIEVEMENT_CRITERIA_CONDITION_MAP
= 3, // requires you to be on specific map
63 ACHIEVEMENT_CRITERIA_CONDITION_NO_LOOSE
= 4, // only used in "Win 10 arenas without losing"
64 ACHIEVEMENT_CRITERIA_CONDITION_UNK2
= 9, // unk
65 ACHIEVEMENT_CRITERIA_CONDITION_UNK3
= 13, // unk
68 enum AchievementCriteriaCompletionFlags
70 ACHIEVEMENT_CRITERIA_FLAG_SHOW_PROGRESS_BAR
= 0x00000001, // Show progress as bar
71 ACHIEVEMENT_CRITERIA_FLAG_HIDE_CRITERIA
= 0x00000002, // Not show criteria in client
72 ACHIEVEMENT_CRITERIA_FLAG_UNK3
= 0x00000004, // BG related??
73 ACHIEVEMENT_CRITERIA_FLAG_UNK4
= 0x00000008, //
74 ACHIEVEMENT_CRITERIA_FLAG_UNK5
= 0x00000010, // not used
75 ACHIEVEMENT_CRITERIA_FLAG_MONEY_COUNTER
= 0x00000020, // Displays counter as money
78 enum AchievementCriteriaGroupFlags
80 // you mustn't be in a group while fulfilling this achievement
81 ACHIEVEMENT_CRITERIA_GROUP_NOT_IN_GROUP
= 2,
84 enum AchievementCriteriaTypes
86 ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE
= 0,
87 ACHIEVEMENT_CRITERIA_TYPE_WIN_BG
= 1,
88 ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL
= 5,
89 ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL
= 7,
90 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT
= 8,
91 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT
= 9,
92 // you have to complete a daily quest x times in a row
93 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY
= 10,
94 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE
= 11,
95 ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE
= 13,
96 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST
= 14,
97 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND
= 15,
98 ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP
= 16,
99 ACHIEVEMENT_CRITERIA_TYPE_DEATH
= 17,
100 ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON
= 18,
101 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID
= 19,
102 ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE
= 20,
103 ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER
= 23,
104 ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING
= 24,
105 ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM
= 26,
106 ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST
= 27,
107 ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
= 28,
108 ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL
= 29,
109 ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
= 30,
110 ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA
= 31,
111 ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA
= 32,
112 ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA
= 33,
113 ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL
= 34,
114 // TODO: this criteria has additional conditions which can not be found in the dbcs
115 ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL
= 35,
116 ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM
= 36,
117 // TODO: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc
118 ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA
= 37,
119 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING
= 38,
120 ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING
= 39,
121 ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL
= 40,
122 ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM
= 41,
123 ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM
= 42,
124 ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA
= 43,
125 ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK
= 44,
126 ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT
= 45,
127 ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION
= 46,
128 ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION
= 47,
129 // noted: rewarded as soon as the player payed, not at taking place at the seat
130 ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP
= 48,
131 ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM
= 49,
132 // TODO: itemlevel is mentioned in text but not present in dbc
133 ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT
= 50,
134 ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT
= 51,
135 ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS
= 52,
136 ACHIEVEMENT_CRITERIA_TYPE_HK_RACE
= 53,
137 ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE
= 54,
138 ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE
= 55,
139 // TODO: in some cases map not present, and in some cases need do without die
140 ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS
= 56,
141 ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM
= 57,
142 ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS
= 59,
143 ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS
= 60,
144 ACHIEVEMENT_CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS
= 61,
145 ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD
= 62,
146 ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING
= 63,
147 ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_AT_BARBER
= 65,
148 ACHIEVEMENT_CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL
= 66,
149 ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY
= 67,
150 ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT
= 68,
151 ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2
= 69,
152 ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL
= 70,
153 ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT
= 72,
154 // TODO: title id is not mentioned in dbc
155 ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE
= 74,
156 ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS
= 75,
157 ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL
= 76,
158 ACHIEVEMENT_CRITERIA_TYPE_LOSE_DUEL
= 77,
159 // TODO: creature type (demon, undead etc.) is not stored in dbc
160 ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE
= 78,
161 ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS
= 80,
162 ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION
= 82,
163 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID
= 83,
164 ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS
= 84,
165 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_SOLD
= 85,
166 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED
= 86,
167 ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION
= 87,
168 ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION
= 88,
169 ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS
= 89,
170 ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM
= 90,
171 ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM
= 91,
172 ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED
= 93,
173 ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED
= 94,
174 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH
= 95,
175 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_POWER
= 96,
176 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_STAT
= 97,
177 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER
= 98,
178 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_ARMOR
= 99,
179 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING
= 100,
180 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_DEALT
= 101,
181 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HIT_RECEIVED
= 102,
182 ACHIEVEMENT_CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED
= 103,
183 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEAL_CASTED
= 104,
184 ACHIEVEMENT_CRITERIA_TYPE_TOTAL_HEALING_RECEIVED
= 105,
185 ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED
= 106,
186 ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED
= 107,
187 ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN
= 108,
188 ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE
= 109,
189 // TODO: target entry is missing
190 ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2
= 110,
191 ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE
= 112,
192 ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL
= 113,
193 ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS
= 114,
194 // 0..114 => 115 criteria types total
195 ACHIEVEMENT_CRITERIA_TYPE_TOTAL
= 115,
200 AREA_FLAG_SNOW
= 0x00000001, // snow (only Dun Morogh, Naxxramas, Razorfen Downs and Winterspring)
201 AREA_FLAG_UNK1
= 0x00000002, // may be necropolis?
202 AREA_FLAG_UNK2
= 0x00000004, // Only used for areas on map 571 (development before)
203 AREA_FLAG_SLAVE_CAPITAL
= 0x00000008, // city and city subsones
204 AREA_FLAG_UNK3
= 0x00000010, // can't find common meaning
205 AREA_FLAG_SLAVE_CAPITAL2
= 0x00000020, // slave capital city flag?
206 AREA_FLAG_UNK4
= 0x00000040, // many zones have this flag
207 AREA_FLAG_ARENA
= 0x00000080, // arena, both instanced and world arenas
208 AREA_FLAG_CAPITAL
= 0x00000100, // main capital city flag
209 AREA_FLAG_CITY
= 0x00000200, // only for one zone named "City" (where it located?)
210 AREA_FLAG_OUTLAND
= 0x00000400, // expansion zones? (only Eye of the Storm not have this flag, but have 0x00004000 flag)
211 AREA_FLAG_SANCTUARY
= 0x00000800, // sanctuary area (PvP disabled)
212 AREA_FLAG_NEED_FLY
= 0x00001000, // only Netherwing Ledge, Socrethar's Seat, Tempest Keep, The Arcatraz, The Botanica, The Mechanar, Sorrow Wing Point, Dragonspine Ridge, Netherwing Mines, Dragonmaw Base Camp, Dragonmaw Skyway
213 AREA_FLAG_UNUSED1
= 0x00002000, // not used now (no area/zones with this flag set in 3.0.3)
214 AREA_FLAG_OUTLAND2
= 0x00004000, // expansion zones? (only Circle of Blood Arena not have this flag, but have 0x00000400 flag)
215 AREA_FLAG_PVP
= 0x00008000, // pvp objective area? (Death's Door also has this flag although it's no pvp object area)
216 AREA_FLAG_ARENA_INSTANCE
= 0x00010000, // used by instanced arenas only
217 AREA_FLAG_UNUSED2
= 0x00020000, // not used now (no area/zones with this flag set in 3.0.3)
218 AREA_FLAG_UNK5
= 0x00040000, // only used for Amani Pass, Hatchet Hills
219 AREA_FLAG_UNK6
= 0x00080000, // Valgarde and Acherus: The Ebon Hold
220 AREA_FLAG_LOWLEVEL
= 0x00100000, // used for some starting areas with area_level <=15
221 AREA_FLAG_TOWN
= 0x00200000, // small towns with Inn
222 AREA_FLAG_UNK7
= 0x00400000, // Warsong Hold, Acherus: The Ebon Hold, New Agamand Inn, Vengeance Landing Inn
223 AREA_FLAG_UNK8
= 0x00800000, // Westguard Inn, Acherus: The Ebon Hold, Valgarde
224 AREA_FLAG_OUTDOOR_PVP
= 0x01000000, // Wintergrasp and it's subzones
225 AREA_FLAG_UNK9
= 0x02000000, // unknown
226 AREA_FLAG_UNK10
= 0x04000000, // unknown
227 AREA_FLAG_OUTDOOR_PVP2
= 0x08000000 // Wintergrasp and it's subzones
230 enum FactionTemplateFlags
232 FACTION_TEMPLATE_FLAG_CONTESTED_GUARD
= 0x00001000, // faction will attack players that were involved in PvP combats
237 FACTION_MASK_PLAYER
= 1, // any player
238 FACTION_MASK_ALLIANCE
= 2, // player or creature from alliance team
239 FACTION_MASK_HORDE
= 4, // player or creature from horde team
240 FACTION_MASK_MONSTER
= 8 // aggressive creature from monster team
241 // if none flags set then non-aggressive creature
249 MAP_BATTLEGROUND
= 3,
253 enum AbilytyLearnType
255 ABILITY_LEARNED_ON_GET_PROFESSION_SKILL
= 1,
256 ABILITY_LEARNED_ON_GET_RACE_OR_CLASS_SKILL
= 2
259 enum ItemEnchantmentType
261 ITEM_ENCHANTMENT_TYPE_NONE
= 0,
262 ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL
= 1,
263 ITEM_ENCHANTMENT_TYPE_DAMAGE
= 2,
264 ITEM_ENCHANTMENT_TYPE_EQUIP_SPELL
= 3,
265 ITEM_ENCHANTMENT_TYPE_RESISTANCE
= 4,
266 ITEM_ENCHANTMENT_TYPE_STAT
= 5,
267 ITEM_ENCHANTMENT_TYPE_TOTEM
= 6,
268 ITEM_ENCHANTMENT_TYPE_USE_SPELL
= 7,
269 ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET
= 8
272 enum TotemCategoryType
274 TOTEM_CATEGORY_TYPE_KNIFE
= 1,
275 TOTEM_CATEGORY_TYPE_TOTEM
= 2,
276 TOTEM_CATEGORY_TYPE_ROD
= 3,
277 TOTEM_CATEGORY_TYPE_PICK
= 21,
278 TOTEM_CATEGORY_TYPE_STONE
= 22,
279 TOTEM_CATEGORY_TYPE_HAMMER
= 23,
280 TOTEM_CATEGORY_TYPE_SPANNER
= 24
283 // SummonProperties.dbc, col 1
286 SUMMON_PROP_GROUP_UNKNOWN1
= 0, // 1160 spells in 3.0.3
287 SUMMON_PROP_GROUP_UNKNOWN2
= 1, // 861 spells in 3.0.3
288 SUMMON_PROP_GROUP_PETS
= 2, // 52 spells in 3.0.3, pets mostly
289 SUMMON_PROP_GROUP_CONTROLLABLE
= 3, // 13 spells in 3.0.3, mostly controllable
290 SUMMON_PROP_GROUP_UNKNOWN3
= 4 // 86 spells in 3.0.3, taxi/mounts
293 // SummonProperties.dbc, col 3
296 SUMMON_PROP_TYPE_UNKNOWN
= 0, // different summons, 1330 spells in 3.0.3
297 SUMMON_PROP_TYPE_SUMMON
= 1, // generic summons, 49 spells in 3.0.3
298 SUMMON_PROP_TYPE_GUARDIAN
= 2, // summon guardian, 393 spells in 3.0.3
299 SUMMON_PROP_TYPE_ARMY
= 3, // summon army, 5 spells in 3.0.3
300 SUMMON_PROP_TYPE_TOTEM
= 4, // summon totem, 169 spells in 3.0.3
301 SUMMON_PROP_TYPE_CRITTER
= 5, // critter/minipet, 195 spells in 3.0.3
302 SUMMON_PROP_TYPE_DK
= 6, // summon DRW/Ghoul, 2 spells in 3.0.3
303 SUMMON_PROP_TYPE_BOMB
= 7, // summon bot/bomb, 4 spells in 3.0.3
304 SUMMON_PROP_TYPE_PHASING
= 8, // something todo with DK prequest line, 2 spells in 3.0.3
305 SUMMON_PROP_TYPE_SIEGE_VEH
= 9, // summon different vehicles, 14 spells in 3.0.3
306 SUMMON_PROP_TYPE_DRAKE_VEH
= 10, // summon drake (vehicle), 3 spells
307 SUMMON_PROP_TYPE_LIGHTWELL
= 11 // summon lightwell, 6 spells in 3.0.3
310 // SummonProperties.dbc, col 5
313 SUMMON_PROP_FLAG_NONE
= 0x0000, // 1342 spells in 3.0.3
314 SUMMON_PROP_FLAG_UNK1
= 0x0001, // 75 spells in 3.0.3, something unfriendly
315 SUMMON_PROP_FLAG_UNK2
= 0x0002, // 616 spells in 3.0.3, something friendly
316 SUMMON_PROP_FLAG_UNK3
= 0x0004, // 22 spells in 3.0.3, no idea...
317 SUMMON_PROP_FLAG_UNK4
= 0x0008, // 49 spells in 3.0.3, some mounts
318 SUMMON_PROP_FLAG_UNK5
= 0x0010, // 25 spells in 3.0.3, quest related?
319 SUMMON_PROP_FLAG_UNK6
= 0x0020, // 0 spells in 3.0.3, unused
320 SUMMON_PROP_FLAG_UNK7
= 0x0040, // 12 spells in 3.0.3, no idea
321 SUMMON_PROP_FLAG_UNK8
= 0x0080, // 4 spells in 3.0.3, no idea
322 SUMMON_PROP_FLAG_UNK9
= 0x0100, // 51 spells in 3.0.3, no idea, many quest related
323 SUMMON_PROP_FLAG_UNK10
= 0x0200, // 51 spells in 3.0.3, something defensive
324 SUMMON_PROP_FLAG_UNK11
= 0x0400, // 3 spells, requires something near?
325 SUMMON_PROP_FLAG_UNK12
= 0x0800, // 30 spells in 3.0.3, no idea
326 SUMMON_PROP_FLAG_UNK13
= 0x1000, // 8 spells in 3.0.3, siege vehicle
327 SUMMON_PROP_FLAG_UNK14
= 0x2000, // 2 spells in 3.0.3, escort?