TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
SharedDefines.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2008-2016 TrinityCore <http://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 TRINITY_SHAREDDEFINES_H
20 #define TRINITY_SHAREDDEFINES_H
21 
22 #include "Define.h"
23 #include "DetourNavMesh.h"
24 #include <cassert>
25 
27 {
28  EFFECT_0 = 0,
29  EFFECT_1 = 1,
30  EFFECT_2 = 2,
31  EFFECT_3 = 3,
32  EFFECT_4 = 4,
33  EFFECT_5 = 5,
34  EFFECT_6 = 6,
35  EFFECT_7 = 7,
36  EFFECT_8 = 8,
37  EFFECT_9 = 9,
38  EFFECT_10 = 10,
39  EFFECT_11 = 11,
40  EFFECT_12 = 12,
41  EFFECT_13 = 13,
42  EFFECT_14 = 14,
43  EFFECT_15 = 15,
44  EFFECT_16 = 16,
45  EFFECT_17 = 17,
46  EFFECT_18 = 18,
47  EFFECT_19 = 19,
48  EFFECT_20 = 20,
49  EFFECT_21 = 21,
50  EFFECT_22 = 22,
51  EFFECT_23 = 23,
52  EFFECT_24 = 24,
53  EFFECT_25 = 25,
54  EFFECT_26 = 26,
55  EFFECT_27 = 27,
56  EFFECT_28 = 28,
57  EFFECT_29 = 29,
58  EFFECT_30 = 30,
59  EFFECT_31 = 31
60 };
61 
62 // used in script definitions
63 #define EFFECT_FIRST_FOUND 254
64 #define EFFECT_ALL 255
65 
66 // loot modes for creatures and gameobjects, bitmask!
68 {
75 };
76 
78 {
86 };
87 
88 #define CURRENT_EXPANSION EXPANSION_WARLORDS_OF_DRAENOR
89 
90 enum Gender
91 {
96 };
97 
98 // ChrRaces.dbc (6.0.2.18988)
99 enum Races
100 {
103  RACE_ORC = 2,
113  //RACE_FEL_ORC = 12,
114  //RACE_NAGA = 13,
115  //RACE_BROKEN = 14,
116  //RACE_SKELETON = 15,
117  //RACE_VRYKUL = 16,
118  //RACE_TUSKARR = 17,
119  //RACE_FOREST_TROLL = 18,
120  //RACE_TAUNKA = 19,
121  //RACE_NORTHREND_SKELETON = 20,
122  //RACE_ICE_TROLL = 21,
124  //RACE_GILNEAN = 23
128 };
129 
130 // max+1 for player race
131 #define MAX_RACES 27
132 
133 #define RACEMASK_ALL_PLAYABLE \
134  ((1<<(RACE_HUMAN-1)) | \
135  (1<<(RACE_ORC-1)) | \
136  (1<<(RACE_DWARF-1)) | \
137  (1<<(RACE_NIGHTELF-1)) | \
138  (1<<(RACE_UNDEAD_PLAYER-1)) | \
139  (1<<(RACE_TAUREN-1)) | \
140  (1<<(RACE_GNOME-1)) | \
141  (1<<(RACE_TROLL-1)) | \
142  (1<<(RACE_BLOODELF-1)) | \
143  (1<<(RACE_DRAENEI-1)) | \
144  (1<<(RACE_GOBLIN-1)) | \
145  (1<<(RACE_WORGEN-1)) | \
146  (1<<(RACE_PANDAREN_NEUTRAL-1)) |\
147  (1<<(RACE_PANDAREN_ALLIANCE-1)) |\
148  (1<<(RACE_PANDAREN_HORDE-1)))
149 
150 #define RACEMASK_NEUTRAL (1<<(RACE_PANDAREN_NEUTRAL-1))
151 
152 #define RACEMASK_ALLIANCE \
153  ((1<<(RACE_HUMAN-1)) | \
154  (1<<(RACE_DWARF-1)) | \
155  (1<<(RACE_NIGHTELF-1)) | \
156  (1<<(RACE_GNOME-1)) | \
157  (1<<(RACE_DRAENEI-1)) | \
158  (1<<(RACE_WORGEN-1)) | \
159  (1<<(RACE_PANDAREN_ALLIANCE-1)))
160 
161 #define RACEMASK_HORDE RACEMASK_ALL_PLAYABLE & ~RACEMASK_ALLIANCE
162 
163 // Class value is index in ChrClasses.dbc
165 {
178 };
179 
180 // max+1 for player class
181 #define MAX_CLASSES 12
182 
183 #define CLASSMASK_ALL_PLAYABLE \
184  ((1<<(CLASS_WARRIOR-1)) | \
185  (1<<(CLASS_PALADIN-1)) | \
186  (1<<(CLASS_HUNTER-1)) | \
187  (1<<(CLASS_ROGUE-1)) | \
188  (1<<(CLASS_PRIEST-1)) | \
189  (1<<(CLASS_DEATH_KNIGHT-1)) | \
190  (1<<(CLASS_SHAMAN-1)) | \
191  (1<<(CLASS_MAGE-1)) | \
192  (1<<(CLASS_WARLOCK-1)) | \
193  (1<<(CLASS_MONK-1)) | \
194  (1<<(CLASS_DRUID-1)))
195 
196 // valid classes for creature_template.unit_class
198 {
203 };
204 
205 #define CLASSMASK_ALL_CREATURES ((1<<(UNIT_CLASS_WARRIOR-1)) | (1<<(UNIT_CLASS_PALADIN-1)) | (1<<(UNIT_CLASS_ROGUE-1)) | (1<<(UNIT_CLASS_MAGE-1)))
206 
207 #define CLASSMASK_WAND_USERS ((1<<(CLASS_PRIEST-1)) | (1<<(CLASS_MAGE-1)) | (1<<(CLASS_WARLOCK-1)))
208 
209 #define PLAYER_MAX_BATTLEGROUND_QUEUES 2
210 
212 {
221 };
222 
223 #define MIN_REPUTATION_RANK (REP_HATED)
224 #define MAX_REPUTATION_RANK 8
225 
226 #define MAX_SPILLOVER_FACTIONS 5
227 
229 {
230  COPPER = 1,
231  SILVER = COPPER*100,
232  GOLD = SILVER*100
233 };
234 
235 enum Stats : uint16
236 {
242 };
243 
244 #define MAX_STATS 5
245 
246 enum Powers // (6.0)
247 {
258  POWER_ALTERNATE_POWER = 10, // Used in some quests
260  POWER_CHI = 12,
266  POWER_ALL = 127, // default for class?
267  POWER_HEALTH = 0xFFFFFFFE // (-2 as signed value)
268 };
269 
270 #define MAX_POWERS_PER_CLASS 6
271 
273 {
281 };
282 
283 #define MAX_SPELL_SCHOOL 7
284 
286 {
287  SPELL_SCHOOL_MASK_NONE = 0x00, // not exist
288  SPELL_SCHOOL_MASK_NORMAL = (1 << SPELL_SCHOOL_NORMAL), // PHYSICAL (Armor)
295 
296  // unions
297 
298  // 124, not include normal and holy damage
302  // 126
304 
305  // 127
307 };
308 
310 {
311  for (int i = 0; i < MAX_SPELL_SCHOOL; ++i)
312  if (mask & (1 << i))
313  return SpellSchools(i);
314 
315  return SPELL_SCHOOL_NORMAL;
316 }
317 
319 {
320  ITEM_QUALITY_POOR = 0, // GREY
321  ITEM_QUALITY_NORMAL = 1, // WHITE
322  ITEM_QUALITY_UNCOMMON = 2, // GREEN
323  ITEM_QUALITY_RARE = 3, // BLUE
324  ITEM_QUALITY_EPIC = 4, // PURPLE
325  ITEM_QUALITY_LEGENDARY = 5, // ORANGE
326  ITEM_QUALITY_ARTIFACT = 6, // LIGHT YELLOW
328 };
329 
330 #define MAX_ITEM_QUALITY 8
331 
333 {
336 };
337 
339 {
340  0xff9d9d9d, // GREY
341  0xffffffff, // WHITE
342  0xff1eff00, // GREEN
343  0xff0070dd, // BLUE
344  0xffa335ee, // PURPLE
345  0xffff8000, // ORANGE
346  0xffe6cc80, // LIGHT YELLOW
347  0xffe6cc80 // LIGHT YELLOW
348 };
349 
350 // ***********************************
351 // Spell Attributes definitions
352 // ***********************************
353 
355 {
356  SPELL_ATTR0_UNK0 = 0x00000001, // 0
357  SPELL_ATTR0_REQ_AMMO = 0x00000002, // 1 on next ranged
358  SPELL_ATTR0_ON_NEXT_SWING = 0x00000004, // 2
359  SPELL_ATTR0_IS_REPLENISHMENT = 0x00000008, // 3 not set in 3.0.3
360  SPELL_ATTR0_ABILITY = 0x00000010, // 4 client puts 'ability' instead of 'spell' in game strings for these spells
361  SPELL_ATTR0_TRADESPELL = 0x00000020, // 5 trade spells (recipes), will be added by client to a sublist of profession spell
362  SPELL_ATTR0_PASSIVE = 0x00000040, // 6 Passive spell
363  SPELL_ATTR0_HIDDEN_CLIENTSIDE = 0x00000080, // 7 Spells with this attribute are not visible in spellbook or aura bar
364  SPELL_ATTR0_HIDE_IN_COMBAT_LOG = 0x00000100, // 8 This attribite controls whether spell appears in combat logs
365  SPELL_ATTR0_TARGET_MAINHAND_ITEM = 0x00000200, // 9 Client automatically selects item from mainhand slot as a cast target
366  SPELL_ATTR0_ON_NEXT_SWING_2 = 0x00000400, // 10
367  SPELL_ATTR0_UNK11 = 0x00000800, // 11
368  SPELL_ATTR0_DAYTIME_ONLY = 0x00001000, // 12 only useable at daytime, not set in 2.4.2
369  SPELL_ATTR0_NIGHT_ONLY = 0x00002000, // 13 only useable at night, not set in 2.4.2
370  SPELL_ATTR0_INDOORS_ONLY = 0x00004000, // 14 only useable indoors, not set in 2.4.2
371  SPELL_ATTR0_OUTDOORS_ONLY = 0x00008000, // 15 Only useable outdoors.
372  SPELL_ATTR0_NOT_SHAPESHIFT = 0x00010000, // 16 Not while shapeshifted
373  SPELL_ATTR0_ONLY_STEALTHED = 0x00020000, // 17 Must be in stealth
374  SPELL_ATTR0_DONT_AFFECT_SHEATH_STATE = 0x00040000, // 18 client won't hide unit weapons in sheath on cast/channel
375  SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION = 0x00080000, // 19 spelldamage depends on caster level
376  SPELL_ATTR0_STOP_ATTACK_TARGET = 0x00100000, // 20 Stop attack after use this spell (and not begin attack if use)
377  SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK = 0x00200000, // 21 Cannot be dodged/parried/blocked
378  SPELL_ATTR0_CAST_TRACK_TARGET = 0x00400000, // 22 Client automatically forces player to face target when casting
379  SPELL_ATTR0_CASTABLE_WHILE_DEAD = 0x00800000, // 23 castable while dead?
380  SPELL_ATTR0_CASTABLE_WHILE_MOUNTED = 0x01000000, // 24 castable while mounted
381  SPELL_ATTR0_DISABLED_WHILE_ACTIVE = 0x02000000, // 25 Activate and start cooldown after aura fade or remove summoned creature or go
382  SPELL_ATTR0_NEGATIVE_1 = 0x04000000, // 26 Many negative spells have this attr
383  SPELL_ATTR0_CASTABLE_WHILE_SITTING = 0x08000000, // 27 castable while sitting
384  SPELL_ATTR0_CANT_USED_IN_COMBAT = 0x10000000, // 28 Cannot be used in combat
385  SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY = 0x20000000, // 29 unaffected by invulnerability (hmm possible not...)
386  SPELL_ATTR0_HEARTBEAT_RESIST_CHECK = 0x40000000, // 30 random chance the effect will end TODO: implement core support
387  SPELL_ATTR0_CANT_CANCEL = 0x80000000 // 31 positive aura can't be canceled
388 };
389 
391 {
392  SPELL_ATTR1_DISMISS_PET = 0x00000001, // 0 for spells without this flag client doesn't allow to summon pet if caster has a pet
393  SPELL_ATTR1_DRAIN_ALL_POWER = 0x00000002, // 1 use all power (Only paladin Lay of Hands and Bunyanize)
394  SPELL_ATTR1_CHANNELED_1 = 0x00000004, // 2 clientside checked? cancelable?
396  SPELL_ATTR1_UNK4 = 0x00000010, // 4 stealth and whirlwind
397  SPELL_ATTR1_NOT_BREAK_STEALTH = 0x00000020, // 5 Not break stealth
398  SPELL_ATTR1_CHANNELED_2 = 0x00000040, // 6
399  SPELL_ATTR1_CANT_BE_REFLECTED = 0x00000080, // 7
400  SPELL_ATTR1_CANT_TARGET_IN_COMBAT = 0x00000100, // 8 can target only out of combat units
401  SPELL_ATTR1_MELEE_COMBAT_START = 0x00000200, // 9 player starts melee combat after this spell is cast
402  SPELL_ATTR1_NO_THREAT = 0x00000400, // 10 no generates threat on cast 100% (old NO_INITIAL_AGGRO)
403  SPELL_ATTR1_UNK11 = 0x00000800, // 11 aura
404  SPELL_ATTR1_IS_PICKPOCKET = 0x00001000, // 12 Pickpocket
405  SPELL_ATTR1_FARSIGHT = 0x00002000, // 13 Client removes farsight on aura loss
406  SPELL_ATTR1_CHANNEL_TRACK_TARGET = 0x00004000, // 14 Client automatically forces player to face target when channeling
407  SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY = 0x00008000, // 15 remove auras on immunity
408  SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE = 0x00010000, // 16 on immuniy
410  SPELL_ATTR1_UNK18 = 0x00040000, // 18 stun, polymorph, daze, hex
411  SPELL_ATTR1_CANT_TARGET_SELF = 0x00080000, // 19
412  SPELL_ATTR1_REQ_COMBO_POINTS1 = 0x00100000, // 20 Req combo points on target
413  SPELL_ATTR1_UNK21 = 0x00200000, // 21
414  SPELL_ATTR1_REQ_COMBO_POINTS2 = 0x00400000, // 22 Req combo points on target
415  SPELL_ATTR1_UNK23 = 0x00800000, // 23
416  SPELL_ATTR1_IS_FISHING = 0x01000000, // 24 only fishing spells
417  SPELL_ATTR1_UNK25 = 0x02000000, // 25
418  SPELL_ATTR1_UNK26 = 0x04000000, // 26 works correctly with [target=focus] and [target=mouseover] macros?
419  SPELL_ATTR1_UNK27 = 0x08000000, // 27 melee spell?
420  SPELL_ATTR1_DONT_DISPLAY_IN_AURA_BAR = 0x10000000, // 28 client doesn't display these spells in aura bar
421  SPELL_ATTR1_CHANNEL_DISPLAY_SPELL_NAME = 0x20000000, // 29 spell name is displayed in cast bar instead of 'channeling' text
422  SPELL_ATTR1_ENABLE_AT_DODGE = 0x40000000, // 30 Overpower
423  SPELL_ATTR1_UNK31 = 0x80000000 // 31
424 };
425 
427 {
428  SPELL_ATTR2_CAN_TARGET_DEAD = 0x00000001, // 0 can target dead unit or corpse
429  SPELL_ATTR2_UNK1 = 0x00000002, // 1 vanish, shadowform, Ghost Wolf and other
430  SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS = 0x00000004, // 2 26368 4.0.1 dbc change
431  SPELL_ATTR2_UNK3 = 0x00000008, // 3
432  SPELL_ATTR2_DISPLAY_IN_STANCE_BAR = 0x00000010, // 4 client displays icon in stance bar when learned, even if not shapeshift
433  SPELL_ATTR2_AUTOREPEAT_FLAG = 0x00000020, // 5
434  SPELL_ATTR2_CANT_TARGET_TAPPED = 0x00000040, // 6 target must be tapped by caster
435  SPELL_ATTR2_UNK7 = 0x00000080, // 7
436  SPELL_ATTR2_UNK8 = 0x00000100, // 8 not set in 3.0.3
437  SPELL_ATTR2_UNK9 = 0x00000200, // 9
438  SPELL_ATTR2_UNK10 = 0x00000400, // 10 related to tame
439  SPELL_ATTR2_HEALTH_FUNNEL = 0x00000800, // 11
440  SPELL_ATTR2_UNK12 = 0x00001000, // 12 Cleave, Heart Strike, Maul, Sunder Armor, Swipe
441  SPELL_ATTR2_PRESERVE_ENCHANT_IN_ARENA = 0x00002000, // 13 Items enchanted by spells with this flag preserve the enchant to arenas
442  SPELL_ATTR2_UNK14 = 0x00004000, // 14
443  SPELL_ATTR2_UNK15 = 0x00008000, // 15 not set in 3.0.3
444  SPELL_ATTR2_TAME_BEAST = 0x00010000, // 16
445  SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS = 0x00020000, // 17 don't reset timers for melee autoattacks (swings) or ranged autoattacks (autoshoots)
446  SPELL_ATTR2_REQ_DEAD_PET = 0x00040000, // 18 Only Revive pet and Heart of the Pheonix
447  SPELL_ATTR2_NOT_NEED_SHAPESHIFT = 0x00080000, // 19 does not necessarly need shapeshift
448  SPELL_ATTR2_UNK20 = 0x00100000, // 20
449  SPELL_ATTR2_DAMAGE_REDUCED_SHIELD = 0x00200000, // 21 for ice blocks, pala immunity buffs, priest absorb shields, but used also for other spells -> not sure!
450  SPELL_ATTR2_UNK22 = 0x00400000, // 22 Ambush, Backstab, Cheap Shot, Death Grip, Garrote, Judgements, Mutilate, Pounce, Ravage, Shiv, Shred
451  SPELL_ATTR2_IS_ARCANE_CONCENTRATION = 0x00800000, // 23 Only mage Arcane Concentration have this flag
452  SPELL_ATTR2_UNK24 = 0x01000000, // 24
453  SPELL_ATTR2_UNK25 = 0x02000000, // 25
454  SPELL_ATTR2_UNK26 = 0x04000000, // 26 unaffected by school immunity
455  SPELL_ATTR2_UNK27 = 0x08000000, // 27
456  SPELL_ATTR2_UNK28 = 0x10000000, // 28
457  SPELL_ATTR2_CANT_CRIT = 0x20000000, // 29 Spell can't crit
458  SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC = 0x40000000, // 30 spell can trigger even if triggered
459  SPELL_ATTR2_FOOD_BUFF = 0x80000000 // 31 Food or Drink Buff (like Well Fed)
460 };
461 
463 {
464  SPELL_ATTR3_UNK0 = 0x00000001, // 0
465  SPELL_ATTR3_UNK1 = 0x00000002, // 1
466  SPELL_ATTR3_UNK2 = 0x00000004, // 2
467  SPELL_ATTR3_BLOCKABLE_SPELL = 0x00000008, // 3 Only dmg class melee in 3.1.3
468  SPELL_ATTR3_IGNORE_RESURRECTION_TIMER = 0x00000010, // 4 you don't have to wait to be resurrected with these spells
469  SPELL_ATTR3_UNK5 = 0x00000020, // 5
470  SPELL_ATTR3_UNK6 = 0x00000040, // 6
471  SPELL_ATTR3_STACK_FOR_DIFF_CASTERS = 0x00000080, // 7 separate stack for every caster
472  SPELL_ATTR3_ONLY_TARGET_PLAYERS = 0x00000100, // 8 can only target players
473  SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2 = 0x00000200, // 9 triggered from effect?
474  SPELL_ATTR3_MAIN_HAND = 0x00000400, // 10 Main hand weapon required
475  SPELL_ATTR3_BATTLEGROUND = 0x00000800, // 11 Can only be cast in battleground
476  SPELL_ATTR3_ONLY_TARGET_GHOSTS = 0x00001000, // 12
477  SPELL_ATTR3_DONT_DISPLAY_CHANNEL_BAR = 0x00002000, // 13 Clientside attribute - will not display channeling bar
478  SPELL_ATTR3_IS_HONORLESS_TARGET = 0x00004000, // 14 "Honorless Target" only this spells have this flag
479  SPELL_ATTR3_UNK15 = 0x00008000, // 15 Auto Shoot, Shoot, Throw, - this is autoshot flag
480  SPELL_ATTR3_CANT_TRIGGER_PROC = 0x00010000, // 16 confirmed with many patchnotes
481  SPELL_ATTR3_NO_INITIAL_AGGRO = 0x00020000, // 17 Soothe Animal, 39758, Mind Soothe
482  SPELL_ATTR3_IGNORE_HIT_RESULT = 0x00040000, // 18 Spell should always hit its target
483  SPELL_ATTR3_DISABLE_PROC = 0x00080000, // 19 during aura proc no spells can trigger (20178, 20375)
484  SPELL_ATTR3_DEATH_PERSISTENT = 0x00100000, // 20 Death persistent spells
485  SPELL_ATTR3_UNK21 = 0x00200000, // 21 unused
486  SPELL_ATTR3_REQ_WAND = 0x00400000, // 22 Req wand
487  SPELL_ATTR3_UNK23 = 0x00800000, // 23
488  SPELL_ATTR3_REQ_OFFHAND = 0x01000000, // 24 Req offhand weapon
489  SPELL_ATTR3_UNK25 = 0x02000000, // 25 no cause spell pushback ?
490  SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED = 0x04000000, // 26 auras with this attribute can proc from triggered spell casts with SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2 (67736 + 52999)
491  SPELL_ATTR3_DRAIN_SOUL = 0x08000000, // 27 only drain soul has this flag
492  SPELL_ATTR3_UNK28 = 0x10000000, // 28
493  SPELL_ATTR3_NO_DONE_BONUS = 0x20000000, // 29 Ignore caster spellpower and done damage mods? client doesn't apply spellmods for those spells
494  SPELL_ATTR3_DONT_DISPLAY_RANGE = 0x40000000, // 30 client doesn't display range in tooltip for those spells
495  SPELL_ATTR3_UNK31 = 0x80000000 // 31
496 };
497 
499 {
500  SPELL_ATTR4_IGNORE_RESISTANCES = 0x00000001, // 0 spells with this attribute will completely ignore the target's resistance (these spells can't be resisted)
501  SPELL_ATTR4_PROC_ONLY_ON_CASTER = 0x00000002, // 1 proc only on effects with TARGET_UNIT_CASTER?
502  SPELL_ATTR4_UNK2 = 0x00000004, // 2
503  SPELL_ATTR4_UNK3 = 0x00000008, // 3
504  SPELL_ATTR4_UNK4 = 0x00000010, // 4 This will no longer cause guards to attack on use??
505  SPELL_ATTR4_UNK5 = 0x00000020, // 5
506  SPELL_ATTR4_NOT_STEALABLE = 0x00000040, // 6 although such auras might be dispellable, they cannot be stolen
507  SPELL_ATTR4_CAN_CAST_WHILE_CASTING = 0x00000080, // 7 Can be cast while another cast is in progress - see CanCastWhileCasting(SpellRec const*,CGUnit_C *,int &)
508  SPELL_ATTR4_FIXED_DAMAGE = 0x00000100, // 8 Ignores resilience and any (except mechanic related) damage or % damage taken auras on target.
509  SPELL_ATTR4_TRIGGER_ACTIVATE = 0x00000200, // 9 initially disabled / trigger activate from event (Execute, Riposte, Deep Freeze end other)
510  SPELL_ATTR4_SPELL_VS_EXTEND_COST = 0x00000400, // 10 Rogue Shiv have this flag
511  SPELL_ATTR4_UNK11 = 0x00000800, // 11
512  SPELL_ATTR4_UNK12 = 0x00001000, // 12
513  SPELL_ATTR4_COMBAT_LOG_NO_CASTER = 0x00002000, // 13 No caster object is sent to client combat log
514  SPELL_ATTR4_DAMAGE_DOESNT_BREAK_AURAS = 0x00004000, // 14 doesn't break auras by damage from these spells
515  SPELL_ATTR4_UNK15 = 0x00008000, // 15
516  SPELL_ATTR4_NOT_USABLE_IN_ARENA_OR_RATED_BG = 0x00010000, // 16 Cannot be used in both Arenas or Rated Battlegrounds
517  SPELL_ATTR4_USABLE_IN_ARENA = 0x00020000, // 17
518  SPELL_ATTR4_AREA_TARGET_CHAIN = 0x00040000, // 18 (NYI)hits area targets one after another instead of all at once
519  SPELL_ATTR4_UNK19 = 0x00080000, // 19 proc dalayed, after damage or don't proc on absorb?
520  SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER = 0x00100000, // 20 supersedes message "More powerful spell applied" for self casts.
521  SPELL_ATTR4_UNK21 = 0x00200000, // 21 Pally aura, dk presence, dudu form, warrior stance, shadowform, hunter track
522  SPELL_ATTR4_UNK22 = 0x00400000, // 22 Seal of Command (42058, 57770) and Gymer's Smash 55426
523  SPELL_ATTR4_UNK23 = 0x00800000, // 23
524  SPELL_ATTR4_UNK24 = 0x01000000, // 24 some shoot spell
525  SPELL_ATTR4_IS_PET_SCALING = 0x02000000, // 25 pet scaling auras
526  SPELL_ATTR4_CAST_ONLY_IN_OUTLAND = 0x04000000, // 26 Can only be used in Outland.
527  SPELL_ATTR4_UNK27 = 0x08000000, // 27
528  SPELL_ATTR4_UNK28 = 0x10000000, // 28 Aimed Shot
529  SPELL_ATTR4_UNK29 = 0x20000000, // 29
530  SPELL_ATTR4_UNK30 = 0x40000000, // 30
531  SPELL_ATTR4_UNK31 = 0x80000000 // 31 Polymorph (chicken) 228 and Sonic Boom (38052, 38488)
532 };
533 
535 {
536  SPELL_ATTR5_UNK0 = 0x00000001, // 0
537  SPELL_ATTR5_NO_REAGENT_WHILE_PREP = 0x00000002, // 1 not need reagents if UNIT_FLAG_PREPARATION
538  SPELL_ATTR5_UNK2 = 0x00000004, // 2
539  SPELL_ATTR5_USABLE_WHILE_STUNNED = 0x00000008, // 3 usable while stunned
540  SPELL_ATTR5_UNK4 = 0x00000010, // 4
541  SPELL_ATTR5_SINGLE_TARGET_SPELL = 0x00000020, // 5 Only one target can be apply at a time
542  SPELL_ATTR5_UNK6 = 0x00000040, // 6
543  SPELL_ATTR5_UNK7 = 0x00000080, // 7
544  SPELL_ATTR5_UNK8 = 0x00000100, // 8
545  SPELL_ATTR5_START_PERIODIC_AT_APPLY = 0x00000200, // 9 begin periodic tick at aura apply
546  SPELL_ATTR5_HIDE_DURATION = 0x00000400, // 10 do not send duration to client
547  SPELL_ATTR5_ALLOW_TARGET_OF_TARGET_AS_TARGET = 0x00000800, // 11 (NYI) uses target's target as target if original target not valid (intervene for example)
548  SPELL_ATTR5_UNK12 = 0x00001000, // 12 Cleave related?
549  SPELL_ATTR5_HASTE_AFFECT_DURATION = 0x00002000, // 13 haste effects decrease duration of this
550  SPELL_ATTR5_UNK14 = 0x00004000, // 14
551  SPELL_ATTR5_UNK15 = 0x00008000, // 15 Inflits on multiple targets?
552  SPELL_ATTR5_SPECIAL_ITEM_CLASS_CHECK = 0x00010000, // 16 this allows spells with EquippedItemClass to affect spells from other items if the required item is equipped
553  SPELL_ATTR5_USABLE_WHILE_FEARED = 0x00020000, // 17 usable while feared
554  SPELL_ATTR5_USABLE_WHILE_CONFUSED = 0x00040000, // 18 usable while confused
555  SPELL_ATTR5_DONT_TURN_DURING_CAST = 0x00080000, // 19 Blocks caster's turning when casting (client does not automatically turn caster's model to face UNIT_FIELD_TARGET)
556  SPELL_ATTR5_UNK20 = 0x00100000, // 20
557  SPELL_ATTR5_UNK21 = 0x00200000, // 21
558  SPELL_ATTR5_UNK22 = 0x00400000, // 22
559  SPELL_ATTR5_UNK23 = 0x00800000, // 23
560  SPELL_ATTR5_UNK24 = 0x01000000, // 24
561  SPELL_ATTR5_UNK25 = 0x02000000, // 25
562  SPELL_ATTR5_UNK26 = 0x04000000, // 26 aoe related - Boulder, Cannon, Corpse Explosion, Fire Nova, Flames, Frost Bomb, Living Bomb, Seed of Corruption, Starfall, Thunder Clap, Volley
563  SPELL_ATTR5_DONT_SHOW_AURA_IF_SELF_CAST = 0x08000000, // 27 Auras with this attribute are not visible on units that are the caster
564  SPELL_ATTR5_DONT_SHOW_AURA_IF_NOT_SELF_CAST = 0x10000000, // 28 Auras with this attribute are not visible on units that are not the caster
565  SPELL_ATTR5_UNK29 = 0x20000000, // 29
566  SPELL_ATTR5_UNK30 = 0x40000000, // 30
567  SPELL_ATTR5_UNK31 = 0x80000000 // 31 Forces all nearby enemies to focus attacks caster
568 };
569 
571 {
572  SPELL_ATTR6_DONT_DISPLAY_COOLDOWN = 0x00000001, // 0 client doesn't display cooldown in tooltip for these spells
573  SPELL_ATTR6_ONLY_IN_ARENA = 0x00000002, // 1 only usable in arena
575  SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG = 0x00000008, // 3 skips checking UNIT_FLAG_IMMUNE_TO_PC and UNIT_FLAG_IMMUNE_TO_NPC flags on assist
576  SPELL_ATTR6_UNK4 = 0x00000010, // 4
577  SPELL_ATTR6_UNK5 = 0x00000020, // 5
578  SPELL_ATTR6_USE_SPELL_CAST_EVENT = 0x00000040, // 6 Auras with this attribute trigger SPELL_CAST combat log event instead of SPELL_AURA_START (clientside attribute)
579  SPELL_ATTR6_UNK7 = 0x00000080, // 7
581  SPELL_ATTR6_UNK9 = 0x00000200, // 9
583  SPELL_ATTR6_NOT_IN_RAID_INSTANCE = 0x00000800, // 11 not usable in raid instance
584  SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE = 0x00001000, // 12 castable while caster is on vehicle
585  SPELL_ATTR6_CAN_TARGET_INVISIBLE = 0x00002000, // 13 ignore visibility requirement for spell target (phases, invisibility, etc.)
586  SPELL_ATTR6_UNK14 = 0x00004000, // 14
587  SPELL_ATTR6_UNK15 = 0x00008000, // 15 only 54368, 67892
588  SPELL_ATTR6_UNK16 = 0x00010000, // 16
589  SPELL_ATTR6_UNK17 = 0x00020000, // 17 Mount spell
590  SPELL_ATTR6_CAST_BY_CHARMER = 0x00040000, // 18 client won't allow to cast these spells when unit is not possessed && charmer of caster will be original caster
591  SPELL_ATTR6_UNK19 = 0x00080000, // 19 only 47488, 50782
592  SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER = 0x00100000, // 20 Auras with this attribute are only visible to their caster (or pet's owner)
593  SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS = 0x00200000, // 21 it's only client-side attribute
594  SPELL_ATTR6_UNK22 = 0x00400000, // 22 only 72054
595  SPELL_ATTR6_UNK23 = 0x00800000, // 23
597  SPELL_ATTR6_UNK25 = 0x02000000, // 25 Exorcism, Flash of Light
598  SPELL_ATTR6_UNK26 = 0x04000000, // 26 related to player castable positive buff
599  SPELL_ATTR6_UNK27 = 0x08000000, // 27
600  SPELL_ATTR6_UNK28 = 0x10000000, // 28 Death Grip
601  SPELL_ATTR6_NO_DONE_PCT_DAMAGE_MODS = 0x20000000, // 29 ignores done percent damage mods?
602  SPELL_ATTR6_UNK30 = 0x40000000, // 30
603  SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS = 0x80000000 // 31 Spells with this attribute skip applying modifiers to category cooldowns
604 };
605 
607 {
608  SPELL_ATTR7_UNK0 = 0x00000001, // 0 Shaman's new spells (Call of the ...), Feign Death.
609  SPELL_ATTR7_IGNORE_DURATION_MODS = 0x00000002, // 1 Duration is not affected by duration modifiers
610  SPELL_ATTR7_REACTIVATE_AT_RESURRECT = 0x00000004, // 2 Paladin's auras and 65607 only.
611  SPELL_ATTR7_IS_CHEAT_SPELL = 0x00000008, // 3 Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS
612  SPELL_ATTR7_UNK4 = 0x00000010, // 4 Only 47883 (Soulstone Resurrection) and test spell.
613  SPELL_ATTR7_SUMMON_TOTEM = 0x00000020, // 5 Only Shaman totems.
614  SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE = 0x00000040, // 6 Does not cause spell pushback on damage
615  SPELL_ATTR7_UNK7 = 0x00000080, // 7 66218 (Launch) spell.
616  SPELL_ATTR7_HORDE_ONLY = 0x00000100, // 8 Teleports, mounts and other spells.
617  SPELL_ATTR7_ALLIANCE_ONLY = 0x00000200, // 9 Teleports, mounts and other spells.
618  SPELL_ATTR7_DISPEL_CHARGES = 0x00000400, // 10 Dispel and Spellsteal individual charges instead of whole aura.
619  SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER = 0x00000800, // 11 Only non-player casts interrupt, though Feral Charge - Bear has it.
620  SPELL_ATTR7_SILENCE_ONLY_NONPLAYER = 0x00001000, // 12 Not set in 3.2.2a.
621  SPELL_ATTR7_UNK13 = 0x00002000, // 13 Not set in 3.2.2a.
622  SPELL_ATTR7_UNK14 = 0x00004000, // 14 Only 52150 (Raise Dead - Pet) spell.
623  SPELL_ATTR7_UNK15 = 0x00008000, // 15 Exorcism. Usable on players? 100% crit chance on undead and demons?
624  SPELL_ATTR7_CAN_RESTORE_SECONDARY_POWER = 0x00010000, // 16 These spells can replenish a powertype, which is not the current powertype.
625  SPELL_ATTR7_UNK17 = 0x00020000, // 17 Only 27965 (Suicide) spell.
626  SPELL_ATTR7_HAS_CHARGE_EFFECT = 0x00040000, // 18 Only spells that have Charge among effects.
627  SPELL_ATTR7_ZONE_TELEPORT = 0x00080000, // 19 Teleports to specific zones.
628  SPELL_ATTR7_UNK20 = 0x00100000, // 20 Blink, Divine Shield, Ice Block
629  SPELL_ATTR7_UNK21 = 0x00200000, // 21 Not set
630  SPELL_ATTR7_UNK22 = 0x00400000, // 22
631  SPELL_ATTR7_UNK23 = 0x00800000, // 23 Motivate, Mutilate, Shattering Throw
632  SPELL_ATTR7_UNK24 = 0x01000000, // 24 Motivate, Mutilate, Perform Speech, Shattering Throw
633  SPELL_ATTR7_UNK25 = 0x02000000, // 25
634  SPELL_ATTR7_UNK26 = 0x04000000, // 26
635  SPELL_ATTR7_UNK27 = 0x08000000, // 27 Not set
636  SPELL_ATTR7_CONSOLIDATED_RAID_BUFF = 0x10000000, // 28 May be collapsed in raid buff frame (clientside attribute)
637  SPELL_ATTR7_UNK29 = 0x20000000, // 29 only 69028, 71237
638  SPELL_ATTR7_UNK30 = 0x40000000, // 30 Burning Determination, Divine Sacrifice, Earth Shield, Prayer of Mending
640 };
641 
643 {
644  SPELL_ATTR8_CANT_MISS = 0x00000001, // 0
645  SPELL_ATTR8_UNK1 = 0x00000002, // 1
646  SPELL_ATTR8_UNK2 = 0x00000004, // 2
647  SPELL_ATTR8_UNK3 = 0x00000008, // 3
648  SPELL_ATTR8_UNK4 = 0x00000010, // 4
649  SPELL_ATTR8_UNK5 = 0x00000020, // 5
650  SPELL_ATTR8_UNK6 = 0x00000040, // 6
651  SPELL_ATTR8_UNK7 = 0x00000080, // 7
652  SPELL_ATTR8_AFFECT_PARTY_AND_RAID = 0x00000100, // 8 Nearly all spells have "all party and raid" in description
653  SPELL_ATTR8_DONT_RESET_PERIODIC_TIMER = 0x00000200, // 9 Periodic auras with this flag keep old periodic timer when refreshing at close to one tick remaining (kind of anti DoT clipping)
654  SPELL_ATTR8_NAME_CHANGED_DURING_TRANSFORM = 0x00000400, // 10 according to wowhead comments, name changes, title remains
655  SPELL_ATTR8_UNK11 = 0x00000800, // 11
656  SPELL_ATTR8_AURA_SEND_AMOUNT = 0x00001000, // 12 Aura must have flag AFLAG_ANY_EFFECT_AMOUNT_SENT to send amount
657  SPELL_ATTR8_UNK13 = 0x00002000, // 13
658  SPELL_ATTR8_UNK14 = 0x00004000, // 14
659  SPELL_ATTR8_WATER_MOUNT = 0x00008000, // 15 only one River Boat used in Thousand Needles
660  SPELL_ATTR8_UNK16 = 0x00010000, // 16
661  SPELL_ATTR8_UNK17 = 0x00020000, // 17
662  SPELL_ATTR8_REMEMBER_SPELLS = 0x00040000, // 18 at some point in time, these auras remember spells and allow to cast them later
663  SPELL_ATTR8_USE_COMBO_POINTS_ON_ANY_TARGET = 0x00080000, // 19 allows to consume combo points from dead targets
665  SPELL_ATTR8_UNK21 = 0x00200000, // 21
666  SPELL_ATTR8_UNK22 = 0x00400000, // 22
667  SPELL_ATTR8_BATTLE_RESURRECTION = 0x00800000, // 23 Used to limit the Amount of Resurrections in Boss Encounters
668  SPELL_ATTR8_HEALING_SPELL = 0x01000000, // 24
669  SPELL_ATTR8_UNK25 = 0x02000000, // 25
670  SPELL_ATTR8_RAID_MARKER = 0x04000000, // 26 probably spell no need learn to cast
671  SPELL_ATTR8_UNK27 = 0x08000000, // 27
672  SPELL_ATTR8_NOT_IN_BG_OR_ARENA = 0x10000000, // 28 not allow to cast or deactivate currently active effect, not sure about Fast Track
674  SPELL_ATTR8_UNK30 = 0x40000000, // 30
675  SPELL_ATTR8_ATTACK_IGNORE_IMMUNE_TO_PC_FLAG = 0x80000000 // 31 Do not check UNIT_FLAG_IMMUNE_TO_PC in IsValidAttackTarget
676 };
677 
679 {
680  SPELL_ATTR9_UNK0 = 0x00000001, // 0
681  SPELL_ATTR9_UNK1 = 0x00000002, // 1
682  SPELL_ATTR9_RESTRICTED_FLIGHT_AREA = 0x00000004, // 2 Dalaran and Wintergrasp flight area auras have it
683  SPELL_ATTR9_UNK3 = 0x00000008, // 3
686  SPELL_ATTR9_UNK6 = 0x00000040, // 6
687  SPELL_ATTR9_UNK7 = 0x00000080, // 7
688  SPELL_ATTR9_AIMED_SHOT = 0x00000100, // 8
689  SPELL_ATTR9_NOT_USABLE_IN_ARENA = 0x00000200, // 9 Cannot be used in arenas
690  SPELL_ATTR9_UNK10 = 0x00000400, // 10
691  SPELL_ATTR9_UNK11 = 0x00000800, // 11
692  SPELL_ATTR9_UNK12 = 0x00001000, // 12
693  SPELL_ATTR9_SLAM = 0x00002000, // 13
694  SPELL_ATTR9_USABLE_IN_RATED_BATTLEGROUNDS = 0x00004000, // 14 Can be used in Rated Battlegrounds
695  SPELL_ATTR9_UNK15 = 0x00008000, // 15
696  SPELL_ATTR9_UNK16 = 0x00010000, // 16
697  SPELL_ATTR9_UNK17 = 0x00020000, // 17
698  SPELL_ATTR9_UNK18 = 0x00040000, // 18
699  SPELL_ATTR9_UNK19 = 0x00080000, // 19
700  SPELL_ATTR9_UNK20 = 0x00100000, // 20
701  SPELL_ATTR9_UNK21 = 0x00200000, // 21
702  SPELL_ATTR9_UNK22 = 0x00400000, // 22
703  SPELL_ATTR9_UNK23 = 0x00800000, // 23
704  SPELL_ATTR9_UNK24 = 0x01000000, // 24
705  SPELL_ATTR9_UNK25 = 0x02000000, // 25
706  SPELL_ATTR9_UNK26 = 0x04000000, // 26
707  SPELL_ATTR9_UNK27 = 0x08000000, // 27
708  SPELL_ATTR9_UNK28 = 0x10000000, // 28
709  SPELL_ATTR9_UNK29 = 0x20000000, // 29
710  SPELL_ATTR9_UNK30 = 0x40000000, // 30
711  SPELL_ATTR9_UNK31 = 0x80000000 // 31
712 };
713 
715 {
716  SPELL_ATTR10_UNK0 = 0x00000001, // 0
717  SPELL_ATTR10_UNK1 = 0x00000002, // 1
718  SPELL_ATTR10_UNK2 = 0x00000004, // 2
719  SPELL_ATTR10_UNK3 = 0x00000008, // 3
720  SPELL_ATTR10_WATER_SPOUT = 0x00000010, // 4
721  SPELL_ATTR10_UNK5 = 0x00000020, // 5
722  SPELL_ATTR10_UNK6 = 0x00000040, // 6
723  SPELL_ATTR10_TELEPORT_PLAYER = 0x00000080, // 7 4 Teleport Player spells
724  SPELL_ATTR10_UNK8 = 0x00000100, // 8
725  SPELL_ATTR10_UNK9 = 0x00000200, // 9
726  SPELL_ATTR10_UNK10 = 0x00000400, // 10
727  SPELL_ATTR10_HERB_GATHERING_MINING = 0x00000800, // 11 Only Herb Gathering and Mining
728  SPELL_ATTR10_UNK12 = 0x00001000, // 12
729  SPELL_ATTR10_UNK13 = 0x00002000, // 13
730  SPELL_ATTR10_UNK14 = 0x00004000, // 14
731  SPELL_ATTR10_UNK15 = 0x00008000, // 15
732  SPELL_ATTR10_UNK16 = 0x00010000, // 16
733  SPELL_ATTR10_UNK17 = 0x00020000, // 17
734  SPELL_ATTR10_UNK18 = 0x00040000, // 18
735  SPELL_ATTR10_UNK19 = 0x00080000, // 19
736  SPELL_ATTR10_UNK20 = 0x00100000, // 20
737  SPELL_ATTR10_UNK21 = 0x00200000, // 21
738  SPELL_ATTR10_UNK22 = 0x00400000, // 22
739  SPELL_ATTR10_UNK23 = 0x00800000, // 23
740  SPELL_ATTR10_UNK24 = 0x01000000, // 24
741  SPELL_ATTR10_UNK25 = 0x02000000, // 25
742  SPELL_ATTR10_UNK26 = 0x04000000, // 26
743  SPELL_ATTR10_UNK27 = 0x08000000, // 27
744  SPELL_ATTR10_UNK28 = 0x10000000, // 28
745  SPELL_ATTR10_MOUNT_IS_NOT_ACCOUNT_WIDE = 0x20000000, // 29 This mount is stored per-character
746  SPELL_ATTR10_UNK30 = 0x40000000, // 30
747  SPELL_ATTR10_UNK31 = 0x80000000 // 31
748 };
749 
751 {
752  SPELL_ATTR11_UNK0 = 0x00000001, // 0
753  SPELL_ATTR11_UNK1 = 0x00000002, // 1
755  SPELL_ATTR11_UNK3 = 0x00000008, // 3
756  SPELL_ATTR11_UNK4 = 0x00000010, // 4
757  SPELL_ATTR11_UNK5 = 0x00000020, // 5
758  SPELL_ATTR11_UNK6 = 0x00000040, // 6
759  SPELL_ATTR11_NO_RANK = 0x00000080, // 7 Spell_C_GetSpellRank returns 0 instead of 5 * std::min(SpellLevels->MaxLevel, caster->Level)
760  SPELL_ATTR11_UNK8 = 0x00000100, // 8
761  SPELL_ATTR11_UNK9 = 0x00000200, // 9
762  SPELL_ATTR11_UNK10 = 0x00000400, // 10
763  SPELL_ATTR11_UNK11 = 0x00000800, // 11
764  SPELL_ATTR11_UNK12 = 0x00001000, // 12
765  SPELL_ATTR11_UNK13 = 0x00002000, // 13
766  SPELL_ATTR11_UNK14 = 0x00004000, // 14
767  SPELL_ATTR11_UNK15 = 0x00008000, // 15
769  SPELL_ATTR11_UNK17 = 0x00020000, // 17
770  SPELL_ATTR11_UNK18 = 0x00040000, // 18
771  SPELL_ATTR11_UNK19 = 0x00080000, // 19
772  SPELL_ATTR11_UNK20 = 0x00100000, // 20
773  SPELL_ATTR11_UNK21 = 0x00200000, // 21
774  SPELL_ATTR11_UNK22 = 0x00400000, // 22
775  SPELL_ATTR11_UNK23 = 0x00800000, // 23
776  SPELL_ATTR11_UNK24 = 0x01000000, // 24
777  SPELL_ATTR11_UNK25 = 0x02000000, // 25
778  SPELL_ATTR11_UNK26 = 0x04000000, // 26
779  SPELL_ATTR11_UNK27 = 0x08000000, // 27
780  SPELL_ATTR11_UNK28 = 0x10000000, // 28
781  SPELL_ATTR11_UNK29 = 0x20000000, // 29
782  SPELL_ATTR11_UNK30 = 0x40000000, // 30
783  SPELL_ATTR11_UNK31 = 0x80000000 // 31
784 };
785 
787 {
788  SPELL_ATTR12_UNK0 = 0x00000001, // 0
789  SPELL_ATTR12_UNK1 = 0x00000002, // 1
790  SPELL_ATTR12_UNK2 = 0x00000004, // 2
791  SPELL_ATTR12_UNK3 = 0x00000008, // 3
792  SPELL_ATTR12_UNK4 = 0x00000010, // 4
793  SPELL_ATTR12_UNK5 = 0x00000020, // 5
794  SPELL_ATTR12_UNK6 = 0x00000040, // 6
795  SPELL_ATTR12_UNK7 = 0x00000080, // 7
796  SPELL_ATTR12_UNK8 = 0x00000100, // 8
797  SPELL_ATTR12_UNK9 = 0x00000200, // 9
798  SPELL_ATTR12_UNK10 = 0x00000400, // 10
799  SPELL_ATTR12_UNK11 = 0x00000800, // 11
800  SPELL_ATTR12_UNK12 = 0x00001000, // 12
801  SPELL_ATTR12_UNK13 = 0x00002000, // 13
802  SPELL_ATTR12_UNK14 = 0x00004000, // 14
803  SPELL_ATTR12_UNK15 = 0x00008000, // 15
804  SPELL_ATTR12_UNK16 = 0x00010000, // 16
805  SPELL_ATTR12_UNK17 = 0x00020000, // 17
806  SPELL_ATTR12_UNK18 = 0x00040000, // 18
807  SPELL_ATTR12_UNK19 = 0x00080000, // 19
808  SPELL_ATTR12_UNK20 = 0x00100000, // 20
809  SPELL_ATTR12_UNK21 = 0x00200000, // 21
810  SPELL_ATTR12_UNK22 = 0x00400000, // 22
811  SPELL_ATTR12_UNK23 = 0x00800000, // 23
812  SPELL_ATTR12_UNK24 = 0x01000000, // 24
813  SPELL_ATTR12_UNK25 = 0x02000000, // 25
814  SPELL_ATTR12_UNK26 = 0x04000000, // 26
816  SPELL_ATTR12_UNK28 = 0x10000000, // 28
817  SPELL_ATTR12_UNK29 = 0x20000000, // 29
818  SPELL_ATTR12_UNK30 = 0x40000000, // 30
819  SPELL_ATTR12_UNK31 = 0x80000000 // 31
820 };
821 
823 {
824  SPELL_ATTR13_UNK0 = 0x00000001, // 0
825  SPELL_ATTR13_UNK1 = 0x00000002, // 1
826  SPELL_ATTR13_UNK2 = 0x00000004, // 2
827  SPELL_ATTR13_UNK3 = 0x00000008, // 3
828  SPELL_ATTR13_UNK4 = 0x00000010, // 4
829  SPELL_ATTR13_UNK5 = 0x00000020, // 5
830  SPELL_ATTR13_UNK6 = 0x00000040, // 6
831  SPELL_ATTR13_UNK7 = 0x00000080, // 7
832  SPELL_ATTR13_UNK8 = 0x00000100, // 8
833  SPELL_ATTR13_UNK9 = 0x00000200, // 9
834  SPELL_ATTR13_UNK10 = 0x00000400, // 10
835  SPELL_ATTR13_UNK11 = 0x00000800, // 11
836  SPELL_ATTR13_UNK12 = 0x00001000, // 12
837  SPELL_ATTR13_UNK13 = 0x00002000, // 13
838  SPELL_ATTR13_UNK14 = 0x00004000, // 14
839  SPELL_ATTR13_UNK15 = 0x00008000, // 15
840  SPELL_ATTR13_UNK16 = 0x00010000, // 16
841  SPELL_ATTR13_UNK17 = 0x00020000, // 17
843  SPELL_ATTR13_UNK19 = 0x00080000, // 19
844  SPELL_ATTR13_UNK20 = 0x00100000, // 20
845  SPELL_ATTR13_UNK21 = 0x00200000, // 21
846  SPELL_ATTR13_UNK22 = 0x00400000, // 22
847  SPELL_ATTR13_UNK23 = 0x00800000 // 23
848 };
849 
850 #define MIN_TALENT_GROUP 0
851 #define MAX_TALENT_GROUP 1
852 #define MIN_TALENT_GROUPS 1
853 #define MAX_TALENT_GROUPS 2
854 #define MAX_GLYPH_SLOT_INDEX 6
855 #define MIN_SPECIALIZATION_LEVEL 10
856 #define MAX_SPECIALIZATIONS 4
857 
858 // Custom values
860 {
866 };
867 
869 {
873 };
874 
876 {
885 };
886 
887 #define MAX_SHEATHETYPE 8
888 
890 {
891  CHARACTER_FLAG_NONE = 0x00000000,
892  CHARACTER_FLAG_UNK1 = 0x00000001,
893  CHARACTER_FLAG_UNK2 = 0x00000002,
895  CHARACTER_FLAG_UNK4 = 0x00000008,
896  CHARACTER_FLAG_UNK5 = 0x00000010,
897  CHARACTER_FLAG_UNK6 = 0x00000020,
898  CHARACTER_FLAG_UNK7 = 0x00000040,
899  CHARACTER_FLAG_UNK8 = 0x00000080,
900  CHARACTER_FLAG_UNK9 = 0x00000100,
901  CHARACTER_FLAG_UNK10 = 0x00000200,
904  CHARACTER_FLAG_UNK13 = 0x00001000,
905  CHARACTER_FLAG_GHOST = 0x00002000,
906  CHARACTER_FLAG_RENAME = 0x00004000,
907  CHARACTER_FLAG_UNK16 = 0x00008000,
908  CHARACTER_FLAG_UNK17 = 0x00010000,
909  CHARACTER_FLAG_UNK18 = 0x00020000,
910  CHARACTER_FLAG_UNK19 = 0x00040000,
911  CHARACTER_FLAG_UNK20 = 0x00080000,
912  CHARACTER_FLAG_UNK21 = 0x00100000,
913  CHARACTER_FLAG_UNK22 = 0x00200000,
914  CHARACTER_FLAG_UNK23 = 0x00400000,
915  CHARACTER_FLAG_UNK24 = 0x00800000,
918  CHARACTER_FLAG_UNK27 = 0x04000000,
919  CHARACTER_FLAG_UNK28 = 0x08000000,
920  CHARACTER_FLAG_UNK29 = 0x10000000,
921  CHARACTER_FLAG_UNK30 = 0x20000000,
922  CHARACTER_FLAG_UNK31 = 0x40000000,
923  CHARACTER_FLAG_UNK32 = 0x80000000
924 };
925 
927 {
929  CHAR_CUSTOMIZE_FLAG_CUSTOMIZE = 0x00000001, // name, gender, etc...
930  CHAR_CUSTOMIZE_FLAG_FACTION = 0x00010000, // name, gender, faction, etc...
931  CHAR_CUSTOMIZE_FLAG_RACE = 0x00100000 // name, gender, race, etc...
932 };
933 
935 {
950  SLOT_BACK = 14,
956 };
957 
958 // Languages.dbc (6.0.2.18988)
960 {
985  LANG_ADDON = 0xFFFFFFFF // used by addons, in 2.4.0 not exist, replaced by messagetype?
986 };
987 
988 #define LANGUAGES_COUNT 25
989 
990 enum TeamId
991 {
995 };
996 
997 enum Team
998 {
999  HORDE = 67,
1000  ALLIANCE = 469,
1001  //TEAM_STEAMWHEEDLE_CARTEL = 169, // not used in code
1002  //TEAM_ALLIANCE_FORCES = 891,
1003  //TEAM_HORDE_FORCES = 892,
1004  //TEAM_SANCTUARY = 936,
1005  //TEAM_OUTLAND = 980,
1006  TEAM_OTHER = 0 // if ReputationListId > 0 && Flags != FACTION_FLAG_TEAM_HEADER
1007 };
1008 
1010 {
1014  SPELL_EFFECT_PORTAL_TELEPORT = 4, // Unused (4.3.4)
1023  SPELL_EFFECT_RITUAL_BASE = 13, // Unused (4.3.4)
1024  SPELL_EFFECT_RITUAL_SPECIALIZE = 14, // Unused (4.3.4)
1025  SPELL_EFFECT_RITUAL_ACTIVATE_PORTAL = 15, // Unused (4.3.4)
1061  SPELL_EFFECT_FORCE_CRITICAL_HIT = 51, // Unused (4.3.4)
1062  SPELL_EFFECT_GUARANTEE_HIT = 52, // Unused (4.3.4)
1132  SPELL_EFFECT_122 = 122, // Unused (4.3.4)
1173  SPELL_EFFECT_163 = 163, // Unused (4.3.4)
1181  SPELL_EFFECT_171 = 171, // Summons gamebject
1183  SPELL_EFFECT_UNLOCK_GUILD_VAULT_TAB = 173, // Guild tab unlocked (guild perk)
1185  SPELL_EFFECT_175 = 175, // Unused (4.3.4)
1188  SPELL_EFFECT_178 = 178, // Unused (4.3.4)
1199  SPELL_EFFECT_LOOT = 189, // NYI, lootid in MiscValue ?
1217  SPELL_EFFECT_LAUNCH_QUEST_TASK = 207, // Starts one of the "progress bar" quests
1225  SPELL_EFFECT_UPGRADE_CHARACTER_SPELLS = 215, // Unlocks boosted players' spells (ChrUpgrade*.db2)
1246  SPELL_EFFECT_GIVE_EXPERIENCE = 236, // Increases players XP
1249  SPELL_EFFECT_END_GARRISON_BUILDING_CONSTRUCTION = 239, // Instantly finishes building construction
1260  SPELL_EFFECT_TAKE_SCREENSHOT = 250, // Serverside marker for selfie screenshot - achievement check
1263 };
1264 
1265 enum SpellCastResult // 21355
1266 {
1538  SPELL_CAST_OK = 0xFFFF // custom value, must not be sent to client
1539 };
1540 
1542 {
1544  SPELL_CUSTOM_ERROR_CUSTOM_MSG = 1, // Something bad happened, and we want to display a custom message!
1545  SPELL_CUSTOM_ERROR_ALEX_BROKE_QUEST = 2, // Alex broke your quest! Thank him later!
1546  SPELL_CUSTOM_ERROR_NEED_HELPLESS_VILLAGER = 3, // This spell may only be used on Helpless Wintergarde Villagers that have not been rescued.
1547  SPELL_CUSTOM_ERROR_NEED_WARSONG_DISGUISE = 4, // Requires that you be wearing the Warsong Orc Disguise.
1548  SPELL_CUSTOM_ERROR_REQUIRES_PLAGUE_WAGON = 5, // You must be closer to a plague wagon in order to drop off your 7th Legion Siege Engineer.
1549  SPELL_CUSTOM_ERROR_CANT_TARGET_FRIENDLY_NONPARTY = 6, // You cannot target friendly units outside your party.
1550  SPELL_CUSTOM_ERROR_NEED_CHILL_NYMPH = 7, // You must target a weakened chill nymph.
1551  SPELL_CUSTOM_ERROR_MUST_BE_IN_ENKILAH = 8, // The Imbued Scourge Shroud will only work when equipped in the Temple City of En'kilah.
1552  SPELL_CUSTOM_ERROR_REQUIRES_CORPSE_DUST = 9, // Requires Corpse Dust
1553  SPELL_CUSTOM_ERROR_CANT_SUMMON_GARGOYLE = 10, // You cannot summon another gargoyle yet.
1554  SPELL_CUSTOM_ERROR_NEED_CORPSE_DUST_IF_NO_TARGET = 11, // Requires Corpse Dust if the target is not dead and humanoid.
1555  SPELL_CUSTOM_ERROR_MUST_BE_AT_SHATTERHORN = 12, // Can only be placed near Shatterhorn
1556  SPELL_CUSTOM_ERROR_MUST_TARGET_PROTO_DRAKE_EGG = 13, // You must first select a Proto-Drake Egg.
1557  SPELL_CUSTOM_ERROR_MUST_BE_CLOSE_TO_TREE = 14, // You must be close to a marked tree.
1558  SPELL_CUSTOM_ERROR_MUST_TARGET_TURKEY = 15, // You must target a Fjord Turkey.
1559  SPELL_CUSTOM_ERROR_MUST_TARGET_HAWK = 16, // You must target a Fjord Hawk.
1560  SPELL_CUSTOM_ERROR_TOO_FAR_FROM_BOUY = 17, // You are too far from the bouy.
1561  SPELL_CUSTOM_ERROR_MUST_BE_CLOSE_TO_OIL_SLICK = 18, // Must be used near an oil slick.
1562  SPELL_CUSTOM_ERROR_MUST_BE_CLOSE_TO_BOUY = 19, // You must be closer to the buoy!
1563  SPELL_CUSTOM_ERROR_WYRMREST_VANQUISHER = 20, // You may only call for the aid of a Wyrmrest Vanquisher in Wyrmrest Temple, The Dragon Wastes, Galakrond's Rest or The Wicked Coil.
1564  SPELL_CUSTOM_ERROR_MUST_TARGET_ICE_HEART_JORMUNGAR = 21, // That can only be used on a Ice Heart Jormungar Spawn.
1565  SPELL_CUSTOM_ERROR_MUST_BE_CLOSE_TO_SINKHOLE = 22, // You must be closer to a sinkhole to use your map.
1566  SPELL_CUSTOM_ERROR_REQUIRES_HAROLD_LANE = 23, // You may only call down a stampede on Harold Lane.
1567  SPELL_CUSTOM_ERROR_REQUIRES_GAMMOTH_MAGNATAUR = 24, // You may only use the Pouch of Crushed Bloodspore on Gammothra or other magnataur in the Bloodspore Plains and Gammoth.
1568  SPELL_CUSTOM_ERROR_MUST_BE_IN_RESURRECTION_CHAMBER = 25, // Requires the magmawyrm resurrection chamber in the back of the Maw of Neltharion.
1569  SPELL_CUSTOM_ERROR_CANT_CALL_WINTERGARDE_HERE = 26, // You may only call down a Wintergarde Gryphon in Wintergarde Keep or the Carrion Fields.
1570  SPELL_CUSTOM_ERROR_MUST_TARGET_WILHELM = 27, // What are you doing? Only aim that thing at Wilhelm!
1571  SPELL_CUSTOM_ERROR_NOT_ENOUGH_HEALTH = 28, // Not enough health!
1572  SPELL_CUSTOM_ERROR_NO_NEARBY_CORPSES = 29, // There are no nearby corpses to use
1573  SPELL_CUSTOM_ERROR_TOO_MANY_GHOULS = 30, // You've created enough ghouls. Return to Gothik the Harvester at Death's Breach.
1574  SPELL_CUSTOM_ERROR_GO_FURTHER_FROM_SUNDERED_SHARD = 31, // Your companion does not want to come here. Go further from the Sundered Shard.
1575  SPELL_CUSTOM_ERROR_MUST_BE_IN_CAT_FORM = 32, // Must be in Cat Form
1576  SPELL_CUSTOM_ERROR_MUST_BE_DEATH_KNIGHT = 33, // Only Death Knights may enter Ebon Hold.
1577  SPELL_CUSTOM_ERROR_MUST_BE_IN_FERAL_FORM = 34, // Must be in Cat Form, Bear Form, or Dire Bear Form
1578  SPELL_CUSTOM_ERROR_MUST_BE_NEAR_HELPLESS_VILLAGER = 35, // You must be within range of a Helpless Wintergarde Villager.
1579  SPELL_CUSTOM_ERROR_CANT_TARGET_ELEMENTAL_MECHANICAL = 36, // You cannot target an elemental or mechanical corpse.
1580  SPELL_CUSTOM_ERROR_MUST_HAVE_USED_DALARAN_CRYSTAL = 37, // This teleport crystal cannot be used until the teleport crystal in Dalaran has been used at least once.
1581  SPELL_CUSTOM_ERROR_YOU_ALREADY_HOLD_SOMETHING = 38, // You are already holding something in your hand. You must throw the creature in your hand before picking up another.
1582  SPELL_CUSTOM_ERROR_YOU_DONT_HOLD_ANYTHING = 39, // You don't have anything to throw! Find a Vargul and use Gymer Grab to pick one up!
1583  SPELL_CUSTOM_ERROR_MUST_BE_CLOSE_TO_VALDURAN = 40, // Bouldercrag's War Horn can only be used within 10 yards of Valduran the Stormborn.
1584  SPELL_CUSTOM_ERROR_NO_PASSENGER = 41, // You are not carrying a passenger. There is nobody to drop off.
1585  SPELL_CUSTOM_ERROR_CANT_BUILD_MORE_VEHICLES = 42, // You cannot build any more siege vehicles.
1586  SPELL_CUSTOM_ERROR_ALREADY_CARRYING_CRUSADER = 43, // You are already carrying a captured Argent Crusader. You must return to the Argent Vanguard infirmary and drop off your passenger before you may pick up another.
1587  SPELL_CUSTOM_ERROR_CANT_DO_WHILE_ROOTED = 44, // You can't do that while rooted.
1588  SPELL_CUSTOM_ERROR_REQUIRES_NEARBY_TARGET = 45, // Requires a nearby target.
1589  SPELL_CUSTOM_ERROR_NOTHING_TO_DISCOVER = 46, // Nothing left to discover.
1590  SPELL_CUSTOM_ERROR_NOT_ENOUGH_TARGETS = 47, // No targets close enough to bluff.
1591  SPELL_CUSTOM_ERROR_CONSTRUCT_TOO_FAR = 48, // Your Iron Rune Construct is out of range.
1592  SPELL_CUSTOM_ERROR_REQUIRES_GRAND_MASTER_ENGINEER = 49, // Requires Grand Master Engineer
1593  SPELL_CUSTOM_ERROR_CANT_USE_THAT_MOUNT = 50, // You can't use that mount.
1594  SPELL_CUSTOM_ERROR_NOONE_TO_EJECT = 51, // There is nobody to eject!
1595  SPELL_CUSTOM_ERROR_TARGET_MUST_BE_BOUND = 52, // The target must be bound to you.
1596  SPELL_CUSTOM_ERROR_TARGET_MUST_BE_UNDEAD = 53, // Target must be undead.
1597  SPELL_CUSTOM_ERROR_TARGET_TOO_FAR = 54, // You have no target or your target is too far away.
1598  SPELL_CUSTOM_ERROR_MISSING_DARK_MATTER = 55, // Missing Reagents: Dark Matter
1599  SPELL_CUSTOM_ERROR_CANT_USE_THAT_ITEM = 56, // You can't use that item
1600  SPELL_CUSTOM_ERROR_CANT_DO_WHILE_CYCYLONED = 57, // You can't do that while Cycloned
1601  SPELL_CUSTOM_ERROR_TARGET_HAS_SCROLL = 58, // Target is already affected by a scroll
1602  SPELL_CUSTOM_ERROR_POISON_TOO_STRONG = 59, // That anti-venom is not strong enough to dispel that poison
1603  SPELL_CUSTOM_ERROR_MUST_HAVE_LANCE_EQUIPPED = 60, // You must have a lance equipped.
1604  SPELL_CUSTOM_ERROR_MUST_BE_CLOSE_TO_MAIDEN = 61, // You must be near the Maiden of Winter's Breath Lake.
1605  SPELL_CUSTOM_ERROR_LEARNED_EVERYTHING = 62, // You have learned everything from that book
1606  SPELL_CUSTOM_ERROR_PET_IS_DEAD = 63, // Your pet is dead
1607  SPELL_CUSTOM_ERROR_NO_VALID_TARGETS = 64, // There are no valid targets within range.
1608  SPELL_CUSTOM_ERROR_GM_ONLY = 65, // Only GMs may use that. Your account has been reported for investigation.
1609  SPELL_CUSTOM_ERROR_REQUIRES_LEVEL_58 = 66, // You must reach level 58 to use this portal.
1610  SPELL_CUSTOM_ERROR_AT_HONOR_CAP = 67, // You already have the maximum amount of honor.
1611  SPELL_CUSTOM_ERROR_HAVE_HOT_ROD = 68, // You already have a Hot Rod.
1612  SPELL_CUSTOM_ERROR_PARTYGOER_MORE_BUBBLY = 69, // This partygoer wants some more bubbly
1613  SPELL_CUSTOM_ERROR_PARTYGOER_NEED_BUCKET = 70, // This partygoer needs a bucket!
1614  SPELL_CUSTOM_ERROR_PARTYGOER_WANT_TO_DANCE = 71, // This partygoer wants to dance with you.
1615  SPELL_CUSTOM_ERROR_PARTYGOER_WANT_FIREWORKS = 72, // This partygoer wants to see some fireworks.
1616  SPELL_CUSTOM_ERROR_PARTYGOER_WANT_APPETIZER = 73, // This partygoer wants some more hors d'oeuvres.
1617  SPELL_CUSTOM_ERROR_GOBLIN_BATTERY_DEPLETED = 74, // The Goblin All-In-1-Der Belt's battery is depleted.
1618  SPELL_CUSTOM_ERROR_MUST_HAVE_DEMONIC_CIRCLE = 75, // You must have a demonic circle active.
1619  SPELL_CUSTOM_ERROR_AT_MAX_RAGE = 76, // You already have maximum rage
1620  SPELL_CUSTOM_ERROR_REQUIRES_350_ENGINEERING = 77, // Requires Engineering (350)
1621  SPELL_CUSTOM_ERROR_SOUL_BELONGS_TO_LICH_KING = 78, // Your soul belongs to the Lich King
1622  SPELL_CUSTOM_ERROR_ATTENDANT_HAS_PONY = 79, // Your attendant already has an Argent Pony
1623  SPELL_CUSTOM_ERROR_GOBLIN_STARTING_MISSION = 80, // First, Overload the Defective Generator, Activate the Leaky Stove, and Drop a Cigar on the Flammable Bed.
1624  SPELL_CUSTOM_ERROR_GASBOT_ALREADY_SENT = 81, // You've already sent in the Gasbot and destroyed headquarters!
1625  SPELL_CUSTOM_ERROR_GOBLIN_IS_PARTIED_OUT = 82, // This goblin is all partied out!
1626  SPELL_CUSTOM_ERROR_MUST_HAVE_FIRE_TOTEM = 83, // You must have a Fire Totem active.
1627  SPELL_CUSTOM_ERROR_CANT_TARGET_VAMPIRES = 84, // You may not bite other vampires.
1628  SPELL_CUSTOM_ERROR_PET_ALREADY_AT_YOUR_LEVEL = 85, // Your pet is already at your level.
1629  SPELL_CUSTOM_ERROR_MISSING_ITEM_REQUIREMENS = 86, // You do not meet the level requirements for this item.
1630  SPELL_CUSTOM_ERROR_TOO_MANY_ABOMINATIONS = 87, // There are too many Mutated Abominations.
1631  SPELL_CUSTOM_ERROR_ALL_POTIONS_USED = 88, // The potions have all been depleted by Professor Putricide.
1632  SPELL_CUSTOM_ERROR_DEFEATED_ENOUGH_ALREADY = 89, // You have already defeated enough of them.
1633  SPELL_CUSTOM_ERROR_REQUIRES_LEVEL_65 = 90, // Requires level 65
1634  SPELL_CUSTOM_ERROR_DESTROYED_KTC_OIL_PLATFORM = 91, // You have already destroyed the KTC Oil Platform.
1635  SPELL_CUSTOM_ERROR_LAUNCHED_ENOUGH_CAGES = 92, // You have already launched enough cages.
1636  SPELL_CUSTOM_ERROR_REQUIRES_BOOSTER_ROCKETS = 93, // Requires Single-Stage Booster Rockets. Return to Hobart Grapplehammer to get more.
1637  SPELL_CUSTOM_ERROR_ENOUGH_WILD_CLUCKERS = 94, // You have already captured enough wild cluckers.
1638  SPELL_CUSTOM_ERROR_REQUIRES_CONTROL_FIREWORKS = 95, // Requires Remote Control Fireworks. Return to Hobart Grapplehammer to get more.
1639  SPELL_CUSTOM_ERROR_MAX_NUMBER_OF_RECRUITS = 96, // You already have the max number of recruits.
1640  SPELL_CUSTOM_ERROR_MAX_NUMBER_OF_VOLUNTEERS = 97, // You already have the max number of volunteers.
1641  SPELL_CUSTOM_ERROR_FROSTMOURNE_RENDERED_RESURRECT = 98, // Frostmourne has rendered you unable to resurrect.
1642  SPELL_CUSTOM_ERROR_CANT_MOUNT_WITH_SHAPESHIFT = 99, // You can't mount while affected by that shapeshift.
1643  SPELL_CUSTOM_ERROR_FAWNS_ALREADY_FOLLOWING = 100, // Three fawns are already following you!
1644  SPELL_CUSTOM_ERROR_ALREADY_HAVE_RIVER_BOAT = 101, // You already have a River Boat.
1645  SPELL_CUSTOM_ERROR_NO_ACTIVE_ENCHANTMENT = 102, // You have no active enchantment to unleash.
1646  SPELL_CUSTOM_ERROR_ENOUGH_HIGHBOURNE_SOULS = 103, // You have bound enough Highborne souls. Return to Arcanist Valdurian.
1647  SPELL_CUSTOM_ERROR_ATLEAST_40YD_FROM_OIL_DRILLING = 104, // You must be at least 40 yards away from all other Oil Drilling Rigs.
1648  SPELL_CUSTOM_ERROR_ABOVE_ENSLAVED_PEARL_MINER = 106, // You must be above the Enslaved Pearl Miner.
1649  SPELL_CUSTOM_ERROR_MUST_TARGET_CORPSE_SPECIAL_1 = 107, // You must target the corpse of a Seabrush Terrapin, Scourgut Remora, or Spinescale Hammerhead.
1650  SPELL_CUSTOM_ERROR_SLAGHAMMER_ALREADY_PRISONER = 108, // Ambassador Slaghammer is already your prisoner.
1651  SPELL_CUSTOM_ERROR_REQUIRE_ATTUNED_LOCATION_1 = 109, // Requires a location that is attuned with the Naz'jar Battlemaiden.
1652  SPELL_CUSTOM_ERROR_NEED_TO_FREE_DRAKE_FIRST = 110, // Free the Drake from the net first!
1653  SPELL_CUSTOM_ERROR_DRAGONMAW_ALLIES_ALREADY_FOLLOW = 111, // You already have three Dragonmaw allies following you.
1654  SPELL_CUSTOM_ERROR_REQUIRE_OPPOSABLE_THUMBS = 112, // Requires Opposable Thumbs.
1655  SPELL_CUSTOM_ERROR_NOT_ENOUGH_HEALTH_2 = 113, // Not enough health
1656  SPELL_CUSTOM_ERROR_ENOUGH_FORSAKEN_TROOPERS = 114, // You already have enough Forsaken Troopers.
1657  SPELL_CUSTOM_ERROR_CANNOT_JUMP_TO_BOULDER = 115, // You cannot jump to another boulder yet.
1658  SPELL_CUSTOM_ERROR_SKILL_TOO_HIGH = 116, // Skill too high.
1659  SPELL_CUSTOM_ERROR_ALREADY_6_SURVIVORS_RESCUED = 117, // You have already rescued 6 Survivors.
1660  SPELL_CUSTOM_ERROR_MUST_FACE_SHIPS_FROM_BALLOON = 118, // You need to be facing the ships from the rescue balloon.
1661  SPELL_CUSTOM_ERROR_CANNOT_SUPERVISE_MORE_CULTISTS = 119, // You cannot supervise more than 5 Arrested Cultists at a time.
1662  SPELL_CUSTOM_ERROR_REQUIRES_LEVEL_85 = 120, // You must reach level 85 to use this portal.
1663  SPELL_CUSTOM_ERROR_MUST_BE_BELOW_35_HEALTH = 121, // Your target must be below 35% health.
1664  SPELL_CUSTOM_ERROR_MUST_SELECT_TALENT_SPECIAL = 122, // You must select a talent specialization first.
1665  SPELL_CUSTOM_ERROR_TOO_WISE_AND_POWERFUL = 123, // You are too wise and powerful to gain any benefit from that item.
1666  SPELL_CUSTOM_ERROR_TOO_CLOSE_ARGENT_LIGHTWELL = 124, // You are within 10 yards of another Argent Lightwell.
1667  SPELL_CUSTOM_ERROR_NOT_WHILE_SHAPESHIFTED = 125, // You can't do that while shapeshifted.
1668  SPELL_CUSTOM_ERROR_MANA_GEM_IN_BANK = 126, // You already have a Mana Gem in your bank.
1669  SPELL_CUSTOM_ERROR_FLAME_SHOCK_NOT_ACTIVE = 127, // You must have at least one Flame Shock active.
1670  SPELL_CUSTOM_ERROR_CANT_TRANSFORM = 128, // You cannot transform right now
1671  SPELL_CUSTOM_ERROR_PET_MUST_BE_ATTACKING = 129, // Your pet must be attacking a target.
1672  SPELL_CUSTOM_ERROR_GNOMISH_ENGINEERING = 130, // Requires Gnomish Engineering
1673  SPELL_CUSTOM_ERROR_GOBLIN_ENGINEERING = 131, // Requires Goblin Engineering
1674  SPELL_CUSTOM_ERROR_NO_TARGET = 132, // You have no target.
1675  SPELL_CUSTOM_ERROR_PET_OUT_OF_RANGE = 133, // Your Pet is out of range of the target.
1676  SPELL_CUSTOM_ERROR_HOLDING_FLAG = 134, // You can't do that while holding the flag.
1677  SPELL_CUSTOM_ERROR_TARGET_HOLDING_FLAG = 135, // You can't do that to targets holding the flag.
1678  SPELL_CUSTOM_ERROR_PORTAL_NOT_OPEN = 136, // The portal is not yet open. Continue helping the druids at the Sanctuary of Malorne.
1679  SPELL_CUSTOM_ERROR_AGGRA_AIR_TOTEM = 137, // You need to be closer to Aggra's Air Totem, in the west.
1680  SPELL_CUSTOM_ERROR_AGGRA_WATER_TOTEM = 138, // You need to be closer to Aggra's Water Totem, in the north.
1681  SPELL_CUSTOM_ERROR_AGGRA_EARTH_TOTEM = 139, // You need to be closer to Aggra's Earth Totem, in the east.
1682  SPELL_CUSTOM_ERROR_AGGRA_FIRE_TOTEM = 140, // You need to be closer to Aggra's Fire Totem, near Thrall.
1683  SPELL_CUSTOM_ERROR_TARGET_HAS_STARTDUST_2 = 148, // Target is already affected by Stardust No. 2.
1684  SPELL_CUSTOM_ERROR_ELEMENTIUM_GEM_CLUSTERS = 149 // You cannot deconstruct Elementium Gem Clusters while collecting them!
1685 };
1686 
1688 {
1691 
1693 };
1694 
1696 {
1735 
1737 };
1738 
1740 {
1743 
1745 };
1746 
1748 {
1751 };
1752 
1753 // Spell aura states
1755 { // (C) used in caster aura state (T) used in target aura state
1756  // (c) used in caster aura state-not (t) used in target aura state-not
1757  AURA_STATE_NONE = 0, // C |
1761  AURA_STATE_FROZEN = 4, // c t| frozen target
1763  //AURA_STATE_UNKNOWN6 = 6, // | not used
1765  //AURA_STATE_UNKNOWN7 = 7, // c | creature cheap shot / focused bursts spells
1766  //AURA_STATE_UNKNOWN8 = 8, // t| test spells
1767  //AURA_STATE_UNKNOWN9 = 9, // |
1768  AURA_STATE_WARRIOR_VICTORY_RUSH = 10, // C | warrior victory rush
1769  //AURA_STATE_UNKNOWN11 = 11, // C t| 60348 - Maelstrom Ready!, test spells
1775  AURA_STATE_ENRAGE = 17, // C |
1778  //AURA_STATE_UNKNOWN20 = 20, // c | only (45317 Suicide)
1779  //AURA_STATE_UNKNOWN21 = 21, // | not used
1780  AURA_STATE_UNKNOWN22 = 22, // C t| varius spells (63884, 50240)
1782 };
1783 
1784 #define PER_CASTER_AURA_STATE_MASK (\
1785  (1<<(AURA_STATE_CONFLAGRATE-1))|(1<<(AURA_STATE_DEADLY_POISON-1)))
1786 
1787 // Spell mechanics
1789 {
1819  MECHANIC_IMMUNE_SHIELD = 29, // Divine (Blessing) Shield/Protection and Ice Block
1824 };
1825 
1826 // Used for spell 42292 Immune Movement Impairment and Loss of Control (0x49967ca6)
1827 #define IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK (\
1828  (1<<MECHANIC_CHARM)|(1<<MECHANIC_DISORIENTED)|(1<<MECHANIC_FEAR)| \
1829  (1<<MECHANIC_ROOT)|(1<<MECHANIC_SLEEP)|(1<<MECHANIC_SNARE)| \
1830  (1<<MECHANIC_STUN)|(1<<MECHANIC_FREEZE)|(1<<MECHANIC_SILENCE)|(1<<MECHANIC_DISARM)|(1<<MECHANIC_KNOCKOUT)| \
1831  (1<<MECHANIC_POLYMORPH)|(1<<MECHANIC_BANISH)|(1<<MECHANIC_SHACKLE)| \
1832  (1<<MECHANIC_TURN)|(1<<MECHANIC_HORROR)|(1<<MECHANIC_DAZE)| \
1833  (1<<MECHANIC_SAPPED))
1834 
1835 // Spell dispel type
1837 {
1850 };
1851 
1852 #define DISPEL_ALL_MASK ((1<<DISPEL_MAGIC) | (1<<DISPEL_CURSE) | (1<<DISPEL_DISEASE) | (1<<DISPEL_POISON))
1853 
1854 //To all Immune system, if target has immunes,
1855 //some spell that related to ImmuneToDispel or ImmuneToSchool or ImmuneToDamage type can't cast to it,
1856 //some spell_effects that related to ImmuneToEffect<effect>(only this effect in the spell) can't cast to it,
1857 //some aura(related to Mechanics or ImmuneToState<aura>) can't apply to it.
1859 {
1860  IMMUNITY_EFFECT = 0, // enum SpellEffects
1861  IMMUNITY_STATE = 1, // enum AuraType
1862  IMMUNITY_SCHOOL = 2, // enum SpellSchoolMask
1863  IMMUNITY_DAMAGE = 3, // enum SpellSchoolMask
1864  IMMUNITY_DISPEL = 4, // enum DispelType
1865  IMMUNITY_MECHANIC = 5, // enum Mechanics
1867 };
1868 
1869 #define MAX_SPELL_IMMUNITY 7
1870 
1871 // target enum name consist of:
1872 // TARGET_[OBJECT_TYPE]_[REFERENCE_TYPE(skipped for caster)]_[SELECTION_TYPE(skipped for default)]_[additional specifiers(friendly, BACK_LEFT, etc.]
1874 {
1901  TARGET_DEST_CASTER_SUMMON = 32, // front left, doesn't use radius
1924  TARGET_DEST_CASTER_FRONT_LEAP = 55, // for a leap spell
1974  TARGET_UNIT_UNK_105 = 105, // 1 spell
1976  TARGET_UNK_DEST_AREA_UNK_107 = 107, // not enough info - only generic spells avalible
1978  TARGET_DEST_UNK_110 = 110, // 1 spell
2017 };
2018 
2020 {
2029  SPELL_MISS_IMMUNE2 = 8, // one of these 2 is MISS_TEMPIMMUNE
2033 };
2034 
2036 {
2044  SPELL_HIT_TYPE_NO_ATTACKER = 0x80, // does the same as SPELL_ATTR4_COMBAT_LOG_NO_CASTER
2045 };
2046 
2048 {
2053 };
2054 
2056 {
2060  SPELL_PREVENTION_TYPE_UNK = 3 // Only a few spells have this, but most of the should be interruptable.
2061 };
2062 
2063 enum GameobjectTypes : uint8 // (6.0.3.19103)
2064 {
2114 };
2115 
2116 #define MAX_GAMEOBJECT_TYPE 49 // sending to client this or greater value can crash client.
2117 #define MAX_GAMEOBJECT_DATA 33 // Max number of uint32 vars in gameobject_template data field
2118 
2120 {
2121  GO_FLAG_IN_USE = 0x00000001, // disables interaction while animated
2122  GO_FLAG_LOCKED = 0x00000002, // require key, spell, event, etc to be opened. Makes "Locked" appear in tooltip
2123  GO_FLAG_INTERACT_COND = 0x00000004, // cannot interact (condition to interact)
2124  GO_FLAG_TRANSPORT = 0x00000008, // any kind of transport? Object can transport (elevator, boat, car)
2125  GO_FLAG_NOT_SELECTABLE = 0x00000010, // not selectable even in GM mode
2126  GO_FLAG_NODESPAWN = 0x00000020, // never despawn, typically for doors, they just change state
2127  GO_FLAG_TRIGGERED = 0x00000040, // typically, summoned objects. Triggered by spell or other events
2128  GO_FLAG_DAMAGED = 0x00000200,
2129  GO_FLAG_DESTROYED = 0x00000400
2130 };
2131 
2133 {
2134  GO_DYNFLAG_LO_HIDE_MODEL = 0x01, // Object model is not shown with this flag
2135  GO_DYNFLAG_LO_ACTIVATE = 0x02, // enables interaction with GO
2136  GO_DYNFLAG_LO_ANIMATE = 0x04, // possibly more distinct animation of GO
2137  GO_DYNFLAG_LO_NO_INTERACT = 0x08, // appears to disable interaction (not fully verified)
2138  GO_DYNFLAG_LO_SPARKLE = 0x10, // makes GO sparkle
2139  GO_DYNFLAG_LO_STOPPED = 0x20 // Transport is stopped
2140 };
2141 
2143 {
2148 };
2149 
2150 // EmotesText.dbc (6.0.2.18988)
2152 {
2407 };
2408 
2409 // Emotes.dbc (6.0.2.18988)
2410 enum Emote
2411 {
2675 };
2676 
2677 // AnimationData.dbc (6.0.2.18988)
2678 enum Anim
2679 {
2780  ANIM_SLEEP = 100,
2807  ANIM_BIRTH = 127,
2811  ANIM_DROWN = 131,
2815  ANIM_FLY = 135,
2825  ANIM_SPAWN = 145,
2826  ANIM_CLOSE = 146,
2828  ANIM_OPEN = 148,
2838  ANIM_HOLD = 158,
2839  ANIM_DECAY = 159,
2846  ANIM_ARROW = 166,
2849  ANIM_SWAY = 169,
2873  ANIM_HOVER = 193,
2880  ANIM_LAND = 200,
2905  ANIM_COWER = 225,
2906  ANIM_GRAB = 226,