root/trunk/src/game/SharedDefines.h @ 100

Revision 100, 96.7 kB (checked in by yumileroy, 17 years ago)

[svn] Add SPELL_ATTR_BREAKABLE_BY_DAMAGE. Remove part of the hacked breakable aura check. Patch provided by thenecromancer.

Original author: megamage
Date: 2008-10-22 14:58:50-05:00

Line 
1/*
2 * Copyright (C) 2008 Trinity <http://www.trinitycore.org/>
3 *
4 * Thanks to the original authors: MaNGOS <http://www.mangosproject.org/>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#ifndef TRINITY_SHAREDDEFINES_H
22#define TRINITY_SHAREDDEFINES_H
23
24#include "Platform/Define.h"
25#include <cassert>
26
27enum Gender
28{
29    GENDER_MALE                        = 0,
30    GENDER_FEMALE                      = 1,
31    GENDER_NONE                        = 2
32};
33
34// Race value is index in ChrRaces.dbc
35enum Races
36{
37    RACE_HUMAN          = 1,
38    RACE_ORC            = 2,
39    RACE_DWARF          = 3,
40    RACE_NIGHTELF       = 4,
41    RACE_UNDEAD_PLAYER  = 5,
42    RACE_TAUREN         = 6,
43    RACE_GNOME          = 7,
44    RACE_TROLL          = 8,
45    RACE_GOBLIN         = 9,
46    RACE_BLOODELF       = 10,
47    RACE_DRAENEI        = 11,
48    RACE_FEL_ORC        = 12,
49    RACE_NAGA           = 13,
50    RACE_BROKEN         = 14,
51    RACE_SKELETON       = 15,
52    MAX_RACES           = 16
53};
54
55#define RACEMASK_ALL_PLAYABLE \
56    ((1<<(RACE_HUMAN-1))   |(1<<(RACE_ORC-1))          |(1<<(RACE_DWARF-1))   | \
57    (1<<(RACE_NIGHTELF-1))|(1<<(RACE_UNDEAD_PLAYER-1))|(1<<(RACE_TAUREN-1))  | \
58    (1<<(RACE_GNOME-1))   |(1<<(RACE_TROLL-1))        |(1<<(RACE_BLOODELF-1))| \
59    (1<<(RACE_DRAENEI-1)) )
60
61// Class value is index in ChrClasses.dbc
62enum Classes
63{
64    CLASS_WARRIOR       = 1,
65    CLASS_PALADIN       = 2,
66    CLASS_HUNTER        = 3,
67    CLASS_ROGUE         = 4,
68    CLASS_PRIEST        = 5,
69    CLASS_DEATH_KNIGHT  = 6,
70    CLASS_SHAMAN        = 7,
71    CLASS_MAGE          = 8,
72    CLASS_WARLOCK       = 9,
73    // CLASS_UNK2       = 10,unused
74    CLASS_DRUID         = 11,
75    MAX_CLASSES         = 12
76};
77
78#define CLASSMASK_ALL_PLAYABLE \
79    ((1<<(CLASS_WARRIOR-1))|(1<<(CLASS_PALADIN-1))|(1<<(CLASS_HUNTER-1))| \
80    (1<<(CLASS_ROGUE-1))  |(1<<(CLASS_PRIEST-1)) |(1<<(CLASS_SHAMAN-1))| \
81    (1<<(CLASS_MAGE-1))   |(1<<(CLASS_WARLOCK-1))|(1<<(CLASS_DRUID-1))   )
82
83#define CLASSMASK_WAND_USERS ((1<<(CLASS_PRIEST-1))|(1<<(CLASS_MAGE-1))|(1<<(CLASS_WARLOCK-1)))
84
85#define PLAYER_MAX_BATTLEGROUND_QUEUES 3
86
87enum ReputationRank
88{
89    REP_HATED       = 0,
90    REP_HOSTILE     = 1,
91    REP_UNFRIENDLY  = 2,
92    REP_NEUTRAL     = 3,
93    REP_FRIENDLY    = 4,
94    REP_HONORED     = 5,
95    REP_REVERED     = 6,
96    REP_EXALTED     = 7
97};
98
99#define MIN_REPUTATION_RANK (REP_HATED)
100#define MAX_REPUTATION_RANK 8
101
102enum MoneyConstants
103{
104    COPPER = 1,
105    SILVER = COPPER*100,
106    GOLD   = SILVER*100
107};
108
109enum Stats
110{
111    STAT_STRENGTH                      = 0,
112    STAT_AGILITY                       = 1,
113    STAT_STAMINA                       = 2,
114    STAT_INTELLECT                     = 3,
115    STAT_SPIRIT                        = 4
116};
117
118#define MAX_STATS                        5
119
120enum Powers
121{
122    POWER_MANA                          = 0,
123    POWER_RAGE                          = 1,
124    POWER_FOCUS                         = 2,
125    POWER_ENERGY                        = 3,
126    POWER_HAPPINESS                     = 4,
127    POWER_RUNES                         = 5,
128    POWER_HEALTH                        = 0xFFFFFFFE    // (-2 as signed value)
129};
130
131#define MAX_POWERS                        5                 // not count POWER_RUNES for now
132
133enum SpellSchools
134{
135    SPELL_SCHOOL_NORMAL                 = 0,
136    SPELL_SCHOOL_HOLY                   = 1,
137    SPELL_SCHOOL_FIRE                   = 2,
138    SPELL_SCHOOL_NATURE                 = 3,
139    SPELL_SCHOOL_FROST                  = 4,
140    SPELL_SCHOOL_SHADOW                 = 5,
141    SPELL_SCHOOL_ARCANE                 = 6
142};
143
144#define MAX_SPELL_SCHOOL                  7
145
146enum SpellSchoolMask
147{
148    SPELL_SCHOOL_MASK_NONE    = 0x00,                       // not exist
149    SPELL_SCHOOL_MASK_NORMAL  = (1 << SPELL_SCHOOL_NORMAL), // PHYSICAL (Armor)
150    SPELL_SCHOOL_MASK_HOLY    = (1 << SPELL_SCHOOL_HOLY  ),
151    SPELL_SCHOOL_MASK_FIRE    = (1 << SPELL_SCHOOL_FIRE  ),
152    SPELL_SCHOOL_MASK_NATURE  = (1 << SPELL_SCHOOL_NATURE),
153    SPELL_SCHOOL_MASK_FROST   = (1 << SPELL_SCHOOL_FROST ),
154    SPELL_SCHOOL_MASK_SHADOW  = (1 << SPELL_SCHOOL_SHADOW),
155    SPELL_SCHOOL_MASK_ARCANE  = (1 << SPELL_SCHOOL_ARCANE),
156
157    // unions
158
159    // 124, not include normal and holy damage
160    SPELL_SCHOOL_MASK_SPELL   = ( SPELL_SCHOOL_MASK_FIRE   |
161                                  SPELL_SCHOOL_MASK_NATURE | SPELL_SCHOOL_MASK_FROST  |
162                                  SPELL_SCHOOL_MASK_SHADOW | SPELL_SCHOOL_MASK_ARCANE ),
163    // 126
164    SPELL_SCHOOL_MASK_MAGIC   = ( SPELL_SCHOOL_MASK_HOLY | SPELL_SCHOOL_MASK_SPELL ),
165
166    // 127
167    SPELL_SCHOOL_MASK_ALL     = ( SPELL_SCHOOL_MASK_NORMAL | SPELL_SCHOOL_MASK_MAGIC )
168};
169
170#define SPELL_SCHOOL_MASK_MAGIC                            \
171    ( SPELL_SCHOOL_MASK_HOLY | SPELL_SCHOOL_MASK_FIRE | SPELL_SCHOOL_MASK_NATURE |  \
172      SPELL_SCHOOL_MASK_FROST | SPELL_SCHOOL_MASK_SHADOW | \
173      SPELL_SCHOOL_MASK_ARCANE )
174
175inline SpellSchools GetFirstSchoolInMask(SpellSchoolMask mask)
176{
177    for(int i = 0; i < MAX_SPELL_SCHOOL; ++i)
178        if(mask & (1 << i))
179            return SpellSchools(i);
180
181    return SPELL_SCHOOL_NORMAL;
182}
183
184enum ItemQualities
185{
186    ITEM_QUALITY_POOR                  = 0,                 //GREY
187    ITEM_QUALITY_NORMAL                = 1,                 //WHITE
188    ITEM_QUALITY_UNCOMMON              = 2,                 //GREEN
189    ITEM_QUALITY_RARE                  = 3,                 //BLUE
190    ITEM_QUALITY_EPIC                  = 4,                 //PURPLE
191    ITEM_QUALITY_LEGENDARY             = 5,                 //ORANGE
192    ITEM_QUALITY_ARTIFACT              = 6                  //LIGHT YELLOW
193};
194
195#define MAX_ITEM_QUALITY                 7
196
197// ***********************************
198// Spell Attributes definitions
199// ***********************************
200
201#define SPELL_ATTR_UNK0                           0x00000001            // 0
202#define SPELL_ATTR_RANGED                         0x00000002            // 1 All ranged abilites have this flag
203#define SPELL_ATTR_ON_NEXT_SWING_1                0x00000004            // 2 on next swing
204#define SPELL_ATTR_UNK3                           0x00000008            // 3 not set in 2.4.2
205#define SPELL_ATTR_UNK4                           0x00000010            // 4
206#define SPELL_ATTR_UNK5                           0x00000020            // 5 trade spells?
207#define SPELL_ATTR_PASSIVE                        0x00000040            // 6 Passive spell
208#define SPELL_ATTR_UNK7                           0x00000080            // 7 visible?
209#define SPELL_ATTR_UNK8                           0x00000100            // 8
210#define SPELL_ATTR_UNK9                           0x00000200            // 9
211#define SPELL_ATTR_ON_NEXT_SWING_2                0x00000400            // 10 on next swing 2
212#define SPELL_ATTR_UNK11                          0x00000800            // 11
213#define SPELL_ATTR_DAYTIME_ONLY                   0x00001000            // 12 only useable at daytime, not set in 2.4.2
214#define SPELL_ATTR_NIGHT_ONLY                     0x00002000            // 13 only useable at night, not set in 2.4.2
215#define SPELL_ATTR_INDOORS_ONLY                   0x00004000            // 14 only useable indoors, not set in 2.4.2
216#define SPELL_ATTR_OUTDOORS_ONLY                  0x00008000            // 15 Only useable outdoors.
217#define SPELL_ATTR_NOT_SHAPESHIFT                 0x00010000            // 16 Not while shapeshifted
218#define SPELL_ATTR_ONLY_STEALTHED                 0x00020000            // 17 Must be in stealth
219#define SPELL_ATTR_UNK18                          0x00040000            // 18
220#define SPELL_ATTR_LEVEL_DAMAGE_CALCULATION       0x00080000            // 19 spelldamage depends on caster level
221#define SPELL_ATTR_STOP_ATTACK_TARGET             0x00100000            // 20 Stop attack after use this spell (and not begin attack if use)
222#define SPELL_ATTR_IMPOSSIBLE_DODGE_PARRY_BLOCK   0x00200000            // 21 Cannot be dodged/parried/blocked
223#define SPELL_ATTR_UNK22                          0x00400000            // 22
224#define SPELL_ATTR_UNK23                          0x00800000            // 23 castable while dead?
225#define SPELL_ATTR_CASTABLE_WHILE_MOUNTED         0x01000000            // 24 castable while mounted
226#define SPELL_ATTR_DISABLED_WHILE_ACTIVE          0x02000000            // 25 Activate and start cooldown after aura fade or remove summoned creature or go
227#define SPELL_ATTR_UNK26                          0x04000000            // 26
228#define SPELL_ATTR_CASTABLE_WHILE_SITTING         0x08000000            // 27 castable while sitting
229#define SPELL_ATTR_CANT_USED_IN_COMBAT            0x10000000            // 28 Cannot be used in combat
230#define SPELL_ATTR_UNAFFECTED_BY_INVULNERABILITY  0x20000000            // 29 unaffected by invulnerability (hmm possible not...)
231#define SPELL_ATTR_BREAKABLE_BY_DAMAGE            0x40000000            // 30 breakable by damage?
232#define SPELL_ATTR_CANT_CANCEL                    0x80000000            // 31 positive aura can't be canceled
233
234#define SPELL_ATTR_EX_UNK0                        0x00000001            // 0
235#define SPELL_ATTR_EX_DRAIN_ALL_POWER             0x00000002            // 1 use all power (Only paladin Lay of Hands and Bunyanize)
236#define SPELL_ATTR_EX_CHANNELED_1                 0x00000004            // 2 channeled 1
237#define SPELL_ATTR_EX_UNK3                        0x00000008            // 3
238#define SPELL_ATTR_EX_UNK4                        0x00000010            // 4
239#define SPELL_ATTR_EX_NOT_BREAK_STEALTH           0x00000020            // 5 Not break stealth
240#define SPELL_ATTR_EX_CHANNELED_2                 0x00000040            // 6 channeled 2
241#define SPELL_ATTR_EX_NEGATIVE                    0x00000080            // 7
242#define SPELL_ATTR_EX_NOT_IN_COMBAT_TARGET        0x00000100            // 8 Spell req target not to be in combat state
243#define SPELL_ATTR_EX_UNK9                        0x00000200            // 9
244#define SPELL_ATTR_EX_UNK10                       0x00000400            // 10
245#define SPELL_ATTR_EX_UNK11                       0x00000800            // 11
246#define SPELL_ATTR_EX_UNK12                       0x00001000            // 12
247#define SPELL_ATTR_EX_UNK13                       0x00002000            // 13
248#define SPELL_ATTR_EX_UNK14                       0x00004000            // 14
249#define SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY    0x00008000            // 15 remove auras on immunity
250#define SPELL_ATTR_EX_UNAFFECTED_BY_SCHOOL_IMMUNE 0x00010000            // 16 unaffected by school immunity
251#define SPELL_ATTR_EX_UNK17                       0x00020000            // 17
252#define SPELL_ATTR_EX_UNK18                       0x00040000            // 18
253#define SPELL_ATTR_EX_UNK19                       0x00080000            // 19
254#define SPELL_ATTR_EX_REQ_COMBO_POINTS1           0x00100000            // 20 Req combo points on target
255#define SPELL_ATTR_EX_UNK21                       0x00200000            // 21
256#define SPELL_ATTR_EX_REQ_COMBO_POINTS2           0x00400000            // 22 Req combo points on target
257#define SPELL_ATTR_EX_UNK23                       0x00800000            // 23
258#define SPELL_ATTR_EX_UNK24                       0x01000000            // 24 Req fishing pole??
259#define SPELL_ATTR_EX_UNK25                       0x02000000            // 25 not set in 2.4.2
260#define SPELL_ATTR_EX_UNK26                       0x04000000            // 26
261#define SPELL_ATTR_EX_UNK27                       0x08000000            // 27
262#define SPELL_ATTR_EX_UNK28                       0x10000000            // 28
263#define SPELL_ATTR_EX_UNK29                       0x20000000            // 29
264#define SPELL_ATTR_EX_UNK30                       0x40000000            // 30 overpower
265#define SPELL_ATTR_EX_UNK31                       0x80000000            // 31
266
267#define SPELL_ATTR_EX2_UNK0                       0x00000001            // 0
268#define SPELL_ATTR_EX2_UNK1                       0x00000002            // 1
269#define SPELL_ATTR_EX2_UNK2                       0x00000004            // 2
270#define SPELL_ATTR_EX2_UNK3                       0x00000008            // 3
271#define SPELL_ATTR_EX2_UNK4                       0x00000010            // 4
272#define SPELL_ATTR_EX2_UNK5                       0x00000020            // 5
273#define SPELL_ATTR_EX2_UNK6                       0x00000040            // 6
274#define SPELL_ATTR_EX2_UNK7                       0x00000080            // 7
275#define SPELL_ATTR_EX2_UNK8                       0x00000100            // 8 not set in 2.4.2
276#define SPELL_ATTR_EX2_UNK9                       0x00000200            // 9
277#define SPELL_ATTR_EX2_UNK10                      0x00000400            // 10
278#define SPELL_ATTR_EX2_HEALTH_FUNNEL              0x00000800            // 11
279#define SPELL_ATTR_EX2_UNK12                      0x00001000            // 12
280#define SPELL_ATTR_EX2_UNK13                      0x00002000            // 13
281#define SPELL_ATTR_EX2_UNK14                      0x00004000            // 14
282#define SPELL_ATTR_EX2_UNK15                      0x00008000            // 15 not set in 2.4.2
283#define SPELL_ATTR_EX2_UNK16                      0x00010000            // 16
284#define SPELL_ATTR_EX2_UNK17                      0x00020000            // 17 Hunters Shot and Stings only have this flag
285#define SPELL_ATTR_EX2_UNK18                      0x00040000            // 18 Only Revive pet - possible req dead pet
286#define SPELL_ATTR_EX2_NOT_NEED_SHAPESHIFT        0x00080000            // 19 does not necessarly need shapeshift
287#define SPELL_ATTR_EX2_UNK20                      0x00100000            // 20
288#define SPELL_ATTR_EX2_UNK21                      0x00200000            // 21
289#define SPELL_ATTR_EX2_UNK22                      0x00400000            // 22
290#define SPELL_ATTR_EX2_UNK23                      0x00800000            // 23 Only mage Arcane Concentration have this flag
291#define SPELL_ATTR_EX2_UNK24                      0x01000000            // 24
292#define SPELL_ATTR_EX2_UNK25                      0x02000000            // 25
293#define SPELL_ATTR_EX2_UNK26                      0x04000000            // 26 unaffected by school immunity
294#define SPELL_ATTR_EX2_UNK27                      0x08000000            // 27
295#define SPELL_ATTR_EX2_UNK28                      0x10000000            // 28
296#define SPELL_ATTR_EX2_CANT_CRIT                  0x20000000            // 29 Spell can't crit
297#define SPELL_ATTR_EX2_UNK30                      0x40000000            // 30
298#define SPELL_ATTR_EX2_UNK31                      0x80000000            // 31
299
300#define SPELL_ATTR_EX3_UNK0                       0x00000001            // 0
301#define SPELL_ATTR_EX3_UNK1                       0x00000002            // 1
302#define SPELL_ATTR_EX3_UNK2                       0x00000004            // 2
303#define SPELL_ATTR_EX3_UNK3                       0x00000008            // 3
304#define SPELL_ATTR_EX3_UNK4                       0x00000010            // 4 Druid Rebirth only this spell have this flag
305#define SPELL_ATTR_EX3_UNK5                       0x00000020            // 5
306#define SPELL_ATTR_EX3_UNK6                       0x00000040            // 6
307#define SPELL_ATTR_EX3_UNK7                       0x00000080            // 7
308#define SPELL_ATTR_EX3_UNK8                       0x00000100            // 8
309#define SPELL_ATTR_EX3_UNK9                       0x00000200            // 9
310#define SPELL_ATTR_EX3_MAIN_HAND                  0x00000400            // 10 Main hand weapon required
311#define SPELL_ATTR_EX3_BATTLEGROUND               0x00000800            // 11 Can casted only on battleground
312#define SPELL_ATTR_EX3_UNK12                      0x00001000            // 12
313#define SPELL_ATTR_EX3_UNK13                      0x00002000            // 13
314#define SPELL_ATTR_EX3_UNK14                      0x00004000            // 14 "Honorless Target" only this spells have this flag
315#define SPELL_ATTR_EX3_UNK15                      0x00008000            // 15 Auto Shoot, Shoot, Throw,  - this is autoshot flag
316#define SPELL_ATTR_EX3_UNK16                      0x00010000            // 16
317#define SPELL_ATTR_EX3_NO_INITIAL_AGGRO           0x00020000            // 17 no initial aggro
318#define SPELL_ATTR_EX3_UNK18                      0x00040000            // 18
319#define SPELL_ATTR_EX3_UNK19                      0x00080000            // 19
320#define SPELL_ATTR_EX3_DEATH_PERSISTENT           0x00100000            // 20 Death persistent spells
321#define SPELL_ATTR_EX3_UNK21                      0x00200000            // 21
322#define SPELL_ATTR_EX3_REQ_WAND                   0x00400000            // 22 Req wand
323#define SPELL_ATTR_EX3_UNK23                      0x00800000            // 23
324#define SPELL_ATTR_EX3_REQ_OFFHAND                0x01000000            // 24 Req offhand weapon
325#define SPELL_ATTR_EX3_UNK25                      0x02000000            // 25
326#define SPELL_ATTR_EX3_UNK26                      0x04000000            // 26
327#define SPELL_ATTR_EX3_UNK27                      0x08000000            // 27
328#define SPELL_ATTR_EX3_UNK28                      0x10000000            // 28
329#define SPELL_ATTR_EX3_UNK29                      0x20000000            // 29
330#define SPELL_ATTR_EX3_UNK30                      0x40000000            // 30
331#define SPELL_ATTR_EX3_UNK31                      0x80000000            // 31
332
333#define SPELL_ATTR_EX4_UNK0                       0x00000001            // 0
334#define SPELL_ATTR_EX4_UNK1                       0x00000002            // 1 proc on finishing move?
335#define SPELL_ATTR_EX4_UNK2                       0x00000004            // 2
336#define SPELL_ATTR_EX4_UNK3                       0x00000008            // 3
337#define SPELL_ATTR_EX4_UNK4                       0x00000010            // 4
338#define SPELL_ATTR_EX4_UNK5                       0x00000020            // 5
339#define SPELL_ATTR_EX4_UNK6                       0x00000040            // 6
340#define SPELL_ATTR_EX4_UNK7                       0x00000080            // 7
341#define SPELL_ATTR_EX4_UNK8                       0x00000100            // 8
342#define SPELL_ATTR_EX4_UNK9                       0x00000200            // 9
343#define SPELL_ATTR_EX4_SPELL_VS_EXTEND_COST       0x00000400            // 10 Rogue Shiv have this flag
344#define SPELL_ATTR_EX4_UNK11                      0x00000800            // 11
345#define SPELL_ATTR_EX4_UNK12                      0x00001000            // 12
346#define SPELL_ATTR_EX4_UNK13                      0x00002000            // 13
347#define SPELL_ATTR_EX4_UNK14                      0x00004000            // 14
348#define SPELL_ATTR_EX4_UNK15                      0x00008000            // 15
349#define SPELL_ATTR_EX4_NOT_USABLE_IN_ARENA        0x00010000            // 16 not usable in arena
350#define SPELL_ATTR_EX4_USABLE_IN_ARENA            0x00020000            // 17 usable in arena
351#define SPELL_ATTR_EX4_UNK18                      0x00040000            // 18
352#define SPELL_ATTR_EX4_UNK19                      0x00080000            // 19
353#define SPELL_ATTR_EX4_UNK20                      0x00100000            // 20
354#define SPELL_ATTR_EX4_UNK21                      0x00200000            // 21
355#define SPELL_ATTR_EX4_UNK22                      0x00400000            // 22
356#define SPELL_ATTR_EX4_UNK23                      0x00800000            // 23
357#define SPELL_ATTR_EX4_UNK24                      0x01000000            // 24
358#define SPELL_ATTR_EX4_UNK25                      0x02000000            // 25 pet scaling auras
359#define SPELL_ATTR_EX4_CAST_ONLY_IN_OUTLAND       0x04000000            // 26 Can only be used in Outland.
360#define SPELL_ATTR_EX4_UNK27                      0x08000000            // 27
361#define SPELL_ATTR_EX4_UNK28                      0x10000000            // 28
362#define SPELL_ATTR_EX4_UNK29                      0x20000000            // 29
363#define SPELL_ATTR_EX4_UNK30                      0x40000000            // 30
364#define SPELL_ATTR_EX4_UNK31                      0x80000000            // 31
365
366#define SPELL_ATTR_EX5_UNK0                       0x00000001            // 0
367#define SPELL_ATTR_EX5_NO_REAGENT_WHILE_PREP      0x00000002            // 1 not need reagents if UNIT_FLAG_PREPARATION
368#define SPELL_ATTR_EX5_UNK2                       0x00000004            // 2
369#define SPELL_ATTR_EX5_USABLE_WHILE_STUNNED       0x00000008            // 3 usable while stunned
370#define SPELL_ATTR_EX5_UNK4                       0x00000010            // 4
371#define SPELL_ATTR_EX5_SINGLE_TARGET_SPELL        0x00000020            // 5 Only one target can be apply at a time
372#define SPELL_ATTR_EX5_UNK6                       0x00000040            // 6
373#define SPELL_ATTR_EX5_UNK7                       0x00000080            // 7
374#define SPELL_ATTR_EX5_UNK8                       0x00000100            // 8
375#define SPELL_ATTR_EX5_UNK9                       0x00000200            // 9
376#define SPELL_ATTR_EX5_UNK10                      0x00000400            // 10
377#define SPELL_ATTR_EX5_UNK11                      0x00000800            // 11
378#define SPELL_ATTR_EX5_UNK12                      0x00001000            // 12
379#define SPELL_ATTR_EX5_UNK13                      0x00002000            // 13
380#define SPELL_ATTR_EX5_UNK14                      0x00004000            // 14
381#define SPELL_ATTR_EX5_UNK15                      0x00008000            // 15
382#define SPELL_ATTR_EX5_UNK16                      0x00010000            // 16
383#define SPELL_ATTR_EX5_USABLE_WHILE_FEARED        0x00020000            // 17 usable while feared
384#define SPELL_ATTR_EX5_USABLE_WHILE_CONFUSED      0x00040000            // 18 usable while confused
385#define SPELL_ATTR_EX5_UNK19                      0x00080000            // 19
386#define SPELL_ATTR_EX5_UNK20                      0x00100000            // 20
387#define SPELL_ATTR_EX5_UNK21                      0x00200000            // 21
388#define SPELL_ATTR_EX5_UNK22                      0x00400000            // 22
389#define SPELL_ATTR_EX5_UNK23                      0x00800000            // 23
390#define SPELL_ATTR_EX5_UNK24                      0x01000000            // 24
391#define SPELL_ATTR_EX5_UNK25                      0x02000000            // 25
392#define SPELL_ATTR_EX5_UNK26                      0x04000000            // 26
393#define SPELL_ATTR_EX5_UNK27                      0x08000000            // 27
394#define SPELL_ATTR_EX5_UNK28                      0x10000000            // 28
395#define SPELL_ATTR_EX5_UNK29                      0x20000000            // 29
396#define SPELL_ATTR_EX5_UNK30                      0x40000000            // 30
397#define SPELL_ATTR_EX5_UNK31                      0x80000000            // 31 Forces all nearby enemies to focus attacks caster
398
399#define SPELL_ATTR_EX6_UNK0                       0x00000001            // 0 Only Move spell have this flag
400#define SPELL_ATTR_EX6_UNK1                       0x00000002            // 1 not set in 2.4.2
401#define SPELL_ATTR_EX6_UNK2                       0x00000004            // 2
402#define SPELL_ATTR_EX6_UNK3                       0x00000008            // 3
403#define SPELL_ATTR_EX6_UNK4                       0x00000010            // 4 not set in 2.4.2
404#define SPELL_ATTR_EX6_UNK5                       0x00000020            // 5
405#define SPELL_ATTR_EX6_UNK6                       0x00000040            // 6
406#define SPELL_ATTR_EX6_UNK7                       0x00000080            // 7
407#define SPELL_ATTR_EX6_UNK8                       0x00000100            // 8
408#define SPELL_ATTR_EX6_UNK9                       0x00000200            // 9 not set in 2.4.2
409#define SPELL_ATTR_EX6_UNK10                      0x00000400            // 10
410#define SPELL_ATTR_EX6_UNK11                      0x00000800            // 11
411#define SPELL_ATTR_EX6_UNK12                      0x00001000            // 12 not set in 2.4.2
412#define SPELL_ATTR_EX6_UNK13                      0x00002000            // 13 not set in 2.4.2
413#define SPELL_ATTR_EX6_UNK14                      0x00004000            // 14 not set in 2.4.2
414#define SPELL_ATTR_EX6_UNK15                      0x00008000            // 15 not set in 2.4.2
415#define SPELL_ATTR_EX6_UNK16                      0x00010000            // 16 not set in 2.4.2
416#define SPELL_ATTR_EX6_UNK17                      0x00020000            // 17 not set in 2.4.2
417#define SPELL_ATTR_EX6_UNK18                      0x00040000            // 18 not set in 2.4.2
418#define SPELL_ATTR_EX6_UNK19                      0x00080000            // 19 not set in 2.4.2
419#define SPELL_ATTR_EX6_UNK20                      0x00100000            // 20 not set in 2.4.2
420#define SPELL_ATTR_EX6_UNK21                      0x00200000            // 21 not set in 2.4.2
421#define SPELL_ATTR_EX6_UNK22                      0x00400000            // 22 not set in 2.4.2
422#define SPELL_ATTR_EX6_UNK23                      0x00800000            // 23 not set in 2.4.2
423#define SPELL_ATTR_EX6_UNK24                      0x01000000            // 24 not set in 2.4.2
424#define SPELL_ATTR_EX6_UNK25                      0x02000000            // 25 not set in 2.4.2
425#define SPELL_ATTR_EX6_UNK26                      0x04000000            // 26 not set in 2.4.2
426#define SPELL_ATTR_EX6_UNK27                      0x08000000            // 27 not set in 2.4.2
427#define SPELL_ATTR_EX6_UNK28                      0x10000000            // 28 not set in 2.4.2
428#define SPELL_ATTR_EX6_UNK29                      0x20000000            // 29 not set in 2.4.2
429#define SPELL_ATTR_EX6_UNK30                      0x40000000            // 30 not set in 2.4.2
430#define SPELL_ATTR_EX6_UNK31                      0x80000000            // 31 not set in 2.4.2
431
432enum SheathTypes
433{
434    SHEATHETYPE_NONE                   = 0,
435    SHEATHETYPE_MAINHAND               = 1,
436    SHEATHETYPE_OFFHAND                = 2,
437    SHEATHETYPE_LARGEWEAPONLEFT        = 3,
438    SHEATHETYPE_LARGEWEAPONRIGHT       = 4,
439    SHEATHETYPE_HIPWEAPONLEFT          = 5,
440    SHEATHETYPE_HIPWEAPONRIGHT         = 6,
441    SHEATHETYPE_SHIELD                 = 7
442};
443
444#define MAX_SHEATHETYPE                  8
445
446enum CharacterSlot
447{
448    SLOT_HEAD                          = 0,
449    SLOT_NECK                          = 1,
450    SLOT_SHOULDERS                     = 2,
451    SLOT_SHIRT                         = 3,
452    SLOT_CHEST                         = 4,
453    SLOT_WAIST                         = 5,
454    SLOT_LEGS                          = 6,
455    SLOT_FEET                          = 7,
456    SLOT_WRISTS                        = 8,
457    SLOT_HANDS                         = 9,
458    SLOT_FINGER1                       = 10,
459    SLOT_FINGER2                       = 11,
460    SLOT_TRINKET1                      = 12,
461    SLOT_TRINKET2                      = 13,
462    SLOT_BACK                          = 14,
463    SLOT_MAIN_HAND                     = 15,
464    SLOT_OFF_HAND                      = 16,
465    SLOT_RANGED                        = 17,
466    SLOT_TABARD                        = 18,
467    SLOT_EMPTY                         = 19
468};
469
470enum Language
471{
472    LANG_UNIVERSAL      = 0,
473    LANG_ORCISH         = 1,
474    LANG_DARNASSIAN     = 2,
475    LANG_TAURAHE        = 3,
476    LANG_DWARVISH       = 6,
477    LANG_COMMON         = 7,
478    LANG_DEMONIC        = 8,
479    LANG_TITAN          = 9,
480    LANG_THALASSIAN     = 10,
481    LANG_DRACONIC       = 11,
482    LANG_KALIMAG        = 12,
483    LANG_GNOMISH        = 13,
484    LANG_TROLL          = 14,
485    LANG_GUTTERSPEAK    = 33,
486    LANG_DRAENEI        = 35,
487    LANG_ZOMBIE         = 36,
488    LANG_GNOMISH_BINARY = 37,
489    LANG_GOBLIN_BINARY  = 38,
490    LANG_ADDON          = 0xFFFFFFFF                        // used by addons, in 2.4.0 not exit, replaced by messagetype?
491};
492
493#define LANGUAGES_COUNT   19
494
495enum Team
496{
497    HORDE               = 67,
498    ALLIANCE            = 469,
499    //TEAM_STEAMWHEEDLE_CARTEL = 169,                       // not used in code
500    //TEAM_ALLIANCE_FORCES     = 891,
501    //TEAM_HORDE_FORCES        = 892,
502    //TEAM_SANCTUARY           = 936,
503    //TEAM_OUTLAND             = 980,
504    //TEAM_OTHER               = 0,                         // if ReputationListId > 0 && Flags != FACTION_FLAG_TEAM_HEADER
505};
506
507enum SpellEffects
508{
509    SPELL_EFFECT_INSTAKILL                 = 1,
510    SPELL_EFFECT_SCHOOL_DAMAGE             = 2,
511    SPELL_EFFECT_DUMMY                     = 3,
512    SPELL_EFFECT_PORTAL_TELEPORT           = 4,
513    SPELL_EFFECT_TELEPORT_UNITS            = 5,
514    SPELL_EFFECT_APPLY_AURA                = 6,
515    SPELL_EFFECT_ENVIRONMENTAL_DAMAGE      = 7,
516    SPELL_EFFECT_POWER_DRAIN               = 8,
517    SPELL_EFFECT_HEALTH_LEECH              = 9,
518    SPELL_EFFECT_HEAL                      = 10,
519    SPELL_EFFECT_BIND                      = 11,
520    SPELL_EFFECT_PORTAL                    = 12,
521    SPELL_EFFECT_RITUAL_BASE               = 13,
522    SPELL_EFFECT_RITUAL_SPECIALIZE         = 14,
523    SPELL_EFFECT_RITUAL_ACTIVATE_PORTAL    = 15,
524    SPELL_EFFECT_QUEST_COMPLETE            = 16,
525    SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL    = 17,
526    SPELL_EFFECT_RESURRECT                 = 18,
527    SPELL_EFFECT_ADD_EXTRA_ATTACKS         = 19,
528    SPELL_EFFECT_DODGE                     = 20,
529    SPELL_EFFECT_EVADE                     = 21,
530    SPELL_EFFECT_PARRY                     = 22,
531    SPELL_EFFECT_BLOCK                     = 23,
532    SPELL_EFFECT_CREATE_ITEM               = 24,
533    SPELL_EFFECT_WEAPON                    = 25,
534    SPELL_EFFECT_DEFENSE                   = 26,
535    SPELL_EFFECT_PERSISTENT_AREA_AURA      = 27,
536    SPELL_EFFECT_SUMMON                    = 28,
537    SPELL_EFFECT_LEAP                      = 29,
538    SPELL_EFFECT_ENERGIZE                  = 30,
539    SPELL_EFFECT_WEAPON_PERCENT_DAMAGE     = 31,
540    SPELL_EFFECT_TRIGGER_MISSILE           = 32,
541    SPELL_EFFECT_OPEN_LOCK                 = 33,
542    SPELL_EFFECT_SUMMON_CHANGE_ITEM        = 34,
543    SPELL_EFFECT_APPLY_AREA_AURA_PARTY     = 35,
544    SPELL_EFFECT_LEARN_SPELL               = 36,
545    SPELL_EFFECT_SPELL_DEFENSE             = 37,
546    SPELL_EFFECT_DISPEL                    = 38,
547    SPELL_EFFECT_LANGUAGE                  = 39,
548    SPELL_EFFECT_DUAL_WIELD                = 40,
549    SPELL_EFFECT_SUMMON_WILD               = 41,
550    SPELL_EFFECT_SUMMON_GUARDIAN           = 42,
551    SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER= 43,
552    SPELL_EFFECT_SKILL_STEP                = 44,
553    SPELL_EFFECT_UNDEFINED_45              = 45,
554    SPELL_EFFECT_SPAWN                     = 46,
555    SPELL_EFFECT_TRADE_SKILL               = 47,
556    SPELL_EFFECT_STEALTH                   = 48,
557    SPELL_EFFECT_DETECT                    = 49,
558    //    SPELL_EFFECT_SUMMON_OBJECT             = 50,
559    SPELL_EFFECT_TRANS_DOOR                = 50,
560    SPELL_EFFECT_FORCE_CRITICAL_HIT        = 51,
561    SPELL_EFFECT_GUARANTEE_HIT             = 52,
562    SPELL_EFFECT_ENCHANT_ITEM              = 53,
563    SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY    = 54,
564    SPELL_EFFECT_TAMECREATURE              = 55,
565    SPELL_EFFECT_SUMMON_PET                = 56,
566    SPELL_EFFECT_LEARN_PET_SPELL           = 57,
567    SPELL_EFFECT_WEAPON_DAMAGE             = 58,
568    SPELL_EFFECT_OPEN_LOCK_ITEM            = 59,
569    SPELL_EFFECT_PROFICIENCY               = 60,
570    SPELL_EFFECT_SEND_EVENT                = 61,
571    SPELL_EFFECT_POWER_BURN                = 62,
572    SPELL_EFFECT_THREAT                    = 63,
573    SPELL_EFFECT_TRIGGER_SPELL             = 64,
574    SPELL_EFFECT_HEALTH_FUNNEL             = 65,
575    SPELL_EFFECT_POWER_FUNNEL              = 66,
576    SPELL_EFFECT_HEAL_MAX_HEALTH           = 67,
577    SPELL_EFFECT_INTERRUPT_CAST            = 68,
578    SPELL_EFFECT_DISTRACT                  = 69,
579    SPELL_EFFECT_PULL                      = 70,
580    SPELL_EFFECT_PICKPOCKET                = 71,
581    SPELL_EFFECT_ADD_FARSIGHT              = 72,
582    SPELL_EFFECT_SUMMON_POSSESSED          = 73,
583    SPELL_EFFECT_SUMMON_TOTEM              = 74,
584    SPELL_EFFECT_HEAL_MECHANICAL           = 75,
585    SPELL_EFFECT_SUMMON_OBJECT_WILD        = 76,
586    SPELL_EFFECT_SCRIPT_EFFECT             = 77,
587    SPELL_EFFECT_ATTACK                    = 78,
588    SPELL_EFFECT_SANCTUARY                 = 79,
589    SPELL_EFFECT_ADD_COMBO_POINTS          = 80,
590    SPELL_EFFECT_CREATE_HOUSE              = 81,
591    SPELL_EFFECT_BIND_SIGHT                = 82,
592    SPELL_EFFECT_DUEL                      = 83,
593    SPELL_EFFECT_STUCK                     = 84,
594    SPELL_EFFECT_SUMMON_PLAYER             = 85,
595    SPELL_EFFECT_ACTIVATE_OBJECT           = 86,
596    SPELL_EFFECT_SUMMON_TOTEM_SLOT1        = 87,
597    SPELL_EFFECT_SUMMON_TOTEM_SLOT2        = 88,
598    SPELL_EFFECT_SUMMON_TOTEM_SLOT3        = 89,
599    SPELL_EFFECT_SUMMON_TOTEM_SLOT4        = 90,
600    SPELL_EFFECT_THREAT_ALL                = 91,
601    SPELL_EFFECT_ENCHANT_HELD_ITEM         = 92,
602    SPELL_EFFECT_SUMMON_PHANTASM           = 93,
603    SPELL_EFFECT_SELF_RESURRECT            = 94,
604    SPELL_EFFECT_SKINNING                  = 95,
605    SPELL_EFFECT_CHARGE                    = 96,
606    SPELL_EFFECT_SUMMON_CRITTER            = 97,
607    SPELL_EFFECT_KNOCK_BACK                = 98,
608    SPELL_EFFECT_DISENCHANT                = 99,
609    SPELL_EFFECT_INEBRIATE                 = 100,
610    SPELL_EFFECT_FEED_PET                  = 101,
611    SPELL_EFFECT_DISMISS_PET               = 102,
612    SPELL_EFFECT_REPUTATION                = 103,
613    SPELL_EFFECT_SUMMON_OBJECT_SLOT1       = 104,
614    SPELL_EFFECT_SUMMON_OBJECT_SLOT2       = 105,
615    SPELL_EFFECT_SUMMON_OBJECT_SLOT3       = 106,
616    SPELL_EFFECT_SUMMON_OBJECT_SLOT4       = 107,
617    SPELL_EFFECT_DISPEL_MECHANIC           = 108,
618    SPELL_EFFECT_SUMMON_DEAD_PET           = 109,
619    SPELL_EFFECT_DESTROY_ALL_TOTEMS        = 110,
620    SPELL_EFFECT_DURABILITY_DAMAGE         = 111,
621    SPELL_EFFECT_SUMMON_DEMON              = 112,
622    SPELL_EFFECT_RESURRECT_NEW             = 113,
623    SPELL_EFFECT_ATTACK_ME                 = 114,
624    SPELL_EFFECT_DURABILITY_DAMAGE_PCT     = 115,
625    SPELL_EFFECT_SKIN_PLAYER_CORPSE        = 116,
626    SPELL_EFFECT_SPIRIT_HEAL               = 117,
627    SPELL_EFFECT_SKILL                     = 118,
628    SPELL_EFFECT_APPLY_AREA_AURA_PET       = 119,
629    SPELL_EFFECT_TELEPORT_GRAVEYARD        = 120,
630    SPELL_EFFECT_NORMALIZED_WEAPON_DMG     = 121,
631    SPELL_EFFECT_122                       = 122,
632    SPELL_EFFECT_SEND_TAXI                 = 123,
633    SPELL_EFFECT_PLAYER_PULL               = 124,
634    SPELL_EFFECT_MODIFY_THREAT_PERCENT     = 125,
635    SPELL_EFFECT_STEAL_BENEFICIAL_BUFF     = 126,
636    SPELL_EFFECT_PROSPECTING               = 127,
637    SPELL_EFFECT_APPLY_AREA_AURA_FRIEND    = 128,
638    SPELL_EFFECT_APPLY_AREA_AURA_ENEMY     = 129,
639    SPELL_EFFECT_REDIRECT_THREAT           = 130,
640    SPELL_EFFECT_131                       = 131,
641    SPELL_EFFECT_132                       = 132,
642    SPELL_EFFECT_UNLEARN_SPECIALIZATION    = 133,
643    SPELL_EFFECT_KILL_CREDIT               = 134,
644    SPELL_EFFECT_135                       = 135,
645    SPELL_EFFECT_HEAL_PCT                  = 136,
646    SPELL_EFFECT_ENERGIZE_PCT              = 137,
647    SPELL_EFFECT_138                       = 138,
648    SPELL_EFFECT_139                       = 139,
649    SPELL_EFFECT_FORCE_CAST                = 140,
650    SPELL_EFFECT_141                       = 141,
651    SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE  = 142,
652    SPELL_EFFECT_APPLY_AREA_AURA_OWNER     = 143,
653    SPELL_EFFECT_144                       = 144,
654    SPELL_EFFECT_145                       = 145,
655    SPELL_EFFECT_146                       = 146,
656    SPELL_EFFECT_QUEST_FAIL                = 147,
657    SPELL_EFFECT_148                       = 148,
658    SPELL_EFFECT_149                       = 149,
659    SPELL_EFFECT_150                       = 150,
660    SPELL_EFFECT_TRIGGER_SPELL_2           = 151,
661    SPELL_EFFECT_152                       = 152,
662    SPELL_EFFECT_153                       = 153,
663    TOTAL_SPELL_EFFECTS                    = 154
664};
665
666// Spell aura states
667enum AuraState
668{   // (C) used in caster aura state     (T) used in target aura state
669    // (c) used in caster aura state-not (t) used in target aura state-not
670    AURA_STATE_DEFENSE                      = 1,            // C   |
671    AURA_STATE_HEALTHLESS_20_PERCENT        = 2,            // CcT |
672    AURA_STATE_BERSERKING                   = 3,            // C T |
673    //AURA_STATE_UNKNOWN4                   = 4,            //  c t| some limitation to charge spells (?) and target test spells
674    AURA_STATE_JUDGEMENT                    = 5,            // C   |
675    //AURA_STATE_UNKNOWN6                   = 6,            //     | not used
676    AURA_STATE_HUNTER_PARRY                 = 7,            // C   |
677    AURA_STATE_ROGUE_ATTACK_FROM_STEALTH    = 7,            // C   | FIX ME: not implemented yet!
678    //AURA_STATE_UNKNOWN7c                  = 7,            //  c  | random/focused bursts spells (?)
679    //AURA_STATE_UNKNOWN8                   = 8,            //     | not used
680    //AURA_STATE_UNKNOWN9                   = 9,            //     | not used
681    AURA_STATE_WARRIOR_VICTORY_RUSH         = 10,           // C   | warrior victory rush
682    AURA_STATE_HUNTER_CRIT_STRIKE           = 10,           // C   | hunter crit strike
683    AURA_STATE_CRIT                         = 11,           // C   |
684    AURA_STATE_FAERIE_FIRE                  = 12,           //  c t|
685    AURA_STATE_HEALTHLESS_35_PERCENT        = 13,           // C T |
686    AURA_STATE_IMMOLATE                     = 14,           //   T |
687    AURA_STATE_SWIFTMEND                    = 15,           //   T |
688    AURA_STATE_DEADLY_POISON                = 16,           //   T |
689    AURA_STATE_FORBEARANCE                  = 17,           //  c t|
690    AURA_STATE_WEAKENED_SOUL                = 18,           //    t|
691    AURA_STATE_HYPOTHERMIA                  = 19            //  c  |
692};
693
694// Spell mechanics
695enum Mechanics
696{
697    MECHANIC_NONE             = 0,
698    MECHANIC_CHARM            = 1,
699    MECHANIC_CONFUSED         = 2,
700    MECHANIC_DISARM           = 3,
701    MECHANIC_DISTRACT         = 4,
702    MECHANIC_FEAR             = 5,
703    MECHANIC_FUMBLE           = 6,
704    MECHANIC_ROOT             = 7,
705    MECHANIC_PACIFY           = 8,                          //0 spells use this mechanic
706    MECHANIC_SILENCE          = 9,
707    MECHANIC_SLEEP            = 10,
708    MECHANIC_SNARE            = 11,
709    MECHANIC_STUN             = 12,
710    MECHANIC_FREEZE           = 13,
711    MECHANIC_KNOCKOUT         = 14,
712    MECHANIC_BLEED            = 15,
713    MECHANIC_BANDAGE          = 16,
714    MECHANIC_POLYMORPH        = 17,
715    MECHANIC_BANISH           = 18,
716    MECHANIC_SHIELD           = 19,
717    MECHANIC_SHACKLE          = 20,
718    MECHANIC_MOUNT            = 21,
719    MECHANIC_PERSUADE         = 22,                         //0 spells use this mechanic
720    MECHANIC_TURN             = 23,
721    MECHANIC_HORROR           = 24,
722    MECHANIC_INVULNERABILITY  = 25,
723    MECHANIC_INTERRUPT        = 26,
724    MECHANIC_DAZE             = 27,
725    MECHANIC_DISCOVERY        = 28,
726    MECHANIC_IMMUNE_SHIELD    = 29,                         // Divine (Blessing) Shield/Protection and Ice Block
727    MECHANIC_SAPPED           = 30
728};
729
730// Used for spell 42292 Immune Movement Impairment and Loss of Control (0x49967da6)
731#define IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK ( \
732    (1<<MECHANIC_CHARM   )|(1<<MECHANIC_CONFUSED )|(1<<MECHANIC_FEAR  )| \
733    (1<<MECHANIC_ROOT    )|(1<<MECHANIC_PACIFY   )|(1<<MECHANIC_SLEEP )| \
734    (1<<MECHANIC_SNARE   )|(1<<MECHANIC_STUN     )|(1<<MECHANIC_FREEZE)| \
735    (1<<MECHANIC_KNOCKOUT)|(1<<MECHANIC_POLYMORPH)|(1<<MECHANIC_BANISH)| \
736    (1<<MECHANIC_SHACKLE )|(1<<MECHANIC_TURN     )|(1<<MECHANIC_HORROR)| \
737    (1<<MECHANIC_DAZE    )|(1<<MECHANIC_SAPPED   ) )
738
739// Spell dispell type
740enum DispelType
741{
742    DISPEL_NONE         = 0,
743    DISPEL_MAGIC        = 1,
744    DISPEL_CURSE        = 2,
745    DISPEL_DISEASE      = 3,
746    DISPEL_POISON       = 4,
747    DISPEL_STEALTH      = 5,
748    DISPEL_INVISIBILITY = 6,
749    DISPEL_ALL          = 7,
750    DISPEL_SPE_NPC_ONLY = 8,
751    DISPEL_ENRAGE       = 9,
752    DISPEL_ZG_TICKET    = 10
753};
754
755#define DISPEL_ALL_MASK ( (1<<DISPEL_MAGIC) | (1<<DISPEL_CURSE) | (1<<DISPEL_DISEASE) | (1<<DISPEL_POISON) )
756
757//To all Immune system,if target has immunes,
758//some spell that related to ImmuneToDispel or ImmuneToSchool or ImmuneToDamage type can't cast to it,
759//some spell_effects that related to ImmuneToEffect<effect>(only this effect in the spell) can't cast to it,
760//some aura(related to Mechanics or ImmuneToState<aura>) can't apply to it.
761enum SpellImmunity
762{
763    IMMUNITY_EFFECT                = 0,                     // enum SpellEffects
764    IMMUNITY_STATE                 = 1,                     // enum AuraType
765    IMMUNITY_SCHOOL                = 2,                     // enum SpellSchoolMask
766    IMMUNITY_DAMAGE                = 3,                     // enum SpellSchoolMask
767    IMMUNITY_DISPEL                = 4,                     // enum DispelType
768    IMMUNITY_MECHANIC              = 5                      // enum Mechanics
769};
770
771#define MAX_SPELL_IMMUNITY         6
772
773enum Targets
774{
775    TARGET_SELF                        = 1,
776    //TARGET_UNIT_CASTER
777    TARGET_RANDOM_ENEMY_CHAIN_IN_AREA  = 2,                 // only one spell has that, but regardless, it's a target type after all
778    //TARGET_UNIT_NEARBY_ENEMY
779    TARGET_UNIT_SINGLE_UNKNOWN         = 3,
780    TARGET_UNIT_NEARBY_ALLY            = 4,
781    TARGET_PET                         = 5,
782    //TARGET_UNIT_PET
783    TARGET_CHAIN_DAMAGE                = 6,
784    //TARGET_UNIT_TARGET_ENEMY
785    TARGET_UNIT_AREA_ENTRY             = 7,
786    TARGET_AREAEFFECT_CUSTOM           = 8,
787    //TARGET_UNIT_AREA_ENTRY_GROUND
788    TARGET_INNKEEPER_COORDINATES       = 9,                 // uses in teleport to innkeeper spells
789    //TARGET_DEST_HOME
790    TARGET_UNIT_TARGET_DEST_CASTER     = 11, // teleport target to caster
791    TARGET_ALL_ENEMY_IN_AREA           = 15,
792    //TARGET_UNIT_AREA_ENEMY
793    TARGET_ALL_ENEMY_IN_AREA_INSTANT   = 16,
794    //TARGET_UNIT_AREA_ENEMY_GROUND
795    TARGET_TABLE_X_Y_Z_COORDINATES     = 17,                // uses in teleport spells and some other
796    //TARGET_DEST_TABLE
797    TARGET_EFFECT_SELECT               = 18,                // highly depends on the spell effect
798    //TARGET_DEST_CASTER_GROUND
799    TARGET_ALL_PARTY_AROUND_CASTER     = 20,
800    //TARGET_UNIT_PARTY_CASTER
801    TARGET_SINGLE_FRIEND               = 21,
802    //TARGET_UNIT_TARGET_ALLY
803    TARGET_ALL_AROUND_CASTER           = 22,                // used only in TargetA, target selection dependent from TargetB
804    //TARGET_DEST_CASTER
805    TARGET_GAMEOBJECT                  = 23,
806    //TARGET_OBJECT_OPEN
807    TARGET_IN_FRONT_OF_CASTER          = 24,
808    //TARGET_UNIT_CONE_ENEMY
809    TARGET_DUELVSPLAYER                = 25,
810    //TARGET_UNIT_SINGLE
811    TARGET_GAMEOBJECT_ITEM             = 26,
812    //TARGET_OBJECT_ITEM_PICKLOCK
813    TARGET_MASTER                      = 27,
814    //TARGET_UNIT_MASTER
815    TARGET_ALL_ENEMY_IN_AREA_CHANNELED = 28,
816    //TARGET_UNIT_AREA_ENEMY_CHANNEL
817    TARGET_UNIT_AREA_ALLY_CHANNEL      = 29, // 28,29 only used for effect 27, if interrupt channel, pstAA cancel
818    TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER = 30,           // in TargetB used only with TARGET_ALL_AROUND_CASTER and in self casting range in TargetA
819    //TARGET_UNIT_AREA_ALLY
820    TARGET_ALL_FRIENDLY_UNITS_IN_AREA  = 31,
821    //TARGET_UNIT_AREA_ALLY_GROUND
822    TARGET_MINION                      = 32,
823    //TARGET_DEST_SUMMON
824    TARGET_ALL_PARTY                   = 33,
825    //TARGET_UNIT_AREA_PARTY
826    TARGET_ALL_PARTY_AROUND_CASTER_2   = 34,                // used in Tranquility
827    //TARGET_UNIT_AREA_PARTY_GROUND
828    TARGET_SINGLE_PARTY                = 35,
829    //TARGET_UNIT_TARGET_PARTY
830    TARGET_DEST_CASTER_RANDOM_UNKNOWN  = 36, //unknown
831    TARGET_AREAEFFECT_PARTY            = 37,
832    //TARGET_UNIT_PARTY_TARGET
833    TARGET_SCRIPT                      = 38,
834    //TARGET_UNIT_NEARBY_ENTRY
835    TARGET_SELF_FISHING                = 39,
836    //TARGET_UNIT_CASTER_FISHING
837    TARGET_OBJECT_USE                  = 40,
838    TARGET_DEST_CASTER_FRONT_LEFT      = 41, //earth totem
839    TARGET_DEST_CASTER_BACK_LEFT       = 42, //water totem
840    TARGET_DEST_CASTER_BACK_RIGHT      = 43, //air totem
841    TARGET_DEST_CASTER_FRONT_RIGHT     = 44, //fire totem
842    TARGET_CHAIN_HEAL                  = 45,
843    //TARGET_UNIT_CHAINHEAL
844    TARGET_SCRIPT_COORDINATES          = 46,
845    //TARGET_DEST_TABLE_UNKNOWN
846    TARGET_DEST_CASTER_FRONT           = 47,
847    TARGET_DEST_CASTER_BACK            = 48,
848    TARGET_DEST_CASTER_RIGHT           = 49,
849    TARGET_DEST_CASTER_LEFT            = 50,
850    TARGET_OBJECT_AREA                 = 51,
851    TARGET_AREAEFFECT_CUSTOM_2         = 52,
852    //TARGET_DUMMY
853    TARGET_CURRENT_ENEMY_COORDINATES   = 53,                // set unit coordinates as dest, only 16 target B imlemented
854    //TARGET_DEST_TARGET_ENEMY
855    TARGET_UNIT_CONE_ENEMY_UNKNOWN     = 54,
856    TARGET_DEST_CASTER_FRONT_LEAP      = 55, // for a leap spell
857    TARGET_RANDOM_RAID_MEMBER          = 56,
858    //TARGET_UNIT_AREA_RAID
859    TARGET_SINGLE_FRIEND_2             = 57,
860    //TARGET_UNIT_TARGET_RAID
861    TARGET_UNIT_CONE_ALLY              = 59,
862    TARGET_UNIT_AREA_SCRIPT            = 60,
863    TARGET_AREAEFFECT_PARTY_AND_CLASS  = 61,
864    //TARGET_UNIT_CLASS_TARGET
865    TARGET_TEST                        = 62, // for a test spell
866    TARGET_DUELVSPLAYER_COORDINATES    = 63,
867    //TARGET_DEST_TARGET_ENEMY_UNKNOWN
868    TARGET_DEST_TARGET_FRONT           = 64,
869    TARGET_DEST_TARGET_BACK            = 65,                // uses in teleport behind spells
870    TARGET_DEST_TARGET_RIGHT           = 66,
871    TARGET_DEST_TARGET_LEFT            = 67,
872    TARGET_DEST_TARGET_ENEMY_UNKNOWN2  = 70,
873    TARGET_DEST_CASTER_RANDOM          = 72,
874    TARGET_DEST_CASTER_RADIUS          = 73,
875    TARGET_DEST_TARGET_RANDOM          = 74,
876    TARGET_DEST_TARGET_RADIUS          = 75,
877    TARGET_DEST_CHANNEL                = 76,
878    TARGET_SINGLE_ENEMY                = 77,
879    //TARGET_UNIT_CHANNEL
880    TARGET_DEST_CASTER_FRONT_UNKNOWN   = 78,
881    TARGET_DEST_TABLE_UNKNOWN2         = 80,
882    TARGET_DEST_DEST_RANDOM            = 86,
883    TARGET_SELF2                       = 87,
884    //TARGET_DEST_DEST
885    TARGET_UNIT_AREA_ALL_CHANNEL       = 88,
886    TARGET_NONCOMBAT_PET               = 90,
887    //TARGET_UNIT_MINIPET
888};
889
890enum SpellMissInfo
891{
892    SPELL_MISS_NONE                    = 0,
893    SPELL_MISS_MISS                    = 1,
894    SPELL_MISS_RESIST                  = 2,
895    SPELL_MISS_DODGE                   = 3,
896    SPELL_MISS_PARRY                   = 4,
897    SPELL_MISS_BLOCK                   = 5,
898    SPELL_MISS_EVADE                   = 6,
899    SPELL_MISS_IMMUNE                  = 7,
900    SPELL_MISS_IMMUNE2                 = 8,
901    SPELL_MISS_DEFLECT                 = 9,
902    SPELL_MISS_ABSORB                  = 10,
903    SPELL_MISS_REFLECT                 = 11,
904};
905
906enum SpellHitType
907{
908    SPELL_HIT_TYPE_UNK1 = 0x00001,
909    SPELL_HIT_TYPE_CRIT = 0x00002,
910    SPELL_HIT_TYPE_UNK2 = 0x00004,
911    SPELL_HIT_TYPE_UNK3 = 0x00008,
912    SPELL_HIT_TYPE_UNK4 = 0x00020
913};
914
915enum SpellDmgClass
916{
917    SPELL_DAMAGE_CLASS_NONE     = 0,
918    SPELL_DAMAGE_CLASS_MAGIC    = 1,
919    SPELL_DAMAGE_CLASS_MELEE    = 2,
920    SPELL_DAMAGE_CLASS_RANGED   = 3
921};
922
923enum SpellPreventionType
924{
925    SPELL_PREVENTION_TYPE_NONE      = 0,
926    SPELL_PREVENTION_TYPE_SILENCE   = 1,
927    SPELL_PREVENTION_TYPE_PACIFY    = 2
928};
929
930enum GameobjectTypes
931{
932    GAMEOBJECT_TYPE_DOOR                   = 0,
933    GAMEOBJECT_TYPE_BUTTON                 = 1,
934    GAMEOBJECT_TYPE_QUESTGIVER             = 2,
935    GAMEOBJECT_TYPE_CHEST                  = 3,
936    GAMEOBJECT_TYPE_BINDER                 = 4,
937    GAMEOBJECT_TYPE_GENERIC                = 5,
938    GAMEOBJECT_TYPE_TRAP                   = 6,
939    GAMEOBJECT_TYPE_CHAIR                  = 7,
940    GAMEOBJECT_TYPE_SPELL_FOCUS            = 8,
941    GAMEOBJECT_TYPE_TEXT                   = 9,
942    GAMEOBJECT_TYPE_GOOBER                 = 10,
943    GAMEOBJECT_TYPE_TRANSPORT              = 11,
944    GAMEOBJECT_TYPE_AREADAMAGE             = 12,
945    GAMEOBJECT_TYPE_CAMERA                 = 13,
946    GAMEOBJECT_TYPE_MAP_OBJECT             = 14,
947    GAMEOBJECT_TYPE_MO_TRANSPORT           = 15,
948    GAMEOBJECT_TYPE_DUEL_ARBITER           = 16,
949    GAMEOBJECT_TYPE_FISHINGNODE            = 17,
950    GAMEOBJECT_TYPE_SUMMONING_RITUAL       = 18,
951    GAMEOBJECT_TYPE_MAILBOX                = 19,
952    GAMEOBJECT_TYPE_AUCTIONHOUSE           = 20,
953    GAMEOBJECT_TYPE_GUARDPOST              = 21,
954    GAMEOBJECT_TYPE_SPELLCASTER            = 22,
955    GAMEOBJECT_TYPE_MEETINGSTONE           = 23,
956    GAMEOBJECT_TYPE_FLAGSTAND              = 24,
957    GAMEOBJECT_TYPE_FISHINGHOLE            = 25,
958    GAMEOBJECT_TYPE_FLAGDROP               = 26,
959    GAMEOBJECT_TYPE_MINI_GAME              = 27,
960    GAMEOBJECT_TYPE_LOTTERY_KIOSK          = 28,
961    GAMEOBJECT_TYPE_CAPTURE_POINT          = 29,
962    GAMEOBJECT_TYPE_AURA_GENERATOR         = 30,
963    GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY     = 31,
964    GAMEOBJECT_TYPE_BARBER_CHAIR           = 32,
965    GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING  = 33,
966    GAMEOBJECT_TYPE_GUILD_BANK             = 34,
967};
968
969#define MAX_GAMEOBJECT_TYPE                  35             // sending to client this or greater value can crash client.
970
971#define GAMEOBJECT_FISHINGNODE_ENTRY        35591           // Better to define it somewhere instead of hardcoding everywhere
972
973enum GameObjectFlags
974{
975    GO_FLAG_IN_USE          = 0x01,                         //disables interaction while animated
976    GO_FLAG_LOCKED          = 0x02,                         //require key, spell, event, etc to be opened. Makes "Locked" appear in tooltip
977    GO_FLAG_INTERACT_COND   = 0x04,                         //cannot interact (condition to interact)
978    GO_FLAG_TRANSPORT       = 0x08,                         //any kind of transport? Object can transport (elevator, boat, car)
979    GO_FLAG_UNK1            = 0x10,                         //
980    GO_FLAG_NODESPAWN       = 0x20,                         //never despawn, typically for doors, they just change state
981    GO_FLAG_TRIGGERED       = 0x40,                         //typically, summoned objects. Triggered by spell or other events
982};
983
984enum TextEmotes
985{
986    TEXTEMOTE_AGREE                = 1,
987    TEXTEMOTE_AMAZE                = 2,
988    TEXTEMOTE_ANGRY                = 3,
989    TEXTEMOTE_APOLOGIZE            = 4,
990    TEXTEMOTE_APPLAUD              = 5,
991    TEXTEMOTE_BASHFUL              = 6,
992    TEXTEMOTE_BECKON               = 7,
993    TEXTEMOTE_BEG                  = 8,
994    TEXTEMOTE_BITE                 = 9,
995    TEXTEMOTE_BLEED                = 10,
996    TEXTEMOTE_BLINK                = 11,
997    TEXTEMOTE_BLUSH                = 12,
998    TEXTEMOTE_BONK                 = 13,
999    TEXTEMOTE_BORED                = 14,
1000    TEXTEMOTE_BOUNCE               = 15,
1001    TEXTEMOTE_BRB                  = 16,
1002    TEXTEMOTE_BOW                  = 17,
1003    TEXTEMOTE_BURP                 = 18,
1004    TEXTEMOTE_BYE                  = 19,
1005    TEXTEMOTE_CACKLE               = 20,
1006    TEXTEMOTE_CHEER                = 21,
1007    TEXTEMOTE_CHICKEN              = 22,
1008    TEXTEMOTE_CHUCKLE              = 23,
1009    TEXTEMOTE_CLAP                 = 24,
1010    TEXTEMOTE_CONFUSED             = 25,
1011    TEXTEMOTE_CONGRATULATE         = 26,
1012    TEXTEMOTE_COUGH                = 27,
1013    TEXTEMOTE_COWER                = 28,
1014    TEXTEMOTE_CRACK                = 29,
1015    TEXTEMOTE_CRINGE               = 30,
1016    TEXTEMOTE_CRY                  = 31,
1017    TEXTEMOTE_CURIOUS              = 32,
1018    TEXTEMOTE_CURTSEY              = 33,
1019    TEXTEMOTE_DANCE                = 34,
1020    TEXTEMOTE_DRINK                = 35,
1021    TEXTEMOTE_DROOL                = 36,
1022    TEXTEMOTE_EAT                  = 37,
1023    TEXTEMOTE_EYE                  = 38,
1024    TEXTEMOTE_FART                 = 39,
1025    TEXTEMOTE_FIDGET               = 40,
1026    TEXTEMOTE_FLEX                 = 41,
1027    TEXTEMOTE_FROWN                = 42,
1028    TEXTEMOTE_GASP                 = 43,
1029    TEXTEMOTE_GAZE                 = 44,
1030    TEXTEMOTE_GIGGLE               = 45,
1031    TEXTEMOTE_GLARE                = 46,
1032    TEXTEMOTE_GLOAT                = 47,
1033    TEXTEMOTE_GREET                = 48,
1034    TEXTEMOTE_GRIN                 = 49,
1035    TEXTEMOTE_GROAN                = 50,
1036    TEXTEMOTE_GROVEL               = 51,
1037    TEXTEMOTE_GUFFAW               = 52,
1038    TEXTEMOTE_HAIL                 = 53,
1039    TEXTEMOTE_HAPPY                = 54,
1040    TEXTEMOTE_HELLO                = 55,
1041    TEXTEMOTE_HUG                  = 56,
1042    TEXTEMOTE_HUNGRY               = 57,
1043    TEXTEMOTE_KISS                 = 58,
1044    TEXTEMOTE_KNEEL                = 59,
1045    TEXTEMOTE_LAUGH                = 60,
1046    TEXTEMOTE_LAYDOWN              = 61,
1047    TEXTEMOTE_MESSAGE              = 62,
1048    TEXTEMOTE_MOAN                 = 63,
1049    TEXTEMOTE_MOON                 = 64,
1050    TEXTEMOTE_MOURN                = 65,
1051    TEXTEMOTE_NO                   = 66,
1052    TEXTEMOTE_NOD                  = 67,
1053    TEXTEMOTE_NOSEPICK             = 68,
1054    TEXTEMOTE_PANIC                = 69,
1055    TEXTEMOTE_PEER                 = 70,
1056    TEXTEMOTE_PLEAD                = 71,
1057    TEXTEMOTE_POINT                = 72,
1058    TEXTEMOTE_POKE                 = 73,
1059    TEXTEMOTE_PRAY                 = 74,
1060    TEXTEMOTE_ROAR                 = 75,
1061    TEXTEMOTE_ROFL                 = 76,
1062    TEXTEMOTE_RUDE                 = 77,
1063    TEXTEMOTE_SALUTE               = 78,
1064    TEXTEMOTE_SCRATCH              = 79,
1065    TEXTEMOTE_SEXY                 = 80,
1066    TEXTEMOTE_SHAKE                = 81,
1067    TEXTEMOTE_SHOUT                = 82,
1068    TEXTEMOTE_SHRUG                = 83,
1069    TEXTEMOTE_SHY                  = 84,
1070    TEXTEMOTE_SIGH                 = 85,
1071    TEXTEMOTE_SIT                  = 86,
1072    TEXTEMOTE_SLEEP                = 87,
1073    TEXTEMOTE_SNARL                = 88,
1074    TEXTEMOTE_SPIT                 = 89,
1075    TEXTEMOTE_STARE                = 90,
1076    TEXTEMOTE_SURPRISED            = 91,
1077    TEXTEMOTE_SURRENDER            = 92,
1078    TEXTEMOTE_TALK                 = 93,
1079    TEXTEMOTE_TALKEX               = 94,
1080    TEXTEMOTE_TALKQ                = 95,
1081    TEXTEMOTE_TAP                  = 96,
1082    TEXTEMOTE_THANK                = 97,
1083    TEXTEMOTE_THREATEN             = 98,
1084    TEXTEMOTE_TIRED                = 99,
1085    TEXTEMOTE_VICTORY              = 100,
1086    TEXTEMOTE_WAVE                 = 101,
1087    TEXTEMOTE_WELCOME              = 102,
1088    TEXTEMOTE_WHINE                = 103,
1089    TEXTEMOTE_WHISTLE              = 104,
1090    TEXTEMOTE_WORK                 = 105,
1091    TEXTEMOTE_YAWN                 = 106,
1092    TEXTEMOTE_BOGGLE               = 107,
1093    TEXTEMOTE_CALM                 = 108,
1094    TEXTEMOTE_COLD                 = 109,
1095    TEXTEMOTE_COMFORT              = 110,
1096    TEXTEMOTE_CUDDLE               = 111,
1097    TEXTEMOTE_DUCK                 = 112,
1098    TEXTEMOTE_INSULT               = 113,
1099    TEXTEMOTE_INTRODUCE            = 114,
1100    TEXTEMOTE_JK                   = 115,
1101    TEXTEMOTE_LICK                 = 116,
1102    TEXTEMOTE_LISTEN               = 117,
1103    TEXTEMOTE_LOST                 = 118,
1104    TEXTEMOTE_MOCK                 = 119,
1105    TEXTEMOTE_PONDER               = 120,
1106    TEXTEMOTE_POUNCE               = 121,
1107    TEXTEMOTE_PRAISE               = 122,
1108    TEXTEMOTE_PURR                 = 123,
1109    TEXTEMOTE_PUZZLE               = 124,
1110    TEXTEMOTE_RAISE                = 125,
1111    TEXTEMOTE_READY                = 126,
1112    TEXTEMOTE_SHIMMY               = 127,
1113    TEXTEMOTE_SHIVER               = 128,
1114    TEXTEMOTE_SHOO                 = 129,
1115    TEXTEMOTE_SLAP                 = 130,
1116    TEXTEMOTE_SMIRK                = 131,
1117    TEXTEMOTE_SNIFF                = 132,
1118    TEXTEMOTE_SNUB                 = 133,
1119    TEXTEMOTE_SOOTHE               = 134,
1120    TEXTEMOTE_STINK                = 135,
1121    TEXTEMOTE_TAUNT                = 136,
1122    TEXTEMOTE_TEASE                = 137,
1123    TEXTEMOTE_THIRSTY              = 138,
1124    TEXTEMOTE_VETO                 = 139,
1125    TEXTEMOTE_SNICKER              = 140,
1126    TEXTEMOTE_STAND                = 141,
1127    TEXTEMOTE_TICKLE               = 142,
1128    TEXTEMOTE_VIOLIN               = 143,
1129    TEXTEMOTE_SMILE                = 163,
1130    TEXTEMOTE_RASP                 = 183,
1131    TEXTEMOTE_PITY                 = 203,
1132    TEXTEMOTE_GROWL                = 204,
1133    TEXTEMOTE_BARK                 = 205,
1134    TEXTEMOTE_SCARED               = 223,
1135    TEXTEMOTE_FLOP                 = 224,
1136    TEXTEMOTE_LOVE                 = 225,
1137    TEXTEMOTE_MOO                  = 226,
1138    TEXTEMOTE_OPENFIRE             = 327,
1139    TEXTEMOTE_FLIRT                = 328,
1140    TEXTEMOTE_JOKE                 = 329,
1141    TEXTEMOTE_COMMEND              = 243,
1142    TEXTEMOTE_WINK                 = 363,
1143    TEXTEMOTE_PAT                  = 364,
1144    TEXTEMOTE_SERIOUS              = 365,
1145    TEXTEMOTE_MOUNTSPECIAL         = 366,
1146    TEXTEMOTE_GOODLUCK             = 367,
1147    TEXTEMOTE_BLAME                = 368,
1148    TEXTEMOTE_BLANK                = 369,
1149    TEXTEMOTE_BRANDISH             = 370,
1150    TEXTEMOTE_BREATH               = 371,
1151    TEXTEMOTE_DISAGREE             = 372,
1152    TEXTEMOTE_DOUBT                = 373,
1153    TEXTEMOTE_EMBARRASS            = 374,
1154    TEXTEMOTE_ENCOURAGE            = 375,
1155    TEXTEMOTE_ENEMY                = 376,
1156    TEXTEMOTE_EYEBROW              = 377,
1157    TEXTEMOTE_TOAST                = 378
1158};
1159
1160enum Emote
1161{
1162    EMOTE_ONESHOT_NONE                 = 0,
1163    EMOTE_ONESHOT_TALK                 = 1,
1164    EMOTE_ONESHOT_BOW                  = 2,
1165    EMOTE_ONESHOT_WAVE                 = 3,
1166    EMOTE_ONESHOT_CHEER                = 4,
1167    EMOTE_ONESHOT_EXCLAMATION          = 5,
1168    EMOTE_ONESHOT_QUESTION             = 6,
1169    EMOTE_ONESHOT_EAT                  = 7,
1170    EMOTE_STATE_DANCE                  = 10,
1171    EMOTE_ONESHOT_LAUGH                = 11,
1172    EMOTE_STATE_SLEEP                  = 12,
1173    EMOTE_STATE_SIT                    = 13,
1174    EMOTE_ONESHOT_RUDE                 = 14,
1175    EMOTE_ONESHOT_ROAR                 = 15,
1176    EMOTE_ONESHOT_KNEEL                = 16,
1177    EMOTE_ONESHOT_KISS                 = 17,
1178    EMOTE_ONESHOT_CRY                  = 18,
1179    EMOTE_ONESHOT_CHICKEN              = 19,
1180    EMOTE_ONESHOT_BEG                  = 20,
1181    EMOTE_ONESHOT_APPLAUD              = 21,
1182    EMOTE_ONESHOT_SHOUT                = 22,
1183    EMOTE_ONESHOT_FLEX                 = 23,
1184    EMOTE_ONESHOT_SHY                  = 24,
1185    EMOTE_ONESHOT_POINT                = 25,
1186    EMOTE_STATE_STAND                  = 26,
1187    EMOTE_STATE_READYUNARMED           = 27,
1188    EMOTE_STATE_WORK                   = 28,
1189    EMOTE_STATE_POINT                  = 29,
1190    EMOTE_STATE_NONE                   = 30,
1191    EMOTE_ONESHOT_WOUND                = 33,
1192    EMOTE_ONESHOT_WOUNDCRITICAL        = 34,
1193    EMOTE_ONESHOT_ATTACKUNARMED        = 35,
1194    EMOTE_ONESHOT_ATTACK1H             = 36,
1195    EMOTE_ONESHOT_ATTACK2HTIGHT        = 37,
1196    EMOTE_ONESHOT_ATTACK2HLOOSE        = 38,
1197    EMOTE_ONESHOT_PARRYUNARMED         = 39,
1198    EMOTE_ONESHOT_PARRYSHIELD          = 43,
1199    EMOTE_ONESHOT_READYUNARMED         = 44,
1200    EMOTE_ONESHOT_READY1H              = 45,
1201    EMOTE_ONESHOT_READYBOW             = 48,
1202    EMOTE_ONESHOT_SPELLPRECAST         = 50,
1203    EMOTE_ONESHOT_SPELLCAST            = 51,
1204    EMOTE_ONESHOT_BATTLEROAR           = 53,
1205    EMOTE_ONESHOT_SPECIALATTACK1H      = 54,
1206    EMOTE_ONESHOT_KICK                 = 60,
1207    EMOTE_ONESHOT_ATTACKTHROWN         = 61,
1208    EMOTE_STATE_STUN                   = 64,
1209    EMOTE_STATE_DEAD                   = 65,
1210    EMOTE_ONESHOT_SALUTE               = 66,
1211    EMOTE_STATE_KNEEL                  = 68,
1212    EMOTE_STATE_USESTANDING            = 69,
1213    EMOTE_ONESHOT_WAVE_NOSHEATHE       = 70,
1214    EMOTE_ONESHOT_CHEER_NOSHEATHE      = 71,
1215    EMOTE_ONESHOT_EAT_NOSHEATHE        = 92,
1216    EMOTE_STATE_STUN_NOSHEATHE         = 93,
1217    EMOTE_ONESHOT_DANCE                = 94,
1218    EMOTE_ONESHOT_SALUTE_NOSHEATH      = 113,
1219    EMOTE_STATE_USESTANDING_NOSHEATHE  = 133,
1220    EMOTE_ONESHOT_LAUGH_NOSHEATHE      = 153,
1221    EMOTE_STATE_WORK_NOSHEATHE         = 173,
1222    EMOTE_STATE_SPELLPRECAST           = 193,
1223    EMOTE_ONESHOT_READYRIFLE           = 213,
1224    EMOTE_STATE_READYRIFLE             = 214,
1225    EMOTE_STATE_WORK_NOSHEATHE_MINING  = 233,
1226    EMOTE_STATE_WORK_NOSHEATHE_CHOPWOOD= 234,
1227    EMOTE_zzOLDONESHOT_LIFTOFF         = 253,
1228    EMOTE_ONESHOT_LIFTOFF              = 254,
1229    EMOTE_ONESHOT_YES                  = 273,
1230    EMOTE_ONESHOT_NO                   = 274,
1231    EMOTE_ONESHOT_TRAIN                = 275,
1232    EMOTE_ONESHOT_LAND                 = 293,
1233    EMOTE_STATE_AT_EASE                = 313,
1234    EMOTE_STATE_READY1H                = 333,
1235    EMOTE_STATE_SPELLKNEELSTART        = 353,
1236    EMOTE_STATE_SUBMERGED              = 373,
1237    EMOTE_ONESHOT_SUBMERGE             = 374,
1238    EMOTE_STATE_READY2H                = 375,
1239    EMOTE_STATE_READYBOW               = 376,
1240    EMOTE_ONESHOT_MOUNTSPECIAL         = 377,
1241    EMOTE_STATE_TALK                   = 378,
1242    EMOTE_STATE_FISHING                = 379,
1243    EMOTE_ONESHOT_FISHING              = 380,
1244    EMOTE_ONESHOT_LOOT                 = 381,
1245    EMOTE_STATE_WHIRLWIND              = 382,
1246    EMOTE_STATE_DROWNED                = 383,
1247    EMOTE_STATE_HOLD_BOW               = 384,
1248    EMOTE_STATE_HOLD_RIFLE             = 385,
1249    EMOTE_STATE_HOLD_THROWN            = 386,
1250    EMOTE_ONESHOT_DROWN                = 387,
1251    EMOTE_ONESHOT_STOMP                = 388,
1252    EMOTE_ONESHOT_ATTACKOFF            = 389,
1253    EMOTE_ONESHOT_ATTACKOFFPIERCE      = 390,
1254    EMOTE_STATE_ROAR                   = 391,
1255    EMOTE_STATE_LAUGH                  = 392,
1256    EMOTE_ONESHOT_CREATURE_SPECIAL     = 393,
1257    EMOTE_ONESHOT_JUMPLANDRUN          = 394,
1258    EMOTE_ONESHOT_JUMPEND              = 395,
1259    EMOTE_ONESHOT_TALK_NOSHEATHE       = 396,
1260    EMOTE_ONESHOT_POINT_NOSHEATHE      = 397,
1261    EMOTE_STATE_CANNIBALIZE            = 398,
1262    EMOTE_ONESHOT_JUMPSTART            = 399,
1263    EMOTE_STATE_DANCESPECIAL           = 400,
1264    EMOTE_ONESHOT_DANCESPECIAL         = 401,
1265    EMOTE_ONESHOT_CUSTOMSPELL01        = 402,
1266    EMOTE_ONESHOT_CUSTOMSPELL02        = 403,
1267    EMOTE_ONESHOT_CUSTOMSPELL03        = 404,
1268    EMOTE_ONESHOT_CUSTOMSPELL04        = 405,
1269    EMOTE_ONESHOT_CUSTOMSPELL05        = 406,
1270    EMOTE_ONESHOT_CUSTOMSPELL06        = 407,
1271    EMOTE_ONESHOT_CUSTOMSPELL07        = 408,
1272    EMOTE_ONESHOT_CUSTOMSPELL08        = 409,
1273    EMOTE_ONESHOT_CUSTOMSPELL09        = 410,
1274    EMOTE_ONESHOT_CUSTOMSPELL10        = 411,
1275    EMOTE_STATE_EXCLAIM                = 412,
1276    EMOTE_STATE_SIT_CHAIR_MED          = 415,
1277    EMOTE_STATE_SPELLEFFECT_HOLD       = 422
1278};
1279
1280enum Anim
1281{
1282    ANIM_STAND                     = 0x0,
1283    ANIM_DEATH                     = 0x1,
1284    ANIM_SPELL                     = 0x2,
1285    ANIM_STOP                      = 0x3,
1286    ANIM_WALK                      = 0x4,
1287    ANIM_RUN                       = 0x5,
1288    ANIM_DEAD                      = 0x6,
1289    ANIM_RISE                      = 0x7,
1290    ANIM_STANDWOUND                = 0x8,
1291    ANIM_COMBATWOUND               = 0x9,
1292    ANIM_COMBATCRITICAL            = 0xA,
1293    ANIM_SHUFFLE_LEFT              = 0xB,
1294    ANIM_SHUFFLE_RIGHT             = 0xC,
1295    ANIM_WALK_BACKWARDS            = 0xD,
1296    ANIM_STUN                      = 0xE,
1297    ANIM_HANDS_CLOSED              = 0xF,
1298    ANIM_ATTACKUNARMED             = 0x10,
1299    ANIM_ATTACK1H                  = 0x11,
1300    ANIM_ATTACK2HTIGHT             = 0x12,
1301    ANIM_ATTACK2HLOOSE             = 0x13,
1302    ANIM_PARRYUNARMED              = 0x14,
1303    ANIM_PARRY1H                   = 0x15,
1304    ANIM_PARRY2HTIGHT              = 0x16,
1305    ANIM_PARRY2HLOOSE              = 0x17,
1306    ANIM_PARRYSHIELD               = 0x18,
1307    ANIM_READYUNARMED              = 0x19,
1308    ANIM_READY1H                   = 0x1A,
1309    ANIM_READY2HTIGHT              = 0x1B,
1310    ANIM_READY2HLOOSE              = 0x1C,
1311    ANIM_READYBOW                  = 0x1D,
1312    ANIM_DODGE                     = 0x1E,
1313    ANIM_SPELLPRECAST              = 0x1F,
1314    ANIM_SPELLCAST                 = 0x20,
1315    ANIM_SPELLCASTAREA             = 0x21,
1316    ANIM_NPCWELCOME                = 0x22,
1317    ANIM_NPCGOODBYE                = 0x23,
1318    ANIM_BLOCK                     = 0x24,
1319    ANIM_JUMPSTART                 = 0x25,
1320    ANIM_JUMP                      = 0x26,
1321    ANIM_JUMPEND                   = 0x27,
1322    ANIM_FALL                      = 0x28,
1323    ANIM_SWIMIDLE                  = 0x29,
1324    ANIM_SWIM                      = 0x2A,
1325    ANIM_SWIM_LEFT                 = 0x2B,
1326    ANIM_SWIM_RIGHT                = 0x2C,
1327    ANIM_SWIM_BACKWARDS            = 0x2D,
1328    ANIM_ATTACKBOW                 = 0x2E,
1329    ANIM_FIREBOW                   = 0x2F,
1330    ANIM_READYRIFLE                = 0x30,
1331    ANIM_ATTACKRIFLE               = 0x31,
1332    ANIM_LOOT                      = 0x32,
1333    ANIM_SPELL_PRECAST_DIRECTED    = 0x33,
1334    ANIM_SPELL_PRECAST_OMNI        = 0x34,
1335    ANIM_SPELL_CAST_DIRECTED       = 0x35,
1336    ANIM_SPELL_CAST_OMNI           = 0x36,
1337    ANIM_SPELL_BATTLEROAR          = 0x37,
1338    ANIM_SPELL_READYABILITY        = 0x38,
1339    ANIM_SPELL_SPECIAL1H           = 0x39,
1340    ANIM_SPELL_SPECIAL2H           = 0x3A,
1341    ANIM_SPELL_SHIELDBASH          = 0x3B,
1342    ANIM_EMOTE_TALK                = 0x3C,
1343    ANIM_EMOTE_EAT                 = 0x3D,
1344    ANIM_EMOTE_WORK                = 0x3E,
1345    ANIM_EMOTE_USE_STANDING        = 0x3F,
1346    ANIM_EMOTE_EXCLAMATION         = 0x40,
1347    ANIM_EMOTE_QUESTION            = 0x41,
1348    ANIM_EMOTE_BOW                 = 0x42,
1349    ANIM_EMOTE_WAVE                = 0x43,
1350    ANIM_EMOTE_CHEER               = 0x44,
1351    ANIM_EMOTE_DANCE               = 0x45,
1352    ANIM_EMOTE_LAUGH               = 0x46,
1353    ANIM_EMOTE_SLEEP               = 0x47,
1354    ANIM_EMOTE_SIT_GROUND          = 0x48,
1355    ANIM_EMOTE_RUDE                = 0x49,
1356    ANIM_EMOTE_ROAR                = 0x4A,
1357    ANIM_EMOTE_KNEEL               = 0x4B,
1358    ANIM_EMOTE_KISS                = 0x4C,
1359    ANIM_EMOTE_CRY                 = 0x4D,
1360    ANIM_EMOTE_CHICKEN             = 0x4E,
1361    ANIM_EMOTE_BEG                 = 0x4F,
1362    ANIM_EMOTE_APPLAUD             = 0x50,
1363    ANIM_EMOTE_SHOUT               = 0x51,
1364    ANIM_EMOTE_FLEX                = 0x52,
1365    ANIM_EMOTE_SHY                 = 0x53,
1366    ANIM_EMOTE_POINT               = 0x54,
1367    ANIM_ATTACK1HPIERCE            = 0x55,
1368    ANIM_ATTACK2HLOOSEPIERCE       = 0x56,
1369    ANIM_ATTACKOFF                 = 0x57,
1370    ANIM_ATTACKOFFPIERCE           = 0x58,
1371    ANIM_SHEATHE                   = 0x59,
1372    ANIM_HIPSHEATHE                = 0x5A,
1373    ANIM_MOUNT                     = 0x5B,
1374    ANIM_RUN_LEANRIGHT             = 0x5C,
1375    ANIM_RUN_LEANLEFT              = 0x5D,
1376    ANIM_MOUNT_SPECIAL             = 0x5E,
1377    ANIM_KICK                      = 0x5F,
1378    ANIM_SITDOWN                   = 0x60,
1379    ANIM_SITTING                   = 0x61,
1380    ANIM_SITUP                     = 0x62,
1381    ANIM_SLEEPDOWN                 = 0x63,
1382    ANIM_SLEEPING                  = 0x64,
1383    ANIM_SLEEPUP                   = 0x65,
1384    ANIM_SITCHAIRLOW               = 0x66,
1385    ANIM_SITCHAIRMEDIUM            = 0x67,
1386    ANIM_SITCHAIRHIGH              = 0x68,
1387    ANIM_LOADBOW                   = 0x69,
1388    ANIM_LOADRIFLE                 = 0x6A,
1389    ANIM_ATTACKTHROWN              = 0x6B,
1390    ANIM_READYTHROWN               = 0x6C,
1391    ANIM_HOLDBOW                   = 0x6D,
1392    ANIM_HOLDRIFLE                 = 0x6E,
1393    ANIM_HOLDTHROWN                = 0x6F,
1394    ANIM_LOADTHROWN                = 0x70,
1395    ANIM_EMOTE_SALUTE              = 0x71,
1396    ANIM_KNEELDOWN                 = 0x72,
1397    ANIM_KNEELING                  = 0x73,
1398    ANIM_KNEELUP                   = 0x74,
1399    ANIM_ATTACKUNARMEDOFF          = 0x75,
1400    ANIM_SPECIALUNARMED            = 0x76,
1401    ANIM_STEALTHWALK               = 0x77,
1402    ANIM_STEALTHSTAND              = 0x78,
1403    ANIM_KNOCKDOWN                 = 0x79,
1404    ANIM_EATING                    = 0x7A,
1405    ANIM_USESTANDINGLOOP           = 0x7B,
1406    ANIM_CHANNELCASTDIRECTED       = 0x7C,
1407    ANIM_CHANNELCASTOMNI           = 0x7D,
1408    ANIM_WHIRLWIND                 = 0x7E,
1409    ANIM_BIRTH                     = 0x7F,
1410    ANIM_USESTANDINGSTART          = 0x80,
1411    ANIM_USESTANDINGEND            = 0x81,
1412    ANIM_HOWL                      = 0x82,
1413    ANIM_DROWN                     = 0x83,
1414    ANIM_DROWNED                   = 0x84,
1415    ANIM_FISHINGCAST               = 0x85,
1416    ANIM_FISHINGLOOP               = 0x86,
1417    ANIM_FLY                       = 0x87,
1418    ANIM_EMOTE_WORK_NO_SHEATHE     = 0x88,
1419    ANIM_EMOTE_STUN_NO_SHEATHE     = 0x89,
1420    ANIM_EMOTE_USE_STANDING_NO_SHEATHE= 0x8A,
1421    ANIM_SPELL_SLEEP_DOWN          = 0x8B,
1422    ANIM_SPELL_KNEEL_START         = 0x8C,
1423    ANIM_SPELL_KNEEL_LOOP          = 0x8D,
1424    ANIM_SPELL_KNEEL_END           = 0x8E,
1425    ANIM_SPRINT                    = 0x8F,
1426    ANIM_IN_FIGHT                  = 0x90,
1427
1428    ANIM_GAMEOBJ_SPAWN             = 145,
1429    ANIM_GAMEOBJ_CLOSE             = 146,
1430    ANIM_GAMEOBJ_CLOSED            = 147,
1431    ANIM_GAMEOBJ_OPEN              = 148,
1432    ANIM_GAMEOBJ_OPENED            = 149,
1433    ANIM_GAMEOBJ_DESTROY           = 150,
1434    ANIM_GAMEOBJ_DESTROYED         = 151,
1435    ANIM_GAMEOBJ_REBUILD           = 152,
1436    ANIM_GAMEOBJ_CUSTOM0           = 153,
1437    ANIM_GAMEOBJ_CUSTOM1           = 154,
1438    ANIM_GAMEOBJ_CUSTOM2           = 155,
1439    ANIM_GAMEOBJ_CUSTOM3           = 156,
1440    ANIM_GAMEOBJ_DESPAWN           = 157,
1441    ANIM_HOLD                      = 158,
1442    ANIM_DECAY                     = 159,
1443    ANIM_BOWPULL                   = 160,
1444    ANIM_BOWRELEASE                = 161,
1445    ANIM_SHIPSTART                 = 162,
1446    ANIM_SHIPMOVEING               = 163,
1447    ANIM_SHIPSTOP                  = 164,
1448    ANIM_GROUPARROW                = 165,
1449    ANIM_ARROW                     = 166,
1450    ANIM_CORPSEARROW               = 167,
1451    ANIM_GUIDEARROW                = 168,
1452    ANIM_SWAY                      = 169,
1453    ANIM_DRUIDCATPOUNCE            = 170,
1454    ANIM_DRUIDCATRIP               = 171,
1455    ANIM_DRUIDCATRAKE              = 172,
1456    ANIM_DRUIDCATRAVAGE            = 173,
1457    ANIM_DRUIDCATCLAW              = 174,
1458    ANIM_DRUIDCATCOWER             = 175,
1459    ANIM_DRUIDBEARSWIPE            = 176,
1460    ANIM_DRUIDBEARBITE             = 177,
1461    ANIM_DRUIDBEARMAUL             = 178,
1462    ANIM_DRUIDBEARBASH             = 179,
1463    ANIM_DRAGONTAIL                = 180,
1464    ANIM_DRAGONSTOMP               = 181,
1465    ANIM_DRAGONSPIT                = 182,
1466    ANIM_DRAGONSPITHOVER           = 183,
1467    ANIM_DRAGONSPITFLY             = 184,
1468    ANIM_EMOTEYES                  = 185,
1469    ANIM_EMOTENO                   = 186,
1470    ANIM_JUMPLANDRUN               = 187,
1471    ANIM_LOOTHOLD                  = 188,
1472    ANIM_LOOTUP                    = 189,
1473    ANIM_STANDHIGH                 = 190,
1474    ANIM_IMPACT                    = 191,
1475    ANIM_LIFTOFF                   = 192,
1476    ANIM_HOVER                     = 193,
1477    ANIM_SUCCUBUSENTICE            = 194,
1478    ANIM_EMOTETRAIN                = 195,
1479    ANIM_EMOTEDEAD                 = 196,
1480    ANIM_EMOTEDANCEONCE            = 197,
1481    ANIM_DEFLECT                   = 198,
1482    ANIM_EMOTEEATNOSHEATHE         = 199,
1483    ANIM_LAND                      = 200,
1484    ANIM_SUBMERGE                  = 201,
1485    ANIM_SUBMERGED                 = 202,
1486    ANIM_CANNIBALIZE               = 203,
1487    ANIM_ARROWBIRTH                = 204,
1488    ANIM_GROURARROWBIRTH           = 205,
1489    ANIM_CORPSEARROWBIRTH          = 206,
1490    ANIM_GUIDEARROWBIRTH           = 207,
1491    ANIM_EMOTETALKNOSHEATHE        = 208,
1492    ANIM_EMOTEPOINTNOSHEATHE       = 209,
1493    ANIM_EMOTESALUTENOSHEATHE      = 210,
1494    ANIM_EMOTEDANCESPECIAL         = 211,
1495    ANIM_MUTILATE                  = 212,
1496    ANIM_CUSTOMSPELL01             = 213,
1497    ANIM_CUSTOMSPELL02             = 214,
1498    ANIM_CUSTOMSPELL03             = 215,
1499    ANIM_CUSTOMSPELL04             = 216,
1500    ANIM_CUSTOMSPELL05             = 217,
1501    ANIM_CUSTOMSPELL06             = 218,
1502    ANIM_CUSTOMSPELL07             = 219,
1503    ANIM_CUSTOMSPELL08             = 220,
1504    ANIM_CUSTOMSPELL09             = 221,
1505    ANIM_CUSTOMSPELL10             = 222,
1506    ANIM_StealthRun                = 223
1507};
1508
1509enum LockKeyType
1510{
1511    LOCK_KEY_NONE  = 0,
1512    LOCK_KEY_ITEM  = 1,
1513    LOCK_KEY_SKILL = 2
1514};
1515
1516enum LockType
1517{
1518    LOCKTYPE_PICKLOCK              = 1,
1519    LOCKTYPE_HERBALISM             = 2,
1520    LOCKTYPE_MINING                = 3,
1521    LOCKTYPE_DISARM_TRAP           = 4,
1522    LOCKTYPE_OPEN                  = 5,
1523    LOCKTYPE_TREASURE              = 6,
1524    LOCKTYPE_CALCIFIED_ELVEN_GEMS  = 7,
1525    LOCKTYPE_CLOSE                 = 8,
1526    LOCKTYPE_ARM_TRAP              = 9,
1527    LOCKTYPE_QUICK_OPEN            = 10,
1528    LOCKTYPE_QUICK_CLOSE           = 11,
1529    LOCKTYPE_OPEN_TINKERING        = 12,
1530    LOCKTYPE_OPEN_KNEELING         = 13,
1531    LOCKTYPE_OPEN_ATTACKING        = 14,
1532    LOCKTYPE_GAHZRIDIAN            = 15,
1533    LOCKTYPE_BLASTING              = 16,
1534    LOCKTYPE_SLOW_OPEN             = 17,
1535    LOCKTYPE_SLOW_CLOSE            = 18,
1536    LOCKTYPE_FISHING               = 19
1537};
1538
1539enum TrainerType                                            // this is important type for npcs!
1540{
1541    TRAINER_TYPE_CLASS             = 0,
1542    TRAINER_TYPE_MOUNTS            = 1,                     // on blizz it's 2
1543    TRAINER_TYPE_TRADESKILLS       = 2,
1544    TRAINER_TYPE_PETS              = 3
1545};
1546
1547#define MAX_TRAINER_TYPE 4
1548
1549enum CreatureType
1550{
1551    CREATURE_TYPE_BEAST            = 1,
1552    CREATURE_TYPE_DRAGONKIN        = 2,
1553    CREATURE_TYPE_DEMON            = 3,
1554    CREATURE_TYPE_ELEMENTAL        = 4,
1555    CREATURE_TYPE_GIANT            = 5,
1556    CREATURE_TYPE_UNDEAD           = 6,
1557    CREATURE_TYPE_HUMANOID         = 7,
1558    CREATURE_TYPE_CRITTER          = 8,
1559    CREATURE_TYPE_MECHANICAL       = 9,
1560    CREATURE_TYPE_NOT_SPECIFIED    = 10,
1561    CREATURE_TYPE_TOTEM            = 11,
1562    CREATURE_TYPE_NON_COMBAT_PET   = 12,
1563    CREATURE_TYPE_GAS_CLOUD        = 13
1564};
1565
1566uint32 const CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD = (1 << (CREATURE_TYPE_HUMANOID-1)) | (1 << (CREATURE_TYPE_UNDEAD-1));
1567
1568enum CreatureFamily
1569{
1570    CREATURE_FAMILY_WOLF           = 1,
1571    CREATURE_FAMILY_CAT            = 2,
1572    CREATURE_FAMILY_SPIDER         = 3,
1573    CREATURE_FAMILY_BEAR           = 4,
1574    CREATURE_FAMILY_BOAR           = 5,
1575    CREATURE_FAMILY_CROCILISK      = 6,
1576    CREATURE_FAMILY_CARRION_BIRD   = 7,
1577    CREATURE_FAMILY_CRAB           = 8,
1578    CREATURE_FAMILY_GORILLA        = 9,
1579    CREATURE_FAMILY_RAPTOR         = 11,
1580    CREATURE_FAMILY_TALLSTRIDER    = 12,
1581    CREATURE_FAMILY_FELHUNTER      = 15,
1582    CREATURE_FAMILY_VOIDWALKER     = 16,
1583    CREATURE_FAMILY_SUCCUBUS       = 17,
1584    CREATURE_FAMILY_DOOMGUARD      = 19,
1585    CREATURE_FAMILY_SCORPID        = 20,
1586    CREATURE_FAMILY_TURTLE         = 21,
1587    CREATURE_FAMILY_IMP            = 23,
1588    CREATURE_FAMILY_BAT            = 24,
1589    CREATURE_FAMILY_HYENA          = 25,
1590    CREATURE_FAMILY_OWL            = 26,
1591    CREATURE_FAMILY_WIND_SERPENT   = 27,
1592    CREATURE_FAMILY_REMOTE_CONTROL = 28,
1593    CREATURE_FAMILY_FELGUARD       = 29,
1594    CREATURE_FAMILY_DRAGONHAWK     = 30,
1595    CREATURE_FAMILY_RAVAGER        = 31,
1596    CREATURE_FAMILY_WARP_STALKER   = 32,
1597    CREATURE_FAMILY_SPOREBAT       = 33,
1598    CREATURE_FAMILY_NETHER_RAY     = 34,
1599    CREATURE_FAMILY_SERPENT        = 35,
1600    CREATURE_FAMILY_SEA_LION       = 36
1601};
1602
1603enum CreatureEliteType
1604{
1605    CREATURE_ELITE_NORMAL          = 0,
1606    CREATURE_ELITE_ELITE           = 1,
1607    CREATURE_ELITE_RAREELITE       = 2,
1608    CREATURE_ELITE_WORLDBOSS       = 3,
1609    CREATURE_ELITE_RARE            = 4,
1610    CREATURE_UNKNOWN               = 5                      // found in 2.2.3 for 2 mobs
1611};
1612
1613// values based at QuestInfo.dbc
1614enum QuestTypes
1615{
1616    QUEST_TYPE_ELITE               = 1,
1617    QUEST_TYPE_LIFE                = 21,
1618    QUEST_TYPE_PVP                 = 41,
1619    QUEST_TYPE_RAID                = 62,
1620    QUEST_TYPE_DUNGEON             = 81,
1621    QUEST_TYPE_WORLD_EVENT         = 82,
1622    QUEST_TYPE_LEGENDARY           = 83,
1623    QUEST_TYPE_ESCORT              = 84,
1624    QUEST_TYPE_HEROIC              = 85,
1625};
1626
1627// values based at QuestSort.dbc
1628enum QuestSort
1629{
1630    QUEST_SORT_EPIC                = 1,
1631    QUEST_SORT_WAILING_CAVERNS_OLD = 21,
1632    QUEST_SORT_SEASONAL            = 22,
1633    QUEST_SORT_UNDERCITY_OLD       = 23,
1634    QUEST_SORT_HERBALISM           = 24,
1635    QUEST_SORT_SCARLET_MONASTERY_OLD= 25,
1636    QUEST_SORT_ULDAMN_OLD          = 41,
1637    QUEST_SORT_WARLOCK             = 61,
1638    QUEST_SORT_WARRIOR             = 81,
1639    QUEST_SORT_SHAMAN              = 82,
1640    QUEST_SORT_FISHING             = 101,
1641    QUEST_SORT_BLACKSMITHING       = 121,
1642    QUEST_SORT_PALADIN             = 141,
1643    QUEST_SORT_MAGE                = 161,
1644    QUEST_SORT_ROGUE               = 162,
1645    QUEST_SORT_ALCHEMY             = 181,
1646    QUEST_SORT_LEATHERWORKING      = 182,
1647    QUEST_SORT_ENGINERING          = 201,
1648    QUEST_SORT_TREASURE_MAP        = 221,
1649    QUEST_SORT_SUNKEN_TEMPLE_OLD   = 241,
1650    QUEST_SORT_HUNTER              = 261,
1651    QUEST_SORT_PRIEST              = 262,
1652    QUEST_SORT_DRUID               = 263,
1653    QUEST_SORT_TAILORING           = 264,
1654    QUEST_SORT_SPECIAL             = 284,
1655    QUEST_SORT_COOKING             = 304,
1656    QUEST_SORT_FIRST_AID           = 324,
1657    QUEST_SORT_LEGENDARY           = 344,
1658    QUEST_SORT_DARKMOON_FAIRE      = 364,
1659    QUEST_SORT_AHN_QIRAJ_WAR       = 365,
1660    QUEST_SORT_LUNAR_FESTIVAL      = 366,
1661    QUEST_SORT_REPUTATION          = 367,
1662    QUEST_SORT_INVASION            = 368,
1663    QUEST_SORT_MIDSUMMER           = 369,
1664    QUEST_SORT_BREWFEST            = 370
1665};
1666
1667inline uint8 ClassByQuestSort(int32 QuestSort)
1668{
1669    switch(QuestSort)
1670    {
1671        case QUEST_SORT_WARLOCK: return CLASS_WARLOCK;
1672        case QUEST_SORT_WARRIOR: return CLASS_WARRIOR;
1673        case QUEST_SORT_SHAMAN:  return CLASS_SHAMAN;
1674        case QUEST_SORT_PALADIN: return CLASS_PALADIN;
1675        case QUEST_SORT_MAGE:    return CLASS_MAGE;
1676        case QUEST_SORT_ROGUE:   return CLASS_ROGUE;
1677        case QUEST_SORT_HUNTER:  return CLASS_HUNTER;
1678        case QUEST_SORT_PRIEST:  return CLASS_PRIEST;
1679        case QUEST_SORT_DRUID:   return CLASS_DRUID;
1680    }
1681    return 0;
1682}
1683
1684enum SkillType
1685{
1686    SKILL_FROST                    = 6,
1687    SKILL_FIRE                     = 8,
1688    SKILL_ARMS                     = 26,
1689    SKILL_COMBAT                   = 38,
1690    SKILL_SUBTLETY                 = 39,
1691    SKILL_POISONS                  = 40,
1692    SKILL_SWORDS                   = 43,
1693    SKILL_AXES                     = 44,
1694    SKILL_BOWS                     = 45,
1695    SKILL_GUNS                     = 46,
1696    SKILL_BEAST_MASTERY            = 50,
1697    SKILL_SURVIVAL                 = 51,
1698    SKILL_MACES                    = 54,
1699    SKILL_HOLY                     = 56,
1700    SKILL_2H_SWORDS                = 55,
1701    SKILL_SHADOW                   = 78,
1702    SKILL_DEFENSE                  = 95,
1703    SKILL_LANG_COMMON              = 98,
1704    SKILL_RACIAL_DWARVEN           = 101,
1705    SKILL_LANG_ORCISH              = 109,
1706    SKILL_LANG_DWARVEN             = 111,
1707    SKILL_LANG_DARNASSIAN          = 113,
1708    SKILL_LANG_TAURAHE             = 115,
1709    SKILL_DUAL_WIELD               = 118,
1710    SKILL_RACIAL_TAUREN            = 124,
1711    SKILL_ORC_RACIAL               = 125,
1712    SKILL_RACIAL_NIGHT_ELF         = 126,
1713    SKILL_FIRST_AID                = 129,
1714    SKILL_FERAL_COMBAT             = 134,
1715    SKILL_STAVES                   = 136,
1716    SKILL_LANG_THALASSIAN          = 137,
1717    SKILL_LANG_DRACONIC            = 138,
1718    SKILL_LANG_DEMON_TONGUE        = 139,
1719    SKILL_LANG_TITAN               = 140,
1720    SKILL_LANG_OLD_TONGUE          = 141,
1721    SKILL_SURVIVAL2                = 142,
1722    SKILL_RIDING_HORSE             = 148,
1723    SKILL_RIDING_WOLF              = 149,
1724    SKILL_RIDING_RAM               = 152,
1725    SKILL_RIDING_TIGER             = 150,
1726    SKILL_SWIMING                  = 155,
1727    SKILL_2H_MACES                 = 160,
1728    SKILL_UNARMED                  = 162,
1729    SKILL_MARKSMANSHIP             = 163,
1730    SKILL_BLACKSMITHING            = 164,
1731    SKILL_LEATHERWORKING           = 165,
1732    SKILL_ALCHEMY                  = 171,
1733    SKILL_2H_AXES                  = 172,
1734    SKILL_DAGGERS                  = 173,
1735    SKILL_THROWN                   = 176,
1736    SKILL_HERBALISM                = 182,
1737    SKILL_GENERIC_DND              = 183,
1738    SKILL_RETRIBUTION              = 184,
1739    SKILL_COOKING                  = 185,
1740    SKILL_MINING                   = 186,
1741    SKILL_PET_IMP                  = 188,
1742    SKILL_PET_FELHUNTER            = 189,
1743    SKILL_TAILORING                = 197,
1744    SKILL_ENGINERING               = 202,
1745    SKILL_PET_SPIDER               = 203,
1746    SKILL_PET_VOIDWALKER           = 204,
1747    SKILL_PET_SUCCUBUS             = 205,
1748    SKILL_PET_INFERNAL             = 206,
1749    SKILL_PET_DOOMGUARD            = 207,
1750    SKILL_PET_WOLF                 = 208,
1751    SKILL_PET_CAT                  = 209,
1752    SKILL_PET_BEAR                 = 210,
1753    SKILL_PET_BOAR                 = 211,
1754    SKILL_PET_CROCILISK            = 212,
1755    SKILL_PET_CARRION_BIRD         = 213,
1756    SKILL_PET_GORILLA              = 215,
1757    SKILL_PET_CRAB                 = 214,
1758    SKILL_PET_RAPTOR               = 217,
1759    SKILL_PET_TALLSTRIDER          = 218,
1760    SKILL_RACIAL_UNDED             = 220,
1761    SKILL_WEAPON_TALENTS           = 222,
1762    SKILL_CROSSBOWS                = 226,
1763    SKILL_SPEARS                   = 227,
1764    SKILL_WANDS                    = 228,
1765    SKILL_POLEARMS                 = 229,
1766    SKILL_PET_SCORPID              = 236,
1767    SKILL_ARCANE                   = 237,
1768    SKILL_OPEN_LOCK                = 242,
1769    SKILL_PET_TURTLE               = 251,
1770    SKILL_ASSASSINATION            = 253,
1771    SKILL_FURY                     = 256,
1772    SKILL_PROTECTION               = 257,
1773    SKILL_BEAST_TRAINING           = 261,
1774    SKILL_PROTECTION2              = 267,
1775    SKILL_PET_TALENTS              = 270,
1776    SKILL_PLATE_MAIL               = 293,
1777    SKILL_LANG_GNOMISH             = 313,
1778    SKILL_LANG_TROLL               = 315,
1779    SKILL_ENCHANTING               = 333,
1780    SKILL_DEMONOLOGY               = 354,
1781    SKILL_AFFLICTION               = 355,
1782    SKILL_FISHING                  = 356,
1783    SKILL_ENHANCEMENT              = 373,
1784    SKILL_RESTORATION              = 374,
1785    SKILL_ELEMENTAL_COMBAT         = 375,
1786    SKILL_SKINNING                 = 393,
1787    SKILL_MAIL                     = 413,
1788    SKILL_LEATHER                  = 414,
1789    SKILL_CLOTH                    = 415,
1790    SKILL_SHIELD                   = 433,
1791    SKILL_FIST_WEAPONS             = 473,
1792    SKILL_RIDING_RAPTOR            = 533,
1793    SKILL_RIDING_MECHANOSTRIDER    = 553,
1794    SKILL_RIDING_UNDEAD_HORSE      = 554,
1795    SKILL_RESTORATION2             = 573,
1796    SKILL_BALANCE                  = 574,
1797    SKILL_DESTRUCTION              = 593,
1798    SKILL_HOLY2                    = 594,
1799    SKILL_DISCIPLINE               = 613,
1800    SKILL_LOCKPICKING              = 633,
1801    SKILL_PET_BAT                  = 653,
1802    SKILL_PET_HYENA                = 654,
1803    SKILL_PET_OWL                  = 655,
1804    SKILL_PET_WIND_SERPENT         = 656,
1805    SKILL_LANG_GUTTERSPEAK         = 673,
1806    SKILL_RIDING_KODO              = 713,
1807    SKILL_RACIAL_TROLL             = 733,
1808    SKILL_RACIAL_GNOME             = 753,
1809    SKILL_RACIAL_HUMAN             = 754,
1810    SKILL_JEWELCRAFTING            = 755,
1811    SKILL_RACIAL_BLOODELF          = 756,
1812    SKILL_PET_EVENT_RC             = 758,
1813    SKILL_LANG_DRAENEI             = 759,
1814    SKILL_RACIAL_DRAENEI           = 760,
1815    SKILL_PET_FELGUARD             = 761,
1816    SKILL_RIDING                   = 762,
1817    SKILL_PET_DRAGONHAWK           = 763,
1818    SKILL_PET_NETHER_RAY           = 764,
1819    SKILL_PET_SPOREBAT             = 765,
1820    SKILL_PET_WARP_STALKER         = 766,
1821    SKILL_PET_RAVAGER              = 767,
1822    SKILL_PET_SERPENT              = 768,
1823    SKILL_INTERNAL                 = 769
1824};
1825
1826#define MAX_SKILL_TYPE               770
1827
1828inline uint32 SkillByQuestSort(int32 QuestSort)
1829{
1830    switch(QuestSort)
1831    {
1832        case QUEST_SORT_HERBALISM:      return SKILL_HERBALISM;
1833        case QUEST_SORT_FISHING:        return SKILL_FISHING;
1834        case QUEST_SORT_BLACKSMITHING:  return SKILL_BLACKSMITHING;
1835        case QUEST_SORT_ALCHEMY:        return SKILL_ALCHEMY;
1836        case QUEST_SORT_LEATHERWORKING: return SKILL_LEATHERWORKING;
1837        case QUEST_SORT_ENGINERING:     return SKILL_ENGINERING;
1838        case QUEST_SORT_TAILORING:      return SKILL_TAILORING;
1839        case QUEST_SORT_COOKING:        return SKILL_COOKING;
1840        case QUEST_SORT_FIRST_AID:      return SKILL_FIRST_AID;
1841    }
1842    return 0;
1843}
1844
1845enum SkillCategory
1846{
1847    SKILL_CATEGORY_ATTRIBUTES    =  5,
1848    SKILL_CATEGORY_WEAPON        =  6,
1849    SKILL_CATEGORY_CLASS         =  7,
1850    SKILL_CATEGORY_ARMOR         =  8,
1851    SKILL_CATEGORY_SECONDARY     =  9,                      // secondary professions
1852    SKILL_CATEGORY_LANGUAGES     = 10,
1853    SKILL_CATEGORY_PROFESSION    = 11,                      // primary professions
1854    SKILL_CATEGORY_NOT_DISPLAYED = 12
1855};
1856
1857enum TotemCategory
1858{
1859    TC_SKINNING_SKIFE              = 1,
1860    TC_EARTH_TOTEM                 = 2,
1861    TC_AIR_TOTEM                   = 3,
1862    TC_FIRE_TOTEM                  = 4,
1863    TC_WATER_TOTEM                 = 5,
1864    TC_COPPER_ROD                  = 6,
1865    TC_SILVER_ROD                  = 7,
1866    TC_GOLDEN_ROD                  = 8,
1867    TC_TRUESILVER_ROD              = 9,
1868    TC_ARCANITE_ROD                = 10,
1869    TC_MINING_PICK                 = 11,
1870    TC_PHILOSOPHERS_STONE          = 12,
1871    TC_BLACKSMITH_HAMMER           = 13,
1872    TC_ARCLIGHT_SPANNER            = 14,
1873    TC_GYROMATIC_MA                = 15,
1874    TC_MASTER_TOTEM                = 21,
1875    TC_FEL_IRON_ROD                = 41,
1876    TC_ADAMANTITE_ROD              = 62,
1877    TC_ETERNIUM_ROD                = 63
1878};
1879
1880enum UnitDynFlags
1881{
1882    UNIT_DYNFLAG_LOOTABLE          = 0x0001,
1883    UNIT_DYNFLAG_TRACK_UNIT        = 0x0002,
1884    UNIT_DYNFLAG_OTHER_TAGGER      = 0x0004,
1885    UNIT_DYNFLAG_ROOTED            = 0x0008,
1886    UNIT_DYNFLAG_SPECIALINFO       = 0x0010,
1887    UNIT_DYNFLAG_DEAD              = 0x0020
1888};
1889
1890enum CorpseDynFlags
1891{
1892    CORPSE_DYNFLAG_LOOTABLE        = 0x0001
1893};
1894
1895// Passive Spell codes explicit used in code
1896#define SPELL_ID_GENERIC_LEARN                   483
1897#define SPELL_ID_PASSIVE_BATTLE_STANCE           2457
1898#define SPELL_ID_PASSIVE_RESURRECTION_SICKNESS   15007
1899
1900enum WeatherType
1901{
1902    WEATHER_TYPE_FINE       = 0,
1903    WEATHER_TYPE_RAIN       = 1,
1904    WEATHER_TYPE_SNOW       = 2,
1905    WEATHER_TYPE_STORM      = 3,
1906    WEATHER_TYPE_THUNDERS   = 86,
1907    WEATHER_TYPE_BLACKRAIN  = 90
1908};
1909
1910#define MAX_WEATHER_TYPE 4
1911
1912enum ChatMsg
1913{
1914    CHAT_MSG_ADDON                  = 0xFFFFFFFF,
1915    CHAT_MSG_SYSTEM                 = 0x00,
1916    CHAT_MSG_SAY                    = 0x01,
1917    CHAT_MSG_PARTY                  = 0x02,
1918    CHAT_MSG_RAID                   = 0x03,
1919    CHAT_MSG_GUILD                  = 0x04,
1920    CHAT_MSG_OFFICER                = 0x05,
1921    CHAT_MSG_YELL                   = 0x06,
1922    CHAT_MSG_WHISPER                = 0x07,
1923    CHAT_MSG_WHISPER_INFORM         = 0x08,
1924    CHAT_MSG_REPLY                  = 0x09,
1925    CHAT_MSG_EMOTE                  = 0x0A,
1926    CHAT_MSG_TEXT_EMOTE             = 0x0B,
1927    CHAT_MSG_MONSTER_SAY            = 0x0C,
1928    CHAT_MSG_MONSTER_PARTY          = 0x0D,
1929    CHAT_MSG_MONSTER_YELL           = 0x0E,
1930    CHAT_MSG_MONSTER_WHISPER        = 0x0F,
1931    CHAT_MSG_MONSTER_EMOTE          = 0x10,
1932    CHAT_MSG_CHANNEL                = 0x11,
1933    CHAT_MSG_CHANNEL_JOIN           = 0x12,
1934    CHAT_MSG_CHANNEL_LEAVE          = 0x13,
1935    CHAT_MSG_CHANNEL_LIST           = 0x14,
1936    CHAT_MSG_CHANNEL_NOTICE         = 0x15,
1937    CHAT_MSG_CHANNEL_NOTICE_USER    = 0x16,
1938    CHAT_MSG_AFK                    = 0x17,
1939    CHAT_MSG_DND                    = 0x18,
1940    CHAT_MSG_IGNORED                = 0x19,
1941    CHAT_MSG_SKILL                  = 0x1A,
1942    CHAT_MSG_LOOT                   = 0x1B,
1943    CHAT_MSG_MONEY                  = 0x1C,
1944    CHAT_MSG_OPENING                = 0x1D,
1945    CHAT_MSG_TRADESKILLS            = 0x1E,
1946    CHAT_MSG_PET_INFO               = 0x1F,
1947    CHAT_MSG_COMBAT_MISC_INFO       = 0x20,
1948    CHAT_MSG_COMBAT_XP_GAIN         = 0x21,
1949    CHAT_MSG_COMBAT_HONOR_GAIN      = 0x22,
1950    CHAT_MSG_COMBAT_FACTION_CHANGE  = 0x23,
1951    CHAT_MSG_BG_SYSTEM_NEUTRAL      = 0x24,
1952    CHAT_MSG_BG_SYSTEM_ALLIANCE     = 0x25,
1953    CHAT_MSG_BG_SYSTEM_HORDE        = 0x26,
1954    CHAT_MSG_RAID_LEADER            = 0x27,
1955    CHAT_MSG_RAID_WARNING           = 0x28,
1956    CHAT_MSG_RAID_BOSS_WHISPER      = 0x29,
1957    CHAT_MSG_RAID_BOSS_EMOTE        = 0x2A,
1958    CHAT_MSG_FILTERED               = 0x2B,
1959    CHAT_MSG_BATTLEGROUND           = 0x2C,
1960    CHAT_MSG_BATTLEGROUND_LEADER    = 0x2D,
1961    CHAT_MSG_RESTRICTED             = 0x2E,
1962};
1963
1964#define MAX_CHAT_MSG_TYPE 0x2F
1965
1966// Values from ItemPetFood (power of (value-1) used for compare with CreatureFamilyEntry.petDietMask
1967enum PetDiet
1968{
1969    PET_DIET_MEAT     = 1,
1970    PET_DIET_FISH     = 2,
1971    PET_DIET_CHEESE   = 3,
1972    PET_DIET_BREAD    = 4,
1973    PET_DIET_FUNGAS   = 5,
1974    PET_DIET_FRUIT    = 6,
1975    PET_DIET_RAW_MEAT = 7,
1976    PET_DIET_RAW_FISH = 8
1977};
1978
1979#define MAX_PET_DIET 9
1980
1981#define CHAIN_SPELL_JUMP_RADIUS 10
1982
1983// Max values for Guild & Guild Bank
1984#define GUILD_BANK_MAX_TABS         6
1985#define GUILD_BANK_MAX_SLOTS        98
1986#define GUILD_BANK_MAX_LOGS         24
1987#define GUILD_EVENTLOG_MAX_ENTRIES  100
1988#define GUILD_MAX_RANKS             10
1989
1990enum AiReaction
1991{
1992    AI_REACTION_UNK1    = 1,
1993    AI_REACTION_AGGRO   = 2,
1994    AI_REACTION_UNK3    = 3,
1995    AI_REACTION_UNK4    = 4
1996};
1997
1998// Diminishing Returns Types
1999enum DiminishingReturnsType
2000{
2001    DRTYPE_NONE         = 0,                                // this spell is not diminished, but may have limited it's duration to 10s
2002    DRTYPE_PLAYER       = 1,                                // this spell is diminished only when applied on players
2003    DRTYPE_ALL          = 2                                 // this spell is diminished in every case
2004};
2005
2006// Diminishing Return Groups
2007enum DiminishingGroup
2008{
2009    // Common Groups
2010    DIMINISHING_NONE,
2011    DIMINISHING_CONTROL_STUN,                               // Player Controlled stuns
2012    DIMINISHING_TRIGGER_STUN,                               // By aura proced stuns, usualy chance on hit talents
2013    DIMINISHING_SLEEP,
2014    DIMINISHING_CONTROL_ROOT,                               // Immobilizing effects from casted spells
2015    DIMINISHING_TRIGGER_ROOT,                               // Immobilizing effects from triggered spells like Frostbite
2016    DIMINISHING_FEAR,                                       // Non-warlock fears
2017    DIMINISHING_CHARM,
2018    // Mage Specific
2019    DIMINISHING_POLYMORPH,
2020    // Rogue Specific
2021    DIMINISHING_KIDNEYSHOT,                                 // Kidney Shot is not diminished with Cheap Shot
2022    // Warlock Specific
2023    DIMINISHING_DEATHCOIL,                                  // Death Coil Diminish only with another Death Coil
2024    DIMINISHING_WARLOCK_FEAR,                               // Also with Sedduction
2025    // Shared Class Specific
2026    DIMINISHING_BLIND_CYCLONE,                              // From 2.3.0
2027    DIMINISHING_DISARM,                                     // From 2.3.0
2028    DIMINISHING_SILENCE,                                    // From 2.3.0
2029    DIMINISHING_FREEZE,                                     // Hunter's Freezing Trap
2030    DIMINISHING_KNOCKOUT,                                   // Also with Sap, all Knockout mechanics are here
2031    DIMINISHING_BANISH,
2032    // Other
2033    // Don't Diminish, but limit duration to 10s
2034    DIMINISHING_LIMITONLY
2035};
2036
2037enum DungeonDifficulties
2038{
2039    DIFFICULTY_NORMAL = 0,
2040    DIFFICULTY_HEROIC = 1,
2041    TOTAL_DIFFICULTIES
2042};
2043
2044enum SummonType
2045{
2046    SUMMON_TYPE_CRITTER     = 41,
2047    SUMMON_TYPE_GUARDIAN    = 61,
2048    SUMMON_TYPE_TOTEM_SLOT1 = 63,
2049    SUMMON_TYPE_WILD        = 64,
2050    SUMMON_TYPE_POSESSED    = 65,
2051    SUMMON_TYPE_DEMON       = 66,
2052    SUMMON_TYPE_SUMMON      = 67,
2053    SUMMON_TYPE_TOTEM_SLOT2 = 81,
2054    SUMMON_TYPE_TOTEM_SLOT3 = 82,
2055    SUMMON_TYPE_TOTEM_SLOT4 = 83,
2056    SUMMON_TYPE_TOTEM       = 121,
2057    SUMMON_TYPE_UNKNOWN3    = 181,
2058    SUMMON_TYPE_UNKNOWN4    = 187,
2059    SUMMON_TYPE_UNKNOWN1    = 247,
2060    SUMMON_TYPE_CRITTER2    = 407,
2061    SUMMON_TYPE_CRITTER3    = 307,
2062    SUMMON_TYPE_UNKNOWN5    = 409,
2063    SUMMON_TYPE_UNKNOWN2    = 427,
2064    SUMMON_TYPE_POSESSED2   = 428
2065};
2066
2067enum ResponseCodes
2068{
2069    RESPONSE_SUCCESS                                       = 0x00,
2070    RESPONSE_FAILURE                                       = 0x01,
2071    RESPONSE_CANCELLED                                     = 0x02,
2072    RESPONSE_DISCONNECTED                                  = 0x03,
2073    RESPONSE_FAILED_TO_CONNECT                             = 0x04,
2074    RESPONSE_CONNECTED                                     = 0x05,
2075    RESPONSE_VERSION_MISMATCH                              = 0x06,
2076
2077    CSTATUS_CONNECTING                                     = 0x07,
2078    CSTATUS_NEGOTIATING_SECURITY                           = 0x08,
2079    CSTATUS_NEGOTIATION_COMPLETE                           = 0x09,
2080    CSTATUS_NEGOTIATION_FAILED                             = 0x0A,
2081    CSTATUS_AUTHENTICATING                                 = 0x0B,
2082
2083    AUTH_OK                                                = 0x0C,
2084    AUTH_FAILED                                            = 0x0D,
2085    AUTH_REJECT                                            = 0x0E,
2086    AUTH_BAD_SERVER_PROOF                                  = 0x0F,
2087    AUTH_UNAVAILABLE                                       = 0x10,
2088    AUTH_SYSTEM_ERROR                                      = 0x11,
2089    AUTH_BILLING_ERROR                                     = 0x12,
2090    AUTH_BILLING_EXPIRED                                   = 0x13,
2091    AUTH_VERSION_MISMATCH                                  = 0x14,
2092    AUTH_UNKNOWN_ACCOUNT                                   = 0x15,
2093    AUTH_INCORRECT_PASSWORD                                = 0x16,
2094    AUTH_SESSION_EXPIRED                                   = 0x17,
2095    AUTH_SERVER_SHUTTING_DOWN                              = 0x18,
2096    AUTH_ALREADY_LOGGING_IN                                = 0x19,
2097    AUTH_LOGIN_SERVER_NOT_FOUND                            = 0x1A,
2098    AUTH_WAIT_QUEUE                                        = 0x1B,
2099    AUTH_BANNED                                            = 0x1C,
2100    AUTH_ALREADY_ONLINE                                    = 0x1D,
2101    AUTH_NO_TIME                                           = 0x1E,
2102    AUTH_DB_BUSY                                           = 0x1F,
2103    AUTH_SUSPENDED                                         = 0x20,
2104    AUTH_PARENTAL_CONTROL                                  = 0x21,
2105    AUTH_LOCKED_ENFORCED                                   = 0x22,
2106
2107    REALM_LIST_IN_PROGRESS                                 = 0x23,
2108    REALM_LIST_SUCCESS                                     = 0x24,
2109    REALM_LIST_FAILED                                      = 0x25,
2110    REALM_LIST_INVALID                                     = 0x26,
2111    REALM_LIST_REALM_NOT_FOUND                             = 0x27,
2112
2113    ACCOUNT_CREATE_IN_PROGRESS                             = 0x28,
2114    ACCOUNT_CREATE_SUCCESS                                 = 0x29,
2115    ACCOUNT_CREATE_FAILED                                  = 0x2A,
2116
2117    CHAR_LIST_RETRIEVING                                   = 0x2B,
2118    CHAR_LIST_RETRIEVED                                    = 0x2C,
2119    CHAR_LIST_FAILED                                       = 0x2D,
2120
2121    CHAR_CREATE_IN_PROGRESS                                = 0x2E,
2122    CHAR_CREATE_SUCCESS                                    = 0x2F,
2123    CHAR_CREATE_ERROR                                      = 0x30,
2124    CHAR_CREATE_FAILED                                     = 0x31,
2125    CHAR_CREATE_NAME_IN_USE                                = 0x32,
2126    CHAR_CREATE_DISABLED                                   = 0x33,
2127    CHAR_CREATE_PVP_TEAMS_VIOLATION                        = 0x34,
2128    CHAR_CREATE_SERVER_LIMIT                               = 0x35,
2129    CHAR_CREATE_ACCOUNT_LIMIT                              = 0x36,
2130    CHAR_CREATE_SERVER_QUEUE                               = 0x37,
2131    CHAR_CREATE_ONLY_EXISTING                              = 0x38,
2132    CHAR_CREATE_EXPANSION                                  = 0x39,
2133
2134    CHAR_DELETE_IN_PROGRESS                                = 0x3A,
2135    CHAR_DELETE_SUCCESS                                    = 0x3B,
2136    CHAR_DELETE_FAILED                                     = 0x3C,
2137    CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER                 = 0x3D,
2138    CHAR_DELETE_FAILED_GUILD_LEADER                        = 0x3E,
2139    CHAR_DELETE_FAILED_ARENA_CAPTAIN                       = 0x3F,
2140
2141    CHAR_LOGIN_IN_PROGRESS                                 = 0x40,
2142    CHAR_LOGIN_SUCCESS                                     = 0x41,
2143    CHAR_LOGIN_NO_WORLD                                    = 0x42,
2144    CHAR_LOGIN_DUPLICATE_CHARACTER                         = 0x43,
2145    CHAR_LOGIN_NO_INSTANCES                                = 0x44,
2146    CHAR_LOGIN_FAILED                                      = 0x45,
2147    CHAR_LOGIN_DISABLED                                    = 0x46,
2148    CHAR_LOGIN_NO_CHARACTER                                = 0x47,
2149    CHAR_LOGIN_LOCKED_FOR_TRANSFER                         = 0x48,
2150    CHAR_LOGIN_LOCKED_BY_BILLING                           = 0x49,
2151
2152    CHAR_NAME_SUCCESS                                      = 0x4A,
2153    CHAR_NAME_FAILURE                                      = 0x4B,
2154    CHAR_NAME_NO_NAME                                      = 0x4C,
2155    CHAR_NAME_TOO_SHORT                                    = 0x4D,
2156    CHAR_NAME_TOO_LONG                                     = 0x4E,
2157    CHAR_NAME_INVALID_CHARACTER                            = 0x4F,
2158    CHAR_NAME_MIXED_LANGUAGES                              = 0x50,
2159    CHAR_NAME_PROFANE                                      = 0x51,
2160    CHAR_NAME_RESERVED                                     = 0x52,
2161    CHAR_NAME_INVALID_APOSTROPHE                           = 0x53,
2162    CHAR_NAME_MULTIPLE_APOSTROPHES                         = 0x54,
2163    CHAR_NAME_THREE_CONSECUTIVE                            = 0x55,
2164    CHAR_NAME_INVALID_SPACE                                = 0x56,
2165    CHAR_NAME_CONSECUTIVE_SPACES                           = 0x57,
2166    CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS        = 0x58,
2167    CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 0x59,
2168    CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME            = 0x5A,
2169};
2170#endif
Note: See TracBrowser for help on using the browser.