Core/Spells: Implemented personal summons (#19231)
[trinitycore] / src / server / game / DataStores / DBCEnums.h
1 /*
2 * Copyright (C) 2008-2018 TrinityCore <https://www.trinitycore.org/>
3 * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 * more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #ifndef DBCENUMS_H
20 #define DBCENUMS_H
21
22 #include "Define.h"
23 #include <array>
24
25 #pragma pack(push, 1)
26
27 struct DBCPosition2D
28 {
29 float X;
30 float Y;
31 };
32
33 struct DBCPosition3D
34 {
35 float X;
36 float Y;
37 float Z;
38 };
39
40 #pragma pack(pop)
41
42 enum LevelLimit
43 {
44 // Client expected level limitation, like as used in DBC item max levels for "until max player level"
45 // use as default max player level, must be fit max level for used client
46 // also see MAX_LEVEL and STRONG_MAX_LEVEL define
47 DEFAULT_MAX_LEVEL = 110,
48
49 // client supported max level for player/pets/etc. Avoid overflow or client stability affected.
50 // also see GT_MAX_LEVEL define
51 MAX_LEVEL = 110,
52
53 // Server side limitation. Base at used code requirements.
54 // also see MAX_LEVEL and GT_MAX_LEVEL define
55 STRONG_MAX_LEVEL = 255,
56 };
57
58 enum BattlegroundBracketId // bracketId for level ranges
59 {
60 BG_BRACKET_ID_FIRST = 0,
61 BG_BRACKET_ID_LAST = 11,
62
63 // must be max value in PvPDificulty slot + 1
64 MAX_BATTLEGROUND_BRACKETS
65 };
66
67 enum AreaTeams
68 {
69 AREATEAM_NONE = 0,
70 AREATEAM_ALLY = 2,
71 AREATEAM_HORDE = 4,
72 AREATEAM_ANY = AREATEAM_ALLY+AREATEAM_HORDE
73 };
74
75 enum AchievementFaction
76 {
77 ACHIEVEMENT_FACTION_HORDE = 0,
78 ACHIEVEMENT_FACTION_ALLIANCE = 1,
79 ACHIEVEMENT_FACTION_ANY = -1
80 };
81
82 enum AchievementFlags
83 {
84 ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // Just count statistic (never stop and complete)
85 ACHIEVEMENT_FLAG_HIDDEN = 0x00000002, // Not sent to client - internal use only
86 ACHIEVEMENT_FLAG_PLAY_NO_VISUAL = 0x00000004, // Client does not play achievement earned visual
87 ACHIEVEMENT_FLAG_SUMM = 0x00000008, // Use summ criteria value from all requirements (and calculate max value)
88 ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // Show max criteria (and calculate max value ??)
89 ACHIEVEMENT_FLAG_REQ_COUNT = 0x00000020, // Use not zero req count (and calculate max value)
90 ACHIEVEMENT_FLAG_AVERAGE = 0x00000040, // Show as average value (value / time_in_days) depend from other flag (by def use last criteria value)
91 ACHIEVEMENT_FLAG_BAR = 0x00000080, // Show as progress bar (value / max vale) depend from other flag (by def use last criteria value)
92 ACHIEVEMENT_FLAG_REALM_FIRST_REACH = 0x00000100, //
93 ACHIEVEMENT_FLAG_REALM_FIRST_KILL = 0x00000200, //
94 ACHIEVEMENT_FLAG_UNK3 = 0x00000400, // ACHIEVEMENT_FLAG_HIDE_NAME_IN_TIE
95 ACHIEVEMENT_FLAG_HIDE_INCOMPLETE = 0x00000800, // hide from UI if not completed
96 ACHIEVEMENT_FLAG_SHOW_IN_GUILD_NEWS = 0x00001000, // Shows in guild news
97 ACHIEVEMENT_FLAG_SHOW_IN_GUILD_HEADER = 0x00002000, // Shows in guild news header
98 ACHIEVEMENT_FLAG_GUILD = 0x00004000, //
99 ACHIEVEMENT_FLAG_SHOW_GUILD_MEMBERS = 0x00008000, //
100 ACHIEVEMENT_FLAG_SHOW_CRITERIA_MEMBERS = 0x00010000, //
101 ACHIEVEMENT_FLAG_ACCOUNT = 0x00020000,
102 ACHIEVEMENT_FLAG_UNK5 = 0x00040000,
103 ACHIEVEMENT_FLAG_HIDE_ZERO_COUNTER = 0x00080000, // statistic is hidden from UI if no criteria value exists
104 ACHIEVEMENT_FLAG_TRACKING_FLAG = 0x00100000, // hidden tracking flag, sent to client in all cases except completion announcements
105 };
106
107 enum AreaFlags
108 {
109 AREA_FLAG_SNOW = 0x00000001, // snow (only Dun Morogh, Naxxramas, Razorfen Downs and Winterspring)
110 AREA_FLAG_UNK1 = 0x00000002, // Razorfen Downs, Naxxramas and Acherus: The Ebon Hold (3.3.5a)
111 AREA_FLAG_UNK2 = 0x00000004, // Only used for areas on map 571 (development before)
112 AREA_FLAG_SLAVE_CAPITAL = 0x00000008, // city and city subsones
113 AREA_FLAG_UNK3 = 0x00000010, // can't find common meaning
114 AREA_FLAG_SLAVE_CAPITAL2 = 0x00000020, // slave capital city flag?
115 AREA_FLAG_ALLOW_DUELS = 0x00000040, // allow to duel here
116 AREA_FLAG_ARENA = 0x00000080, // arena, both instanced and world arenas
117 AREA_FLAG_CAPITAL = 0x00000100, // main capital city flag
118 AREA_FLAG_CITY = 0x00000200, // only for one zone named "City" (where it located?)
119 AREA_FLAG_OUTLAND = 0x00000400, // expansion zones? (only Eye of the Storm not have this flag, but have 0x00004000 flag)
120 AREA_FLAG_SANCTUARY = 0x00000800, // sanctuary area (PvP disabled)
121 AREA_FLAG_NEED_FLY = 0x00001000, // Respawn alive at the graveyard without corpse
122 AREA_FLAG_UNUSED1 = 0x00002000, // Unused in 3.3.5a
123 AREA_FLAG_OUTLAND2 = 0x00004000, // expansion zones? (only Circle of Blood Arena not have this flag, but have 0x00000400 flag)
124 AREA_FLAG_OUTDOOR_PVP = 0x00008000, // pvp objective area? (Death's Door also has this flag although it's no pvp object area)
125 AREA_FLAG_ARENA_INSTANCE = 0x00010000, // used by instanced arenas only
126 AREA_FLAG_UNUSED2 = 0x00020000, // Unused in 3.3.5a
127 AREA_FLAG_CONTESTED_AREA = 0x00040000, // On PvP servers these areas are considered contested, even though the zone it is contained in is a Horde/Alliance territory.
128 AREA_FLAG_UNK6 = 0x00080000, // Valgarde and Acherus: The Ebon Hold
129 AREA_FLAG_LOWLEVEL = 0x00100000, // used for some starting areas with area_level <= 15
130 AREA_FLAG_TOWN = 0x00200000, // small towns with Inn
131 AREA_FLAG_REST_ZONE_HORDE = 0x00400000, // Warsong Hold, Acherus: The Ebon Hold, New Agamand Inn, Vengeance Landing Inn, Sunreaver Pavilion (Something to do with team?)
132 AREA_FLAG_REST_ZONE_ALLIANCE = 0x00800000, // Valgarde, Acherus: The Ebon Hold, Westguard Inn, Silver Covenant Pavilion (Something to do with team?)
133 AREA_FLAG_WINTERGRASP = 0x01000000, // Wintergrasp and it's subzones
134 AREA_FLAG_INSIDE = 0x02000000, // used for determinating spell related inside/outside questions in Map::IsOutdoors
135 AREA_FLAG_OUTSIDE = 0x04000000, // used for determinating spell related inside/outside questions in Map::IsOutdoors
136 AREA_FLAG_CAN_HEARTH_AND_RESURRECT = 0x08000000, // Can Hearth And Resurrect From Area
137 AREA_FLAG_NO_FLY_ZONE = 0x20000000, // Marks zones where you cannot fly
138 AREA_FLAG_UNK9 = 0x40000000
139 };
140
141 enum AreaMountFlags
142 {
143 AREA_MOUNT_FLAG_GROUND_ALLOWED = 0x1,
144 AREA_MOUNT_FLAG_FLYING_ALLOWED = 0x2,
145 AREA_MOUNT_FLAG_FLOAT_ALLOWED = 0x4,
146 AREA_MOUNT_FLAG_UNDERWATER_ALLOWED = 0x8
147 };
148
149 enum ArtifactPowerFlag : uint8
150 {
151 ARTIFACT_POWER_FLAG_GOLD = 0x01,
152 ARTIFACT_POWER_FLAG_FIRST = 0x02,
153 ARTIFACT_POWER_FLAG_FINAL = 0x04,
154 ARTIFACT_POWER_FLAG_SCALES_WITH_NUM_POWERS = 0x08,
155 ARTIFACT_POWER_FLAG_DONT_COUNT_FIRST_BONUS_RANK = 0x10,
156 };
157
158 #define BATTLE_PET_SPECIES_MAX_ID 2164
159
160 enum ChrSpecializationFlag
161 {
162 CHR_SPECIALIZATION_FLAG_CASTER = 0x01,
163 CHR_SPECIALIZATION_FLAG_RANGED = 0x02,
164 CHR_SPECIALIZATION_FLAG_MELEE = 0x04,
165 CHR_SPECIALIZATION_FLAG_UNKNOWN = 0x08,
166 CHR_SPECIALIZATION_FLAG_DUAL_WIELD_TWO_HANDED = 0x10, // used for CUnitDisplay::SetSheatheInvertedForDualWield
167 CHR_SPECIALIZATION_FLAG_PET_OVERRIDE_SPEC = 0x20,
168 CHR_SPECIALIZATION_FLAG_RECOMMENDED = 0x40,
169 };
170
171 enum CriteriaCondition
172 {
173 CRITERIA_CONDITION_NONE = 0,
174 CRITERIA_CONDITION_NO_DEATH = 1, // reset progress on death
175 CRITERIA_CONDITION_UNK2 = 2, // only used in "Complete a daily quest every day for five consecutive days"
176 CRITERIA_CONDITION_BG_MAP = 3, // requires you to be on specific map, reset at change
177 CRITERIA_CONDITION_NO_LOSE = 4, // only used in "Win 10 arenas without losing"
178 CRITERIA_CONDITION_UNK5 = 5, // Have spell?
179 CRITERIA_CONDITION_UNK8 = 8,
180 CRITERIA_CONDITION_NO_SPELL_HIT = 9, // requires the player not to be hit by specific spell
181 CRITERIA_CONDITION_NOT_IN_GROUP = 10, // requires the player not to be in group
182 CRITERIA_CONDITION_UNK13 = 13 // unk
183 };
184
185 enum CriteriaAdditionalCondition
186 {
187 CRITERIA_ADDITIONAL_CONDITION_SOURCE_DRUNK_VALUE = 1, // NYI
188 CRITERIA_ADDITIONAL_CONDITION_UNK2 = 2,
189 CRITERIA_ADDITIONAL_CONDITION_ITEM_LEVEL = 3, // NYI
190 CRITERIA_ADDITIONAL_CONDITION_TARGET_CREATURE_ENTRY = 4,
191 CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_PLAYER = 5,
192 CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_DEAD = 6,
193 CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_ENEMY = 7,
194 CRITERIA_ADDITIONAL_CONDITION_SOURCE_HAS_AURA = 8,
195 CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA = 10,
196 CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA_TYPE = 11,
197 CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_MIN = 14,
198 CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_EQUALS = 15,
199 CRITERIA_ADDITIONAL_CONDITION_UNK16 = 16,
200 CRITERIA_ADDITIONAL_CONDITION_SOURCE_AREA_OR_ZONE = 17,
201 CRITERIA_ADDITIONAL_CONDITION_TARGET_AREA_OR_ZONE = 18,
202 CRITERIA_ADDITIONAL_CONDITION_MAP_DIFFICULTY_OLD = 20,
203 CRITERIA_ADDITIONAL_CONDITION_TARGET_CREATURE_YIELDS_XP = 21, // NYI
204 CRITERIA_ADDITIONAL_CONDITION_ARENA_TYPE = 24,
205 CRITERIA_ADDITIONAL_CONDITION_SOURCE_RACE = 25,
206 CRITERIA_ADDITIONAL_CONDITION_SOURCE_CLASS = 26,
207 CRITERIA_ADDITIONAL_CONDITION_TARGET_RACE = 27,
208 CRITERIA_ADDITIONAL_CONDITION_TARGET_CLASS = 28,
209 CRITERIA_ADDITIONAL_CONDITION_MAX_GROUP_MEMBERS = 29,
210 CRITERIA_ADDITIONAL_CONDITION_TARGET_CREATURE_TYPE = 30,
211 CRITERIA_ADDITIONAL_CONDITION_SOURCE_MAP = 32,
212 CRITERIA_ADDITIONAL_CONDITION_ITEM_CLASS = 33, // NYI
213 CRITERIA_ADDITIONAL_CONDITION_ITEM_SUBCLASS = 34, // NYI
214 CRITERIA_ADDITIONAL_CONDITION_COMPLETE_QUEST_NOT_IN_GROUP = 35, // NYI
215 CRITERIA_ADDITIONAL_CONDITION_MIN_PERSONAL_RATING = 37, // NYI (when implementing don't forget about CRITERIA_CONDITION_NO_LOSE)
216 CRITERIA_ADDITIONAL_CONDITION_TITLE_BIT_INDEX = 38,
217 CRITERIA_ADDITIONAL_CONDITION_SOURCE_LEVEL = 39,
218 CRITERIA_ADDITIONAL_CONDITION_TARGET_LEVEL = 40,
219 CRITERIA_ADDITIONAL_CONDITION_TARGET_ZONE = 41,
220 CRITERIA_ADDITIONAL_CONDITION_TARGET_HEALTH_PERCENT_BELOW = 46,
221 CRITERIA_ADDITIONAL_CONDITION_UNK55 = 55,
222 CRITERIA_ADDITIONAL_CONDITION_MIN_ACHIEVEMENT_POINTS = 56, // NYI
223 CRITERIA_ADDITIONAL_CONDITION_REQUIRES_LFG_GROUP = 58, // NYI
224 CRITERIA_ADDITIONAL_CONDITION_UNK60 = 60,
225 CRITERIA_ADDITIONAL_CONDITION_REQUIRES_GUILD_GROUP = 61, // NYI
226 CRITERIA_ADDITIONAL_CONDITION_GUILD_REPUTATION = 62, // NYI
227 CRITERIA_ADDITIONAL_CONDITION_RATED_BATTLEGROUND = 63, // NYI
228 CRITERIA_ADDITIONAL_CONDITION_RATED_BATTLEGROUND_RATING = 64,
229 CRITERIA_ADDITIONAL_CONDITION_PROJECT_RARITY = 65,
230 CRITERIA_ADDITIONAL_CONDITION_PROJECT_RACE = 66,
231 CRITERIA_ADDITIONAL_CONDITION_WORLD_STATE = 67, // NYI
232 CRITERIA_ADDITIONAL_CONDITION_MAP_DIFFICULTY = 68, // NYI
233 CRITERIA_ADDITIONAL_CONDITION_PLAYER_LEVEL = 69, // NYI
234 CRITERIA_ADDITIONAL_CONDITION_TARGET_PLAYER_LEVEL = 70, // NYI
235 //CRITERIA_ADDITIONAL_CONDITION_PLAYER_LEVEL_ON_ACCOUNT = 71, // Not verified
236 //CRITERIA_ADDITIONAL_CONDITION_UNK73 = 73, // References another modifier tree id
237 CRITERIA_ADDITIONAL_CONDITION_SCENARIO_ID = 74, // NYI
238 CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_FAMILY = 78, // NYI
239 CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_HEALTH_PCT = 79, // NYI
240 //CRITERIA_ADDITIONAL_CONDITION_UNK80 = 80 // Something to do with world bosses
241 CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_ENTRY = 81, // NYI
242 //CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_ENTRY_ID = 82, // Some sort of data id?
243 CRITERIA_ADDITIONAL_CONDITION_CHALLENGE_MODE_MEDAL = 83, // NYI
244 //CRITERIA_ADDITIONAL_CONDITION_UNK84 = 84, // Quest id
245 //CRITERIA_ADDITIONAL_CONDITION_UNK86 = 86, // Some external event id
246 //CRITERIA_ADDITIONAL_CONDITION_UNK87 = 87, // Achievement id
247 CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_SPECIES = 91,
248 CRITERIA_ADDITIONAL_CONDITION_EXPANSION = 92,
249 CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_ENTRY = 144,
250 CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_QUALITY = 145,
251 CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_LEVEL = 146,
252 CRITERIA_ADDITIONAL_CONDITION_GARRISON_RARE_MISSION = 147, // NYI
253 CRITERIA_ADDITIONAL_CONDITION_GARRISON_BUILDING_LEVEL = 149, // NYI
254 CRITERIA_ADDITIONAL_CONDITION_GARRISON_MISSION_TYPE = 167, // NYI
255 CRITERIA_ADDITIONAL_CONDITION_PLAYER_ITEM_LEVEL = 169, // NYI
256 CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_ILVL = 184,
257 CRITERIA_ADDITIONAL_CONDITION_HONOR_LEVEL = 193,
258 CRITERIA_ADDITIONAL_CONDITION_PRESTIGE_LEVEL = 194
259 };
260
261 enum CriteriaFlags
262 {
263 CRITERIA_FLAG_SHOW_PROGRESS_BAR = 0x00000001, // Show progress as bar
264 CRITERIA_FLAG_HIDDEN = 0x00000002, // Not show criteria in client
265 CRITERIA_FLAG_FAIL_ACHIEVEMENT = 0x00000004, // BG related??
266 CRITERIA_FLAG_RESET_ON_START = 0x00000008, //
267 CRITERIA_FLAG_IS_DATE = 0x00000010, // not used
268 CRITERIA_FLAG_MONEY_COUNTER = 0x00000020 // Displays counter as money
269 };
270
271 enum CriteriaTimedTypes : uint8
272 {
273 CRITERIA_TIMED_TYPE_EVENT = 1, // Timer is started by internal event with id in timerStartEvent
274 CRITERIA_TIMED_TYPE_QUEST = 2, // Timer is started by accepting quest with entry in timerStartEvent
275 CRITERIA_TIMED_TYPE_SPELL_CASTER = 5, // Timer is started by casting a spell with entry in timerStartEvent
276 CRITERIA_TIMED_TYPE_SPELL_TARGET = 6, // Timer is started by being target of spell with entry in timerStartEvent
277 CRITERIA_TIMED_TYPE_CREATURE = 7, // Timer is started by killing creature with entry in timerStartEvent
278 CRITERIA_TIMED_TYPE_ITEM = 9, // Timer is started by using item with entry in timerStartEvent
279 CRITERIA_TIMED_TYPE_UNK = 10, // Unknown
280 CRITERIA_TIMED_TYPE_UNK_2 = 13, // Unknown
281 CRITERIA_TIMED_TYPE_SCENARIO_STAGE = 14, // Timer is started by changing stages in a scenario
282
283 CRITERIA_TIMED_TYPE_MAX
284 };
285
286 enum CriteriaTypes : uint8
287 {
288 CRITERIA_TYPE_KILL_CREATURE = 0,
289 CRITERIA_TYPE_WIN_BG = 1,
290 // 2 - unused (Legion - 23420)
291 CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS = 3, // struct { uint32 itemCount; }
292 CRITERIA_TYPE_SURVEY_GAMEOBJECT = 4,
293 CRITERIA_TYPE_REACH_LEVEL = 5,
294 CRITERIA_TYPE_CLEAR_DIGSITE = 6,
295 CRITERIA_TYPE_REACH_SKILL_LEVEL = 7,
296 CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8,
297 CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9,
298 CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10, // you have to complete a daily quest x times in a row
299 CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11,
300 CRITERIA_TYPE_CURRENCY = 12,
301 CRITERIA_TYPE_DAMAGE_DONE = 13,
302 CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14,
303 CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15,
304 CRITERIA_TYPE_DEATH_AT_MAP = 16,
305 CRITERIA_TYPE_DEATH = 17,
306 CRITERIA_TYPE_DEATH_IN_DUNGEON = 18,
307 CRITERIA_TYPE_COMPLETE_RAID = 19,
308 CRITERIA_TYPE_KILLED_BY_CREATURE = 20,
309 CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA = 21,
310 CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE_GUILD = 22,
311 CRITERIA_TYPE_KILLED_BY_PLAYER = 23,
312 CRITERIA_TYPE_FALL_WITHOUT_DYING = 24,
313 // 25 - unused (Legion - 23420)
314 CRITERIA_TYPE_DEATHS_FROM = 26,
315 CRITERIA_TYPE_COMPLETE_QUEST = 27,
316 CRITERIA_TYPE_BE_SPELL_TARGET = 28,
317 CRITERIA_TYPE_CAST_SPELL = 29,
318 CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30,
319 CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31,
320 CRITERIA_TYPE_WIN_ARENA = 32,
321 CRITERIA_TYPE_PLAY_ARENA = 33,
322 CRITERIA_TYPE_LEARN_SPELL = 34,
323 CRITERIA_TYPE_HONORABLE_KILL = 35,
324 CRITERIA_TYPE_OWN_ITEM = 36,
325 CRITERIA_TYPE_WIN_RATED_ARENA = 37,
326 CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
327 CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
328 CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
329 CRITERIA_TYPE_USE_ITEM = 41,
330 CRITERIA_TYPE_LOOT_ITEM = 42,
331 CRITERIA_TYPE_EXPLORE_AREA = 43,
332 CRITERIA_TYPE_OWN_RANK = 44,
333 CRITERIA_TYPE_BUY_BANK_SLOT = 45,
334 CRITERIA_TYPE_GAIN_REPUTATION = 46,
335 CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47,
336 CRITERIA_TYPE_VISIT_BARBER_SHOP = 48,
337 CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49,
338 CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, /// @todo itemlevel is mentioned in text but not present in dbc
339 CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51,
340 CRITERIA_TYPE_HK_CLASS = 52,
341 CRITERIA_TYPE_HK_RACE = 53,
342 CRITERIA_TYPE_DO_EMOTE = 54,
343 CRITERIA_TYPE_HEALING_DONE = 55,
344 CRITERIA_TYPE_GET_KILLING_BLOWS = 56, /// @todo in some cases map not present, and in some cases need do without die
345 CRITERIA_TYPE_EQUIP_ITEM = 57,
346 // 58 - unused (Legion - 23420)
347 CRITERIA_TYPE_MONEY_FROM_VENDORS = 59,
348 CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60,
349 CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS = 61,
350 CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62,
351 CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING = 63,
352 CRITERIA_TYPE_DEFEAT_CREATURE_GROUP = 64,
353 CRITERIA_TYPE_GOLD_SPENT_AT_BARBER = 65,
354 CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL = 66,
355 CRITERIA_TYPE_LOOT_MONEY = 67,
356 CRITERIA_TYPE_USE_GAMEOBJECT = 68,
357 CRITERIA_TYPE_BE_SPELL_TARGET2 = 69,
358 CRITERIA_TYPE_SPECIAL_PVP_KILL = 70,
359 CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE = 71,
360 CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72,
361 CRITERIA_TYPE_SEND_EVENT = 73,
362 CRITERIA_TYPE_ON_LOGIN = 74,
363 CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75,
364 CRITERIA_TYPE_WIN_DUEL = 76,
365 CRITERIA_TYPE_LOSE_DUEL = 77,
366 CRITERIA_TYPE_KILL_CREATURE_TYPE = 78,
367 CRITERIA_TYPE_COOK_RECIPES_GUILD = 79,
368 CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80,
369 CRITERIA_TYPE_EARN_PET_BATTLE_ACHIEVEMENT_POINTS = 81,
370 CRITERIA_TYPE_CREATE_AUCTION = 82,
371 CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83,
372 CRITERIA_TYPE_WON_AUCTIONS = 84,
373 CRITERIA_TYPE_HIGHEST_AUCTION_SOLD = 85,
374 CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED = 86,
375 CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87,
376 CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88,
377 CRITERIA_TYPE_KNOWN_FACTIONS = 89,
378 CRITERIA_TYPE_LOOT_EPIC_ITEM = 90,
379 CRITERIA_TYPE_RECEIVE_EPIC_ITEM = 91,
380 CRITERIA_TYPE_SEND_EVENT_SCENARIO = 92,
381 CRITERIA_TYPE_ROLL_NEED = 93,
382 CRITERIA_TYPE_ROLL_GREED = 94,
383 CRITERIA_TYPE_RELEASE_SPIRIT = 95,
384 CRITERIA_TYPE_OWN_PET = 96,
385 CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER = 97,
386 // 98 - unused (Legion - 23420)
387 // 99 - unused (Legion - 23420)
388 // 100 - unused (Legion - 23420)
389 CRITERIA_TYPE_HIGHEST_HIT_DEALT = 101,
390 CRITERIA_TYPE_HIGHEST_HIT_RECEIVED = 102,
391 CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED = 103,
392 CRITERIA_TYPE_HIGHEST_HEAL_CAST = 104,
393 CRITERIA_TYPE_TOTAL_HEALING_RECEIVED = 105,
394 CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED = 106,
395 CRITERIA_TYPE_QUEST_ABANDONED = 107,
396 CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108,
397 CRITERIA_TYPE_LOOT_TYPE = 109,
398 CRITERIA_TYPE_CAST_SPELL2 = 110, /// @todo target entry is missing
399 // 111 - unused (Legion - 23420)
400 CRITERIA_TYPE_LEARN_SKILL_LINE = 112,
401 CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
402 CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
403 CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115,
404 // 116 - unused (Legion - 23420)
405 // 117 - unused (Legion - 23420)
406 CRITERIA_TYPE_COMPLETE_LFG_DUNGEON = 118,
407 CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS = 119,
408 CRITERIA_TYPE_LFG_VOTE_KICKS_INITIATED_BY_PLAYER = 120,
409 CRITERIA_TYPE_LFG_VOTE_KICKS_NOT_INIT_BY_PLAYER = 121,
410 CRITERIA_TYPE_BE_KICKED_FROM_LFG = 122,
411 CRITERIA_TYPE_LFG_LEAVES = 123,
412 CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS = 124,
413 CRITERIA_TYPE_REACH_GUILD_LEVEL = 125,
414 CRITERIA_TYPE_CRAFT_ITEMS_GUILD = 126,
415 CRITERIA_TYPE_CATCH_FROM_POOL = 127,
416 CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS = 128,
417 CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS = 129,
418 CRITERIA_TYPE_WIN_RATED_BATTLEGROUND = 130,
419 // 131 - unused (Legion - 23420)
420 CRITERIA_TYPE_REACH_BG_RATING = 132,
421 CRITERIA_TYPE_BUY_GUILD_TABARD = 133,
422 CRITERIA_TYPE_COMPLETE_QUESTS_GUILD = 134,
423 CRITERIA_TYPE_HONORABLE_KILLS_GUILD = 135,
424 CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD = 136,
425 CRITERIA_TYPE_COUNT_OF_LFG_QUEUE_BOOSTS_BY_TANK = 137,
426 CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138, //struct { Flag flag; uint32 count; } 1: Guild Dungeon, 2:Guild Challenge, 3:Guild battlefield
427 CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE = 139, //struct { uint32 count; } Guild Challenge
428 // 140 - 1 criteria (16883), unused (Legion - 23420)
429 // 141 - 1 criteria (16884), unused (Legion - 23420)
430 // 142 - 1 criteria (16881), unused (Legion - 23420)
431 // 143 - 1 criteria (16882), unused (Legion - 23420)
432 // 144 - 1 criteria (17386), unused (Legion - 23420)
433 CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED = 145,
434 CRITERIA_TYPE_LFR_LEAVES = 146,
435 CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER = 147,
436 CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER = 148,
437 CRITERIA_TYPE_BE_KICKED_FROM_LFR = 149,
438 CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK = 150,
439 CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT = 151,
440 CRITERIA_TYPE_COMPLETE_SCENARIO = 152,
441 CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET = 153,
442 // 154 - unused (Legion - 23420)
443 CRITERIA_TYPE_OWN_BATTLE_PET = 155,
444 CRITERIA_TYPE_OWN_BATTLE_PET_COUNT = 156,
445 CRITERIA_TYPE_CAPTURE_BATTLE_PET = 157,
446 CRITERIA_TYPE_WIN_PET_BATTLE = 158,
447 // 159 - 2 criterias (22312,22314), unused (Legion - 23420)
448 CRITERIA_TYPE_LEVEL_BATTLE_PET = 160,
449 CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT = 161, // triggers a quest credit
450 CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT = 162, // triggers a quest credit
451 CRITERIA_TYPE_ENTER_AREA = 163, // triggers a quest credit
452 CRITERIA_TYPE_LEAVE_AREA = 164, // triggers a quest credit
453 CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165,
454 // 166 - unused (Legion - 23420)
455 CRITERIA_TYPE_PLACE_GARRISON_BUILDING = 167,
456 CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING = 168,
457 CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169,
458 CRITERIA_TYPE_UPGRADE_GARRISON = 170,
459 CRITERIA_TYPE_START_GARRISON_MISSION = 171,
460 CRITERIA_TYPE_START_ORDER_HALL_MISSION = 172,
461 CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT = 173,
462 CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174,
463 CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT = 175,
464 CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER = 176,
465 // 177 - 0 criterias (Legion - 23420)
466 CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT = 178,
467 // 179 - 0 criterias (Legion - 23420)
468 // 180 - 0 criterias (Legion - 23420)
469 // 181 - 0 criterias (Legion - 23420)
470 CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182,
471 CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL = 183,
472 CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL = 184,
473 CRITERIA_TYPE_OWN_TOY = 185,
474 CRITERIA_TYPE_OWN_TOY_COUNT = 186,
475 CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_WITH_QUALITY= 187,
476 // 188 - 0 criterias (Legion - 23420)
477 CRITERIA_TYPE_OWN_HEIRLOOMS = 189,
478 CRITERIA_TYPE_ARTIFACT_POWER_EARNED = 190,
479 CRITERIA_TYPE_ARTIFACT_TRAITS_UNLOCKED = 191,
480 CRITERIA_TYPE_HONOR_LEVEL_REACHED = 194,
481 CRITERIA_TYPE_PRESTIGE_REACHED = 195,
482 // 196 - CRITERIA_TYPE_REACH_LEVEL_2 or something
483 // 197 - Order Hall Advancement related
484 CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED = 198,
485 CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT = 199,
486 CRITERIA_TYPE_ORDER_HALL_RECRUIT_TROOP = 200,
487 // 201 - 0 criterias (Legion - 23420)
488 // 202 - 0 criterias (Legion - 23420)
489 CRITERIA_TYPE_COMPLETE_WORLD_QUEST = 203,
490 // 204 - Special criteria type to award players for some external events? Comes with what looks like an identifier, so guessing it's not unique.
491 CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205,
492 CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206,
493 CRITERIA_TYPE_EARN_HONOR_XP = 207,
494 CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211
495 };
496
497 #define CRITERIA_TYPE_TOTAL 213
498
499 enum CriteriaTreeFlags : uint16
500 {
501 CRITERIA_TREE_FLAG_PROGRESS_BAR = 0x0001,
502 CRITERIA_TREE_FLAG_PROGRESS_IS_DATE = 0x0004,
503 CRITERIA_TREE_FLAG_SHOW_CURRENCY_ICON = 0x0008,
504 CRITERIA_TREE_FLAG_ALLIANCE_ONLY = 0x0200,
505 CRITERIA_TREE_FLAG_HORDE_ONLY = 0x0400,
506 CRITERIA_TREE_FLAG_SHOW_REQUIRED_COUNT = 0x0800
507 };
508
509 enum CriteriaTreeOperator : uint8
510 {
511 CRITERIA_TREE_OPERATOR_SINGLE = 0,
512 CRITERIA_TREE_OPERATOR_SINGLE_NOT_COMPLETED = 1,
513 CRITERIA_TREE_OPERATOR_ALL = 4,
514 CRITERIA_TREE_OPERAROR_SUM_CHILDREN = 5,
515 CRITERIA_TREE_OPERATOR_MAX_CHILD = 6,
516 CRITERIA_TREE_OPERATOR_COUNT_DIRECT_CHILDREN = 7,
517 CRITERIA_TREE_OPERATOR_ANY = 8,
518 CRITERIA_TREE_OPERATOR_SUM_CHILDREN_WEIGHT = 9
519 };
520
521 enum class CharBaseSectionVariation : uint8
522 {
523 Skin = 0,
524 Face = 1,
525 FacialHair = 2,
526 Hair = 3,
527 Underwear = 4,
528 CustomDisplay1 = 5,
529 CustomDisplay2 = 6,
530 CustomDisplay3 = 7,
531
532 Count
533 };
534
535 enum CharSectionFlags
536 {
537 SECTION_FLAG_PLAYER = 0x01,
538 SECTION_FLAG_DEATH_KNIGHT = 0x04,
539 SECTION_FLAG_DEMON_HUNTER = 0x20
540 };
541
542 enum CharSectionType
543 {
544 SECTION_TYPE_SKIN_LOW_RES = 0,
545 SECTION_TYPE_FACE_LOW_RES = 1,
546 SECTION_TYPE_FACIAL_HAIR_LOW_RES = 2,
547 SECTION_TYPE_HAIR_LOW_RES = 3,
548 SECTION_TYPE_UNDERWEAR_LOW_RES = 4,
549 SECTION_TYPE_SKIN = 5,
550 SECTION_TYPE_FACE = 6,
551 SECTION_TYPE_FACIAL_HAIR = 7,
552 SECTION_TYPE_HAIR = 8,
553 SECTION_TYPE_UNDERWEAR = 9,
554 SECTION_TYPE_CUSTOM_DISPLAY_1_LOW_RES = 10,
555 SECTION_TYPE_CUSTOM_DISPLAY_1 = 11,
556 SECTION_TYPE_CUSTOM_DISPLAY_2_LOW_RES = 12,
557 SECTION_TYPE_CUSTOM_DISPLAY_2 = 13,
558 SECTION_TYPE_CUSTOM_DISPLAY_3_LOW_RES = 14,
559 SECTION_TYPE_CUSTOM_DISPLAY_3 = 15,
560
561 SECTION_TYPE_MAX
562 };
563
564 enum Curves
565 {
566 CURVE_ID_ARTIFACT_RELIC_ITEM_LEVEL_BONUS = 1718
567 };
568
569 enum Difficulty : uint8
570 {
571 DIFFICULTY_NONE = 0,
572 DIFFICULTY_NORMAL = 1,
573 DIFFICULTY_HEROIC = 2,
574 DIFFICULTY_10_N = 3,
575 DIFFICULTY_25_N = 4,
576 DIFFICULTY_10_HC = 5,
577 DIFFICULTY_25_HC = 6,
578 DIFFICULTY_LFR = 7,
579 DIFFICULTY_MYTHIC_KEYSTONE = 8,
580 DIFFICULTY_40 = 9,
581 DIFFICULTY_3_MAN_SCENARIO_HC = 11,
582 DIFFICULTY_3_MAN_SCENARIO_N = 12,
583 DIFFICULTY_NORMAL_RAID = 14,
584 DIFFICULTY_HEROIC_RAID = 15,
585 DIFFICULTY_MYTHIC_RAID = 16,
586 DIFFICULTY_LFR_NEW = 17,
587 DIFFICULTY_EVENT_RAID = 18,
588 DIFFICULTY_EVENT_DUNGEON = 19,
589 DIFFICULTY_EVENT_SCENARIO = 20,
590 DIFFICULTY_MYTHIC = 23,
591 DIFFICULTY_TIMEWALKING = 24,
592 DIFFICULTY_WORLD_PVP_SCENARIO = 25,
593 DIFFICULTY_5_MAN_SCENARIO_N = 26,
594 DIFFICULTY_20_MAN_SCENARIO_N = 27,
595 DIFFICULTY_PVEVP_SCENARIO = 29,
596 DIFFICULTY_EVENT_SCENARIO_6 = 30,
597 DIFFICULTY_WORLD_PVP_SCENARIO_2 = 32,
598 DIFFICULTY_TIMEWALKING_RAID = 33,
599 DIFFICULTY_PVP = 34,
600
601 MAX_DIFFICULTY
602 };
603
604 enum DifficultyFlags
605 {
606 DIFFICULTY_FLAG_HEROIC = 0x01,
607 DIFFICULTY_FLAG_DEFAULT = 0x02,
608 DIFFICULTY_FLAG_CAN_SELECT = 0x04, // Player can select this difficulty in dropdown menu
609 DIFFICULTY_FLAG_CHALLENGE_MODE = 0x08,
610
611 DIFFICULTY_FLAG_LEGACY = 0x20,
612 DIFFICULTY_FLAG_DISPLAY_HEROIC = 0x40, // Controls icon displayed on minimap when inside the instance
613 DIFFICULTY_FLAG_DISPLAY_MYTHIC = 0x80 // Controls icon displayed on minimap when inside the instance
614 };
615
616 enum SpawnMask
617 {
618 SPAWNMASK_CONTINENT = (1 << DIFFICULTY_NONE), // any maps without spawn modes
619
620 SPAWNMASK_DUNGEON_NORMAL = (1 << DIFFICULTY_NORMAL),
621 SPAWNMASK_DUNGEON_HEROIC = (1 << DIFFICULTY_HEROIC),
622 SPAWNMASK_DUNGEON_ALL = (SPAWNMASK_DUNGEON_NORMAL | SPAWNMASK_DUNGEON_HEROIC),
623
624 SPAWNMASK_RAID_10MAN_NORMAL = (1 << DIFFICULTY_10_N),
625 SPAWNMASK_RAID_25MAN_NORMAL = (1 << DIFFICULTY_25_N),
626 SPAWNMASK_RAID_NORMAL_ALL = (SPAWNMASK_RAID_10MAN_NORMAL | SPAWNMASK_RAID_25MAN_NORMAL),
627
628 SPAWNMASK_RAID_10MAN_HEROIC = (1 << DIFFICULTY_10_HC),
629 SPAWNMASK_RAID_25MAN_HEROIC = (1 << DIFFICULTY_25_HC),
630 SPAWNMASK_RAID_HEROIC_ALL = (SPAWNMASK_RAID_10MAN_HEROIC | SPAWNMASK_RAID_25MAN_HEROIC),
631
632 SPAWNMASK_RAID_ALL = (SPAWNMASK_RAID_NORMAL_ALL | SPAWNMASK_RAID_HEROIC_ALL)
633 };
634
635 enum FactionTemplateFlags
636 {
637 FACTION_TEMPLATE_ENEMY_SPAR = 0x00000020, // guessed, sparring with enemies?
638 FACTION_TEMPLATE_FLAG_PVP = 0x00000800, // flagged for PvP
639 FACTION_TEMPLATE_FLAG_CONTESTED_GUARD = 0x00001000, // faction will attack players that were involved in PvP combats
640 FACTION_TEMPLATE_FLAG_HOSTILE_BY_DEFAULT= 0x00002000
641 };
642
643 enum FactionMasks
644 {
645 FACTION_MASK_PLAYER = 1, // any player
646 FACTION_MASK_ALLIANCE = 2, // player or creature from alliance team
647 FACTION_MASK_HORDE = 4, // player or creature from horde team
648 FACTION_MASK_MONSTER = 8 // aggressive creature from monster team
649 // if none flags set then non-aggressive creature
650 };
651
652 #define MAX_ITEM_PROTO_FLAGS 4
653 #define MAX_ITEM_PROTO_SOCKETS 3
654 #define MAX_ITEM_PROTO_STATS 10
655
656 enum MapTypes // Lua_IsInInstance
657 {
658 MAP_COMMON = 0, // none
659 MAP_INSTANCE = 1, // party
660 MAP_RAID = 2, // raid
661 MAP_BATTLEGROUND = 3, // pvp
662 MAP_ARENA = 4, // arena
663 MAP_SCENARIO = 5 // scenario
664 };
665
666 enum MapFlags
667 {
668 MAP_FLAG_CAN_TOGGLE_DIFFICULTY = 0x0100,
669 MAP_FLAG_FLEX_LOCKING = 0x8000, // All difficulties share completed encounters lock, not bound to a single instance id
670 // heroic difficulty flag overrides it and uses instance id bind
671 MAP_FLAG_GARRISON = 0x4000000
672 };
673
674 enum AbilytyLearnType
675 {
676 SKILL_LINE_ABILITY_LEARNED_ON_SKILL_VALUE = 1, // Spell state will update depending on skill value
677 SKILL_LINE_ABILITY_LEARNED_ON_SKILL_LEARN = 2 // Spell will be learned/removed together with entire skill
678 };
679
680 enum GlyphSlotType
681 {
682 GLYPH_SLOT_MAJOR = 0,
683 GLYPH_SLOT_MINOR = 1,
684 GLYPH_SLOT_PRIME = 2
685 };
686
687 enum ItemEnchantmentType
688 {
689 ITEM_ENCHANTMENT_TYPE_NONE = 0,
690 ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL = 1,
691 ITEM_ENCHANTMENT_TYPE_DAMAGE = 2,
692 ITEM_ENCHANTMENT_TYPE_EQUIP_SPELL = 3,
693 ITEM_ENCHANTMENT_TYPE_RESISTANCE = 4,
694 ITEM_ENCHANTMENT_TYPE_STAT = 5,
695 ITEM_ENCHANTMENT_TYPE_TOTEM = 6,
696 ITEM_ENCHANTMENT_TYPE_USE_SPELL = 7,
697 ITEM_ENCHANTMENT_TYPE_PRISMATIC_SOCKET = 8,
698 ITEM_ENCHANTMENT_TYPE_ARTIFACT_POWER_BONUS_RANK_BY_TYPE = 9,
699 ITEM_ENCHANTMENT_TYPE_ARTIFACT_POWER_BONUS_RANK_BY_ID = 10,
700 ITEM_ENCHANTMENT_TYPE_BONUS_LIST_ID = 11,
701 ITEM_ENCHANTMENT_TYPE_BONUS_LIST_CURVE = 12,
702 ITEM_ENCHANTMENT_TYPE_ARTIFACT_POWER_BONUS_RANK_PICKER = 13
703 };
704
705 enum ItemExtendedCostFlags
706 {
707 ITEM_EXT_COST_FLAG_REQUIRE_GUILD = 0x01,
708 ITEM_EXT_COST_CURRENCY_REQ_IS_SEASON_EARNED_1 = 0x02,
709 ITEM_EXT_COST_CURRENCY_REQ_IS_SEASON_EARNED_2 = 0x04,
710 ITEM_EXT_COST_CURRENCY_REQ_IS_SEASON_EARNED_3 = 0x08,
711 ITEM_EXT_COST_CURRENCY_REQ_IS_SEASON_EARNED_4 = 0x10,
712 ITEM_EXT_COST_CURRENCY_REQ_IS_SEASON_EARNED_5 = 0x20,
713 };
714
715 enum ItemBonusType
716 {
717 ITEM_BONUS_ITEM_LEVEL = 1,
718 ITEM_BONUS_STAT = 2,
719 ITEM_BONUS_QUALITY = 3,
720 ITEM_BONUS_DESCRIPTION = 4,
721 ITEM_BONUS_SUFFIX = 5,
722 ITEM_BONUS_SOCKET = 6,
723 ITEM_BONUS_APPEARANCE = 7,
724 ITEM_BONUS_REQUIRED_LEVEL = 8,
725 ITEM_BONUS_DISPLAY_TOAST_METHOD = 9,
726 ITEM_BONUS_REPAIR_COST_MULTIPLIER = 10,
727 ITEM_BONUS_SCALING_STAT_DISTRIBUTION = 11,
728 ITEM_BONUS_DISENCHANT_LOOT_ID = 12,
729 ITEM_BONUS_SCALING_STAT_DISTRIBUTION_2 = 13,
730 ITEM_BONUS_ITEM_LEVEL_CAN_INCREASE = 14, // Displays a + next to item level indicating it can warforge
731 ITEM_BONUS_RANDOM_ENCHANTMENT = 15, // Responsible for showing "<Random additional stats>" or "+%d Rank Random Minor Trait" in the tooltip before item is obtained
732 ITEM_BONUS_BONDING = 16,
733 ITEM_BONUS_RELIC_TYPE = 17,
734 ITEM_BONUS_OVERRIDE_REQUIRED_LEVEL = 18
735 };
736
737 enum ItemLimitCategoryMode
738 {
739 ITEM_LIMIT_CATEGORY_MODE_HAVE = 0, // limit applied to amount items in inventory/bank
740 ITEM_LIMIT_CATEGORY_MODE_EQUIP = 1 // limit applied to amount equipped items (including used gems)
741 };
742
743 enum ItemSetFlags
744 {
745 ITEM_SET_FLAG_LEGACY_INACTIVE = 0x01,
746 };
747
748 enum ItemSpecStat
749 {
750 ITEM_SPEC_STAT_INTELLECT = 0,
751 ITEM_SPEC_STAT_AGILITY = 1,
752 ITEM_SPEC_STAT_STRENGTH = 2,
753 ITEM_SPEC_STAT_SPIRIT = 3,
754 ITEM_SPEC_STAT_HIT = 4,
755 ITEM_SPEC_STAT_DODGE = 5,
756 ITEM_SPEC_STAT_PARRY = 6,
757 ITEM_SPEC_STAT_ONE_HANDED_AXE = 7,
758 ITEM_SPEC_STAT_TWO_HANDED_AXE = 8,
759 ITEM_SPEC_STAT_ONE_HANDED_SWORD = 9,
760 ITEM_SPEC_STAT_TWO_HANDED_SWORD = 10,
761 ITEM_SPEC_STAT_ONE_HANDED_MACE = 11,
762 ITEM_SPEC_STAT_TWO_HANDED_MACE = 12,
763 ITEM_SPEC_STAT_DAGGER = 13,
764 ITEM_SPEC_STAT_FIST_WEAPON = 14,
765 ITEM_SPEC_STAT_GUN = 15,
766 ITEM_SPEC_STAT_BOW = 16,
767 ITEM_SPEC_STAT_CROSSBOW = 17,
768 ITEM_SPEC_STAT_STAFF = 18,
769 ITEM_SPEC_STAT_POLEARM = 19,
770 ITEM_SPEC_STAT_THROWN = 20,
771 ITEM_SPEC_STAT_WAND = 21,
772 ITEM_SPEC_STAT_SHIELD = 22,
773 ITEM_SPEC_STAT_RELIC = 23,
774 ITEM_SPEC_STAT_CRIT = 24,
775 ITEM_SPEC_STAT_HASTE = 25,
776 ITEM_SPEC_STAT_BONUS_ARMOR = 26,
777 ITEM_SPEC_STAT_CLOAK = 27,
778 ITEM_SPEC_STAT_WARGLAIVES = 28,
779 ITEM_SPEC_STAT_RELIC_IRON = 29,
780 ITEM_SPEC_STAT_RELIC_BLOOD = 30,
781 ITEM_SPEC_STAT_RELIC_SHADOW = 31,
782 ITEM_SPEC_STAT_RELIC_FEL = 32,
783 ITEM_SPEC_STAT_RELIC_ARCANE = 33,
784 ITEM_SPEC_STAT_RELIC_FROST = 34,
785 ITEM_SPEC_STAT_RELIC_FIRE = 35,
786 ITEM_SPEC_STAT_RELIC_WATER = 36,
787 ITEM_SPEC_STAT_RELIC_LIFE = 37,
788 ITEM_SPEC_STAT_RELIC_WIND = 38,
789 ITEM_SPEC_STAT_RELIC_HOLY = 39,
790
791 ITEM_SPEC_STAT_NONE = 40
792 };
793
794 enum MapDifficultyFlags : uint8
795 {
796 MAP_DIFFICULTY_FLAG_CANNOT_EXTEND = 0x10
797 };
798
799 enum MountCapabilityFlags
800 {
801 MOUNT_CAPABILITY_FLAG_GROUND = 0x1,
802 MOUNT_CAPABILITY_FLAG_FLYING = 0x2,
803 MOUNT_CAPABILITY_FLAG_FLOAT = 0x4,
804 MOUNT_CAPABILITY_FLAG_UNDERWATER = 0x8,
805 MOUNT_CAPABIILTY_FLAG_IGNORE_RESTRICTIONS = 0x20,
806 };
807
808 enum MountFlags
809 {
810 MOUNT_FLAG_SELF_MOUNT = 0x02, // Player becomes the mount himself
811 MOUNT_FLAG_FACTION_SPECIFIC = 0x04,
812 MOUNT_FLAG_PREFERRED_SWIMMING = 0x10,
813 MOUNT_FLAG_PREFERRED_WATER_WALKING = 0x20,
814 MOUNT_FLAG_HIDE_IF_UNKNOWN = 0x40
815 };
816
817 enum PhaseEntryFlags : uint16
818 {
819 PHASE_FLAG_NORMAL = 0x08,
820 PHASE_FLAG_COSMETIC = 0x10,
821 PHASE_FLAG_PERSONAL = 0x20
822 };
823
824 // PhaseUseFlags fields in different db2s
825 enum PhaseUseFlagsValues : uint8
826 {
827 PHASE_USE_FLAGS_NONE = 0x0,
828 PHASE_USE_FLAGS_ALWAYS_VISIBLE = 0x1,
829 PHASE_USE_FLAGS_INVERSE = 0x2,
830
831 PHASE_USE_FLAGS_ALL = PHASE_USE_FLAGS_ALWAYS_VISIBLE | PHASE_USE_FLAGS_INVERSE
832 };
833
834 enum PrestigeLevelInfoFlags : uint8
835 {
836 PRESTIGE_FLAG_DISABLED = 0x01 // Prestige levels with this flag won't be included to calculate max prestigelevel.
837 };
838
839 enum QuestPackageFilter
840 {
841 QUEST_PACKAGE_FILTER_LOOT_SPECIALIZATION = 0, // Players can select this quest reward if it matches their selected loot specialization
842 QUEST_PACKAGE_FILTER_CLASS = 1, // Players can select this quest reward if it matches their class
843 QUEST_PACKAGE_FILTER_UNMATCHED = 2, // Players can select this quest reward if no class/loot_spec rewards are available
844 QUEST_PACKAGE_FILTER_EVERYONE = 3 // Players can always select this quest reward
845 };
846
847 enum ScenarioStepFlags
848 {
849 SCENARIO_STEP_FLAG_BONUS_OBJECTIVE = 0x1,
850 SCENARIO_STEP_FLAG_HEROIC_ONLY = 0x2
851 };
852
853 enum SkillRaceClassInfoFlags
854 {
855 SKILL_FLAG_NO_SKILLUP_MESSAGE = 0x2,
856 SKILL_FLAG_ALWAYS_MAX_VALUE = 0x10,
857 SKILL_FLAG_UNLEARNABLE = 0x20, // Skill can be unlearned
858 SKILL_FLAG_INCLUDE_IN_SORT = 0x80, // Spells belonging to a skill with this flag will additionally compare skill ids when sorting spellbook in client
859 SKILL_FLAG_NOT_TRAINABLE = 0x100,
860 SKILL_FLAG_MONO_VALUE = 0x400 // Skill always has value 1 - clientside display flag, real value can be different
861 };
862
863 enum SpellCategoryFlags
864 {
865 SPELL_CATEGORY_FLAG_COOLDOWN_SCALES_WITH_WEAPON_SPEED = 0x01, // unused
866 SPELL_CATEGORY_FLAG_COOLDOWN_STARTS_ON_EVENT = 0x04,
867 SPELL_CATEGORY_FLAG_COOLDOWN_EXPIRES_AT_DAILY_RESET = 0x08
868 };
869
870 #define MAX_SPELL_EFFECTS 32
871 #define MAX_EFFECT_MASK 0xFFFFFFFF
872
873 #define MAX_SPELL_AURA_INTERRUPT_FLAGS 2
874
875 enum SpellItemEnchantmentFlags
876 {
877 ENCHANTMENT_CAN_SOULBOUND = 0x01,
878 ENCHANTMENT_UNK1 = 0x02,
879 ENCHANTMENT_UNK2 = 0x04,
880 ENCHANTMENT_UNK3 = 0x08,
881 ENCHANTMENT_COLLECTABLE = 0x100,
882 ENCHANTMENT_HIDE_IF_NOT_COLLECTED = 0x200,
883 };
884
885 enum SpellProcsPerMinuteModType
886 {
887 SPELL_PPM_MOD_HASTE = 1,
888 SPELL_PPM_MOD_CRIT = 2,
889 SPELL_PPM_MOD_CLASS = 3,
890 SPELL_PPM_MOD_SPEC = 4,
891 SPELL_PPM_MOD_RACE = 5,
892 SPELL_PPM_MOD_ITEM_LEVEL = 6,
893 SPELL_PPM_MOD_BATTLEGROUND = 7
894 };
895
896 enum SpellShapeshiftFormFlags
897 {
898 SHAPESHIFT_FORM_IS_NOT_A_SHAPESHIFT = 0x0001,
899 SHAPESHIFT_FORM_CANNOT_CANCEL = 0x0002, // player cannot cancel the aura giving this shapeshift
900 SHAPESHIFT_FORM_CAN_INTERACT = 0x0008, // if the form does not have SHAPESHIFT_FORM_IS_NOT_A_SHAPESHIFT then this flag must be present to allow NPC interaction
901 SHAPESHIFT_FORM_CAN_EQUIP_ITEMS = 0x0040, // if the form does not have SHAPESHIFT_FORM_IS_NOT_A_SHAPESHIFT then this flag allows equipping items without ITEM_FLAG_USABLE_WHEN_SHAPESHIFTED
902 SHAPESHIFT_FORM_CAN_USE_ITEMS = 0x0080, // if the form does not have SHAPESHIFT_FORM_IS_NOT_A_SHAPESHIFT then this flag allows using items without ITEM_FLAG_USABLE_WHEN_SHAPESHIFTED
903 SHAPESHIFT_FORM_CAN_AUTO_UNSHIFT = 0x0100, // clientside
904 SHAPESHIFT_FORM_PREVENT_LFG_TELEPORT = 0x0200,
905 SHAPESHIFT_FORM_PREVENT_USING_OWN_SKILLS = 0x0400, // prevents using spells that don't have any shapeshift requirement
906 SHAPESHIFT_FORM_PREVENT_EMOTE_SOUNDS = 0x1000
907 };
908
909 #define TaxiMaskSize 258
910 typedef std::array<uint8, TaxiMaskSize> TaxiMask;
911
912 enum TotemCategoryType
913 {
914 TOTEM_CATEGORY_TYPE_KNIFE = 1,
915 TOTEM_CATEGORY_TYPE_TOTEM = 2,
916 TOTEM_CATEGORY_TYPE_ROD = 3,
917 TOTEM_CATEGORY_TYPE_PICK = 21,
918 TOTEM_CATEGORY_TYPE_STONE = 22,
919 TOTEM_CATEGORY_TYPE_HAMMER = 23,
920 TOTEM_CATEGORY_TYPE_SPANNER = 24
921 };
922
923 // SummonProperties.dbc, col 1
924 enum SummonPropGroup
925 {
926 SUMMON_PROP_GROUP_UNKNOWN1 = 0, // 1160 spells in 3.0.3
927 SUMMON_PROP_GROUP_UNKNOWN2 = 1, // 861 spells in 3.0.3
928 SUMMON_PROP_GROUP_PETS = 2, // 52 spells in 3.0.3, pets mostly
929 SUMMON_PROP_GROUP_CONTROLLABLE = 3, // 13 spells in 3.0.3, mostly controllable
930 SUMMON_PROP_GROUP_UNKNOWN3 = 4 // 86 spells in 3.0.3, taxi/mounts
931 };
932
933 // SummonProperties.dbc, col 3
934 enum SummonPropType
935 {
936 SUMMON_PROP_TYPE_UNKNOWN = 0, // different summons, 1330 spells in 3.0.3
937 SUMMON_PROP_TYPE_SUMMON = 1, // generic summons, 49 spells in 3.0.3
938 SUMMON_PROP_TYPE_GUARDIAN = 2, // summon guardian, 393 spells in 3.0.3
939 SUMMON_PROP_TYPE_ARMY = 3, // summon army, 5 spells in 3.0.3
940 SUMMON_PROP_TYPE_TOTEM = 4, // summon totem, 169 spells in 3.0.3
941 SUMMON_PROP_TYPE_CRITTER = 5, // critter/minipet, 195 spells in 3.0.3
942 SUMMON_PROP_TYPE_DK = 6, // summon DRW/Ghoul, 2 spells in 3.0.3
943 SUMMON_PROP_TYPE_BOMB = 7, // summon bot/bomb, 4 spells in 3.0.3
944 SUMMON_PROP_TYPE_PHASING = 8, // something todo with DK prequest line, 2 spells in 3.0.3
945 SUMMON_PROP_TYPE_SIEGE_VEH = 9, // summon different vehicles, 14 spells in 3.0.3
946 SUMMON_PROP_TYPE_DRAKE_VEH = 10, // summon drake (vehicle), 3 spells
947 SUMMON_PROP_TYPE_LIGHTWELL = 11, // summon lightwell, 6 spells in 3.0.3
948 SUMMON_PROP_TYPE_JEEVES = 12, // summon Jeeves, 1 spell in 3.3.5a
949 SUMMON_PROP_TYPE_LASHTAIL = 13 // Lashtail Hatchling, 1 spell in 4.2.2
950 };
951
952 // SummonProperties.dbc, col 5
953 enum SummonPropFlags
954 {
955 SUMMON_PROP_FLAG_NONE = 0x00000000, // 1342 spells in 3.0.3
956 SUMMON_PROP_FLAG_UNK1 = 0x00000001, // 75 spells in 3.0.3, something unfriendly
957 SUMMON_PROP_FLAG_UNK2 = 0x00000002, // 616 spells in 3.0.3, something friendly
958 SUMMON_PROP_FLAG_UNK3 = 0x00000004, // 22 spells in 3.0.3, no idea...
959 SUMMON_PROP_FLAG_UNK4 = 0x00000008, // 49 spells in 3.0.3, some mounts
960 SUMMON_PROP_FLAG_PERSONAL_SPAWN = 0x00000010, // Personal Spawn (creature visible only by summoner)
961 SUMMON_PROP_FLAG_UNK6 = 0x00000020, // 0 spells in 3.3.5, unused
962 SUMMON_PROP_FLAG_UNK7 = 0x00000040, // 12 spells in 3.0.3, no idea
963 SUMMON_PROP_FLAG_UNK8 = 0x00000080, // 4 spells in 3.0.3, no idea
964 SUMMON_PROP_FLAG_UNK9 = 0x00000100, // 51 spells in 3.0.3, no idea, many quest related
965 SUMMON_PROP_FLAG_UNK10 = 0x00000200, // 51 spells in 3.0.3, something defensive
966 SUMMON_PROP_FLAG_UNK11 = 0x00000400, // 3 spells, requires something near?
967 SUMMON_PROP_FLAG_UNK12 = 0x00000800, // 30 spells in 3.0.3, no idea
968 SUMMON_PROP_FLAG_UNK13 = 0x00001000, // Lightwell, Jeeves, Gnomish Alarm-o-bot, Build vehicles(wintergrasp)
969 SUMMON_PROP_FLAG_UNK14 = 0x00002000, // Guides, player follows
970 SUMMON_PROP_FLAG_UNK15 = 0x00004000, // Force of Nature, Shadowfiend, Feral Spirit, Summon Water Elemental
971 SUMMON_PROP_FLAG_UNK16 = 0x00008000, // Light/Dark Bullet, Soul/Fiery Consumption, Twisted Visage, Twilight Whelp. Phase related?
972 SUMMON_PROP_FLAG_UNK17 = 0x00010000,
973 SUMMON_PROP_FLAG_UNK18 = 0x00020000,
974 SUMMON_PROP_FLAG_UNK19 = 0x00040000,
975 SUMMON_PROP_FLAG_UNK20 = 0x00080000,
976 SUMMON_PROP_FLAG_UNK21 = 0x00100000 // Totems
977 };
978
979 #define MAX_TALENT_TIERS 7
980 #define MAX_TALENT_COLUMNS 3
981 #define MAX_PVP_TALENT_TIERS 6
982 #define MAX_PVP_TALENT_COLUMNS 3
983
984 enum TaxiNodeFlags
985 {
986 TAXI_NODE_FLAG_ALLIANCE = 0x01,
987 TAXI_NODE_FLAG_HORDE = 0x02,
988 TAXI_NODE_FLAG_USE_FAVORITE_MOUNT = 0x10
989 };
990
991 enum TaxiPathNodeFlags
992 {
993 TAXI_PATH_NODE_FLAG_TELEPORT = 0x1,
994 TAXI_PATH_NODE_FLAG_STOP = 0x2
995 };
996
997 enum VehicleSeatFlags
998 {
999 VEHICLE_SEAT_FLAG_HAS_LOWER_ANIM_FOR_ENTER = 0x00000001,
1000 VEHICLE_SEAT_FLAG_HAS_LOWER_ANIM_FOR_RIDE = 0x00000002,
1001 VEHICLE_SEAT_FLAG_UNK3 = 0x00000004,
1002 VEHICLE_SEAT_FLAG_SHOULD_USE_VEH_SEAT_EXIT_ANIM_ON_VOLUNTARY_EXIT = 0x00000008,
1003 VEHICLE_SEAT_FLAG_UNK5 = 0x00000010,
1004 VEHICLE_SEAT_FLAG_UNK6 = 0x00000020,
1005 VEHICLE_SEAT_FLAG_UNK7 = 0x00000040,
1006 VEHICLE_SEAT_FLAG_UNK8 = 0x00000080,
1007 VEHICLE_SEAT_FLAG_UNK9 = 0x00000100,
1008 VEHICLE_SEAT_FLAG_HIDE_PASSENGER = 0x00000200, // Passenger is hidden
1009 VEHICLE_SEAT_FLAG_ALLOW_TURNING = 0x00000400, // needed for CGCamera__SyncFreeLookFacing
1010 VEHICLE_SEAT_FLAG_CAN_CONTROL = 0x00000800, // Lua_UnitInVehicleControlSeat
1011 VEHICLE_SEAT_FLAG_CAN_CAST_MOUNT_SPELL = 0x00001000, // Can cast spells with SPELL_AURA_MOUNTED from seat (possibly 4.x only, 0 seats on 3.3.5a)
1012 VEHICLE_SEAT_FLAG_UNCONTROLLED = 0x00002000, // can override !& VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT
1013 VEHICLE_SEAT_FLAG_CAN_ATTACK = 0x00004000, // Can attack, cast spells and use items from vehicle
1014 VEHICLE_SEAT_FLAG_SHOULD_USE_VEH_SEAT_EXIT_ANIM_ON_FORCED_EXIT = 0x00008000,
1015 VEHICLE_SEAT_FLAG_UNK17 = 0x00010000,
1016 VEHICLE_SEAT_FLAG_UNK18 = 0x00020000, // Needs research and support (28 vehicles): Allow entering vehicles while keeping specific permanent(?) auras that impose visuals (states like beeing under freeze/stun mechanic, emote state animations).
1017 VEHICLE_SEAT_FLAG_HAS_VEH_EXIT_ANIM_VOLUNTARY_EXIT = 0x00040000,
1018 VEHICLE_SEAT_FLAG_HAS_VEH_EXIT_ANIM_FORCED_EXIT = 0x00080000,
1019 VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE = 0x00100000,
1020 VEHICLE_SEAT_FLAG_UNK22 = 0x00200000,
1021 VEHICLE_SEAT_FLAG_REC_HAS_VEHICLE_ENTER_ANIM = 0x00400000,
1022 VEHICLE_SEAT_FLAG_IS_USING_VEHICLE_CONTROLS = 0x00800000, // Lua_IsUsingVehicleControls
1023 VEHICLE_SEAT_FLAG_ENABLE_VEHICLE_ZOOM = 0x01000000,
1024 VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT = 0x02000000, // Lua_CanExitVehicle - can enter and exit at free will
1025 VEHICLE_SEAT_FLAG_CAN_SWITCH = 0x04000000, // Lua_CanSwitchVehicleSeats
1026 VEHICLE_SEAT_FLAG_HAS_START_WARITING_FOR_VEH_TRANSITION_ANIM_ENTER = 0x08000000,
1027 VEHICLE_SEAT_FLAG_HAS_START_WARITING_FOR_VEH_TRANSITION_ANIM_EXIT = 0x10000000,
1028 VEHICLE_SEAT_FLAG_CAN_CAST = 0x20000000, // Lua_UnitHasVehicleUI
1029 VEHICLE_SEAT_FLAG_UNK2 = 0x40000000, // checked in conjunction with 0x800 in CastSpell2
1030 VEHICLE_SEAT_FLAG_ALLOWS_INTERACTION = 0x80000000
1031 };
1032
1033 enum VehicleSeatFlagsB
1034 {
1035 VEHICLE_SEAT_FLAG_B_NONE = 0x00000000,
1036 VEHICLE_SEAT_FLAG_B_USABLE_FORCED = 0x00000002,
1037 VEHICLE_SEAT_FLAG_B_TARGETS_IN_RAIDUI = 0x00000008, // Lua_UnitTargetsVehicleInRaidUI
1038 VEHICLE_SEAT_FLAG_B_EJECTABLE = 0x00000020, // ejectable
1039 VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 = 0x00000040,
1040 VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3 = 0x00000100,
1041 VEHICLE_SEAT_FLAG_B_KEEP_PET = 0x00020000,
1042 VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4 = 0x02000000,
1043 VEHICLE_SEAT_FLAG_B_CAN_SWITCH = 0x04000000,
1044 VEHICLE_SEAT_FLAG_B_VEHICLE_PLAYERFRAME_UI = 0x80000000 // Lua_UnitHasVehiclePlayerFrameUI - actually checked for flagsb &~ 0x80000000
1045 };
1046
1047 // CurrencyTypes.dbc
1048 enum CurrencyTypes
1049 {
1050 CURRENCY_TYPE_JUSTICE_POINTS = 395,
1051 CURRENCY_TYPE_VALOR_POINTS = 396,
1052 CURRENCY_TYPE_APEXIS_CRYSTALS = 823,
1053 CURRENCY_TYPE_ARTIFACT_KNOWLEDGE = 1171,
1054 };
1055
1056 enum WorldMapTransformsFlags
1057 {
1058 WORLD_MAP_TRANSFORMS_FLAG_DUNGEON = 0x04
1059 };
1060
1061 #endif