All pastes #439669 Raw Edit

Mine

public text v1 · immutable
·published 2007-04-14 13:08 UTC
rendered paste body
Index: src/shared/SystemConfig.h
===================================================================
--- src/shared/SystemConfig.h	(revision 0)
+++ src/shared/SystemConfig.h	(working copy)
@@ -0,0 +1,55 @@
+/* 
+ * Copyright (C) 2005,2006 MaNGOS <http://www.mangosproject.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef MANGOS_SYSTEMCONFIG_H
+#define MANGOS_SYSTEMCONFIG_H
+
+#include "Platform/CompilerDefs.h"
+
+#ifndef _VERSION
+#if PLATFORM == PLATFORM_WIN32
+# define _VERSION "0.7-SVN"
+#else
+# define _VERSION "@VERSION@"
+#endif
+#endif
+
+// Format is YYYYMMDDRR where RR is the change in the conf file
+// for that day.
+#ifndef _MANGOSDCONFVERSION
+# define _MANGOSDCONFVERSION 2006060401
+#endif
+#ifndef _REALMDCONFVERSION
+# define _REALMDCONFVERSION 2006060401
+#endif
+
+#if PLATFORM == PLATFORM_WIN32
+# define _FULLVERSION "/" _VERSION " (Win32)"
+# define _MANGOSD_CONFIG  "mangosd.conf"
+# define _REALMD_CONFIG   "realmd.conf"
+#else
+# define _FULLVERSION "/" _VERSION " (Unix)"
+# define _MANGOSD_CONFIG  "@MANGOSD_CONFIG@"
+# define _REALMD_CONFIG  "@REALMD_CONFIG@"
+#endif
+
+#define DEFAULT_PLAYER_LIMIT 100
+#define DEFAULT_WORLDSERVER_PORT 8085                       //8129
+#define DEFAULT_REALMSERVER_PORT 3724
+#define DEFAULT_SOCKET_SELECT_TIME 10000
+#endif
Index: src/game/Creature.h
===================================================================
--- src/game/Creature.h	(working copy)
+++ src/game/Creature.h	(working copy)
@@ -165,7 +165,6 @@
     uint32  baseattacktime;
     uint32  rangeattacktime;
     uint32  Flags;
-    uint32  mount;
     uint32  dynamicflags;
     float   size;
     uint32  family;
Index: src/game/QuestDef.h
===================================================================
--- src/game/QuestDef.h	(working copy)
+++ src/game/QuestDef.h	(working copy)
@@ -29,7 +29,7 @@
 class ObjectMgr;
 
 // (PLAYER_VISIBLE_ITEM_1_CREATOR - PLAYER_QUEST_LOG_1_1)/3
-#define MAX_QUEST_LOG_SIZE 20
+#define MAX_QUEST_LOG_SIZE 25
 
 #define QUEST_OBJECTIVES_COUNT 4
 #define QUEST_SOURCE_ITEM_IDS_COUNT 4
@@ -37,8 +37,9 @@
 #define QUEST_REWARDS_COUNT 4
 #define QUEST_DEPLINK_COUNT 10
 #define QUEST_REPUTATIONS_COUNT 5
+#define QUEST_EMOTE_COUNT 4
 
-enum
+enum QuestFailedReasons
 {
     INVALIDREASON_DONT_HAVE_REQ        = 0,
     INVALIDREASON_DONT_HAVE_REQLEVEL   = 1,
@@ -49,7 +50,7 @@
     INVALIDREASON_DONT_HAVE_REQ_MONEY  = 21+1,              //1.12.1
 };
 
-enum
+enum QuestShareMessages
 {
     QUEST_PARTY_MSG_SHARING_QUEST   = 0,
     QUEST_PARTY_MSG_CANT_TAKE_QUEST = 1,
Index: src/game/ObjectDefines.h
===================================================================
--- src/game/ObjectDefines.h	(working copy)
+++ src/game/ObjectDefines.h	(working copy)
@@ -21,13 +21,13 @@
 
 enum HIGHGUID
 {
-    HIGHGUID_ITEM          = 0x40000070,
-    HIGHGUID_CONTAINER     = 0x40000070,
-    HIGHGUID_UNIT          = 0xF0001000,
-    HIGHGUID_PLAYER        = 0x00000000,
-    HIGHGUID_GAMEOBJECT    = 0xF0004000,
-    HIGHGUID_DYNAMICOBJECT = 0xF000A000,
-    HIGHGUID_CORPSE        = 0xF0007000,
+    HIGHGUID_ITEM          = 0x40000070, // blizz 40000000
+    HIGHGUID_CONTAINER     = 0x40000070, // blizz 40000000
+    HIGHGUID_UNIT          = 0xF0001000, // blizz F009???? (random), ???? is unit entry
+    HIGHGUID_PLAYER        = 0x00000000, // blizz 0
+    HIGHGUID_GAMEOBJECT    = 0xF0004000, // blizz F0090000
+    HIGHGUID_DYNAMICOBJECT = 0xF000A000, // blizz F0090000, F0320000
+    HIGHGUID_CORPSE        = 0xF0090000, // blizz F0090000, F0320000
     HIGHGUID_PLAYER_CORPSE = 0x80000001,                    // ??
     HIGHGUID_TRANSPORT     = 0x80000000
 };
Index: src/game/Player.h
===================================================================
--- src/game/Player.h	(working copy)
+++ src/game/Player.h	(working copy)
@@ -264,14 +264,6 @@
     PLAYER_STATE_FLAG_ALL          = 0xFF000000,
 };
 
-enum TYPE_OF_KILL
-{
-    HONORABLE_KILL    = 1,
-    DISHONORABLE_KILL = 2,
-};
-
-#define HONOR_RANK_COUNT 16
-
 enum PlayerFlags
 {
     PLAYER_FLAGS_GROUP_LEADER   = 0x00000001,
@@ -280,13 +272,60 @@
     PLAYER_FLAGS_GM             = 0x00000008,
     PLAYER_FLAGS_GHOST          = 0x00000010,
     PLAYER_FLAGS_RESTING        = 0x00000020,
+    PLAYER_FLAGS_FFA_PVP        = 0x00000080,
+    PLAYER_FLAGS_UNK            = 0x00000100,                   // 2.0.8, bg related?
     PLAYER_FLAGS_IN_PVP         = 0x00000200,
     PLAYER_FLAGS_HIDE_HELM      = 0x00000400,
     PLAYER_FLAGS_HIDE_CLOAK     = 0x00000800,
-    PLAYER_FLAGS_UNK            = 0x00001000,               //played long time
-    PLAYER_FLAGS_UNK2           = 0x00002000,               //played too long time
+    PLAYER_FLAGS_UNK1           = 0x00001000,                   //played long time
+    PLAYER_FLAGS_UNK2           = 0x00002000,                   //played too long time
+    PLAYER_FLAGS_UNK3           = 0x00008000,                   //strange visual effect (2.0.1)
+    PLAYER_FLAGS_UNK4           = 0x00020000,                   //taxi benchmark mode (on/off) (2.0.1)
+    PLAYER_UNK                  = 0x00040000,                   //2.0.8...
 };
 
+enum PlayerKnownTitles
+{
+    PLAYER_TITLE_DISABLED             = 0x00000000,
+    PLAYER_TITLE_NONE                 = 0x00000001,
+    PLAYER_TITLE_PRIVATE              = 0x00000002,
+    PLAYER_TITLE_CORPORAL             = 0x00000004,
+    PLAYER_TITLE_SERGEANT_A           = 0x00000008,
+    PLAYER_TITLE_MASTER_SERGEANT      = 0x00000010,
+    PLAYER_TITLE_SERGEANT_MAJOR       = 0x00000020,
+    PLAYER_TITLE_KNIGHT               = 0x00000040,
+    PLAYER_TITLE_KNIGHT_LIEUTENANT    = 0x00000080,
+    PLAYER_TITLE_KNIGHT_CAPTAIN       = 0x00000100,
+    PLAYER_TITLE_KNIGHT_CHAMPION      = 0x00000200,
+    PLAYER_TITLE_LIEUTENANT_COMMANDER = 0x00000400,
+    PLAYER_TITLE_COMMANDER            = 0x00000800,
+    PLAYER_TITLE_MARSHAL              = 0x00001000,
+    PLAYER_TITLE_FIELD_MARSHAL        = 0x00002000,
+    PLAYER_TITLE_GRAND_MARSHAL        = 0x00004000,
+    PLAYER_TITLE_SCOUT                = 0x00008000,
+    PLAYER_TITLE_GRUNT                = 0x00010000,
+    PLAYER_TITLE_SERGEANT_H           = 0x00020000,
+    PLAYER_TITLE_SENIOR_SERGEANT      = 0x00040000,
+    PLAYER_TITLE_FIRST_SERGEANT       = 0x00080000,
+    PLAYER_TITLE_STONE_GUARD          = 0x00100000,
+    PLAYER_TITLE_BLOOD_GUARD          = 0x00200000,
+    PLAYER_TITLE_LEGIONNAIRE          = 0x00400000,
+    PLAYER_TITLE_CENTURION            = 0x00800000,
+    PLAYER_TITLE_CHAMPION             = 0x01000000,
+    PLAYER_TITLE_LIEUTENANT_GENERAL   = 0x02000000,
+    PLAYER_TITLE_GENERAL              = 0x04000000,
+    PLAYER_TITLE_WARLORD              = 0x08000000,
+    PLAYER_TITLE_HIGH_WARLORD         = 0x10000000,
+    PLAYER_TITLE_UNUSED1              = 0x20000000,
+    PLAYER_TITLE_UNUSED2              = 0x40000000
+};
+
+enum DungeonDifficulties
+{
+    DUNGEONDIFFICULTY_NORMAL = 0,
+    DUNGEONDIFFICULTY_HEROIC = 1
+};
+
 enum LootType
 {
     LOOT_CORPSE                 = 1,
@@ -329,7 +368,7 @@
     // first slot for item stored (in any way in player m_items data)
     PLAYER_SLOT_START           = 0,
     // last+1 slot for item stored (in any way in player m_items data)
-    PLAYER_SLOT_END             = 97,
+    PLAYER_SLOT_END             = 118,
     PLAYER_SLOTS_COUNT          = (PLAYER_SLOT_END - PLAYER_SLOT_START)
 };
 
@@ -415,41 +454,45 @@
     BANK_SLOT_ITEM_22           = 60,
     BANK_SLOT_ITEM_23           = 61,
     BANK_SLOT_ITEM_24           = 62,
-    BANK_SLOT_ITEM_END          = 63,
+    BANK_SLOT_ITEM_25           = 63,
+    BANK_SLOT_ITEM_26           = 64,
+    BANK_SLOT_ITEM_27           = 65,
+    BANK_SLOT_ITEM_28           = 66,
+    BANK_SLOT_ITEM_END          = 67,
 
-    BANK_SLOT_BAG_START         = 63,
-    BANK_SLOT_BAG_1             = 63,
-    BANK_SLOT_BAG_2             = 64,
-    BANK_SLOT_BAG_3             = 65,
-    BANK_SLOT_BAG_4             = 66,
-    BANK_SLOT_BAG_5             = 67,
-    BANK_SLOT_BAG_6             = 68,
-    BANK_SLOT_BAG_END           = 69
+    BANK_SLOT_BAG_START         = 67,
+    BANK_SLOT_BAG_1             = 67,
+    BANK_SLOT_BAG_2             = 68,
+    BANK_SLOT_BAG_3             = 69,
+    BANK_SLOT_BAG_4             = 70,
+    BANK_SLOT_BAG_5             = 71,
+    BANK_SLOT_BAG_6             = 72,
+    BANK_SLOT_BAG_7             = 73,
+    BANK_SLOT_BAG_END           = 74
 };
 
 enum BuyBackSlots
 {
     // strored in m_buybackitems
-    BUYBACK_SLOT_START          = 69,
-    BUYBACK_SLOT_1              = 69,
-    BUYBACK_SLOT_2              = 70,
-    BUYBACK_SLOT_3              = 71,
-    BUYBACK_SLOT_4              = 72,
-    BUYBACK_SLOT_5              = 73,
-    BUYBACK_SLOT_6              = 74,
-    BUYBACK_SLOT_7              = 75,
-    BUYBACK_SLOT_8              = 76,
-    BUYBACK_SLOT_9              = 77,
-    BUYBACK_SLOT_10             = 78,
-    BUYBACK_SLOT_11             = 79,
-    BUYBACK_SLOT_12             = 80,
-    BUYBACK_SLOT_END            = 81
+    BUYBACK_SLOT_START          = 74,
+    BUYBACK_SLOT_1              = 74,
+    BUYBACK_SLOT_2              = 75,
+    BUYBACK_SLOT_3              = 76,
+    BUYBACK_SLOT_4              = 77,
+    BUYBACK_SLOT_5              = 78,
+    BUYBACK_SLOT_6              = 79,
+    BUYBACK_SLOT_7              = 80,
+    BUYBACK_SLOT_8              = 81,
+    BUYBACK_SLOT_9              = 82,
+    BUYBACK_SLOT_10             = 83,
+    BUYBACK_SLOT_11             = 84,
+    BUYBACK_SLOT_12             = 85,
+    BUYBACK_SLOT_END            = 86
 };
-
 enum KeyRingSLots
 {
-    KEYRING_SLOT_START          = 81,
-    KEYRING_SLOT_END            = 97
+    KEYRING_SLOT_START          = 86,
+    KEYRING_SLOT_END            = 118
 };
 
 enum SwitchWeapon
@@ -475,13 +518,24 @@
     MOVEMENTFLAG_RIGHT          = 0x20,
     MOVEMENTFLAG_PITCH_UP       = 0x40,
     MOVEMENTFLAG_PITCH_DOWN     = 0x80,
-
     MOVEMENTFLAG_WALK           = 0x100,
+    MOVEMENTFLAG_ONTRANSPORT    = 0x200,
+    // 0x400
+    MOVEMENTFLAG_FLY_UNK1       = 0x800,
+    MOVEMENTFLAG_UNK4           = 0x1000,
     MOVEMENTFLAG_JUMPING        = 0x2000,
     MOVEMENTFLAG_FALLING        = 0x4000,
-    MOVEMENTFLAG_SWIMMING       = 0x200000,
-    MOVEMENTFLAG_ONTRANSPORT    = 0x2000000,
-    MOVEMENTFLAG_SPLINE         = 0x4000000
+    // 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000
+    MOVEMENTFLAG_SWIMMING       = 0x200000, // appears with fly also, swim in air LOL
+    MOVEMENTFLAG_FLY_UP         = 0x400000,
+    MOVEMENTFLAG_CAN_FLY        = 0x800000,
+    MOVEMENTFLAG_FLYING         = 0x1000000,
+    // 0x2000000
+    MOVEMENTFLAG_SPLINE         = 0x4000000,
+    // 0x8000000
+    MOVEMENTFLAG_WATERWALKING   = 0x10000000,
+    MOVEMENTFLAG_UNK2           = 0x20000000,
+    MOVEMENTFLAG_UNK3           = 0x40000000
 };
 
 typedef HM_NAMESPACE::hash_map< uint32, std::pair < uint32, uint32 > > BoundInstancesMap;
Index: src/game/Opcodes.h
===================================================================
--- src/game/Opcodes.h	(working copy)
+++ src/game/Opcodes.h	(working copy)
@@ -93,7 +93,7 @@
     SMSG_NEW_WORLD                                  = 62,
     SMSG_TRANSFER_PENDING                           = 63,
     SMSG_TRANSFER_ABORTED                           = 64,
-    SMSG_CHARACTER_LOGIN_FAILED                     = 65,
+    SMSG_CHARACTER_LOGIN_FAILED                     = 65, // kick client to character select screen and show "World server is down".
     SMSG_LOGIN_SETTIMESPEED                         = 66,
     SMSG_GAMETIME_UPDATE                            = 67,
     CMSG_GAMETIME_SET                               = 68,
@@ -401,16 +401,16 @@
     SMSG_PUREMOUNT_CANCELLED_OBSOLETE               = 368,
     CMSG_MOUNTSPECIAL_ANIM                          = 369,
     SMSG_MOUNTSPECIAL_ANIM                          = 370,
-    SMSG_PET_TAME_FAILURE                           = 371,
+    SMSG_PET_TAME_FAILURE                           = 371, // Creature not found.
     CMSG_PET_SET_ACTION                             = 372,
     CMSG_PET_ACTION                                 = 373,
     CMSG_PET_ABANDON                                = 374,
     CMSG_PET_RENAME                                 = 375,
-    SMSG_PET_NAME_INVALID                           = 376,
+    SMSG_PET_NAME_INVALID                           = 376, // Error, invalid name entered.
     SMSG_PET_SPELLS                                 = 377,
 
     //CMSG_PET_CAST_SPELL_OBSOLETE                    = 378, //OBSOLETE
-    SMSG_PET_MODE                                   = 378,
+    SMSG_PET_MODE                                   = 378, // uint64 pet_guid + uint32 flags?
     CMSG_GOSSIP_HELLO                               = 379,
     CMSG_GOSSIP_SELECT_OPTION                       = 380,
     SMSG_GOSSIP_MESSAGE                             = 381,
@@ -470,7 +470,7 @@
     SMSG_TRAINER_BUY_SUCCEEDED                      = 435,
     SMSG_TRAINER_BUY_FAILED                         = 436,
     CMSG_BINDER_ACTIVATE                            = 437,
-    SMSG_PLAYERBINDERROR                            = 438,
+    SMSG_PLAYERBINDERROR                            = 438, // You already bound there.
     CMSG_BANKER_ACTIVATE                            = 439,
     SMSG_SHOW_BANK                                  = 440,
     CMSG_BUY_BANK_SLOT                              = 441,
@@ -511,7 +511,7 @@
     CMSG_PING                                       = 476,
     SMSG_PONG                                       = 477,
     SMSG_CLEAR_COOLDOWN                             = 478,
-    SMSG_GAMEOBJECT_PAGETEXT                        = 479,
+    SMSG_GAMEOBJECT_PAGETEXT                        = 479, // uint64 guid
     CMSG_SETSHEATHED                                = 480,
     SMSG_COOLDOWN_CHEAT                             = 481,
     SMSG_SPELL_DELAYED                              = 482,
@@ -521,10 +521,10 @@
     CMSG_GM_INVIS                                   = 486,
 
     //CMSG_SCREENSHOT                                = 487, //OBSOLETE
-    SMSG_INVALID_PROMOTION_CODE                     = 487,
+    SMSG_INVALID_PROMOTION_CODE                     = 487, // Couldn't validate code, please try again.
     MSG_GM_BIND_OTHER                               = 488,
     MSG_GM_SUMMON                                   = 489,
-    SMSG_ITEM_TIME_UPDATE                           = 490,
+    SMSG_ITEM_TIME_UPDATE                           = 490, // uint64 guid + uint32 time
     SMSG_ITEM_ENCHANT_TIME_UPDATE                   = 491,
     SMSG_AUTH_CHALLENGE                             = 492,
     CMSG_AUTH_SESSION                               = 493,
@@ -686,7 +686,7 @@
     CMSG_AUTOBANK_ITEM                              = 643,
     MSG_QUERY_NEXT_MAIL_TIME                        = 644,
     SMSG_RECEIVED_MAIL                              = 645,
-    SMSG_RAID_GROUP_ONLY                            = 646,
+    SMSG_RAID_GROUP_ONLY                            = 646, // You are not in this instance group. You will be teleported to %s in %u Minites. uint32 time(milliseconds)+uint32 unk
     CMSG_SET_DURABILITY_CHEAT                       = 647,
     CMSG_SET_PVP_RANK_CHEAT                         = 648,
     CMSG_ADD_PVP_MEDAL_CHEAT                        = 649,
@@ -703,9 +703,9 @@
     CMSG_MEETINGSTONE_CHEAT                         = 660,
     SMSG_MEETINGSTONE_SETQUEUE                      = 661,
     CMSG_MEETINGSTONE_INFO                          = 662,
-    SMSG_MEETINGSTONE_COMPLETE                      = 663,
-    SMSG_MEETINGSTONE_IN_PROGRESS                   = 664,
-    SMSG_MEETINGSTONE_MEMBER_ADDED                  = 665,
+    SMSG_MEETINGSTONE_COMPLETE                      = 663, // Your group is complete, you have left the LFG matchmaking system.
+    SMSG_MEETINGSTONE_IN_PROGRESS                   = 664, // You still seeking more members through LFG matchmaking system., empty?
+    SMSG_MEETINGSTONE_MEMBER_ADDED                  = 665, // %s has been added to the group by the LFG matchmaking system.
     CMSG_GMTICKETSYSTEM_TOGGLE                      = 666,
     CMSG_CANCEL_GROWTH_AURA                         = 667,
     SMSG_CANCEL_AUTO_REPEAT                         = 668,
@@ -719,11 +719,11 @@
     SMSG_LOOT_MASTER_LIST                           = 676,
     SMSG_SET_FORCED_REACTIONS                       = 677,
     SMSG_SPELL_FAILED_OTHER                         = 678,
-    SMSG_GAMEOBJECT_RESET_STATE                     = 679,
+    SMSG_GAMEOBJECT_RESET_STATE                     = 679, // uint64 guid
     CMSG_REPAIR_ITEM                                = 680,
     SMSG_CHAT_PLAYER_NOT_FOUND                      = 681,
     MSG_TALENT_WIPE_CONFIRM                         = 682,
-    SMSG_SUMMON_REQUEST                             = 683,
+    SMSG_SUMMON_REQUEST                             = 683, // uint64 guid + uint32 area/zoneid + uint32 time(milliseconds?)
     CMSG_SUMMON_RESPONSE                            = 684,
     MSG_MOVE_TOGGLE_GRAVITY_CHEAT                   = 685,
     SMSG_MONSTER_MOVE_TRANSPORT                     = 686,
@@ -742,7 +742,7 @@
 
     //SMSG_SPELL_REFLECTED                            = 699, //OBSOLETE
     SMSG_MEETINGSTONE_JOINFAILED                    = 699,
-    SMSG_PLAYER_SKINNED                             = 700,
+    SMSG_PLAYER_SKINNED                             = 700, // uint8 0x00
     SMSG_DURABILITY_DAMAGE_DEATH                    = 701,
     CMSG_SET_EXPLORATION                            = 702,
     CMSG_SET_ACTIONBAR_TOGGLES                      = 703,
@@ -752,7 +752,7 @@
     SMSG_UPDATE_WORLD_STATE                         = 707,
     CMSG_ITEM_NAME_QUERY                            = 708,
     SMSG_ITEM_NAME_QUERY_RESPONSE                   = 709,
-    SMSG_PET_ACTION_FEEDBACK                        = 710,
+    SMSG_PET_ACTION_FEEDBACK                        = 710, // uint8 0x04, 0x01
     CMSG_CHAR_RENAME                                = 711,
     SMSG_CHAR_RENAME                                = 712,
     CMSG_MOVE_SPLINE_DONE                           = 713,
@@ -781,52 +781,190 @@
     MSG_PVP_LOG_DATA                                = 736,
     CMSG_LEAVE_BATTLEFIELD                          = 737,
     CMSG_AREA_SPIRIT_HEALER_QUERY                   = 738,
-    CMSG_AREA_SPIRIT_HEALER_QUEUE                   = 739,
-    SMSG_AREA_SPIRIT_HEALER_TIME                    = 740,
-    CMSG_GM_UNTEACH                                 = 739,
-    SMSG_HARDWARE_SURVEY_REQUEST                    = 740,
+    CMSG_AREA_SPIRIT_HEALER_QUEUE                   = 739, // WTF?
+    SMSG_AREA_SPIRIT_HEALER_TIME                    = 740, // WTF?, uint64 guid+uint32 time?
+    //CMSG_GM_UNTEACH                                 = 739, // WTF?
+    //SMSG_HARDWARE_SURVEY_REQUEST                    = 740, // WTF?
     CMSG_HARDWARE_SURVEY_RESULTS                    = 741,
     SMSG_WARDEN_DATA                                = 742,
     CMSG_WARDEN_DATA                                = 743,
-    SMSG_GROUP_JOINED_BATTLEGROUND                  = 744,
+    SMSG_GROUP_JOINED_BATTLEGROUND                  = 744, // uint32 0xfffffffc, probably different error messages...
     MSG_BATTLEGROUND_PLAYER_POSITIONS               = 745,
-
-                                                            //strange!!
-    //MSG_BINDPOINT_CONFIRM = SMSG_BINDER_CONFIRM,
-
-    //TODO Check double check if the -2 is correct
     CMSG_PET_STOP_ATTACK                            = 746,
     SMSG_BINDER_CONFIRM                             = 747,
     SMSG_BATTLEGROUND_PLAYER_JOINED                 = 748,
     SMSG_BATTLEGROUND_PLAYER_LEFT                   = 749,
     CMSG_BATTLEMASTER_JOIN                          = 750,
-
-    SMSG_ADDON_INFO                                 = 753-2,
-    CMSG_PET_UNLEARN                                = 754-2,
-    SMSG_PET_UNLEARN_CONFIRM                        = 755-2,
-    SMSG_PARTY_MEMBER_STATS_FULL                    = 756-2,
-    CMSG_PET_SPELL_AUTOCAST                         = 757-2,
-    SMSG_WEATHER                                    = 758-2,
-    SMSG_PLAY_TIME_WARNING                          = 759-2,
-    SMSG_MINIGAME_SETUP                             = 760-2,
-    SMSG_MINIGAME_STATE                             = 761-2,
-    CMSG_MINIGAME_MOVE                              = 762-2,
-    SMSG_MINIGAME_MOVE_FAILED                       = 763-2,
+    SMSG_ADDON_INFO                                 = 751,
+    CMSG_PET_UNLEARN                                = 752,
+    SMSG_PET_UNLEARN_CONFIRM                        = 753,
+    SMSG_PARTY_MEMBER_STATS_FULL                    = 754,
+    CMSG_PET_SPELL_AUTOCAST                         = 755,
+    SMSG_WEATHER                                    = 756,
+    SMSG_PLAY_TIME_WARNING                          = 757,
+    SMSG_MINIGAME_SETUP                             = 758,
+    SMSG_MINIGAME_STATE                             = 759,
+    CMSG_MINIGAME_MOVE                              = 760,
+    SMSG_MINIGAME_MOVE_FAILED                       = 761,
+    // 762
+    SMSG_COMPRESSED_MOVE                            = 763,
     CMSG_GUILD_CHANGEINFO                           = 764,
-    SMSG_UNKNOWN_INFO                               = 766,
-
+    SMSG_UNKNOWN_765                                = 765, // Trial accounts can not send unlimited tells, you must wait before you can send tells to more players.
+    SMSG_SET_MOVE_SPEED                             = 766, // GUID + float speed, move speed, except swim/turn/fly
+    SMSG_SET_RUN_BACK_SPEED                         = 767, // GUID + float speed, run back speed
+    SMSG_SET_SWIM_SPEED                             = 768, // GUID + float speed, swim and swim back speed
+    // 769
+    SMSG_SET_SWIM_BACK_SPEED                        = 770, // swim back speed
+    SMSG_SET_TURN_RATE                              = 771, // turn rate (note: client crashes if fly mode enabled, and turn rate = 0)
+    SMSG_UNKNOWN_772                                = 772, // packed GUID
+    SMSG_UNKNOWN_773                                = 773, // set movement flag 0x20000000
+    SMSG_UNKNOWN_774                                = 774, // stop effect of 773 opcode
+    SMSG_UNKNOWN_775                                = 775, // movement related, looks like hover, movement flag 0x40000000, we can't jump if we are lands
+    SMSG_UNKNOWN_776                                = 776, // stop effect of 775 opcode
+    SMSG_MOVE_SET_WATERWALK                         = 777, // packed GUID, set movement flag 0x10000000, waterwalking...
+    SMSG_MOVE_STOP_WATERWALK                        = 778, // packed GUID, stop effect of 777 opcode
+    SMSG_UNKNOWN_779                                = 779, // packed guid, change animation to swim/fly like
+    SMSG_UNKNOWN_780                                = 780, // packed guid
+    SMSG_MOVE_STOP_WALK                             = 781, // packed guid, remove 0x100 movement flag (walk)
+    SMSG_MOVE_START_WALK                            = 782, // set 0x100 movement flag (walk)
+    // 783
+    // 784
+    // 785
     CMSG_ACTIVATETAXI_FAR                           = 786,
-    //griphon related = 786
-
+    // 787 causes client crash
+    // 788
+    // 789
+    // 790
     CMSG_FIELD_WATCHED_FACTION_INACTIVE             = 791,
     CMSG_FIELD_WATCHED_FACTION_SHOW_BAR             = 792,
-
-    MSG_RAID_ICON_TARGET                            = 801,
-    MSG_RAID_READY_CHECK                            = 802,
-
-    // unofficial opcodes:
-    SMSG_COMPRESSED_MOVE                            = 0x2FB,// 763
-    SMSG_OUTDOORPVP_NOTIFY                          = 0x33B,// 827
+    SMSG_UNKNOWN_793                                = 793, // packed guid + uint32
+    SMSG_UNKNOWN_794                                = 794, // packed guid, movement related, set 0x1000 movement flag, all speed to 0, except turn rate
+    // 795
+    SMSG_UNKNOWN_796                                = 796, // uint64, guid?
+    CMSG_RESET_INSTANCES                            = 797, // reset instances, empty
+    SMSG_RESET_INSTANCES_RESULT                     = 798, // chat message: %u (number) has been reset.
+    // 799
+    SMSG_UNKNOWN_800                                = 800, // uint32 mapid, instance related
+    MSG_RAID_ICON_TARGET                            = 801, // uint8+uint8+uint64 guid
+    MSG_RAID_READY_CHECK                            = 802, // uint64+uint8
+    // 803
+    SMSG_AI_UNKNOWN                                 = 804, // GUID + uint32, looks like SMSG_AI_REACTION
+    SMSG_UNKNOWN_805                                = 805, // uint32 unk + x, y, z
+    // 806
+    // 807
+    SMSG_UNKNOWN_808                                = 808, // uint32, probably gm ticket related
+    MSG_SET_DUNGEON_DIFFICULTY                      = 809, // uint32+uint32+uint32
+    // 810
+    SMSG_UNKNOWN_811                                = 811, // uint32, 0x0
+    // 812
+    // 813
+    // 814
+    SMSG_UNKNOWN_815                                = 815, // spell related, uint64 guid + spellid
+    SMSG_UNKNOWN_816                                = 816, // spell related, uint64 guid + spellid + uint32 unk + uint64 guid (target?)
+    // 817
+    SMSG_UNKNOWN_818                                = 818, // 2.0.8, received before server MOTD, strange regexp sequence, looks like anti spam for chat messages...
+    // 819
+    // 820
+    // 821
+    // 822
+    // 823
+    // 824
+    // 825
+    SMSG_OUTDOORPVP_NOTIFY                          = 826, // looks like chat packets
+    SMSG_OUTDOORPVP_NOTIFY2                         = 827, // may be it's changed to 826?
+    // 828
+    SMSG_MOTD                                       = 829, // server MOTD message, uint32 + message
+    // 830
+    // 831
+    // 832
+    SMSG_UNKNOWN_833                                = 833, // teleport
+    SMSG_UNKNOWN_834                                = 834, // teleport
+    SMSG_FLY_MODE_START                             = 835, // packed guid + uint32, start fly
+    SMSG_FLY_MODE_STOP                              = 836, // packed guid + uint32, stop fly
+    CMSG_MOVE_FLY_MODE_CHANGE_ACK                   = 837, // movement related, fly on/off ack
+    CMSG_MOVE_FLY_STATE_CHANGE                      = 838, // movement related, fly start/stop(land) ack, may be MSG
+    CMSG_SOCKET_ITEM                                = 839, // click on "Socket Gems" button in Jewelcrafting UI, contains uint64 item guid + 3 x uint64 gems guid's
+    // 840
+    SMSG_ARENA_TEAM_COMMAND_RESULT                  = 841, // uint32(5)+uint16(0)+uint32(9) You not in arena team that size
+    // 842
+    CMSG_ARENA_TEAM_QUERY                           = 843,
+    SMSG_ARENA_TEAM_QUERY_RESPONSE                  = 844,
+    CMSG_ARENA_TEAM_ROSTER                          = 845,
+    SMSG_ARENA_TEAM_ROSTER                          = 846,
+    CMSG_ARENA_TEAM_ADD_MEMBER                      = 847,
+    SMSG_ARENA_TEAM_INVITE                          = 848,
+    CMSG_ARENA_TEAM_INVITE_ACCEPT                   = 849,
+    CMSG_ARENA_TEAM_INVITE_DECLINE                  = 850,
+    CMSG_ARENA_TEAM_LEAVE                           = 851,
+    CMSG_ARENA_TEAM_REMOVE_FROM_TEAM                = 852,
+    CMSG_ARENA_TEAM_DISBAND                         = 853,
+    CMSG_ARENA_TEAM_PROMOTE_TO_CAPTAIN              = 854, // also must be demote opcode...
+    SMSG_UNKNOWN_855                                = 855, // guild related...
+    // 856
+    MSG_MOVE_START_FLY_UP                           = 857, // movement related, fly up, possible MSG
+    MSG_MOVE_STOP_FLY_UP                            = 858, // movement related, stop fly up, possible MSG
+    SMSG_ARENA_TEAM_STATS                           = 859,
+    CMSG_LFG_SET_AUTOJOIN                           = 860,
+    CMSG_LFG_UNSET_AUTOJOIN                         = 861,
+    CMSG_LFM_SET_AUTOADD                            = 862,
+    CMSG_LFM_UNSET_AUTOADD                          = 863,
+    CMSG_LFG_INVITE_ACCEPT                          = 864,
+    CMSG_LFG_INVITE_CANCEL                          = 865,
+    // 866
+    CMSG_LOOKING_FOR_GROUP_CLEAR                    = 867,
+    CMSG_SET_LOOKING_FOR_NONE                       = 868,
+    CMSG_SET_LOOKING_FOR_MORE                       = 869,
+    CMSG_SET_COMMENTARY                             = 870,
+    SMSG_LFG_871                                    = 871, // Matchmaking timed out.
+    SMSG_LFG_872                                    = 872, // Matchmaking timed out waiting for other player.
+    SMSG_LFG_873                                    = 873, // Group no longer available.
+    SMSG_LFG_874                                    = 974, // Matched Player(s) have gone offline.
+    // 875
+    SMSG_LFG_876                                    = 876, // LFM eye, in progress, uint16+uint32+uint8?, 3 x uint8(0x0)
+    SMSG_LFG_877                                    = 877, // cause client send CMSG_SET_LOOKING_FOR_GROUP, uint32+uint8?
+    SMSG_LFG_878                                    = 878, // cause client send CMSG_SET_LOOKING_FOR_GROUP
+    SMSG_LFG_879                                    = 879, // LFG eye, cause client send CMSG_SET_LOOKING_FOR_GROUP
+    SMSG_LFG_INVITE                                 = 880, // show invite dialog: The LFG system has matched you to a group for %s. 
+    SMSG_LFG_881                                    = 881, // The LFG system is waiting to complete match for %s.
+    // 882
+    // 883
+    CMSG_CHOOSE_TITLE                               = 884,
+    CMSG_DISMOUNT                                   = 885, // /dismount command
+    // 886
+    MSG_INSPECT_ARENA_STATS                         = 887,
+    SMSG_SH_POSITION                                = 888, // spirit healer position, map/x/y/z, at player death...
+    CMSG_CANCEL_ITEM_TEMP_ENCHANTMENT               = 889, // cancel special item enchantment
+    // 890
+    // 891
+    // 892
+    // 893
+    SMSG_MOVE_SET_FLY_SPEED                         = 894, // all fly speed, packed guid, uint32 movement_flags, time, x,y,z,o,unk,speed...
+    // 895
+    SMSG_MOVE_SET_FLY_BACK_SPEED                    = 896,
+    SMSG_FORCE_FLY_SPEED_CHANGE                     = 897, // packed guid, uint32, speed
+    CMSG_FORCE_FLY_SPEED_CHANGE_ACK                 = 898,
+    SMSG_FORCE_FLY_BACK_SPEED_CHANGE                = 899,
+    CMSG_FORCE_FLY_BACK_SPEED_CHANGE_ACK            = 900,
+    SMSG_MOVE_SET_FLY_SPEED2                        = 901, // same as 894, strange, packed guid+speed
+    SMSG_MOVE_SET_FLY_BACK_SPEED2                   = 902, // same as 896, strange,
+    // 903
+    // 904
+    // 905
+    // 906
+    SMSG_REALM_STATE_RESPONSE                       = 907, // responce to 908 opcode, 4 x uint32 + uint8
+    CMSG_REALM_STATE_REQUEST                        = 908, // realm related, uint32+uint32+3*(uint16+uint8), appears at select character screen, uint32 0xFFFFFFFF
+    CMSG_MOVE_SHIP_909                              = 909, // movement related, transport related(ships)
+    CMSG_GROUP_PROMOTE                              = 910, // make main-tank / main-assistant
+    // 911
+    SMSG_ALLOW_MOVE                                 = 912, // uint32, allow player movement, value increments every time and reset to 0 after far teleport, used for client-server synchronization
+    CMSG_ALLOW_MOVE_ACK                             = 913, // client responce to SMSG_ALLOW_MOVE
+    // 914
+    // 915
+    // 916
+    // 917
+    SMSG_UNKNOWN_918                                = 918, // chat message: The party leader has attempted to reset the instance you are in. Please zone out to allow the instance to reset.
+    SMSG_UNKNOWN_919                                = 919, // uint8(0)+uint32(0/1)+uint64(unk/guid)
+    SMSG_UNKNOWN_920                                = 920, // notify message: This system is currently disabled.
 };
 
 /// Results of friend related commands
@@ -861,10 +999,10 @@
     UNIT_NPC_FLAG_TAXIVENDOR        = 8,
     UNIT_NPC_FLAG_TRAINER           = 16,
     UNIT_NPC_FLAG_SPIRITHEALER      = 32,
-    UNIT_NPC_FLAG_GUARD             = 64,                   //UQ1: ???  We can use as guard flag?
+    UNIT_NPC_FLAG_GUARD             = 64,                   //UQ1: ???  We can use as guard flag?, used by blizz for BattleGround spirit guides... (entry 13116 and 13117)
     UNIT_NPC_FLAG_INNKEEPER         = 128,
     UNIT_NPC_FLAG_BANKER            = 256,
-    UNIT_NPC_FLAG_PETITIONER        = 512,
+    UNIT_NPC_FLAG_PETITIONER        = 512,                  // 1024+512 = guild petitions, 512 = arena team petitions
     UNIT_NPC_FLAG_TABARDVENDOR      = 1024,
     UNIT_NPC_FLAG_BATTLEFIELDPERSON = 2048,
     UNIT_NPC_FLAG_AUCTIONEER        = 4096,
Index: src/game/Unit.h
===================================================================
--- src/game/Unit.h	(working copy)
+++ src/game/Unit.h	(working copy)
@@ -53,22 +53,25 @@
 
 enum ShapeshiftForm
 {
-    FORM_CAT              = 1,
-    FORM_TREE             = 2,
-    FORM_TRAVEL           = 3,
-    FORM_AQUA             = 4,
-    FORM_BEAR             = 5,
-    FORM_AMBIENT          = 6,
-    FORM_GHOUL            = 7,
-    FORM_DIREBEAR         = 8,
-    FORM_CREATUREBEAR     = 14,
-    FORM_GHOSTWOLF        = 16,
-    FORM_BATTLESTANCE     = 17,
-    FORM_DEFENSIVESTANCE  = 18,
-    FORM_BERSERKERSTANCE  = 19,
-    FORM_SHADOW           = 28,
-    FORM_STEALTH          = 30,
-    FORM_MOONKIN          = 31
+    FORM_CAT                = 1,
+    FORM_TREE               = 2,
+    FORM_TRAVEL             = 3,
+    FORM_AQUA               = 4,
+    FORM_BEAR               = 5,
+    FORM_AMBIENT            = 6,
+    FORM_GHOUL              = 7,
+    FORM_DIREBEAR           = 8,
+    FORM_CREATUREBEAR       = 14,
+    FORM_CREATURECAT        = 15,
+    FORM_GHOSTWOLF          = 16,
+    FORM_BATTLESTANCE       = 17,
+    FORM_DEFENSIVESTANCE    = 18,
+    FORM_BERSERKERSTANCE    = 19,
+    FORM_SHADOW             = 28,
+    FORM_FLIGHT             = 29,
+    FORM_STEALTH            = 30,
+    FORM_MOONKIN            = 31,
+    FORM_SPIRITOFREDEMPTION = 32
 };
 
 #define CREATURE_MAX_SPELLS     4
@@ -178,7 +181,7 @@
     UNIT_STAT_SEARCHING     = 64,
     UNIT_STAT_FLEEING       = 128,
     UNIT_STAT_MOVING        = (UNIT_STAT_ROAMING | UNIT_STAT_CHASE | UNIT_STAT_SEARCHING | UNIT_STAT_FLEEING),
-    UNIT_STAT_IN_FLIGHT     = 256,                          // player is i n flight mode
+    UNIT_STAT_IN_FLIGHT     = 256,                          // player is in flight mode
     UNIT_STAT_FOLLOW        = 512,
     UNIT_STAT_ROOT          = 1024,
     UNIT_STAT_CONFUSED      = 2048,
@@ -192,10 +195,12 @@
     MOVE_WALKBACK   = 2,
     MOVE_SWIM       = 3,
     MOVE_SWIMBACK   = 4,
-    MOVE_TURN       = 5
+    MOVE_TURN       = 5,
+    MOVE_FLY        = 6,
+    MOVE_FLYBACK    = 7
 };
 
-#define MAX_MOVE_TYPE 6
+#define MAX_MOVE_TYPE 8
 
 extern float baseMoveSpeed[MAX_MOVE_TYPE];
 
@@ -237,13 +242,23 @@
     UNIT_FLAG_NONE           = 0x00000000,
     UNIT_FLAG_DISABLE_MOVE   = 0x00000004,
     UNIT_FLAG_UNKNOWN1       = 0x00000008,                  // essential for all units..
-    UNIT_FLAG_RENAME         = 0x00000010,                  // rename creature
+    UNIT_FLAG_RENAME         = 0x00000010,                  // rename creature, not working in 2.0.8
     UNIT_FLAG_RESTING        = 0x00000020,
+    UNIT_FLAG_UNKNOWN2       = 0x00000100,                  // 2.0.8
+    UNIT_FLAG_UNKNOWN3       = 0x00000800,                  // in combat ?2.0.8
     UNIT_FLAG_PVP            = 0x00001000,
     UNIT_FLAG_MOUNT          = 0x00002000,
-    UNIT_FLAG_DISABLE_ROTATE = 0x00040000,
+    UNIT_FLAG_UNKNOWN4       = 0x00004000,                  // 2.0.8
+    UNIT_FLAG_PACIFIED       = 0x00020000,
+    UNIT_FLAG_DISABLE_ROTATE = 0x00040000,                  // may be it's stunned flag?
     UNIT_FLAG_IN_COMBAT      = 0x00080000,
+    UNIT_FLAG_DISARMED       = 0x00200000,                  // disable melee spells casting..., "Required melee weapon" added to melee spells tooltip.
+    UNIT_FLAG_CONFUSED       = 0x00400000,
+    UNIT_FLAG_FLEEING        = 0x00800000,
+    UNIT_FLAG_UNKNOWN5       = 0x01000000,					// used in spell Eyes of the Beast for pet...
+    UNIT_FLAG_NOT_SELECTABLE = 0x02000000,
     UNIT_FLAG_SKINNABLE      = 0x04000000,
+    UNIT_FLAG_UNKNOWN6       = 0x20000000,                  // used in Feing Death spell
     UNIT_FLAG_SHEATHE        = 0x40000000
 };
 
Index: src/game/Unit.cpp
===================================================================
--- src/game/Unit.cpp	(working copy)
+++ src/game/Unit.cpp	(working copy)
@@ -48,7 +48,9 @@
     1.25f,                                                  // MOVE_WALKBACK
     4.722222f,                                              // MOVE_SWIM
     4.5f,                                                   // MOVE_SWIMBACK
-    3.141594f                                               // MOVE_TURN
+    3.141594f,                                              // MOVE_TURN
+    7.0f,                                                   // MOVE_FLY
+    4.5f                                                    // MOVE_FLYBACK
 };
 
 Unit::Unit( WorldObject *instantiator ) : WorldObject( instantiator )
Index: src/game/UpdateData.h
===================================================================
--- src/game/UpdateData.h	(working copy)
+++ src/game/UpdateData.h	(working copy)
@@ -23,16 +23,23 @@
 
 enum OBJECT_UPDATE_TYPE
 {
-    UPDATETYPE_VALUES = 0,
-
-    UPDATETYPE_MOVEMENT = 1,
-
-    UPDATETYPE_CREATE_OBJECT = 2,
-
-    UPDATETYPE_CREATE_OBJECT2 = 3,
+    UPDATETYPE_VALUES               = 0,
+    UPDATETYPE_MOVEMENT             = 1,
+    UPDATETYPE_CREATE_OBJECT        = 2,
+    UPDATETYPE_CREATE_OBJECT2       = 3,
     UPDATETYPE_OUT_OF_RANGE_OBJECTS = 4,
-    UPDATETYPE_NEAR_OBJECTS = 5
+    UPDATETYPE_NEAR_OBJECTS         = 5
+};
 
+enum OBJECT_UPDATE_FLAGS
+{
+    UPDATEFLAG_SELF         = 0x01,
+    UPDATEFLAG_TRANSPORT    = 0x02,
+    UPDATEFLAG_FULLGUID     = 0x04,
+    UPDATEFLAG_HIGHGUID     = 0x08,
+    UPDATEFLAG_ALL          = 0x10,
+    UPDATEFLAG_LIVING       = 0x20,
+    UPDATEFLAG_HASPOSITION  = 0x40
 };
 
 class UpdateData
Index: src/game/Spell.h
===================================================================
--- src/game/Spell.h	(working copy)
+++ src/game/Spell.h	(working copy)
@@ -234,157 +234,162 @@
 
 enum SpellFailedReason
 {
-    CAST_FAIL_IN_COMBAT                     = 0,
-    CAST_FAIL_ALREADY_FULL_HEALTH           = 1,
-    CAST_FAIL_ALREADY_FULL_MANA             = 2,
-    //CAST_FAIL_ALREADY_FULL_RAGE           = 2,
-    CAST_FAIL_CREATURE_ALREADY_TAMING       = 3,
-    CAST_FAIL_ALREADY_HAVE_CHARMED          = 4,
-    CAST_FAIL_ALREADY_HAVE_SUMMON           = 5,
-    CAST_FAIL_ALREADY_OPEN                  = 6,
-    CAST_FAIL_MORE_POWERFUL_SPELL_ACTIVE    = 7,
-    //CAST_FAIL_FAILED                      = 8,-> 29
-    CAST_FAIL_NO_TARGET                     = 9,
-    CAST_FAIL_INVALID_TARGET                = 10,
-    CAST_FAIL_CANT_BE_CHARMED               = 11,
-    CAST_FAIL_CANT_BE_DISENCHANTED          = 12,           //decompose
-    // 13 SPELL_FAILED_CANT_BE_PROSPECTED
-    CAST_FAIL_TARGET_IS_TAPPED              = 13+1,
-    CAST_FAIL_CANT_START_DUEL_INVISIBLE     = 14+1,
-    CAST_FAIL_CANT_START_DUEL_STEALTHED     = 15+1,
-    CAST_FAIL_TOO_CLOSE_TO_ENEMY            = 16+1,
-    CAST_FAIL_CANT_DO_THAT_YET              = 17+1,
-    CAST_FAIL_YOU_ARE_DEAD                  = 18+1,
-    CAST_FAIL_CANT_DO_WHILE_XXXX            =19,            //NONE
-    CAST_FAIL_CANT_DO_WHILE_CHARMED         =19+1,          //SPELL_FAILED_CHARMED
-    CAST_FAIL_OBJECT_ALREADY_BEING_USED     = 20+1,         //SPELL_FAILED_CHEST_IN_USE
-    CAST_FAIL_CANT_DO_WHILE_CONFUSED        = 21+1,         //SPELL_FAILED_CONFUSED
-    //23 is gone.
-    CAST_FAIL_MUST_HAVE_ITEM_EQUIPPED       = 22 + 1 + 1,
-    CAST_FAIL_MUST_HAVE_XXXX_EQUIPPED       = 23 + 1 + 1,   //SPELL_FAILED_EQUIPPED_ITEM_CLASS
-    CAST_FAIL_MUST_HAVE_XXXX_IN_MAINHAND    = 24 + 1 + 1,   //SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND
-    CAST_FAIL_MUST_HAVE_XXXX_IN_OFFHAND     = 25 + 1 + 1,   //SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND
-    CAST_FAIL_INTERNAL_ERROR                = 26 + 1 + 1,
-    CAST_FAIL_FAILED                        = 29,           // Doesn't exist anymore? Used Fizzle value atm.
-    CAST_FAIL_FIZZLED                       = 27 + 1 + 1,   // changed (+2) 12.1.1
-    CAST_FAIL_YOU_ARE_FLEEING               = 28 + 1 + 1,
-    CAST_FAIL_FOOD_TOO_LOWLEVEL_FOR_PET     = 29 + 1 + 1,
-    CAST_FAIL_TARGET_IS_TOO_HIGH            = 30 + 1 + 1,
-    //32 + 1 is gone.
-    CAST_FAIL_IMMUNE                        = 32 + 1 + 1,   //SPELL_FAILED_IMMUNE
-    CAST_FAIL_INTERRUPTED                   = 33 + 1 + 1,   //SPELL_FAILED_INTERRUPTED
-    CAST_FAIL_INTERRUPTED1                  = 34 + 1 + 1,   //SPELL_FAILED_INTERRUPTED_COMBAT
-    CAST_FAIL_INTERRUPTED_COMBAT            = 36,           //just 36 SPELL_FAILED_INTERRUPTED_COMBAT
-    CAST_FAIL_ITEM_ALREADY_ENCHANTED        = 35 + 1 + 1,
-    CAST_FAIL_ITEM_NOT_EXIST                = 36 + 1 + 1,
-    CAST_FAIL_ENCHANT_NOT_EXISTING_ITEM     = 37 + 1 + 1,
-    CAST_FAIL_ITEM_NOT_READY                = 38 + 1 + 1,
-    CAST_FAIL_YOU_ARE_NOT_HIGH_ENOUGH       = 39 + 1 + 1,
-    CAST_FAIL_NOT_IN_LINE_OF_SIGHT          = 40 + 1 + 1,
-    CAST_FAIL_TARGET_TOO_LOW                = 41 + 1 + 1,
-    CAST_FAIL_SKILL_NOT_HIGH_ENOUGH         = 42 + 1 + 1,
-    CAST_FAIL_WEAPON_HAND_IS_EMPTY          = 43 + 1 + 1,
-    CAST_FAIL_CANT_DO_WHILE_MOVING          = 44 + 1 + 1,
-    CAST_FAIL_NEED_AMMO_IN_PAPERDOLL_SLOT   = 45 + 1 + 1,
-    CAST_FAIL_REQUIRES_SOMETHING            = 46 + 1 + 1,
-    CAST_FAIL_NEED_EXOTIC_AMMO              = 47 + 1 + 1,
-    CAST_FAIL_NO_PATH_AVAILABLE             = 48 + 1 + 1,
-    CAST_FAIL_NOT_BEHIND_TARGET             = 49 + 1 + 1,
-    CAST_FAIL_DIDNT_LAND_IN_FISHABLE_WATER  = 50 + 1 + 1,
-    CAST_FAIL_CANT_BE_CAST_HERE             = 51 + 1 + 1,
-    CAST_FAIL_NOT_IN_FRONT_OF_TARGET        = 52 + 1 + 1,
-    CAST_FAIL_NOT_IN_CONTROL_OF_ACTIONS     = 53 + 1 + 1,
-    CAST_FAIL_SPELL_NOT_LEARNED             = 54 + 1 + 1,
-    CAST_FAIL_CANT_USE_WHEN_MOUNTED         = 55 + 1 + 1,
-    CAST_FAIL_YOU_ARE_IN_FLIGHT             = 56 + 1 + 1,
-    CAST_FAIL_YOU_ARE_ON_TRANSPORT          = 57 + 1 + 1,
-    CAST_FAIL_SPELL_NOT_READY_YET           = 58 + 1 + 1,
-    CAST_FAIL_CANT_DO_IN_SHAPESHIFT         = 59 + 1 + 1,
-    CAST_FAIL_HAVE_TO_BE_STANDING           = 60 + 1 + 1,
-    CAST_FAIL_CAN_USE_ONLY_ON_OWN_OBJECT    = 61 + 1 + 1,   // rogues trying "enchant" other's weapon with poison
-    //CAST_FAIL_ALREADY_OPEN1               = 62,
-
-    CAST_FAIL_CANT_ENCHANT_TRADE_ITEM       = 63 + 1,
-    CAST_FAIL_HAVE_TO_BE_UNSHEATHED         = 63 + 1 + 1,   // yellow text SPELL_FAILED_NOT_UNSHEATHED
-    CAST_FAIL_CANT_CAST_AS_GHOST            = 64 + 1 + 1,
-    CAST_FAIL_NO_AMMO                       = 65 + 1 + 1,
-    CAST_FAIL_NO_CHARGES_REMAIN             = 66 + 1 + 1,
-    CAST_FAIL_NOT_SELECT                    = 67 + 1 + 1,
-    CAST_FAIL_COMBO_POINTS_REQUIRED         = 68 + 1 + 1,
-    CAST_FAIL_NO_DUELING_HERE               = 69 + 1 + 1,
-    CAST_FAIL_NOT_ENOUGH_ENDURANCE          = 70 + 1 + 1,
-    CAST_FAIL_THERE_ARENT_ANY_FISH_HERE     = 71 + 1 + 1,
-    CAST_FAIL_CANT_USE_WHILE_SHAPESHIFTED   = 72 + 1 + 1,
-    CAST_FAIL_CANT_MOUNT_HERE               = 73 + 1 + 1,
-    CAST_FAIL_YOU_DO_NOT_HAVE_PET           = 74 + 1 + 1,
-    CAST_FAIL_NOT_ENOUGH_MANA               = 75 + 1 + 1,
-    CAST_FAIL_NOT_AURA_TO_QUSHAN            = 76 + 1 + 1,
-    //= 79, CAST_FAIL_NOT_ITEM_TO_STEAL        = 111 + 1 + 2   //(SPELL_FAILED_NOTHING_TO_STEAL)
-    CAST_FAIL_CANT_USE_WHILE_SWIMMING       = 77 + 1 + 2,
-    CAST_FAIL_CAN_ONLY_USE_AT_DAY           = 78 + 1 + 2,
-    CAST_FAIL_CAN_ONLY_USE_INDOORS          = 79 + 1 + 2,
-    CAST_FAIL_CAN_ONLY_USE_MOUNTED          = 80 + 1 + 2,
-    CAST_FAIL_CAN_ONLY_USE_AT_NIGHT         = 81 + 1 + 2,
-    CAST_FAIL_CAN_ONLY_USE_OUTDOORS         = 82 + 1 + 2,
-    //CAST_FAIL_ONLY_SHAPESHIFTED           = 83                    // didn't display
-    // 86 none
-    CAST_FAIL_CAN_ONLY_USE_STEALTHED        = 85 + 2,
-    CAST_FAIL_CAN_ONLY_USE_WHILE_SWIMMING   = 86 + 2,
-    CAST_FAIL_OUT_OF_RANGE                  = 87 + 2,
-    CAST_FAIL_CANT_USE_WHILE_PACIFIED       = 87 + 1 + 2,
-    CAST_FAIL_YOU_ARE_POSSESSED             = 88 + 1 + 2,
-    CAST_FAIL_YOU_NEED_TO_BE_IN_XXX         = 90 + 1 + 2,
-    CAST_FAIL_REQUIRES_XXX                  = 91 + 1 + 2,
-    CAST_FAIL_UNABLE_TO_MOVE                = 92 + 1 + 2,
-    CAST_FAIL_SILENCED                      = 93 + 1 + 2,
-    CAST_FAIL_ANOTHER_ACTION_IS_IN_PROGRESS = 94 + 1 + 2,
-    CAST_FAIL_ALREADY_LEARNED_THAT_SPELL    = 95 + 1 + 2,
-    CAST_FAIL_SPELL_NOT_AVAILABLE_TO_YOU    = 96 + 1 + 2,
-    CAST_FAIL_CANT_DO_WHILE_STUNNED         = 97 + 1 + 2,
-    CAST_FAIL_YOUR_TARGET_IS_DEAD           = 98 + 1 + 2,
-    CAST_FAIL_TARGET_IS_IN_COMBAT           = 99 + 1 + 2,
-    CAST_FAIL_CANT_DO_THAT_YET_2            = 100 + 1 + 2,
-    CAST_FAIL_TARGET_IS_DUELING             = 101 + 1 + 2,
-    CAST_FAIL_TARGET_IS_HOSTILE             = 102 + 1 + 2,
-    CAST_FAIL_TARGET_IS_TOO_ENRAGED_TO_CHARM = 103 + 1 + 2,
-    CAST_FAIL_TARGET_IS_FRIENDLY            = 104 + 1 + 2,
-    CAST_FAIL_TARGET_CANT_BE_IN_COMBAT      = 105 + 1 + 2,
-    CAST_FAIL_CANT_TARGET_PLAYERS           = 106 + 1 + 2,
-    CAST_FAIL_TARGET_IS_ALIVE               = 107 + 1 + 2,
-    CAST_FAIL_TARGET_NOT_IN_YOUR_PARTY      = 108 + 1 + 2,
-    CAST_FAIL_CREATURE_MUST_BE_LOOTED_FIRST = 109 + 1 + 2,
-    CAST_FAIL_AUCTION_HAVE_CANCEL           = 110 + 1 + 2,
-    CAST_FAIL_NOT_ITEM_TO_STEAL             = 111 + 1 + 2,
-    //CAST_FAIL_TARGET_IS_NOT_A_PLAYER      = 107,
-    //CAST_FAIL_NO_POCKETS_TO_PICK          = 108,
-    CAST_FAIL_TARGET_HAS_NO_WEAPONS_EQUIPPED = 112 + 1 + 2,
-    CAST_FAIL_NOT_SKINNABLE                 = 113 + 1 + 2,
-    CAST_FAIL_TOO_CLOSE                     = 115 + 1 + 2,
-    CAST_FAIL_TOO_MANY_OF_THAT_ITEM_ALREADY = 116 + 1 + 2,
-    CAST_FAIL_NOT_ENOUGH_TRAINING_POINTS    = 118 + 1 + 2,
-    CAST_FAIL_FAILED_ATTEMPT                = 119 + 1 + 2,
-    CAST_FAIL_TARGET_NEED_TO_BE_BEHIND      = 120 + 1 + 2,
-    CAST_FAIL_TARGET_NEED_TO_BE_INFRONT     = 121 + 1 + 2,
-    CAST_FAIL_PET_DOESNT_LIKE_THAT_FOOD     = 122 + 1 + 2,
-    CAST_FAIL_CANT_CAST_WHILE_FATIGUED      = 123 + 1 + 2,
-    CAST_FAIL_TARGET_MUST_BE_IN_THIS_INSTANCE = 124 + 1 + 2,
-    CAST_FAIL_CANT_CAST_WHILE_TRADING       = 125 + 1 + 2,
-    CAST_FAIL_TARGET_IS_NOT_PARTY_OR_RAID   = 126 + 1 + 2,
-    CAST_FAIL_CANT_DISENCHANT_WHILE_LOOTING = 127 + 1 + 2,
-    CAST_FAIL_TARGET_IS_IN_FFA_PVP_COMBAT   = 133,
-    //CAST_FAIL_TARGET_IS_NOT_A_GHOST       = 128,                  //SPELL_FAILED_TARGET_NOT_GHOST
-    CAST_FAIL_NO_NEARBY_CORPSES_TO_EAT      = 129 + 1 + 4,
-    CAST_FAIL_CAN_ONLY_USE_IN_BATTLEGROUNDS = 130 + 1 + 4,
-    CAST_FAIL_CANT_EQUIP_ON_LOW_RANK        = 131 + 1 + 4,
-    CAST_FAIL_YOUR_PET_CANT_LEARN_MORE_SKILLS = 132 + 1 + 4,
-    CAST_FAIL_CANT_USE_NEW_ITEM             = 133 + 1 + 4,
-    CAST_FAIL_CANT_DO_IN_THIS_WEATHER       = 134 + 1 + 4,
-    CAST_FAIL_CANT_DO_IN_IMMUNE             = 135 + 1 + 4,
-    CAST_FAIL_CANT_DO_IN_XXX                = 136 + 1 + 4,
-    CAST_FAIL_GAME_TIME_OVER                = 137 + 1 + 4,
-    CAST_FAIL_NOT_ENOUGH_RANK               = 138 + 1 + 4,
-    CAST_FAIL_UNKNOWN_REASON                = 139 + 1 + 4,
-    CAST_FAIL_NUMREASONS                    = 145
+    CAST_FAIL_IN_COMBAT                       = 0,
+    CAST_FAIL_ALREADY_FULL_HEALTH             = 1,
+    CAST_FAIL_ALREADY_FULL_MANA               = 2,
+    CAST_FAIL_CREATURE_ALREADY_TAMING         = 3,
+    CAST_FAIL_ALREADY_HAVE_CHARMED            = 4,
+    CAST_FAIL_ALREADY_HAVE_SUMMON             = 5,
+    CAST_FAIL_ALREADY_OPEN                    = 6,
+    CAST_FAIL_MORE_POWERFUL_SPELL_ACTIVE      = 7,
+    CAST_FAIL_AUTOTRACK_INTERRUPTED           = 8,
+    CAST_FAIL_NO_TARGET                       = 9,
+    CAST_FAIL_INVALID_TARGET                  = 10,
+    CAST_FAIL_CANT_BE_CHARMED                 = 11,
+    CAST_FAIL_CANT_BE_DISENCHANTED            = 12,
+    CAST_FAIL_CANT_BE_DISENCHANTED_SKILL      = 13,
+    CAST_FAIL_CANT_BE_PROSPECTED              = 14, // There no gems in this
+    CAST_FAIL_TARGET_IS_TAPPED                = 15,
+    CAST_FAIL_CANT_START_DUEL_INVISIBLE       = 16,
+    CAST_FAIL_CANT_START_DUEL_STEALTHED       = 17,
+    CAST_FAIL_TOO_CLOSE_TO_ENEMY              = 18,
+    CAST_FAIL_CANT_DO_THAT_YET                = 19,
+    CAST_FAIL_YOU_ARE_DEAD                    = 20,
+    CAST_FAIL_CANT_DO_WHILE_CHARMED           = 21,
+    CAST_FAIL_OBJECT_ALREADY_BEING_USED       = 22,
+    CAST_FAIL_CANT_DO_WHILE_CONFUSED          = 23,
+    CAST_FAIL_DONT_REPORT                     = 24,
+    CAST_FAIL_MUST_HAVE_ITEM_EQUIPPED         = 25,
+    CAST_FAIL_MUST_HAVE_XXXX_EQUIPPED         = 26,
+    CAST_FAIL_MUST_HAVE_XXXX_IN_MAINHAND      = 27,
+    CAST_FAIL_MUST_HAVE_XXXX_IN_OFFHAND       = 28,
+    CAST_FAIL_INTERNAL_ERROR                  = 29,
+    CAST_FAIL_FIZZLED                         = 30,
+    CAST_FAIL_YOU_ARE_FLEEING                 = 31,
+    CAST_FAIL_FOOD_TOO_LOWLEVEL_FOR_PET       = 32,
+    CAST_FAIL_TARGET_IS_TOO_HIGH              = 33,
+    CAST_FAIL_HUNGER_SATIATED                 = 34,
+    CAST_FAIL_IMMUNE                          = 35,
+    CAST_FAIL_INTERRUPTED                     = 36,
+    CAST_FAIL_INTERRUPTED_COMBAT              = 37,
+    CAST_FAIL_ITEM_ALREADY_ENCHANTED          = 38,
+    CAST_FAIL_ITEM_NOT_EXIST                  = 39,
+    CAST_FAIL_ENCHANT_NOT_EXISTING_ITEM       = 40,
+    CAST_FAIL_ITEM_NOT_READY                  = 41,
+    CAST_FAIL_YOU_ARE_NOT_HIGH_ENOUGH         = 42,
+    CAST_FAIL_NOT_IN_LINE_OF_SIGHT            = 43,
+    CAST_FAIL_TARGET_TOO_LOW                  = 44,
+    CAST_FAIL_SKILL_NOT_HIGH_ENOUGH           = 45,
+    CAST_FAIL_WEAPON_HAND_IS_EMPTY            = 46,
+    CAST_FAIL_CANT_DO_WHILE_MOVING            = 47,
+    CAST_FAIL_NEED_AMMO_IN_PAPERDOLL_SLOT     = 48,
+    CAST_FAIL_REQUIRES_SOMETHING              = 49,
+    CAST_FAIL_NEED_EXOTIC_AMMO                = 50,
+    CAST_FAIL_NO_PATH_AVAILABLE               = 51,
+    CAST_FAIL_NOT_BEHIND_TARGET               = 52,
+    CAST_FAIL_DIDNT_LAND_IN_FISHABLE_WATER    = 53,
+    CAST_FAIL_CANT_BE_CAST_HERE               = 54,
+    CAST_FAIL_NOT_IN_FRONT_OF_TARGET          = 55,
+    CAST_FAIL_NOT_IN_CONTROL_OF_ACTIONS       = 56,
+    CAST_FAIL_SPELL_NOT_LEARNED               = 57,
+    CAST_FAIL_CANT_USE_WHEN_MOUNTED           = 58,
+    CAST_FAIL_YOU_ARE_IN_FLIGHT               = 59,
+    CAST_FAIL_YOU_ARE_ON_TRANSPORT            = 60,
+    CAST_FAIL_SPELL_NOT_READY_YET             = 61,
+    CAST_FAIL_CANT_DO_IN_SHAPESHIFT           = 62,
+    CAST_FAIL_HAVE_TO_BE_STANDING             = 63,
+    CAST_FAIL_CAN_USE_ONLY_ON_OWN_OBJECT      = 64,
+    CAST_FAIL_CANT_ENCHANT_TRADE_ITEM         = 65,
+    CAST_FAIL_HAVE_TO_BE_UNSHEATHED           = 66,
+    CAST_FAIL_CANT_CAST_AS_GHOST              = 67,
+    CAST_FAIL_NO_AMMO                         = 68,
+    CAST_FAIL_NO_CHARGES_REMAIN               = 69,
+    CAST_FAIL_NOT_SELECT                      = 70,
+    CAST_FAIL_COMBO_POINTS_REQUIRED           = 71,
+    CAST_FAIL_NO_DUELING_HERE                 = 72,
+    CAST_FAIL_NOT_ENOUGH_ENDURANCE            = 73,
+    CAST_FAIL_THERE_ARENT_ANY_FISH_HERE       = 74,
+    CAST_FAIL_CANT_USE_WHILE_SHAPESHIFTED     = 75,
+    CAST_FAIL_CANT_MOUNT_HERE                 = 76,
+    CAST_FAIL_YOU_DO_NOT_HAVE_PET             = 77,
+    CAST_FAIL_NOT_ENOUGH_MANA                 = 78,
+    CAST_FAIL_NOTHING_TO_DISPEL               = 79,
+    CAST_FAIL_NOTHING_TO_STEAL                = 80,
+    CAST_FAIL_CANT_USE_WHILE_SWIMMING         = 81,
+    CAST_FAIL_CAN_ONLY_USE_AT_DAY             = 82,
+    CAST_FAIL_CAN_ONLY_USE_INDOORS            = 83,
+    CAST_FAIL_CAN_ONLY_USE_MOUNTED            = 84,
+    CAST_FAIL_CAN_ONLY_USE_AT_NIGHT           = 85,
+    CAST_FAIL_CAN_ONLY_USE_OUTDOORS           = 86,
+    CAST_FAIL_CAN_ONLY_USE_SHAPESHIFT         = 87,
+    CAST_FAIL_CAN_ONLY_USE_STEALTHED          = 88,
+    CAST_FAIL_CAN_ONLY_USE_WHILE_SWIMMING     = 89,
+    CAST_FAIL_OUT_OF_RANGE                    = 90,
+    CAST_FAIL_CANT_USE_WHILE_PACIFIED         = 91,
+    CAST_FAIL_YOU_ARE_POSSESSED               = 92,
+    CAST_FAIL_REAGENTS                        = 93,
+    CAST_FAIL_YOU_NEED_TO_BE_IN_XXX           = 94,
+    CAST_FAIL_REQUIRES_XXX                    = 95,
+    CAST_FAIL_UNABLE_TO_MOVE                  = 96,
+    CAST_FAIL_SILENCED                        = 97,
+    CAST_FAIL_ANOTHER_ACTION_IS_IN_PROGRESS   = 98,
+    CAST_FAIL_ALREADY_LEARNED_THAT_SPELL      = 99,
+    CAST_FAIL_SPELL_NOT_AVAILABLE_TO_YOU      = 100,
+    CAST_FAIL_CANT_DO_WHILE_STUNNED           = 101,
+    CAST_FAIL_YOUR_TARGET_IS_DEAD             = 102,
+    CAST_FAIL_TARGET_IS_IN_COMBAT             = 103,
+    CAST_FAIL_CANT_DO_THAT_YET_2              = 104, // SPELL_FAILED_TARGET_AURASTATE
+    CAST_FAIL_TARGET_IS_DUELING               = 105,
+    CAST_FAIL_TARGET_IS_HOSTILE               = 106,
+    CAST_FAIL_TARGET_IS_TOO_ENRAGED_TO_CHARM  = 107,
+    CAST_FAIL_TARGET_IS_FRIENDLY              = 108,
+    CAST_FAIL_TARGET_CANT_BE_IN_COMBAT        = 109,
+    CAST_FAIL_CANT_TARGET_PLAYERS             = 110,
+    CAST_FAIL_TARGET_IS_ALIVE                 = 111,
+    CAST_FAIL_TARGET_NOT_IN_YOUR_PARTY        = 112,
+    CAST_FAIL_CREATURE_MUST_BE_LOOTED_FIRST   = 113,
+    CAST_FAIL_TARGET_IS_NOT_PLAYER            = 114,
+    CAST_FAIL_NOT_ITEM_TO_STEAL               = 115,
+    CAST_FAIL_TARGET_HAS_NO_WEAPONS_EQUIPPED  = 116,
+    CAST_FAIL_NOT_SKINNABLE                   = 117,
+    CAST_FAIL_THIRST_SATIATED                 = 118,
+    CAST_FAIL_TOO_CLOSE                       = 119,
+    CAST_FAIL_TOO_MANY_OF_THAT_ITEM_ALREADY   = 120,
+    CAST_FAIL_TOTEM_CATEGORY                  = 121,
+    CAST_FAIL_TOTEMS                          = 122,
+    CAST_FAIL_NOT_ENOUGH_TRAINING_POINTS      = 123,
+    CAST_FAIL_FAILED_ATTEMPT                  = 124,
+    CAST_FAIL_TARGET_NEED_TO_BE_BEHIND        = 125,
+    CAST_FAIL_TARGET_NEED_TO_BE_INFRONT       = 126,
+    CAST_FAIL_PET_DOESNT_LIKE_THAT_FOOD       = 127,
+    CAST_FAIL_CANT_CAST_WHILE_FATIGUED        = 128,
+    CAST_FAIL_TARGET_MUST_BE_IN_THIS_INSTANCE = 129,
+    CAST_FAIL_CANT_CAST_WHILE_TRADING         = 130,
+    CAST_FAIL_TARGET_IS_NOT_PARTY_OR_RAID     = 131,
+    CAST_FAIL_CANT_DISENCHANT_WHILE_LOOTING   = 132,
+    CAST_FAIL_CANT_PROSPECT_WHILE_LOOTING     = 133,
+    CAST_FAIL_CANT_PROSPECT_NEED_MORE         = 134,
+    CAST_FAIL_TARGET_IS_IN_FFA_PVP_COMBAT     = 135,
+    CAST_FAIL_NO_NEARBY_CORPSES_TO_EAT        = 136,
+    CAST_FAIL_CAN_ONLY_USE_IN_BATTLEGROUNDS   = 137,
+    CAST_FAIL_TARGET_NOT_GHOST                = 138,
+    CAST_FAIL_YOUR_PET_CANT_LEARN_MORE_SKILLS = 139,
+    CAST_FAIL_TRANSFORM_UNUSABLE              = 140,
+    CAST_FAIL_WRONG_WEATHER                   = 141,
+    CAST_FAIL_DAMAGE_IMMUNE                   = 142,
+    CAST_FAIL_PREVENTED_BY_MECHANIC           = 143,
+    CAST_FAIL_PLAY_TIME                       = 144,
+    CAST_FAIL_REPUTATION                      = 145,
+    CAST_FAIL_MIN_SKILL                       = 146,
+    CAST_FAIL_NOT_IN_ARENA                    = 147,
+    CAST_FAIL_NOT_ON_SHAPESHIFT               = 148,
+    CAST_FAIL_NOT_ON_STEALTHED                = 149,
+    CAST_FAIL_NOT_ON_DAMAGE_IMMUNE            = 150,
+    CAST_FAIL_NOT_ON_MOUNTED                  = 151,
+    CAST_FAIL_TOO_SHALLOW                     = 152,
+    CAST_FAIL_TARGET_NOT_IN_SANCTUARY         = 153,
+    CAST_FAIL_UNKNOWN_REASON                  = 154,
+    CAST_FAIL_NUMREASONS
 };
 
 #define SPELL_SPELL_CHANNEL_UPDATE_INTERVAL 1000
Index: src/game/LootMgr.h
===================================================================
--- src/game/LootMgr.h	(working copy)
+++ src/game/LootMgr.h	(working copy)
@@ -48,6 +48,13 @@
     NEED_BEFORE_GREED = 4
 };
 
+enum LootThreshold
+{
+    UNCOMMON          = 2,
+    RARE              = 3,
+    EPIC              = 4
+};
+
 enum PermissionTypes
 {
     ALL_PERMISSION    = 0,
Index: src/game/ItemPrototype.h
===================================================================
--- src/game/ItemPrototype.h	(working copy)
+++ src/game/ItemPrototype.h	(working copy)
@@ -74,50 +74,83 @@
 
 enum ITEM_STAT_TYPE
 {
-    ITEM_STAT_POWER      = 0,
-    ITEM_STAT_HEALTH     = 1,
-    ITEM_STAT_UNKNOWN    = 2,
-    ITEM_STAT_AGILITY    = 3,
-    ITEM_STAT_STRENGTH   = 4,
-    ITEM_STAT_INTELLECT  = 5,
-    ITEM_STAT_SPIRIT     = 6,
-    ITEM_STAT_STAMINA    = 7
+    ITEM_STAT_POWER                             = 0,
+    ITEM_STAT_HEALTH                            = 1,
+    ITEM_STAT_UNKNOWN1                          = 2,
+    ITEM_STAT_AGILITY                           = 3,
+    ITEM_STAT_STRENGTH                          = 4,
+    ITEM_STAT_INTELLECT                         = 5,
+    ITEM_STAT_SPIRIT                            = 6,
+    ITEM_STAT_STAMINA                           = 7,
+    ITEM_STAT_UNKNOWN2                          = 8,
+    ITEM_STAT_UNKNOWN3                          = 9,
+    ITEM_STAT_UNKNOWN4                          = 10,
+    ITEM_STAT_UNKNOWN5                          = 11,
+    // New Item Stats for Combat Rating System:
+    // CS - critical strike
+    // HA - hit avoidance
+    // CA - critical avoidance
+    ITEM_STAT_DEFENCE_RATING                    = 12,
+    ITEM_STAT_DODGE_RATING                      = 13,
+    ITEM_STAT_PARRY_RATING                      = 14,
+    ITEM_STAT_SHIELD_BLOCK_RATING               = 15,
+    ITEM_STAT_MELEE_HIT_RATING                  = 16,
+    ITEM_STAT_RANGED_HIT_RATING                 = 17,
+    ITEM_STAT_SPELL_HIT_RATING                  = 18,
+    ITEM_STAT_MELEE_CS_RATING                   = 19,
+    ITEM_STAT_RANGED_CS_RATING                  = 20,
+    ITEM_STAT_SPELL_CS_RATING                   = 21,
+    ITEM_STAT_MELEE_HA_RATING                   = 22,
+    ITEM_STAT_RANGED_HA_RATING                  = 23,
+    ITEM_STAT_SPELL_HA_RATING                   = 24,
+    ITEM_STAT_MELEE_CA_RATING                   = 25,
+    ITEM_STAT_RANGED_CA_RATING                  = 26,
+    ITEM_STAT_SPELL_CA_RATING                   = 27,
+    ITEM_STAT_MELEE_HASTE_RATING                = 28,
+    ITEM_STAT_RANGED_HASTE_RATING               = 29,
+    ITEM_STAT_SPELL_HASTE_RATING                = 30,
+    ITEM_STAT_HIT_RATING                        = 31,
+    ITEM_STAT_CS_RATING                         = 32,
+    ITEM_STAT_HA_RATING                         = 33,
+    ITEM_STAT_CA_RATING                         = 34,
+    ITEM_STAT_RESILIENCE_RATING                 = 35,
+    ITEM_STAT_HASTE_RATING                      = 36
 };
 
 enum ITEM_DAMAGE_TYPE
 {
-    NORMAL_DAMAGE  = 0,
-    HOLY_DAMAGE    = 1,
-    FIRE_DAMAGE    = 2,
-    NATURE_DAMAGE  = 3,
-    FROST_DAMAGE   = 4,
-    SHADOW_DAMAGE  = 5,
-    ARCANE_DAMAGE  = 6
+    NORMAL_DAMAGE                               = 0,
+    HOLY_DAMAGE                                 = 1,
+    FIRE_DAMAGE                                 = 2,
+    NATURE_DAMAGE                               = 3,
+    FROST_DAMAGE                                = 4,
+    SHADOW_DAMAGE                               = 5,
+    ARCANE_DAMAGE                               = 6
 };
 
 enum ITEM_SPELLTRIGGER_TYPE
 {
-    USE           = 0,
-    ON_EQUIP      = 1,
-    CHANCE_ON_HIT = 2,
-    SOULSTONE     = 4
+    USE                                         = 0,
+    ON_EQUIP                                    = 1,
+    CHANCE_ON_HIT                               = 2,
+    SOULSTONE                                   = 4
 };
 
 enum ITEM_BONDING_TYPE
 {
-    NO_BIND              = 0,
-    BIND_WHEN_PICKED_UP  = 1,
-    BIND_WHEN_EQUIPED    = 2,
-    BIND_WHEN_USE        = 3,
+    NO_BIND                                     = 0,
+    BIND_WHEN_PICKED_UP                         = 1,
+    BIND_WHEN_EQUIPED                           = 2,
+    BIND_WHEN_USE                               = 3,
     //TODO: Better name these
-    QUEST_ITEM           = 4,
-    QUEST_ITEM1          = 5
+    QUEST_ITEM                                  = 4,
+    QUEST_ITEM1                                 = 5
 };
 
 // masks for ITEM_FIELD_FLAGS field
 enum ITEM_FLAGS
 {
-    ITEM_FLAGS_BINDED = 1
+    ITEM_FLAGS_BINDED                           = 1
 };
 
 enum BAG_FAMILY
@@ -126,162 +159,194 @@
     BAG_FAMILY_ARROWS                           = 1,
     BAG_FAMILY_BULLETS                          = 2,
     BAG_FAMILY_SOUL_SHARDS                      = 3,
-    //BAG_FAMILY_UNK1                           = 4,
-    //BAG_FAMILY_UNK1                           = 5,
+    //BAG_FAMILY_UNK1                            = 4,
+    //BAG_FAMILY_UNK1                            = 5,
     BAG_FAMILY_HERBS                            = 6,
     BAG_FAMILY_ENCHANTING_SUPP                  = 7,
     BAG_FAMILY_ENGINEERING_SUPP                 = 8,
     BAG_FAMILY_KEYS                             = 9,
     BAG_FAMILY_GEMS                             = 10,
-    //BAG_FAMILY_UNK3                           = 11,
+    //BAG_FAMILY_UNK3                            = 11,
     BAG_FAMILY_MINING_SUPP                      = 12
 };
 
+/* TODO: Not entirely positive on need for this??
+enum SOCKET_CONTENT ();
+*/
+
+enum SOCKET_COLOR
+{
+    SOCKET_COLOR_META                           = 1,
+    SOCKET_COLOR_RED                            = 2,
+    SOCKET_COLOR_YELLOW                         = 4,
+    SOCKET_COLOR_BLUE                           = 8
+};
+
 enum INVENTORY_TYPES
 {
-    INVTYPE_NON_EQUIP      = 0,
-    INVTYPE_HEAD           = 1,
-    INVTYPE_NECK           = 2,
-    INVTYPE_SHOULDERS      = 3,
-    INVTYPE_BODY           = 4,
-    INVTYPE_CHEST          = 5,
-    INVTYPE_WAIST          = 6,
-    INVTYPE_LEGS           = 7,
-    INVTYPE_FEET           = 8,
-    INVTYPE_WRISTS         = 9,
-    INVTYPE_HANDS          = 10,
-    INVTYPE_FINGER         = 11,
-    INVTYPE_TRINKET        = 12,
-    INVTYPE_WEAPON         = 13,
-    INVTYPE_SHIELD         = 14,
-    INVTYPE_RANGED         = 15,
-    INVTYPE_CLOAK          = 16,
-    INVTYPE_2HWEAPON       = 17,
-    INVTYPE_BAG            = 18,
-    INVTYPE_TABARD         = 19,
-    INVTYPE_ROBE           = 20,
-    INVTYPE_WEAPONMAINHAND = 21,
-    INVTYPE_WEAPONOFFHAND  = 22,
-    INVTYPE_HOLDABLE       = 23,
-    INVTYPE_AMMO           = 24,
-    INVTYPE_THROWN         = 25,
-    INVTYPE_RANGEDRIGHT    = 26,
-    INVTYPE_SLOT_ITEM      = 27,
-    INVTYPE_RELIC          = 28,
-    NUM_INVENTORY_TYPES    = 29
+    INVTYPE_NON_EQUIP                           = 0,
+    INVTYPE_HEAD                                = 1,
+    INVTYPE_NECK                                = 2,
+    INVTYPE_SHOULDERS                           = 3,
+    INVTYPE_BODY                                = 4,
+    INVTYPE_CHEST                               = 5,
+    INVTYPE_WAIST                               = 6,
+    INVTYPE_LEGS                                = 7,
+    INVTYPE_FEET                                = 8,
+    INVTYPE_WRISTS                              = 9,
+    INVTYPE_HANDS                               = 10,
+    INVTYPE_FINGER                              = 11,
+    INVTYPE_TRINKET                             = 12,
+    INVTYPE_WEAPON                              = 13,
+    INVTYPE_SHIELD                              = 14,
+    INVTYPE_RANGED                              = 15,
+    INVTYPE_CLOAK                               = 16,
+    INVTYPE_2HWEAPON                            = 17,
+    INVTYPE_BAG                                 = 18,
+    INVTYPE_TABARD                              = 19,
+    INVTYPE_ROBE                                = 20,
+    INVTYPE_WEAPONMAINHAND                      = 21,
+    INVTYPE_WEAPONOFFHAND                       = 22,
+    INVTYPE_HOLDABLE                            = 23,
+    INVTYPE_AMMO                                = 24,
+    INVTYPE_THROWN                              = 25,
+    INVTYPE_RANGEDRIGHT                         = 26,
+    INVTYPE_SLOT_ITEM                           = 27,
+    INVTYPE_RELIC                               = 28,
+    NUM_INVENTORY_TYPES                         = 29
 };
 
 enum INVENTORY_CLASS
 {
-    ITEM_CLASS_CONSUMABLE    = 0,
-    ITEM_CLASS_CONTAINER     = 1,
-    ITEM_CLASS_WEAPON        = 2,
-    ITEM_CLASS_JEWELRY       = 3,
-    ITEM_CLASS_ARMOR         = 4,
-    ITEM_CLASS_REAGENT       = 5,
-    ITEM_CLASS_PROJECTILE    = 6,
-    ITEM_CLASS_TRADE_GOODS   = 7,
-    ITEM_CLASS_GENERIC       = 8,
-    ITEM_CLASS_BOOK          = 9,
-    ITEM_CLASS_MONEY         = 10,
-    ITEM_CLASS_QUIVER        = 11,
-    ITEM_CLASS_QUEST         = 12,
-    ITEM_CLASS_KEY           = 13,
-    ITEM_CLASS_PERMANENT     = 14,
-    ITEM_CLASS_JUNK          = 15
+    ITEM_CLASS_CONSUMABLE                       = 0,
+    ITEM_CLASS_CONTAINER                        = 1,
+    ITEM_CLASS_WEAPON                           = 2,
+    ITEM_CLASS_JEWELRY                          = 3,
+    ITEM_CLASS_ARMOR                            = 4,
+    ITEM_CLASS_REAGENT                          = 5,
+    ITEM_CLASS_PROJECTILE                       = 6,
+    ITEM_CLASS_TRADE_GOODS                      = 7,
+    ITEM_CLASS_GENERIC                          = 8,
+    ITEM_CLASS_RECIPE                           = 9,
+    ITEM_CLASS_MONEY                            = 10,
+    ITEM_CLASS_QUIVER                           = 11,
+    ITEM_CLASS_QUEST                            = 12,
+    ITEM_CLASS_KEY                              = 13,
+    ITEM_CLASS_PERMANENT                        = 14,
+    ITEM_CLASS_MISC                             = 15
 };
 
 // Client understand only 0 subclass for ITEM_CLASS_CONSUMABLE
 // but this value used in code as implementation workaround
 enum ITEM_SUBCLASS_CONSUMABLE
 {
-    ITEM_SUBCLASS_FOOD                    = 1,
-    ITEM_SUBCLASS_LIQUID                  = 2,
-    ITEM_SUBCLASS_POTION                  = 3,
-    ITEM_SUBCLASS_SCROLL                  = 4,
-    ITEM_SUBCLASS_BANDAGE                 = 5,
-    ITEM_SUBCLASS_HEALTHSTONE             = 6,
-    ITEM_SUBCLASS_COMBAT_EFFECT           = 7
+    ITEM_SUBCLASS_CONSUMABLE                    = 0,
+    ITEM_SUBCLASS_FOOD                          = 1, // Cheese/Bread(OBSOLETE)
+    ITEM_SUBCLASS_LIQUID                        = 2, // Liquid(OBSOLETE)
+    ITEM_SUBCLASS_POTION                        = 3,
+    ITEM_SUBCLASS_SCROLL                        = 4,
+    ITEM_SUBCLASS_BANDAGE                       = 5,
+    ITEM_SUBCLASS_HEALTHSTONE                   = 6,
+    ITEM_SUBCLASS_COMBAT_EFFECT                 = 7
 };
 
 enum ITEM_SUBCLASS_CONTAINER
 {
-    ITEM_SUBCLASS_CONTAINER               = 0,
-    ITEM_SUBCLASS_SOUL_CONTAINER          = 1,
-    ITEM_SUBCLASS_HERB_CONTAINER          = 2,
-    ITEM_SUBCLASS_ENCHANTING_CONTAINER    = 3,
-    ITEM_SUBCLASS_ENGINEERING_CONTAINER   = 4
+    ITEM_SUBCLASS_CONTAINER                     = 0,
+    ITEM_SUBCLASS_SOUL_CONTAINER                = 1,
+    ITEM_SUBCLASS_HERB_CONTAINER                = 2,
+    ITEM_SUBCLASS_ENCHANTING_CONTAINER          = 3,
+    ITEM_SUBCLASS_ENGINEERING_CONTAINER         = 4,
+    ITEM_SUBCLASS_GEM_CONTAINER                 = 5,
+    ITEM_SUBCLASS_MINING_CONTAINER              = 6
 };
 
 enum INVENTORY_SUBCLASS_WEAPON
 {
-    ITEM_SUBCLASS_WEAPON_AXE           = 0,
-    ITEM_SUBCLASS_WEAPON_AXE2          = 1,
-    ITEM_SUBCLASS_WEAPON_BOW           = 2,
-    ITEM_SUBCLASS_WEAPON_GUN           = 3,
-    ITEM_SUBCLASS_WEAPON_MACE          = 4,
-    ITEM_SUBCLASS_WEAPON_MACE2         = 5,
-    ITEM_SUBCLASS_WEAPON_POLEARM       = 6,
-    ITEM_SUBCLASS_WEAPON_SWORD         = 7,
-    ITEM_SUBCLASS_WEAPON_SWORD2        = 8,
-    ITEM_SUBCLASS_WEAPON_obsolete      = 9,
-    ITEM_SUBCLASS_WEAPON_STAFF         = 10,
-    ITEM_SUBCLASS_WEAPON_EXOTIC        = 11,
-    ITEM_SUBCLASS_WEAPON_EXOTIC2       = 12,
-    ITEM_SUBCLASS_WEAPON_UNARMED       = 13,
-    ITEM_SUBCLASS_WEAPON_GENERIC       = 14,
-    ITEM_SUBCLASS_WEAPON_DAGGER        = 15,
-    ITEM_SUBCLASS_WEAPON_THROWN        = 16,
-    ITEM_SUBCLASS_WEAPON_SPEAR         = 17,
-    ITEM_SUBCLASS_WEAPON_CROSSBOW      = 18,
-    ITEM_SUBCLASS_WEAPON_WAND          = 19,
-    ITEM_SUBCLASS_WEAPON_FISHING_POLE  = 20
+    ITEM_SUBCLASS_WEAPON_AXE                    = 0,
+    ITEM_SUBCLASS_WEAPON_AXE2                   = 1,
+    ITEM_SUBCLASS_WEAPON_BOW                    = 2,
+    ITEM_SUBCLASS_WEAPON_GUN                    = 3,
+    ITEM_SUBCLASS_WEAPON_MACE                   = 4,
+    ITEM_SUBCLASS_WEAPON_MACE2                  = 5,
+    ITEM_SUBCLASS_WEAPON_POLEARM                = 6,
+    ITEM_SUBCLASS_WEAPON_SWORD                  = 7,
+    ITEM_SUBCLASS_WEAPON_SWORD2                 = 8,
+    ITEM_SUBCLASS_WEAPON_obsolete               = 9,
+    ITEM_SUBCLASS_WEAPON_STAFF                  = 10,
+    ITEM_SUBCLASS_WEAPON_EXOTIC                 = 11,
+    ITEM_SUBCLASS_WEAPON_EXOTIC2                = 12,
+    ITEM_SUBCLASS_WEAPON_FIRST                  = 13,
+    ITEM_SUBCLASS_WEAPON_MISC                   = 14,
+    ITEM_SUBCLASS_WEAPON_DAGGER                 = 15,
+    ITEM_SUBCLASS_WEAPON_THROWN                 = 16,
+    ITEM_SUBCLASS_WEAPON_SPEAR                  = 17,
+    ITEM_SUBCLASS_WEAPON_CROSSBOW               = 18,
+    ITEM_SUBCLASS_WEAPON_WAND                   = 19,
+    ITEM_SUBCLASS_WEAPON_FISHING_POLE           = 20
 };
 
 enum ITEM_SUBCLASS_ARMOR
 {
-    ITEM_SUBCLASS_ARMOR_GENERIC     = 0,
-    ITEM_SUBCLASS_ARMOR_CLOTH       = 1,
-    ITEM_SUBCLASS_ARMOR_LEATHER     = 2,
-    ITEM_SUBCLASS_ARMOR_MAIL        = 3,
-    ITEM_SUBCLASS_ARMOR_PLATE       = 4,
-    ITEM_SUBCLASS_ARMOR_BUCKLER     = 5,
-    ITEM_SUBCLASS_ARMOR_SHIELD      = 6
+    ITEM_SUBCLASS_ARMOR_MISC                    = 0,
+    ITEM_SUBCLASS_ARMOR_CLOTH                   = 1,
+    ITEM_SUBCLASS_ARMOR_LEATHER                 = 2,
+    ITEM_SUBCLASS_ARMOR_MAIL                    = 3,
+    ITEM_SUBCLASS_ARMOR_PLATE                   = 4,
+    ITEM_SUBCLASS_ARMOR_BUCKLER                 = 5,
+    ITEM_SUBCLASS_ARMOR_SHIELD                  = 6,
+    ITEM_SUBCLASS_ARMOR_LIBRAM                  = 7,
+    ITEM_SUBCLASS_ARMOR_IDOL                    = 8,
+    ITEM_SUBCLASS_ARMOR_TOTEM                   = 9
 };
 
 enum ITEM_SUBCLASS_PROJECTILE
 {
-    ITEM_SUBCLASS_ARROW             = 2,
-    ITEM_SUBCLASS_BULLET            = 3
+    ITEM_SUBCLASS_WAND                          = 0, // ABS
+    ITEM_SUBCLASS_BOLT                          = 1, // ABS
+    ITEM_SUBCLASS_ARROW                         = 2,
+    ITEM_SUBCLASS_BULLET                        = 3, 
+    ITEM_SUBCLASS_THROWN                        = 4  // ABS
 };
 
 enum ITEM_SUBCLASS_TRADE_GOODS
 {
-    ITEM_SUBCLASS_TRADE_GOODS       = 0,
-    ITEM_SUBCLASS_PARTS             = 1,
-    ITEM_SUBCLASS_EXPLOSIVES        = 2,
-    ITEM_SUBCLASS_DEVICES           = 3
+    ITEM_SUBCLASS_TRADE_GOODS                   = 0,
+    ITEM_SUBCLASS_PARTS                         = 1,
+    ITEM_SUBCLASS_EXPLOSIVES                    = 2,
+    ITEM_SUBCLASS_DEVICES                       = 3,
+    ITEM_SUBCLASS_GEMS                          = 4
 };
 
 enum ITEM_SUBCLASS_BOOK
 {
-    ITEM_SUBCLASS_BOOK                   = 0,
-    ITEM_SUBCLASS_LEATHERWORKING_PATTERN = 1,
-    ITEM_SUBCLASS_TAILORING_PATTERN      = 2,
-    ITEM_SUBCLASS_ENGINEERING_SCHEMATIC  = 3,
-    ITEM_SUBCLASS_COOKING_RECIPE         = 5,
-    ITEM_SUBCLASS_ALCHEMY_RECIPE         = 6,
-    ITEM_SUBCLASS_FIRST_AID_MANUAL       = 7,
-    ITEM_SUBCLASS_ENCHANTING_FORMULA     = 8,
-    ITEM_SUBCLASS_FISHING_MANUAL         = 9
+    ITEM_SUBCLASS_BOOK                          = 0,
+    ITEM_SUBCLASS_LEATHERWORKING_PATTERN        = 1,
+    ITEM_SUBCLASS_TAILORING_PATTERN             = 2,
+    ITEM_SUBCLASS_ENGINEERING_SCHEMATIC         = 3,
+    ITEM_SUBCLASS_BLACKSMITHING                 = 4,
+    ITEM_SUBCLASS_COOKING_RECIPE                = 5,
+    ITEM_SUBCLASS_ALCHEMY_RECIPE                = 6,
+    ITEM_SUBCLASS_FIRST_AID_MANUAL              = 7,
+    ITEM_SUBCLASS_ENCHANTING_FORMULA            = 8,
+    ITEM_SUBCLASS_FISHING_MANUAL                = 9,
+    ITEM_SUBCLASS_JEWELCRAFTING                 = 10
 };
 
 enum ITEM_SUBCLASS_QUIVER
 {
-    ITEM_SUBCLASS_QUIVER            = 2,
-    ITEM_SUBCLASS_AMMO_POUCH        = 3
+    ITEM_SUBCLASS_QUIVER0                       = 0, // ABS
+    ITEM_SUBCLASS_QUIVER1                       = 1, // ABS
+    ITEM_SUBCLASS_QUIVER                        = 2,
+    ITEM_SUBCLASS_AMMO_POUCH                    = 3
 };
 
+enum ITEM_SUBCLASS_KEY
+{
+    ITEM_SUBCLASS_KEY                           = 0,
+    ITEM_SUBCLASS_LOCKPICK                      = 1
+};
+
 // Only GCC 4.1.0 and later support #pragma pack(push,1) syntax
 #if defined( __GNUC__ ) && (GCC_MAJOR < 4 || GCC_MAJOR == 4 && GCC_MINOR < 1)
 #pragma pack(1)
@@ -314,11 +379,18 @@
 
 };
 
+struct _Socket
+{
+    uint32 Color;
+    uint32 Content;
+};
+
 struct ItemPrototype
 {
     uint32 ItemId;
     uint32 Class;
     uint32 SubClass;
+    uint32 Unk0;
     char* Name1;
     char* Name2;
     char* Name3;
@@ -368,12 +440,19 @@
     uint32 Material;
     uint32 Sheath;
     uint32 Extra;
+    uint32 Unk4; // was added in 2.0.3...
     uint32 Block;
     uint32 ItemSet;
     uint32 MaxDurability;
     uint32 Area;
+    uint32 Map;
     uint32 BagFamily;
-    uint32 Unknown1;
+    uint32 TotemCategory;
+    _Socket Socket[3];
+    uint32 socketBonus;
+    uint32 GemProperties;
+    uint32 ExtendedCost;
+    uint32 RequiredDisenchantSkill;
     char* ScriptName;
     uint32 DisenchantID;
 };
Index: src/game/Item.h
===================================================================
--- src/game/Item.h	(working copy)
+++ src/game/Item.h	(working copy)
@@ -76,7 +76,7 @@
     EQUIP_ERR_YOU_ARE_STUNNED                    = 37,
     EQUIP_ERR_YOU_ARE_DEAD                       = 38,
     EQUIP_ERR_CANT_DO_RIGHT_NOW                  = 39,
-    EQUIP_ERR_BAG_FULL2                          = 40,
+    EQUIP_ERR_INT_BAG_ERROR                      = 40,
     EQUIP_ERR_CAN_EQUIP_ONLY1_QUIVER2            = 41,
     EQUIP_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH          = 42,
     EQUIP_ERR_STACKABLE_CANT_BE_WRAPPED          = 43,
@@ -101,7 +101,14 @@
     EQUIP_ERR_BAG_FULL6                          = 62,
     EQUIP_ITEM_RANK_NOT_ENOUGH                   = 63,
     EQUIP_ITEM_REPUTATION_NOT_ENOUGH             = 64,
-    EQUIP_MORE_THAN1_SPECIAL_BAG                 = 65
+    EQUIP_MORE_THAN1_SPECIAL_BAG                 = 65,
+    EQUIP_CANT_LOOT_NOW                          = 66,
+    EQUIP_CANT_EQUIP_MORE_THAN_ONE_OF_THAT       = 67,
+    EQUIP_DONT_HAVE_REQITEMS_FOR_THAT_PURCHASE   = 68,
+    EQUIP_DONT_HAVE_ENOUGHT_HONOR_POINTS         = 69,
+    EQUIP_DONT_HAVE_ENOUGHT_ARENA_POINTS         = 70,
+    EQUIP_MAX_GEMS_IN_INVENTORY                  = 71,
+    EQUIP_CANT_MAIL_SOULBOUND                    = 72
 };
 
 enum BuyFailure
@@ -112,15 +119,18 @@
     BUY_ERR_SELLER_DONT_LIKE_YOU                 = 4,
     BUY_ERR_DISTANCE_TOO_FAR                     = 5,
     BUY_ERR_CANT_CARRY_MORE                      = 8,
-    BUY_ERR_LEVEL_REQUIRE                        = 11,
+    BUY_ERR_LEVEL_REQUIRE                        = 11, // 2.0.1 - rank
     BUY_ERR_REPUTATION_REQUIRE                   = 12
 };
 
 enum SellFailure
 {
     SELL_ERR_CANT_FIND_ITEM                      = 1,
-    SELL_ERR_CANT_SELL_ITEM                      = 2,
-    SELL_ERR_CANT_FIND_VENDOR                    = 3
+    SELL_ERR_CANT_SELL_ITEM                      = 2, // merchant doesn't like that item
+    SELL_ERR_CANT_FIND_VENDOR                    = 3, // merchant doesn't like you
+    SELL_ERR_YOU_DONT_OWN_THAT_ITEM              = 4, // you don't own that item
+    SELL_ERR_UNK                                 = 5, // nothing appears...
+    SELL_ERR_ONLY_EMPTY_BAG                      = 6  // can only do with empty bags
 };
 
 enum ItemUpdateState
Index: src/game/Guild.h
===================================================================
--- src/game/Guild.h	(working copy)
+++ src/game/Guild.h	(working copy)
@@ -19,7 +19,7 @@
 #ifndef MANGOSSERVER_GUILD_H
 #define MANGOSSERVER_GUILD_H
 
-#define MAXRANKS 10
+#define GUILD_MAXRANKS 10
 
 enum GuildDefaultRanks
 {
Index: src/game/SharedDefines.h
===================================================================
--- src/game/SharedDefines.h	(working copy)
+++ src/game/SharedDefines.h	(working copy)
@@ -33,15 +33,18 @@
     RACE_ORC            = 2,
     RACE_DWARF          = 3,
     RACE_NIGHTELF       = 4,
-    // if it needs be to official, it's actually SCOURGE acording to the story/.dbc
     RACE_UNDEAD_PLAYER  = 5,
     RACE_TAUREN         = 6,
     RACE_GNOME          = 7,
     RACE_TROLL          = 8,
-    MAX_RACES           = 9,
-    // officially, this exists but was never taken into use.. neutral faction which could
-    // learn some skills/spells from horde/alliance. maybe it'll be of some use later on.
-    RACE_GOBLIN = 9
+    RACE_GOBLIN         = 9,
+    RACE_BLOODELF       = 10,
+    RACE_DRAENEI        = 11,
+    RACE_FEL_ORC        = 12,
+    RACE_NAGA           = 13,
+    RACE_BROKEN         = 14,
+    RACE_SKELETON       = 15,
+    MAX_RACES           = 16
 };
 
 // Class value is index in ChrClasses.dbc
@@ -69,7 +72,7 @@
     REP_NEUTRAL     = 3,
     REP_FRIENDLY    = 4,
     REP_HONORED     = 5,
-    REP_REVERTED    = 6,
+    REP_REVERED     = 6,
     REP_EXALTED     = 7
 };
 
@@ -82,6 +85,7 @@
     MAP_INSTANCE        = 1,
     MAP_RAID            = 2,
     MAP_BATTLEGROUND    = 3,
+    MAP_ARENA           = 4
 };
 
 enum MoneyConstants
@@ -175,7 +179,8 @@
 
 enum Language
 {
-    LANG_GLOBAL         = 0, LANG_UNIVERSAL      = 0,
+    LANG_GLOBAL         = 0,
+    LANG_UNIVERSAL      = 0,
     LANG_ORCISH         = 1,
     LANG_DARNASSIAN     = 2,
     LANG_TAURAHE        = 3,
@@ -183,15 +188,16 @@
     LANG_COMMON         = 7,
     LANG_DEMONIC        = 8,
     LANG_TITAN          = 9,
-    LANG_THELASSIAN     = 10,
+    LANG_THALASSIAN     = 10,
     LANG_DRACONIC       = 11,
     LANG_KALIMAG        = 12,
     LANG_GNOMISH        = 13,
     LANG_TROLL          = 14,
-    LANG_GUTTERSPEAK    = 33
+    LANG_GUTTERSPEAK    = 33,
+    LANG_DRAENEI        = 35
 };
 
-#define LANGUAGES_COUNT 15
+#define LANGUAGES_COUNT 17
 
 enum Team
 {
@@ -326,7 +332,21 @@
     SPELL_EFFECT_APPLY_AURA_NEW            = 119,
     SPELL_EFFECT_TELEPORT_GRAVEYARD        = 120,
     SPELL_EFFECT_NORMALIZED_WEAPON_DMG     = 121,
-    TOTAL_SPELL_EFFECTS                    = 122
+    SPELL_EFFECT_122                       = 122,
+    SPELL_EFFECT_123                       = 123,
+    SPELL_EFFECT_124                       = 124,
+    SPELL_EFFECT_125                       = 125,
+    SPELL_EFFECT_126                       = 126,
+    SPELL_EFFECT_127                       = 127,
+    SPELL_EFFECT_128                       = 128,
+    SPELL_EFFECT_129                       = 129,
+    SPELL_EFFECT_130                       = 130,
+    SPELL_EFFECT_131                       = 131,
+    SPELL_EFFECT_132                       = 132,
+    SPELL_EFFECT_133                       = 133,
+    SPELL_EFFECT_134                       = 134,
+    SPELL_EFFECT_135                       = 135,
+    TOTAL_SPELL_EFFECTS                    = 136
 };
 
 enum CharacterStates
@@ -371,7 +391,11 @@
     GAMEOBJECT_TYPE_FISHINGHOLE            = 25,
     GAMEOBJECT_TYPE_FLAGDROP               = 26,
     // Custom gametypes, can create problems at sending to client,
-    GAMEOBJECT_TYPE_CUSTOM_TELEPORTER      = 27
+    GAMEOBJECT_TYPE_CUSTOM_TELEPORTER      = 27,
+    GAMEOBJECT_TYPE_LOTTERY_KIOSK          = 28,
+    GAMEOBJECT_TYPE_CAPTURE_POINT          = 29,
+    GAMEOBJECT_TYPE_AURA_GENERATOR         = 30,
+    GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY     = 31
 };
 
 enum TextEmote
@@ -528,8 +552,14 @@
     TEXTEMOTE_FLOP                 = 224,
     TEXTEMOTE_LOVE                 = 225,
     TEXTEMOTE_MOO                  = 226,
+    TEXTEMOTE_OPENFIRE             = 327,
+    TEXTEMOTE_FLIRT                = 328,
+    TEXTEMOTE_JOKE                 = 329,
     TEXTEMOTE_COMMEND              = 243,
-    TEXTEMOTE_JOKE                 = 329
+    TEXTEMOTE_WINK                 = 363,
+    TEXTEMOTE_PAT                  = 364,
+    TEXTEMOTE_SERIOUS              = 365,
+    TEXTEMOTE_MOUNTSPECIAL         = 366
 };
 
 enum Emote
@@ -605,11 +635,30 @@
     EMOTE_ONESHOT_NO                   = 274,
     EMOTE_ONESHOT_TRAIN                = 275,
     EMOTE_ONESHOT_LAND                 = 293,
+    EMOTE_STATE_AT_EASE                = 313,
     EMOTE_STATE_READY1H                = 333,
-    EMOTE_STATE_AT_EASE                = 313,
     EMOTE_STATE_SPELLKNEELSTART        = 353,
     EMOTE_STATE_SUBMERGED              = 373,
-    EMOTE_ONESHOT_SUBMERGE             = 374
+    EMOTE_ONESHOT_SUBMERGE             = 374,
+    EMOTE_STATE_READY2H                = 375,
+    EMOTE_STATE_READYBOW               = 376,
+    EMOTE_ONESHOT_MOUNTSPECIAL         = 377,
+    EMOTE_STATE_TALK                   = 378,
+    EMOTE_STATE_FISHING                = 379,
+    EMOTE_ONESHOT_FISHING              = 380,
+    EMOTE_ONESHOT_LOOT                 = 381,
+    EMOTE_STATE_WHIRLWIND              = 382,
+    EMOTE_STATE_DROWNED                = 383,
+    EMOTE_STATE_HOLD_BOW               = 384,
+    EMOTE_STATE_HOLD_RIFLE             = 385,
+    EMOTE_STATE_HOLD_THROWN            = 386,
+    EMOTE_ONESHOT_DROWN                = 387,
+    EMOTE_ONESHOT_STOMP                = 388,
+    EMOTE_ONESHOT_ATTACKOFF            = 389,
+    EMOTE_ONESHOT_ATTACKOFFPIERCE      = 390,
+    EMOTE_STATE_ROAR                   = 391,
+    EMOTE_STATE_LAUGH                  = 392,
+    EMOTE_ONESHOT_CREATURE_SPECIAL     = 393
 };
 
 enum Anim
@@ -760,30 +809,69 @@
     ANIM_SPRINT                    = 0x8F,
     ANIM_IN_FIGHT                  = 0x90,
 
-    FIRST_GAMEOBJECTANIMATION      = 0x91,
-    ANIM_GAMEOBJ_SPAWN             = 0,
-    ANIM_GAMEOBJ_CLOSED            = 1,
-    ANIM_GAMEOBJ_OPEN              = 2,
-    ANIM_GAMEOBJ_OPENED            = 3,
-    ANIM_GAMEOBJ_CLOSE             = 4,
-    ANIM_GAMEOBJ_DESTROY           = 5,
-    ANIM_GAMEOBJ_DESTROYED         = 6,
-    ANIM_GAMEOBJ_REBUILD           = 7,
-    ANIM_GAMEOBJ_CUSTOM0           = 8,
-    ANIM_GAMEOBJ_CUSTOM1           = 9,
-    ANIM_GAMEOBJ_CUSTOM2           = 10,
-    ANIM_GAMEOBJ_CUSTOM3           = 11,
-
-    FIRST_EFFECTANIMATION          = 0x93,
-    ANIM_EFFECT_STAND              = 0,
-    ANIM_EFFECT_HOLD               = 1,
-    ANIM_EFFECT_DECAY              = 2,
-
-    FIRST_ITEMANIMATION            = 0x96,
-    ANIM_ITEM_STAND                = 0,
-    ANIM_ITEM_INFLIGHT             = 1,
-    ANIM_ITEM_BOWPULL              = 2,
-    ANIM_ITEM_BOWRELEASE           = 3
+    ANIM_GAMEOBJ_SPAWN             = 145,
+    ANIM_GAMEOBJ_CLOSE             = 146,
+    ANIM_GAMEOBJ_CLOSED            = 147,
+    ANIM_GAMEOBJ_OPEN              = 148,
+    ANIM_GAMEOBJ_OPENED            = 149,
+    ANIM_GAMEOBJ_DESTROY           = 150,
+    ANIM_GAMEOBJ_DESTROYED         = 151,
+    ANIM_GAMEOBJ_REBUILD           = 152,
+    ANIM_GAMEOBJ_CUSTOM0           = 153,
+    ANIM_GAMEOBJ_CUSTOM1           = 154,
+    ANIM_GAMEOBJ_CUSTOM2           = 155,
+    ANIM_GAMEOBJ_CUSTOM3           = 156,
+    ANIM_GAMEOBJ_DESPAWN           = 157,
+    ANIM_HOLD                      = 158,
+    ANIM_DECAY                     = 159,
+    ANIM_BOWPULL                   = 160,
+    ANIM_BOWRELEASE                = 161,
+    ANIM_SHIPSTART                 = 162,
+    ANIM_SHIPMOVEING               = 163,
+    ANIM_SHIPSTOP                  = 164,
+    ANIM_GROUPARROW                = 165,
+    ANIM_ARROW                     = 166,
+    ANIM_CORPSEARROW               = 167,
+    ANIM_GUIDEARROW                = 168,
+    ANIM_SWAY                      = 169,
+    ANIM_DRUIDCATPOUNCE            = 170,
+    ANIM_DRUIDCATRIP               = 171,
+    ANIM_DRUIDCATRAKE              = 172,
+    ANIM_DRUIDCATRAVAGE            = 173,
+    ANIM_DRUIDCATCLAW              = 174,
+    ANIM_DRUIDCATCOWER             = 175,
+    ANIM_DRUIDBEARSWIPE            = 176,
+    ANIM_DRUIDBEARBITE             = 177,
+    ANIM_DRUIDBEARMAUL             = 178,
+    ANIM_DRUIDBEARBASH             = 179,
+    ANIM_DRAGONTAIL                = 180,
+    ANIM_DRAGONSTOMP               = 181,
+    ANIM_DRAGONSPIT                = 182,
+    ANIM_DRAGONSPITHOVER           = 183,
+    ANIM_DRAGONSPITFLY             = 184,
+    ANIM_EMOTEYES                  = 185,
+    ANIM_EMOTENO                   = 186,
+    ANIM_JUMPLANDRUN               = 187,
+    ANIM_LOOTHOLD                  = 188,
+    ANIM_LOOTUP                    = 189,
+    ANIM_STANDHIGH                 = 190,
+    ANIM_IMPACT                    = 191,
+    ANIM_LIFTOFF                   = 192,
+    ANIM_HOVER                     = 193,
+    ANIM_SUCCUBUSENTICE            = 194,
+    ANIM_EMOTETRAIN                = 195,
+    ANIM_EMOTEDEAD                 = 196,
+    ANIM_EMOTEDANCEONCE            = 197,
+    ANIM_DEFLECT                   = 198,
+    ANIM_EMOTEEATNOSHEATHE         = 199,
+    ANIM_LAND                      = 200,
+    ANIM_SUBMERGE                  = 201,
+    ANIM_SUBMERGED                 = 202,
+    ANIM_CANNIBALIZE               = 203,
+    ANIM_ARROWBIRTH                = 204,
+    ANIM_GROURARROWBIRTH           = 205,
+    ANIM_CORPSEARROWBIRTH          = 206,
+    ANIM_GUIDEARROWBIRTH           = 207
 };
 
 enum LockType
@@ -805,7 +893,8 @@
     LOCKTYPE_GAHZRIDIAN            = 15,
     LOCKTYPE_BLASTING              = 16,
     LOCKTYPE_SLOW_OPEN             = 17,
-    LOCKTYPE_SLOW_CLOSE            = 18
+    LOCKTYPE_SLOW_CLOSE            = 18,
+    LOCKTYPE_FISHING               = 19
 };
 
 enum TrainerType                                            // this is important type for npcs!
@@ -827,7 +916,8 @@
     CREATURE_TYPE_HUMANOID         = 7,
     CREATURE_TYPE_CRITTER          = 8,
     CREATURE_TYPE_MECHANICAL       = 9,
-    CREATURE_TYPE_UNKNOWN          = 10
+    CREATURE_TYPE_NOTSPECIFIED     = 10,
+    CREATURE_TYPE_TOTEM            = 11
 };
 
 enum CreatureFamily
@@ -853,7 +943,15 @@
     CREATURE_FAMILY_BAT            = 24,
     CREATURE_FAMILY_HYENA          = 25,
     CREATURE_FAMILY_OWL            = 26,
-    CREATURE_FAMILY_WIND_SERPENT   = 27
+    CREATURE_FAMILY_WIND_SERPENT   = 27,
+    CREATURE_FAMILY_REMOTE_CONTROL = 28,
+    CREATURE_FAMILY_FELGUARD       = 29,
+    CREATURE_FAMILY_DRAGONHAWK     = 30,
+    CREATURE_FAMILY_RAVAGER        = 31,
+    CREATURE_FAMILY_WARP_STALKER   = 32,
+    CREATURE_FAMILY_SPOREBAT       = 33,
+    CREATURE_FAMILY_NETHER_RAY     = 34,
+    CREATURE_FAMILY_SERPENT        = 35
 };
 
 enum CreatureEliteType
@@ -871,7 +969,10 @@
     QUEST_TYPE_LIFE                = 21,
     QUEST_TYPE_PVP                 = 41,
     QUEST_TYPE_RAID                = 62,
-    QUEST_TYPE_DUNGEON             = 81
+    QUEST_TYPE_DUNGEON             = 81,
+    QUEST_TYPE_WORLD_EVENT         = 82,
+    QUEST_TYPE_LEGENDARY           = 83,
+    QUEST_TYPE_ESCORT              = 84
 };
 
 enum QuestSort
@@ -902,7 +1003,14 @@
     QUEST_SORT_TAILORING           = 264,
     QUEST_SORT_SPECIAL             = 284,
     QUEST_SORT_COOKING             = 304,
-    QUEST_SORT_FIRST_AID           = 324
+    QUEST_SORT_FIRST_AID           = 324,
+    QUEST_SORT_LEGENDARY           = 344,
+    QUEST_SORT_DARKMOON_FAIRE      = 364,
+    QUEST_SORT_AHN_QIRAJ_WAR       = 365,
+    QUEST_SORT_LUNAR_FESTIVAL      = 366,
+    QUEST_SORT_REPUTATION          = 367,
+    QUEST_SORT_INVASION            = 368,
+    QUEST_SORT_MIDSUMMER           = 369
 };
 
 enum SkillType
@@ -987,21 +1095,17 @@
     SKILL_SPEARS                   = 227,
     SKILL_WANDS                    = 228,
     SKILL_POLEARMS                 = 229,
-    SKILL_ATTRIBUTE_ENCHANCEMENTS  = 230,
-    SKILL_SLAYER_TALENTS           = 231,
-    SKILL_MAGIC_TALENTS            = 233,
-    SKILL_DEFENSIVE_TALENTS        = 234,
     SKILL_PET_SCORPID              = 236,
     SKILL_ARCANE                   = 237,
     SKILL_OPEN_LOCK                = 242,
     SKILL_PET_TURTLE               = 251,
+    SKILL_ASSASSINATION            = 253,
     SKILL_FURY                     = 256,
     SKILL_PROTECTION               = 257,
     SKILL_BEAST_TRAINING           = 261,
     SKILL_PROTECTION2              = 267,
     SKILL_PET_TALENTS              = 270,
     SKILL_PLATE_MAIL               = 293,
-    SKILL_ASSASSINATION            = 253,
     SKILL_LANG_GNOMISH             = 313,
     SKILL_LANG_TROLL               = 315,
     SKILL_ENCHANTING               = 333,
@@ -1012,17 +1116,11 @@
     SKILL_RESTORATION              = 374,
     SKILL_ELEMENTAL_COMBAT         = 375,
     SKILL_SKINNING                 = 393,
+    SKILL_MAIL                     = 413,
     SKILL_LEATHER                  = 414,
     SKILL_CLOTH                    = 415,
-    SKILL_MAIL                     = 413,
     SKILL_SHIELD                   = 433,
     SKILL_FIST_WEAPONS             = 473,
-    SKILL_TRACKING_BEAST           = 513,
-    SKILL_TRACKING_HUMANOID        = 514,
-    SKILL_TRACKING_DEMON           = 516,
-    SKILL_TRACKING_UNDEAD          = 517,
-    SKILL_TRACKING_DRAGON          = 518,
-    SKILL_TRACKING_ELEMENTAL       = 519,
     SKILL_RIDING_RAPTOR            = 533,
     SKILL_RIDING_MECHANOSTRIDER    = 553,
     SKILL_RIDING_UNDEAD_HORSE      = 554,
@@ -1041,32 +1139,64 @@
     SKILL_RACIAL_TROLL             = 733,
     SKILL_RACIAL_GNOME             = 753,
     SKILL_RACIAL_HUMAN             = 754,
-    SKILL_RIDING                   = 762
+    SKILL_JEWELCRAFTING            = 755,
+    SKILL_RACIAL_BLOODELF          = 756,
+    SKILL_PET_EVENT_RC             = 758,
+    SKILL_LANG_DRAENEI             = 759,
+    SKILL_RACIAL_DRAENEI           = 760,
+    SKILL_PET_FELGUARD             = 761,
+    SKILL_RIDING                   = 762,
+    SKILL_PET_DRAGONHAWK           = 763,
+    SKILL_PET_NETHER_RAY           = 764,
+    SKILL_PET_SPOREBAT             = 765,
+    SKILL_PET_WARP_STALKER         = 766,
+    SKILL_PET_RAVAGER              = 767,
+    SKILL_PET_SERPENT              = 768
 };
 
-#define UNIT_DYNFLAG_LOOTABLE           0x0001
+enum TotemCategory
+{
+    TC_SKINNING_SKIFE              = 1,
+    TC_EARTH_TOTEM                 = 2,
+    TC_AIR_TOTEM                   = 3,
+    TC_FIRE_TOTEM                  = 4,
+    TC_WATER_TOTEM                 = 5,
+    TC_COPPER_ROD                  = 6,
+    TC_SILVER_ROD                  = 7,
+    TC_GOLDEN_ROD                  = 8,
+    TC_TRUESILVER_ROD              = 9,
+    TC_ARCANITE_ROD                = 10,
+    TC_MINING_PICK                 = 11,
+    TC_PHILOSOPHERS_STONE          = 12,
+    TC_BLACKSMITH_HAMMER           = 13,
+    TC_ARCLIGHT_SPANNER            = 14,
+    TC_GYROMATIC_MA                = 15,
+    TC_MASTER_TOTEM                = 21,
+    TC_FEL_IRON_ROD                = 41,
+    TC_ADAMANTITE_ROD              = 62,
+    TC_ETERNIUM_ROD                = 63
+};
 
-#define UNIT_DYNFLAG_TRACK_UNIT         0x0002
+enum UnitDynFlags
+{
+    UNIT_DYNFLAG_LOOTABLE          = 0x0001,
+    UNIT_DYNFLAG_TRACK_UNIT        = 0x0002,
+    UNIT_DYNFLAG_OTHER_TAGGER      = 0x0004,
+    UNIT_DYNFLAG_ROOTED            = 0x0008,
+    UNIT_DYNFLAG_SPECIALINFO       = 0x0010,
+    UNIT_DYNFLAG_DEAD              = 0x0020
+};
 
-#define UNIT_DYNFLAG_OTHER_TAGGER       0x0004
+enum UnitFlags1
+{
+    UNIT_FLAG_NOT_ATTACKABLE       = 0x0002,
+    UNIT_FLAG_ATTACKABLE           = 0x0008,
+    UNIT_FLAG_NOT_ATTACKABLE_1     = 0x0080,
+    UNIT_FLAG_NON_PVP_PLAYER       = (UNIT_FLAG_ATTACKABLE + UNIT_FLAG_NOT_ATTACKABLE_1),
+    UNIT_FLAG_ANIMATION_FROZEN     = 0x0400,
+    UNIT_FLAG_WAR_PLAYER           = 0x1000
+};
 
-#define UNIT_DYNFLAG_ROOTED             0x0008
-
-#define UNIT_DYNFLAG_SPECIALINFO        0x0010
-
-#define UNIT_DYNFLAG_DEAD               0x0020
-
-#define UNIT_FLAG_NOT_ATTACKABLE        0x0002
-
-#define UNIT_FLAG_ATTACKABLE            0x0008
-
-#define UNIT_FLAG_NOT_ATTACKABLE_1      0x0080
-
-#define UNIT_FLAG_NON_PVP_PLAYER        (UNIT_FLAG_ATTACKABLE + UNIT_FLAG_NOT_ATTACKABLE_1)
-
-#define UNIT_FLAG_ANIMATION_FROZEN      0x0400
-#define UNIT_FLAG_WAR_PLAYER            0x1000
-
 #define SPELL_ID_AGGRO                    22764
 
 enum WeatherTypes
Index: src/game/UpdateFields.h
===================================================================
--- src/game/UpdateFields.h	(working copy)
+++ src/game/UpdateFields.h	(working copy)
@@ -23,357 +23,339 @@
 
 enum EObjectFields
 {
-    OBJECT_FIELD_GUID                             = 0x0000,
-    OBJECT_FIELD_TYPE                             = 0x0002,
-    OBJECT_FIELD_ENTRY                            = 0x0003,
-    OBJECT_FIELD_SCALE_X                          = 0x0004,
-    OBJECT_FIELD_PADDING                          = 0x0005,
-    OBJECT_END                                    = OBJECT_FIELD_PADDING + 1,
+    OBJECT_FIELD_GUID                          = 0x00, // Size:2
+    OBJECT_FIELD_TYPE                          = 0x02, // Size:1
+    OBJECT_FIELD_ENTRY                         = 0x03, // Size:1
+    OBJECT_FIELD_SCALE_X                       = 0x04, // Size:1
+    OBJECT_FIELD_PADDING                       = 0x05, // Size:1
+    OBJECT_END                                 = 0x06,
 };
 
 enum EItemFields
 {
-    ITEM_FIELD_OWNER                              = OBJECT_END + 0x0000,
-    ITEM_FIELD_CONTAINED                          = OBJECT_END + 0x0002,
-    ITEM_FIELD_CREATOR                            = OBJECT_END + 0x0004,
-    ITEM_FIELD_GIFTCREATOR                        = OBJECT_END + 0x0006,
-    ITEM_FIELD_STACK_COUNT                        = OBJECT_END + 0x0008,
-    ITEM_FIELD_DURATION                           = OBJECT_END + 0x0009,
-    ITEM_FIELD_SPELL_CHARGES                      = OBJECT_END + 0x000A,
-    ITEM_FIELD_FLAGS                              = OBJECT_END + 0x000F,
-    ITEM_FIELD_ENCHANTMENT                        = OBJECT_END + 0x0010,
-    ITEM_FIELD_PROPERTY_SEED                      = OBJECT_END + 0x0025,
-    ITEM_FIELD_RANDOM_PROPERTIES_ID               = OBJECT_END + 0x0026,
-    ITEM_FIELD_ITEM_TEXT_ID                       = OBJECT_END + 0x0027,
-    ITEM_FIELD_DURABILITY                         = OBJECT_END + 0x0028,
-    ITEM_FIELD_MAXDURABILITY                      = OBJECT_END + 0x0029,
-    ITEM_END                                      = ITEM_FIELD_MAXDURABILITY + 1,
+    ITEM_FIELD_OWNER                           = OBJECT_END + 0x00, // Size:2
+    ITEM_FIELD_CONTAINED                       = OBJECT_END + 0x02, // Size:2
+    ITEM_FIELD_CREATOR                         = OBJECT_END + 0x04, // Size:2
+    ITEM_FIELD_GIFTCREATOR                     = OBJECT_END + 0x06, // Size:2
+    ITEM_FIELD_STACK_COUNT                     = OBJECT_END + 0x08, // Size:1
+    ITEM_FIELD_DURATION                        = OBJECT_END + 0x09, // Size:1
+    ITEM_FIELD_SPELL_CHARGES                   = OBJECT_END + 0x0A, // Size:5
+    ITEM_FIELD_SPELL_CHARGES_01                = OBJECT_END + 0x0B,
+    ITEM_FIELD_SPELL_CHARGES_02                = OBJECT_END + 0x0C,
+    ITEM_FIELD_SPELL_CHARGES_03                = OBJECT_END + 0x0D,
+    ITEM_FIELD_SPELL_CHARGES_04                = OBJECT_END + 0x0E,
+    ITEM_FIELD_FLAGS                           = OBJECT_END + 0x0F, // Size:1
+    ITEM_FIELD_ENCHANTMENT                     = OBJECT_END + 0x10, // count=33 This is 21 past
+    ITEM_FIELD_SOCKETS_ENCHANTMENT             = OBJECT_END + 0x25, // + (3 sockets + 1 bonus) * 3 uint32 = 12
+    ITEM_FIELD_ENCHANTMENT_LAST                = OBJECT_END + 0x30,
+    ITEM_FIELD_PROPERTY_SEED                   = OBJECT_END + 0x31, // Size:1
+    ITEM_FIELD_RANDOM_PROPERTIES_ID            = OBJECT_END + 0x32, // Size:1
+    ITEM_FIELD_ITEM_TEXT_ID                    = OBJECT_END + 0x33, // Size:1
+    ITEM_FIELD_DURABILITY                      = OBJECT_END + 0x34, // Size:1
+    ITEM_FIELD_MAXDURABILITY                   = OBJECT_END + 0x35, // Size:1
+    ITEM_END                                   = OBJECT_END + 0x36,
 };
 
 enum EContainerFields
 {
-    CONTAINER_FIELD_NUM_SLOTS                     = ITEM_END + 0x0000,
-    CONTAINER_ALIGN_PAD                           = ITEM_END + 0x0001,
-    CONTAINER_FIELD_SLOT_1                        = ITEM_END + 0x0002,
-    CONTAINER_END                                 = CONTAINER_FIELD_SLOT_1 + 56,
+    CONTAINER_FIELD_NUM_SLOTS                  = ITEM_END + 0x00, // Size:1
+    CONTAINER_ALIGN_PAD                        = ITEM_END + 0x01, // Size:1
+    CONTAINER_FIELD_SLOT_1                     = ITEM_END + 0x02, // count=72
+    CONTAINER_FIELD_SLOT_LAST                  = ITEM_END + 0x49,
+    CONTAINER_END                              = ITEM_END + 0x4A,
 };
 
 enum EUnitFields
 {
-    UNIT_FIELD_CHARM                              = OBJECT_END + 0x0000,
-    UNIT_FIELD_SUMMON                             = OBJECT_END + 0x0002,
-    UNIT_FIELD_CHARMEDBY                          = OBJECT_END + 0x0004,
-    UNIT_FIELD_SUMMONEDBY                         = OBJECT_END + 0x0006,
-    UNIT_FIELD_CREATEDBY                          = OBJECT_END + 0x0008,
-    UNIT_FIELD_TARGET                             = OBJECT_END + 0x000A,
-    UNIT_FIELD_PERSUADED                          = OBJECT_END + 0x000C,
-    UNIT_FIELD_CHANNEL_OBJECT                     = OBJECT_END + 0x000E,
-    UNIT_FIELD_HEALTH                             = OBJECT_END + 0x0010,
-    UNIT_FIELD_POWER1                             = OBJECT_END + 0x0011,
-    UNIT_FIELD_POWER2                             = OBJECT_END + 0x0012,
-    UNIT_FIELD_POWER3                             = OBJECT_END + 0x0013,
-    UNIT_FIELD_POWER4                             = OBJECT_END + 0x0014,
-    UNIT_FIELD_POWER5                             = OBJECT_END + 0x0015,
-    UNIT_FIELD_MAXHEALTH                          = OBJECT_END + 0x0016,
-    UNIT_FIELD_MAXPOWER1                          = OBJECT_END + 0x0017,
-    UNIT_FIELD_MAXPOWER2                          = OBJECT_END + 0x0018,
-    UNIT_FIELD_MAXPOWER3                          = OBJECT_END + 0x0019,
-    UNIT_FIELD_MAXPOWER4                          = OBJECT_END + 0x001A,
-    UNIT_FIELD_MAXPOWER5                          = OBJECT_END + 0x001B,
-    UNIT_FIELD_LEVEL                              = OBJECT_END + 0x001C,
-    UNIT_FIELD_FACTIONTEMPLATE                    = OBJECT_END + 0x001D,
-    UNIT_FIELD_BYTES_0                            = OBJECT_END + 0x001E,
-    UNIT_VIRTUAL_ITEM_SLOT_DISPLAY                = OBJECT_END + 0x001F,
-    UNIT_VIRTUAL_ITEM_INFO                        = OBJECT_END + 0x0022,
-    UNIT_FIELD_FLAGS                              = OBJECT_END + 0x0028,
-    UNIT_FIELD_AURA                               = OBJECT_END + 0x0029,
-    UNIT_FIELD_AURAFLAGS                          = OBJECT_END + 0x0059,
-    UNIT_FIELD_AURALEVELS                         = OBJECT_END + 0x005F,
-    UNIT_FIELD_AURAAPPLICATIONS                   = OBJECT_END + 0x006B,
-    UNIT_FIELD_AURASTATE                          = OBJECT_END + 0x0077,
-    UNIT_FIELD_BASEATTACKTIME                     = OBJECT_END + 0x0078,
-    UNIT_FIELD_RANGEDATTACKTIME                   = OBJECT_END + 0x007A,
-    UNIT_FIELD_BOUNDINGRADIUS                     = OBJECT_END + 0x007B,
-    UNIT_FIELD_COMBATREACH                        = OBJECT_END + 0x007C,
-    UNIT_FIELD_DISPLAYID                          = OBJECT_END + 0x007D,
-    UNIT_FIELD_NATIVEDISPLAYID                    = OBJECT_END + 0x007E,
-    UNIT_FIELD_MOUNTDISPLAYID                     = OBJECT_END + 0x007F,
-    UNIT_FIELD_MINDAMAGE                          = OBJECT_END + 0x0080,
-    UNIT_FIELD_MAXDAMAGE                          = OBJECT_END + 0x0081,
-    UNIT_FIELD_MINOFFHANDDAMAGE                   = OBJECT_END + 0x0082,
-    UNIT_FIELD_MAXOFFHANDDAMAGE                   = OBJECT_END + 0x0083,
-    UNIT_FIELD_BYTES_1                            = OBJECT_END + 0x0084,
-    UNIT_FIELD_PETNUMBER                          = OBJECT_END + 0x0085,
-    UNIT_FIELD_PET_NAME_TIMESTAMP                 = OBJECT_END + 0x0086,
-    UNIT_FIELD_PETEXPERIENCE                      = OBJECT_END + 0x0087,
-    UNIT_FIELD_PETNEXTLEVELEXP                    = OBJECT_END + 0x0088,
-    UNIT_DYNAMIC_FLAGS                            = OBJECT_END + 0x0089,
-    UNIT_CHANNEL_SPELL                            = OBJECT_END + 0x008A,
-    UNIT_MOD_CAST_SPEED                           = OBJECT_END + 0x008B,
-    UNIT_CREATED_BY_SPELL                         = OBJECT_END + 0x008C,
-    UNIT_NPC_FLAGS                                = OBJECT_END + 0x008D,
-    UNIT_NPC_EMOTESTATE                           = OBJECT_END + 0x008E,
-    UNIT_TRAINING_POINTS                          = OBJECT_END + 0x008F,
-    UNIT_FIELD_STR                              = OBJECT_END + 0x0090,
-    UNIT_FIELD_AGILITY                              = OBJECT_END + 0x0091,
-    UNIT_FIELD_STAMINA                              = OBJECT_END + 0x0092,
-    UNIT_FIELD_IQ                              = OBJECT_END + 0x0093,
-    UNIT_FIELD_SPIRIT                              = OBJECT_END + 0x0094,
-    UNIT_FIELD_RESISTANCES                        = OBJECT_END + 0x0095,
-    UNIT_FIELD_BASE_MANA                          = OBJECT_END + 0x009C,
-    UNIT_FIELD_BASE_HEALTH                        = OBJECT_END + 0x009D,
-    UNIT_FIELD_BYTES_2                            = OBJECT_END + 0x009E,
-    UNIT_FIELD_ATTACK_POWER                       = OBJECT_END + 0x009F,
-    UNIT_FIELD_ATTACK_POWER_MODS                  = OBJECT_END + 0x00A0,
-    UNIT_FIELD_ATTACK_POWER_MULTIPLIER            = OBJECT_END + 0x00A1,
-    UNIT_FIELD_RANGED_ATTACK_POWER                = OBJECT_END + 0x00A2,
-    UNIT_FIELD_RANGED_ATTACK_POWER_MODS           = OBJECT_END + 0x00A3,
-    UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER     = OBJECT_END + 0x00A4,
-    UNIT_FIELD_MINRANGEDDAMAGE                    = OBJECT_END + 0x00A5,
-    UNIT_FIELD_MAXRANGEDDAMAGE                    = OBJECT_END + 0x00A6,
-    UNIT_FIELD_POWER_COST_MODIFIER                = OBJECT_END + 0x00A7,
-    UNIT_FIELD_POWER_COST_MULTIPLIER              = OBJECT_END + 0x00AE,
-    UNIT_FIELD_PADDING                            = OBJECT_END + 0x00B5,
-    UNIT_END                                      = UNIT_FIELD_PADDING + 1,
-};
+    UNIT_FIELD_CHARM                           = 0x00 + OBJECT_END, // Size:2
+    UNIT_FIELD_SUMMON                          = 0x02 + OBJECT_END, // Size:2
+    UNIT_FIELD_CHARMEDBY                       = 0x04 + OBJECT_END, // Size:2
+    UNIT_FIELD_SUMMONEDBY                      = 0x06 + OBJECT_END, // Size:2
+    UNIT_FIELD_CREATEDBY                       = 0x08 + OBJECT_END, // Size:2
+    UNIT_FIELD_TARGET                          = 0x0A + OBJECT_END, // Size:2
+    UNIT_FIELD_PERSUADED                       = 0x0C + OBJECT_END, // Size:2
+    UNIT_FIELD_CHANNEL_OBJECT                  = 0x0E + OBJECT_END, // Size:2
+    UNIT_FIELD_HEALTH                          = 0x10 + OBJECT_END, // Size:1
+    UNIT_FIELD_POWER1                          = 0x11 + OBJECT_END, // Size:1
+    UNIT_FIELD_POWER2                          = 0x12 + OBJECT_END, // Size:1
+    UNIT_FIELD_POWER3                          = 0x13 + OBJECT_END, // Size:1
+    UNIT_FIELD_POWER4                          = 0x14 + OBJECT_END, // Size:1
+    UNIT_FIELD_POWER5                          = 0x15 + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXHEALTH                       = 0x16 + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXPOWER1                       = 0x17 + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXPOWER2                       = 0x18 + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXPOWER3                       = 0x19 + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXPOWER4                       = 0x1A + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXPOWER5                       = 0x1B + OBJECT_END, // Size:1
+    UNIT_FIELD_LEVEL                           = 0x1C + OBJECT_END, // Size:1
+    UNIT_FIELD_FACTIONTEMPLATE                 = 0x1D + OBJECT_END, // Size:1
+    UNIT_FIELD_BYTES_0                         = 0x1E + OBJECT_END, // Size:1
+    UNIT_VIRTUAL_ITEM_SLOT_DISPLAY             = 0x1F + OBJECT_END, // Size:3
+    UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_01          = 0x20 + OBJECT_END,
+    UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_02          = 0x21 + OBJECT_END,
+    UNIT_VIRTUAL_ITEM_INFO                     = 0x22 + OBJECT_END, // Size:6
+    UNIT_VIRTUAL_ITEM_INFO_01                  = 0x23 + OBJECT_END,
+    UNIT_VIRTUAL_ITEM_INFO_02                  = 0x24 + OBJECT_END,
+    UNIT_VIRTUAL_ITEM_INFO_03                  = 0x25 + OBJECT_END,
+    UNIT_VIRTUAL_ITEM_INFO_04                  = 0x26 + OBJECT_END,
+    UNIT_VIRTUAL_ITEM_INFO_05                  = 0x27 + OBJECT_END,
+    UNIT_FIELD_FLAGS                           = 0x28 + OBJECT_END, // Size:1
+    UNIT_FIELD_FLAGS_2                         = 0x29 + OBJECT_END, // Size:1
+    UNIT_FIELD_AURA                            = 0x2A + OBJECT_END, // Size:56
+    UNIT_FIELD_AURA_LAST                       = 0x63 + OBJECT_END,
+    UNIT_FIELD_AURAFLAGS                       = 0x62 + OBJECT_END, // Size:7
+    UNIT_FIELD_AURAFLAGS_01                    = 0x63 + OBJECT_END,
+    UNIT_FIELD_AURAFLAGS_02                    = 0x64 + OBJECT_END,
+    UNIT_FIELD_AURAFLAGS_03                    = 0x65 + OBJECT_END,
+    UNIT_FIELD_AURAFLAGS_04                    = 0x66 + OBJECT_END,
+    UNIT_FIELD_AURAFLAGS_05                    = 0x67 + OBJECT_END,
+    UNIT_FIELD_AURAFLAGS_06                    = 0x68 + OBJECT_END,
+    UNIT_FIELD_AURALEVELS                      = 0x69 + OBJECT_END, // Size:14
+    UNIT_FIELD_AURALEVELS_LAST                 = 0x76 + OBJECT_END,
+    UNIT_FIELD_AURAAPPLICATIONS                = 0x77 + OBJECT_END, // Size:14
+    UNIT_FIELD_AURAAPPLICATIONS_LAST           = 0x84 + OBJECT_END,
+    UNIT_FIELD_AURASTATE                       = 0x85 + OBJECT_END, // Size:1
+    UNIT_FIELD_BASEATTACKTIME                  = 0x86 + OBJECT_END, // Size:2
+    UNIT_FIELD_BASEATTACKTIME_01               = 0x87 + OBJECT_END,
+    UNIT_FIELD_OFFHANDATTACKTIME               = 0x87 + OBJECT_END, // Size:2
+    UNIT_FIELD_RANGEDATTACKTIME                = 0x88 + OBJECT_END, // Size:1
+    UNIT_FIELD_BOUNDINGRADIUS                  = 0x89 + OBJECT_END, // Size:1
+    UNIT_FIELD_COMBATREACH                     = 0x8A + OBJECT_END, // Size:1
+    UNIT_FIELD_DISPLAYID                       = 0x8B + OBJECT_END, // Size:1
+    UNIT_FIELD_NATIVEDISPLAYID                 = 0x8C + OBJECT_END, // Size:1
+    UNIT_FIELD_MOUNTDISPLAYID                  = 0x8D + OBJECT_END, // Size:1
+    UNIT_FIELD_MINDAMAGE                       = 0x8E + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXDAMAGE                       = 0x8F + OBJECT_END, // Size:1
+    UNIT_FIELD_MINOFFHANDDAMAGE                = 0x90 + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXOFFHANDDAMAGE                = 0x91 + OBJECT_END, // Size:1
+    UNIT_FIELD_BYTES_1                         = 0x92 + OBJECT_END, // Size:1
+    UNIT_FIELD_PETNUMBER                       = 0x93 + OBJECT_END, // Size:1
+    UNIT_FIELD_PET_NAME_TIMESTAMP              = 0x94 + OBJECT_END, // Size:1
+    UNIT_FIELD_PETEXPERIENCE                   = 0x95 + OBJECT_END, // Size:1
+    UNIT_FIELD_PETNEXTLEVELEXP                 = 0x96 + OBJECT_END, // Size:1
+    UNIT_DYNAMIC_FLAGS                         = 0x97 + OBJECT_END, // Size:1
+    UNIT_CHANNEL_SPELL                         = 0x98 + OBJECT_END, // Size:1
+    UNIT_MOD_CAST_SPEED                        = 0x99 + OBJECT_END, // Size:1
+    UNIT_CREATED_BY_SPELL                      = 0x9A + OBJECT_END, // Size:1
+    UNIT_NPC_FLAGS                             = 0x9B + OBJECT_END, // Size:1
+    UNIT_NPC_EMOTESTATE                        = 0x9C + OBJECT_END, // Size:1
+    UNIT_TRAINING_POINTS                       = 0x9D + OBJECT_END, // Size:1
+    UNIT_FIELD_STAT0                           = 0x9E + OBJECT_END, // Size:1
+    UNIT_FIELD_STAT1                           = 0x9F + OBJECT_END, // Size:1
+    UNIT_FIELD_STAT2                           = 0xA0 + OBJECT_END, // Size:1
+    UNIT_FIELD_STAT3                           = 0xA1 + OBJECT_END, // Size:1
+    UNIT_FIELD_STAT4                           = 0xA2 + OBJECT_END, // Size:1
+    UNIT_FIELD_POSSTAT0                        = 0xA3 + OBJECT_END, // Size:1
+    UNIT_FIELD_POSSTAT1                        = 0xA4 + OBJECT_END, // Size:1
+    UNIT_FIELD_POSSTAT2                        = 0xA5 + OBJECT_END, // Size:1
+    UNIT_FIELD_POSSTAT3                        = 0xA6 + OBJECT_END, // Size:1
+    UNIT_FIELD_POSSTAT4                        = 0xA7 + OBJECT_END, // Size:1
+    UNIT_FIELD_NEGSTAT0                        = 0xA8 + OBJECT_END, // Size:1
+    UNIT_FIELD_NEGSTAT1                        = 0xA9 + OBJECT_END, // Size:1
+    UNIT_FIELD_NEGSTAT2                        = 0xAA + OBJECT_END, // Size:1
+    UNIT_FIELD_NEGSTAT3                        = 0xAB + OBJECT_END, // Size:1
+    UNIT_FIELD_NEGSTAT4                        = 0xAC + OBJECT_END, // Size:1
+    UNIT_FIELD_RESISTANCES                     = 0xAD + OBJECT_END, // Size:7
+    UNIT_FIELD_RESISTANCES_01                  = 0xAE + OBJECT_END,
+    UNIT_FIELD_RESISTANCES_02                  = 0xAF + OBJECT_END,
+    UNIT_FIELD_RESISTANCES_03                  = 0xB0 + OBJECT_END,
+    UNIT_FIELD_RESISTANCES_04                  = 0xB1 + OBJECT_END,
+    UNIT_FIELD_RESISTANCES_05                  = 0xB2 + OBJECT_END,
+    UNIT_FIELD_RESISTANCES_06                  = 0xB3 + OBJECT_END,
+    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE      = 0xB4 + OBJECT_END, // Size:7
+    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE      = 0xBB + OBJECT_END, // Size:7
+    UNIT_FIELD_BASE_MANA                       = 0xC2 + OBJECT_END, // Size:1
+    UNIT_FIELD_BASE_HEALTH                     = 0xC3 + OBJECT_END, // Size:1
+    UNIT_FIELD_BYTES_2                         = 0xC4 + OBJECT_END, // Size:1
+    UNIT_FIELD_ATTACK_POWER                    = 0xC5 + OBJECT_END, // Size:1
+    UNIT_FIELD_ATTACK_POWER_MODS               = 0xC6 + OBJECT_END, // Size:1
+    UNIT_FIELD_ATTACK_POWER_MULTIPLIER         = 0xC7 + OBJECT_END, // Size:1
+    UNIT_FIELD_RANGED_ATTACK_POWER             = 0xC8 + OBJECT_END, // Size:1
+    UNIT_FIELD_RANGED_ATTACK_POWER_MODS        = 0xC9 + OBJECT_END, // Size:1
+    UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER  = 0xCA + OBJECT_END, // Size:1
+    UNIT_FIELD_MINRANGEDDAMAGE                 = 0xCB + OBJECT_END, // Size:1
+    UNIT_FIELD_MAXRANGEDDAMAGE                 = 0xCC + OBJECT_END, // Size:1
+    UNIT_FIELD_POWER_COST_MODIFIER             = 0xCD + OBJECT_END, // Size:7
+    UNIT_FIELD_POWER_COST_MODIFIER_01          = 0xCE + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MODIFIER_02          = 0xCF + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MODIFIER_03          = 0xD0 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MODIFIER_04          = 0xD1 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MODIFIER_05          = 0xD2 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MODIFIER_06          = 0xD3 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MULTIPLIER           = 0xD4 + OBJECT_END, // Size:7
+    UNIT_FIELD_POWER_COST_MULTIPLIER_01        = 0xD5 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MULTIPLIER_02        = 0xD6 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MULTIPLIER_03        = 0xD7 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MULTIPLIER_04        = 0xD8 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MULTIPLIER_05        = 0xD9 + OBJECT_END,
+    UNIT_FIELD_POWER_COST_MULTIPLIER_06        = 0xDA + OBJECT_END,
+    UNIT_FIELD_PADDING                         = 0xDB + OBJECT_END,
+    UNIT_END                                   = 0xDC + OBJECT_END,
 
-enum EPlayerFields
-{
-    PLAYER_DUEL_ARBITER                           = UNIT_END + 0x0000,
-    PLAYER_FLAGS                                  = UNIT_END + 0x0002,
-    PLAYER_GUILDID                                = UNIT_END + 0x0003,
-    PLAYER_GUILDRANK                              = UNIT_END + 0x0004,
-    PLAYER_BYTES                                  = UNIT_END + 0x0005,
-    PLAYER_BYTES_2                                = UNIT_END + 0x0006,
-    PLAYER_BYTES_3                                = UNIT_END + 0x0007,
-    PLAYER_DUEL_TEAM                              = UNIT_END + 0x0008,
-    PLAYER_GUILD_TIMESTAMP                        = UNIT_END + 0x0009,
-    PLAYER_QUEST_LOG_1_1                          = UNIT_END + 0x000A,
-    PLAYER_QUEST_LOG_1_2                          = UNIT_END + 0x000B,
-    PLAYER_QUEST_LOG_2_1                          = UNIT_END + 0x000D,
-    PLAYER_QUEST_LOG_2_2                          = UNIT_END + 0x000E,
-    PLAYER_QUEST_LOG_3_1                          = UNIT_END + 0x0010,
-    PLAYER_QUEST_LOG_3_2                          = UNIT_END + 0x0011,
-    PLAYER_QUEST_LOG_4_1                          = UNIT_END + 0x0013,
-    PLAYER_QUEST_LOG_4_2                          = UNIT_END + 0x0014,
-    PLAYER_QUEST_LOG_5_1                          = UNIT_END + 0x0016,
-    PLAYER_QUEST_LOG_5_2                          = UNIT_END + 0x0017,
-    PLAYER_QUEST_LOG_6_1                          = UNIT_END + 0x0019,
-    PLAYER_QUEST_LOG_6_2                          = UNIT_END + 0x001A,
-    PLAYER_QUEST_LOG_7_1                          = UNIT_END + 0x001C,
-    PLAYER_QUEST_LOG_7_2                          = UNIT_END + 0x001D,
-    PLAYER_QUEST_LOG_8_1                          = UNIT_END + 0x001F,
-    PLAYER_QUEST_LOG_8_2                          = UNIT_END + 0x0020,
-    PLAYER_QUEST_LOG_9_1                          = UNIT_END + 0x0022,
-    PLAYER_QUEST_LOG_9_2                          = UNIT_END + 0x0023,
-    PLAYER_QUEST_LOG_10_1                         = UNIT_END + 0x0025,
-    PLAYER_QUEST_LOG_10_2                         = UNIT_END + 0x0026,
-    PLAYER_QUEST_LOG_11_1                         = UNIT_END + 0x0028,
-    PLAYER_QUEST_LOG_11_2                         = UNIT_END + 0x0029,
-    PLAYER_QUEST_LOG_12_1                         = UNIT_END + 0x002B,
-    PLAYER_QUEST_LOG_12_2                         = UNIT_END + 0x002C,
-    PLAYER_QUEST_LOG_13_1                         = UNIT_END + 0x002E,
-    PLAYER_QUEST_LOG_13_2                         = UNIT_END + 0x002F,
-    PLAYER_QUEST_LOG_14_1                         = UNIT_END + 0x0031,
-    PLAYER_QUEST_LOG_14_2                         = UNIT_END + 0x0032,
-    PLAYER_QUEST_LOG_15_1                         = UNIT_END + 0x0034,
-    PLAYER_QUEST_LOG_15_2                         = UNIT_END + 0x0035,
-    PLAYER_QUEST_LOG_16_1                         = UNIT_END + 0x0037,
-    PLAYER_QUEST_LOG_16_2                         = UNIT_END + 0x0038,
-    PLAYER_QUEST_LOG_17_1                         = UNIT_END + 0x003A,
-    PLAYER_QUEST_LOG_17_2                         = UNIT_END + 0x003B,
-    PLAYER_QUEST_LOG_18_1                         = UNIT_END + 0x003D,
-    PLAYER_QUEST_LOG_18_2                         = UNIT_END + 0x003E,
-    PLAYER_QUEST_LOG_19_1                         = UNIT_END + 0x0040,
-    PLAYER_QUEST_LOG_19_2                         = UNIT_END + 0x0041,
-    PLAYER_QUEST_LOG_20_1                         = UNIT_END + 0x0043,
-    PLAYER_QUEST_LOG_20_2                         = UNIT_END + 0x0044,
-    PLAYER_VISIBLE_ITEM_1_CREATOR                 = UNIT_END + 0x0046,
-    PLAYER_VISIBLE_ITEM_1_0                       = UNIT_END + 0x0048,
-    PLAYER_VISIBLE_ITEM_1_PROPERTIES              = UNIT_END + 0x0050,
-    PLAYER_VISIBLE_ITEM_1_PAD                     = UNIT_END + 0x0051,
-    PLAYER_VISIBLE_ITEM_2_CREATOR                 = UNIT_END + 0x0052,
-    PLAYER_VISIBLE_ITEM_2_0                       = UNIT_END + 0x0054,
-    PLAYER_VISIBLE_ITEM_2_PROPERTIES              = UNIT_END + 0x005C,
-    PLAYER_VISIBLE_ITEM_2_PAD                     = UNIT_END + 0x005D,
-    PLAYER_VISIBLE_ITEM_3_CREATOR                 = UNIT_END + 0x005E,
-    PLAYER_VISIBLE_ITEM_3_0                       = UNIT_END + 0x0060,
-    PLAYER_VISIBLE_ITEM_3_PROPERTIES              = UNIT_END + 0x0068,
-    PLAYER_VISIBLE_ITEM_3_PAD                     = UNIT_END + 0x0069,
-    PLAYER_VISIBLE_ITEM_4_CREATOR                 = UNIT_END + 0x006A,
-    PLAYER_VISIBLE_ITEM_4_0                       = UNIT_END + 0x006C,
-    PLAYER_VISIBLE_ITEM_4_PROPERTIES              = UNIT_END + 0x0074,
-    PLAYER_VISIBLE_ITEM_4_PAD                     = UNIT_END + 0x0075,
-    PLAYER_VISIBLE_ITEM_5_CREATOR                 = UNIT_END + 0x0076,
-    PLAYER_VISIBLE_ITEM_5_0                       = UNIT_END + 0x0078,
-    PLAYER_VISIBLE_ITEM_5_PROPERTIES              = UNIT_END + 0x0080,
-    PLAYER_VISIBLE_ITEM_5_PAD                     = UNIT_END + 0x0081,
-    PLAYER_VISIBLE_ITEM_6_CREATOR                 = UNIT_END + 0x0082,
-    PLAYER_VISIBLE_ITEM_6_0                       = UNIT_END + 0x0084,
-    PLAYER_VISIBLE_ITEM_6_PROPERTIES              = UNIT_END + 0x008C,
-    PLAYER_VISIBLE_ITEM_6_PAD                     = UNIT_END + 0x008D,
-    PLAYER_VISIBLE_ITEM_7_CREATOR                 = UNIT_END + 0x008E,
-    PLAYER_VISIBLE_ITEM_7_0                       = UNIT_END + 0x0090,
-    PLAYER_VISIBLE_ITEM_7_PROPERTIES              = UNIT_END + 0x0098,
-    PLAYER_VISIBLE_ITEM_7_PAD                     = UNIT_END + 0x0099,
-    PLAYER_VISIBLE_ITEM_8_CREATOR                 = UNIT_END + 0x009A,
-    PLAYER_VISIBLE_ITEM_8_0                       = UNIT_END + 0x009C,
-    PLAYER_VISIBLE_ITEM_8_PROPERTIES              = UNIT_END + 0x00A4,
-    PLAYER_VISIBLE_ITEM_8_PAD                     = UNIT_END + 0x00A5,
-    PLAYER_VISIBLE_ITEM_9_CREATOR                 = UNIT_END + 0x00A6,
-    PLAYER_VISIBLE_ITEM_9_0                       = UNIT_END + 0x00A8,
-    PLAYER_VISIBLE_ITEM_9_PROPERTIES              = UNIT_END + 0x00B0,
-    PLAYER_VISIBLE_ITEM_9_PAD                     = UNIT_END + 0x00B1,
-    PLAYER_VISIBLE_ITEM_10_CREATOR                = UNIT_END + 0x00B2,
-    PLAYER_VISIBLE_ITEM_10_0                      = UNIT_END + 0x00B4,
-    PLAYER_VISIBLE_ITEM_10_PROPERTIES             = UNIT_END + 0x00BC,
-    PLAYER_VISIBLE_ITEM_10_PAD                    = UNIT_END + 0x00BD,
-    PLAYER_VISIBLE_ITEM_11_CREATOR                = UNIT_END + 0x00BE,
-    PLAYER_VISIBLE_ITEM_11_0                      = UNIT_END + 0x00C0,
-    PLAYER_VISIBLE_ITEM_11_PROPERTIES             = UNIT_END + 0x00C8,
-    PLAYER_VISIBLE_ITEM_11_PAD                    = UNIT_END + 0x00C9,
-    PLAYER_VISIBLE_ITEM_12_CREATOR                = UNIT_END + 0x00CA,
-    PLAYER_VISIBLE_ITEM_12_0                      = UNIT_END + 0x00CC,
-    PLAYER_VISIBLE_ITEM_12_PROPERTIES             = UNIT_END + 0x00D4,
-    PLAYER_VISIBLE_ITEM_12_PAD                    = UNIT_END + 0x00D5,
-    PLAYER_VISIBLE_ITEM_13_CREATOR                = UNIT_END + 0x00D6,
-    PLAYER_VISIBLE_ITEM_13_0                      = UNIT_END + 0x00D8,
-    PLAYER_VISIBLE_ITEM_13_PROPERTIES             = UNIT_END + 0x00E0,
-    PLAYER_VISIBLE_ITEM_13_PAD                    = UNIT_END + 0x00E1,
-    PLAYER_VISIBLE_ITEM_14_CREATOR                = UNIT_END + 0x00E2,
-    PLAYER_VISIBLE_ITEM_14_0                      = UNIT_END + 0x00E4,
-    PLAYER_VISIBLE_ITEM_14_PROPERTIES             = UNIT_END + 0x00EC,
-    PLAYER_VISIBLE_ITEM_14_PAD                    = UNIT_END + 0x00ED,
-    PLAYER_VISIBLE_ITEM_15_CREATOR                = UNIT_END + 0x00EE,
-    PLAYER_VISIBLE_ITEM_15_0                      = UNIT_END + 0x00F0,
-    PLAYER_VISIBLE_ITEM_15_PROPERTIES             = UNIT_END + 0x00F8,
-    PLAYER_VISIBLE_ITEM_15_PAD                    = UNIT_END + 0x00F9,
-    PLAYER_VISIBLE_ITEM_16_CREATOR                = UNIT_END + 0x00FA,
-    PLAYER_VISIBLE_ITEM_16_0                      = UNIT_END + 0x00FC,
-    PLAYER_VISIBLE_ITEM_16_PROPERTIES             = UNIT_END + 0x0104,
-    PLAYER_VISIBLE_ITEM_16_PAD                    = UNIT_END + 0x0105,
-    PLAYER_VISIBLE_ITEM_17_CREATOR                = UNIT_END + 0x0106,
-    PLAYER_VISIBLE_ITEM_17_0                      = UNIT_END + 0x0108,
-    PLAYER_VISIBLE_ITEM_17_PROPERTIES             = UNIT_END + 0x0110,
-    PLAYER_VISIBLE_ITEM_17_PAD                    = UNIT_END + 0x0111,
-    PLAYER_VISIBLE_ITEM_18_CREATOR                = UNIT_END + 0x0112,
-    PLAYER_VISIBLE_ITEM_18_0                      = UNIT_END + 0x0114,
-    PLAYER_VISIBLE_ITEM_18_PROPERTIES             = UNIT_END + 0x011C,
-    PLAYER_VISIBLE_ITEM_18_PAD                    = UNIT_END + 0x011D,
-    PLAYER_VISIBLE_ITEM_19_CREATOR                = UNIT_END + 0x011E,
-    PLAYER_VISIBLE_ITEM_19_0                      = UNIT_END + 0x0120,
-    PLAYER_VISIBLE_ITEM_19_PROPERTIES             = UNIT_END + 0x0128,
-    PLAYER_VISIBLE_ITEM_19_PAD                    = UNIT_END + 0x0129,
-    PLAYER_FIELD_INV_SLOT_HEAD                    = UNIT_END + 0x012A,
-    PLAYER_FIELD_PACK_SLOT_1                      = UNIT_END + 0x0158,
-    PLAYER_FIELD_BANK_SLOT_1                      = UNIT_END + 0x0178,
-    PLAYER_FIELD_BANKBAG_SLOT_1                   = UNIT_END + 0x01A8,
-    PLAYER_FIELD_VENDORBUYBACK_SLOT_1             = UNIT_END + 0x01B4,
-    PLAYER_FIELD_KEYRING_SLOT_1                   = UNIT_END + 0x01CC,
-    PLAYER_FARSIGHT                               = UNIT_END + 0x020C,
-    PLAYER_FIELD_COMBO_TARGET                     = UNIT_END + 0x020E,
-    PLAYER_XP                                     = UNIT_END + 0x0210,
-    PLAYER_NEXT_LEVEL_XP                          = UNIT_END + 0x0211,
-    PLAYER_SKILL_INFO_1_1                         = UNIT_END + 0x0212,
-    PLAYER_CHARACTER_POINTS1                      = UNIT_END + 0x0392,
-    PLAYER_CHARACTER_POINTS2                      = UNIT_END + 0x0393,
-    PLAYER_TRACK_CREATURES                        = UNIT_END + 0x0394,
-    PLAYER_TRACK_RESOURCES                        = UNIT_END + 0x0395,
-    PLAYER_BLOCK_PERCENTAGE                       = UNIT_END + 0x0396,
-    PLAYER_DODGE_PERCENTAGE                       = UNIT_END + 0x0397,
-    PLAYER_PARRY_PERCENTAGE                       = UNIT_END + 0x0398,
-    PLAYER_CRIT_PERCENTAGE                        = UNIT_END + 0x0399,
-    PLAYER_RANGED_CRIT_PERCENTAGE                 = UNIT_END + 0x039A,
-    PLAYER_EXPLORED_ZONES_1                       = UNIT_END + 0x039B,
-    PLAYER_REST_STATE_EXPERIENCE                  = UNIT_END + 0x03DB,
-    PLAYER_FIELD_COINAGE                          = UNIT_END + 0x03DC,
-    PLAYER_FIELD_POSSTAT0                         = UNIT_END + 0x03DD,
-    PLAYER_FIELD_POSSTAT1                         = UNIT_END + 0x03DE,
-    PLAYER_FIELD_POSSTAT2                         = UNIT_END + 0x03DF,
-    PLAYER_FIELD_POSSTAT3                         = UNIT_END + 0x03E0,
-    PLAYER_FIELD_POSSTAT4                         = UNIT_END + 0x03E1,
-    PLAYER_FIELD_NEGSTAT0                         = UNIT_END + 0x03E2,
-    PLAYER_FIELD_NEGSTAT1                         = UNIT_END + 0x03E3,
-    PLAYER_FIELD_NEGSTAT2                         = UNIT_END + 0x03E4,
-    PLAYER_FIELD_NEGSTAT3                         = UNIT_END + 0x03E5,
-    PLAYER_FIELD_NEGSTAT4                         = UNIT_END + 0x03E6,
-    PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE       = UNIT_END + 0x03E7,
-    PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE       = UNIT_END + 0x03EE,
-    PLAYER_FIELD_MOD_DAMAGE_DONE_POS              = UNIT_END + 0x03F5,
-    PLAYER_FIELD_MOD_DAMAGE_DONE_NEG              = UNIT_END + 0x03FC,
-    PLAYER_FIELD_MOD_DAMAGE_DONE_PCT              = UNIT_END + 0x0403,
-    PLAYER_FIELD_BYTES                            = UNIT_END + 0x040A,
-    PLAYER_AMMO_ID                                = UNIT_END + 0x040B,
-    PLAYER_SELF_RES_SPELL                         = UNIT_END + 0x040C,
-    PLAYER_FIELD_PVP_MEDALS                       = UNIT_END + 0x040D,
-    PLAYER_FIELD_BUYBACK_PRICE_1                  = UNIT_END + 0x040E,
-    PLAYER_FIELD_BUYBACK_TIMESTAMP_1              = UNIT_END + 0x041A,
-    PLAYER_FIELD_SESSION_KILLS                    = UNIT_END + 0x0426,
-    PLAYER_FIELD_YESTERDAY_KILLS                  = UNIT_END + 0x0427,
-    PLAYER_FIELD_LAST_WEEK_KILLS                  = UNIT_END + 0x0428,
-    PLAYER_FIELD_THIS_WEEK_KILLS                  = UNIT_END + 0x0429,
-    PLAYER_FIELD_THIS_WEEK_CONTRIBUTION           = UNIT_END + 0x042A,
-    PLAYER_FIELD_LIFETIME_HONORABLE_KILLS         = UNIT_END + 0x042B,
-    PLAYER_FIELD_LIFETIME_DISHONORABLE_KILLS      = UNIT_END + 0x042C,
-    PLAYER_FIELD_YESTERDAY_CONTRIBUTION           = UNIT_END + 0x042D,
-    PLAYER_FIELD_LAST_WEEK_CONTRIBUTION           = UNIT_END + 0x042E,
-    PLAYER_FIELD_LAST_WEEK_RANK                   = UNIT_END + 0x042F,
-    PLAYER_FIELD_BYTES2                           = UNIT_END + 0x0430,
-    PLAYER_FIELD_WATCHED_FACTION_INDEX            = UNIT_END + 0x0431,
-    PLAYER_FIELD_COMBAT_RATING_1                  = UNIT_END + 0x0432,
-    PLAYER_END                                    = PLAYER_FIELD_COMBAT_RATING_1 + 20,
+    PLAYER_DUEL_ARBITER                        = 0x00 + UNIT_END, // Size:2
+    PLAYER_FLAGS                               = 0x02 + UNIT_END, // Size:1
+    PLAYER_GUILDID                             = 0x03 + UNIT_END, // Size:1
+    PLAYER_GUILDRANK                           = 0x04 + UNIT_END, // Size:1
+    PLAYER_BYTES                               = 0x05 + UNIT_END, // Size:1
+    PLAYER_BYTES_2                             = 0x06 + UNIT_END, // Size:1
+    PLAYER_BYTES_3                             = 0x07 + UNIT_END, // Size:1
+    PLAYER_DUEL_TEAM                           = 0x08 + UNIT_END, // Size:1
+    PLAYER_GUILD_TIMESTAMP                     = 0x09 + UNIT_END, // Size:1
+    PLAYER_QUEST_LOG_1_1                       = 0x0A + UNIT_END, // count = 25
+    PLAYER_QUEST_LOG_1_2                       = 0x0B + UNIT_END,
+    PLAYER_QUEST_LOG_1_3                       = 0x0C + UNIT_END,
+    PLAYER_QUEST_LOG_LAST_1                    = 0x52 + UNIT_END,
+    PLAYER_QUEST_LOG_LAST_2                    = 0x53 + UNIT_END,
+    PLAYER_QUEST_LOG_LAST_3                    = 0x54 + UNIT_END,
+    PLAYER_VISIBLE_ITEM_1_CREATOR              = 0x55 + UNIT_END, // Size:2, count = 19
+    PLAYER_VISIBLE_ITEM_1_0                    = 0x57 + UNIT_END, // Size:12
+    PLAYER_VISIBLE_ITEM_1_PROPERTIES           = 0x63 + UNIT_END, // Size:1
+    PLAYER_VISIBLE_ITEM_1_PAD                  = 0x64 + UNIT_END, // Size:1
+    PLAYER_VISIBLE_ITEM_LAST_CREATOR           = 0x175 + UNIT_END,
+    PLAYER_VISIBLE_ITEM_LAST_0                 = 0x177 + UNIT_END,
+    PLAYER_VISIBLE_ITEM_LAST_PROPERTIES        = 0x183 + UNIT_END,
+    PLAYER_VISIBLE_ITEM_LAST_PAD               = 0x184 + UNIT_END,
+    PLAYER_CHOSEN_TITLE                        = 0x185 + UNIT_END, // Size:1
+    PLAYER_FIELD_INV_SLOT_HEAD                 = 0x186 + UNIT_END, // Size:46
+    PLAYER_FIELD_PACK_SLOT_1                   = 0x1B4 + UNIT_END, // Size:32
+    PLAYER_FIELD_PACK_SLOT_LAST                = 0x1D3 + UNIT_END,
+    PLAYER_FIELD_BANK_SLOT_1                   = 0x1D4 + UNIT_END, // Size:56
+    PLAYER_FIELD_BANK_SLOT_LAST                = 0x20B + UNIT_END,
+    PLAYER_FIELD_BANKBAG_SLOT_1                = 0x20C + UNIT_END, // Size:14
+    PLAYER_FIELD_BANKBAG_SLOT_LAST             = 0x219 + UNIT_END,
+    PLAYER_FIELD_VENDORBUYBACK_SLOT_1          = 0x21A + UNIT_END, // Size:24
+    PLAYER_FIELD_VENDORBUYBACK_SLOT_LAST       = 0x231 + UNIT_END,
+    PLAYER_FIELD_KEYRING_SLOT_1                = 0x232 + UNIT_END, // Size:64
+    PLAYER_FIELD_KEYRING_SLOT_LAST             = 0x271 + UNIT_END,
+    PLAYER_FARSIGHT                            = 0x272 + UNIT_END, // Size:2
+    PLAYER_FIELD_COMBO_TARGET                  = 0x274 + UNIT_END, // Size:2
+    PLAYER_FIELD_KNOWN_TITLES                  = 0x276 + UNIT_END, // Size:2
+    PLAYER_XP                                  = 0x278 + UNIT_END, // Size:1
+    PLAYER_NEXT_LEVEL_XP                       = 0x279 + UNIT_END, // Size:1
+    PLAYER_SKILL_INFO_1_1                      = 0x27A + UNIT_END, // Size:384
+    PLAYER_CHARACTER_POINTS1                   = 0x3FA + UNIT_END, // Size:1
+    PLAYER_CHARACTER_POINTS2                   = 0x3FB + UNIT_END, // Size:1
+    PLAYER_TRACK_CREATURES                     = 0x3FC + UNIT_END, // Size:1
+    PLAYER_TRACK_RESOURCES                     = 0x3FD + UNIT_END, // Size:1
+    PLAYER_BLOCK_PERCENTAGE                    = 0x3FE + UNIT_END, // Size:1
+    PLAYER_DODGE_PERCENTAGE                    = 0x3FF + UNIT_END, // Size:1
+    PLAYER_PARRY_PERCENTAGE                    = 0x400 + UNIT_END, // Size:1
+    PLAYER_CRIT_PERCENTAGE                     = 0x401 + UNIT_END, // Size:1
+    PLAYER_RANGED_CRIT_PERCENTAGE              = 0x402 + UNIT_END, // Size:1
+    PLAYER_OFFHAND_CRIT_PERCENTAGE             = 0x403 + UNIT_END, // Size:1
+    PLAYER_SPELL_CRIT_PERCENTAGE1              = 0x404 + UNIT_END, // Size:7
+    PLAYER_HOLY_SPELL_CRIT_PERCENTAGE          = 0x405 + UNIT_END, // custom
+    PLAYER_FIRE_SPELL_CRIT_PERCENTAGE          = 0x406 + UNIT_END, // custom
+    PLAYER_NATURE_SPELL_CRIT_PERCENTAGE        = 0x407 + UNIT_END, // custom
+    PLAYER_FROST_SPELL_CRIT_PERCENTAGE         = 0x408 + UNIT_END, // custom
+    PLAYER_SHADOW_SPELL_CRIT_PERCENTAGE        = 0x409 + UNIT_END, // custom
+    PLAYER_ARCANE_SPELL_CRIT_PERCENTAGE        = 0x40A + UNIT_END, // custom
+    PLAYER_EXPLORED_ZONES_1                    = 0x40B + UNIT_END, // Size:64
+    PLAYER_REST_STATE_EXPERIENCE               = 0x44B + UNIT_END, // Size:1
+    PLAYER_FIELD_COINAGE                       = 0x44C + UNIT_END, // Size:1
+    PLAYER_FIELD_MOD_DAMAGE_DONE_POS           = 0x44D + UNIT_END, // Size:7
+    PLAYER_FIELD_MOD_DAMAGE_DONE_NEG           = 0x454 + UNIT_END, // Size:7
+    PLAYER_FIELD_MOD_DAMAGE_DONE_PCT           = 0x45B + UNIT_END, // Size:7
+    PLAYER_FIELD_MOD_HEALING_DONE_POS          = 0x462 + UNIT_END, // Size:1
+    PLAYER_FIELD_MOD_TARGET_RESISTANCE         = 0x463 + UNIT_END, // Size:1
+    PLAYER_FIELD_BYTES                         = 0x464 + UNIT_END, // Size:1
+    PLAYER_AMMO_ID                             = 0x465 + UNIT_END, // Size:1
+    PLAYER_SELF_RES_SPELL                      = 0x466 + UNIT_END, // Size:1
+    PLAYER_FIELD_PVP_MEDALS                    = 0x467 + UNIT_END, // Size:1
+    PLAYER_FIELD_BUYBACK_PRICE_1               = 0x468 + UNIT_END, // count=12
+    PLAYER_FIELD_BUYBACK_PRICE_LAST            = 0x473 + UNIT_END,
+    PLAYER_FIELD_BUYBACK_TIMESTAMP_1           = 0x474 + UNIT_END, // count=12
+    PLAYER_FIELD_BUYBACK_TIMESTAMP_LAST        = 0x47A + UNIT_END,
+    PLAYER_FIELD_KILLS                         = 0x480 + UNIT_END, // Size:1   // ((uint16)kills_today<<16) | (uint16)kills_yesterday)
+    PLAYER_FIELD_HONOR_TODAY                   = 0x481 + UNIT_END, // Size:1
+    PLAYER_FIELD_HONOR_YESTERDAY               = 0x482 + UNIT_END, // Size:1
+    PLAYER_FIELD_KILLS_LIFETIME                = 0x483 + UNIT_END, // Size:1
+    PLAYER_FIELD_BYTES2                        = 0x484 + UNIT_END, // Size:1 
+    PLAYER_FIELD_WATCHED_FACTION_INDEX         = 0x485 + UNIT_END, // Size:1
+    PLAYER_FIELD_COMBAT_RATING_1               = 0x486 + UNIT_END, // Size:23
+    PLAYER_FIELD_ALL_WEAPONS_SKILL_RATING      = 0x486 + UNIT_END, // custom
+    PLAYER_FIELD_DEFENCE_RATING                = 0x487 + UNIT_END, // custom
+    PLAYER_FIELD_DODGE_RATING                  = 0x488 + UNIT_END, // custom
+    PLAYER_FIELD_PARRY_RATING                  = 0x489 + UNIT_END, // custom
+    PLAYER_FIELD_BLOCK_RATING                  = 0x48A + UNIT_END, // custom
+    PLAYER_FIELD_MELEE_HIT_RATING              = 0x48B + UNIT_END, // custom
+    PLAYER_FIELD_RANGED_HIT_RATING             = 0x48C + UNIT_END, // custom
+    PLAYER_FIELD_SPELL_HIT_RATING              = 0x48D + UNIT_END, // custom
+    PLAYER_FIELD_MELEE_CRIT_RATING             = 0x48E + UNIT_END, // custom
+    PLAYER_FIELD_RANGED_CRIT_RATING            = 0x48F + UNIT_END, // custom
+    PLAYER_FIELD_SPELL_CRIT_RATING             = 0x490 + UNIT_END, // custom
+    PLAYER_FIELD_HIT_RATING                    = 0x491 + UNIT_END, // unsure, was PLAYER_FIELD_UNK1_RATING
+    PLAYER_FIELD_CRIT_RATING                   = 0x492 + UNIT_END, // unsure, was PLAYER_FIELD_UNK2_RATING
+    PLAYER_FIELD_UNK3_RATING                   = 0x493 + UNIT_END, // custom
+    PLAYER_FIELD_UNK4_RATING                   = 0x494 + UNIT_END, // custom
+    PLAYER_FIELD_UNK5_RATING                   = 0x495 + UNIT_END, // custom
+    PLAYER_FIELD_RESILIENCE_RATING             = 0x496 + UNIT_END, // custom
+    PLAYER_FIELD_MELEE_HASTE_RATING            = 0x497 + UNIT_END, // custom
+    PLAYER_FIELD_RANGED_HASTE_RATING           = 0x498 + UNIT_END, // custom
+    PLAYER_FIELD_UNK6_RATING                   = 0x499 + UNIT_END, // custom
+    PLAYER_FIELD_MELEE_WEAPON_SKILL_RATING     = 0x49A + UNIT_END, // custom
+    PLAYER_FIELD_UNK7_RATING                   = 0x49B + UNIT_END, // custom
+    PLAYER_FIELD_RANGED_WEAPON_SKILL_RATING    = 0x49C + UNIT_END, // custom
+    PLAYER_FIELD_ARENA_TEAM_INFO_1_1           = 0x49D + UNIT_END, // Size:9
+    PLAYER_FIELD_HONOR_CURRENCY                = 0x4A6 + UNIT_END, // Size:1
+    PLAYER_FIELD_ARENA_CURRENCY                = 0x4A7 + UNIT_END, // Size:1
+    PLAYER_FIELD_MOD_MANA_REGEN                = 0x4A8 + UNIT_END, // Size:1
+    PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT      = 0x4A9 + UNIT_END, // Size:1
+    PLAYER_FIELD_MAX_LEVEL                     = 0x4AA + UNIT_END, // Size:1
+    PLAYER_FIELD_PADDING                       = 0x4AB + UNIT_END, // Size:1
+    PLAYER_END                                 = 0x4AC + UNIT_END,
 };
 
 enum EGameObjectFields
 {
-    OBJECT_FIELD_CREATED_BY                       = OBJECT_END + 0x0000,
-    GAMEOBJECT_DISPLAYID                          = OBJECT_END + 0x0002,
-    GAMEOBJECT_FLAGS                              = OBJECT_END + 0x0003,
-    GAMEOBJECT_ROTATION                           = OBJECT_END + 0x0004,
-    GAMEOBJECT_STATE                              = OBJECT_END + 0x0008,
-    GAMEOBJECT_POS_X                              = OBJECT_END + 0x0009,
-    GAMEOBJECT_POS_Y                              = OBJECT_END + 0x000A,
-    GAMEOBJECT_POS_Z                              = OBJECT_END + 0x000B,
-    GAMEOBJECT_FACING                             = OBJECT_END + 0x000C,
-    GAMEOBJECT_DYN_FLAGS                          = OBJECT_END + 0x000D,
-    GAMEOBJECT_FACTION                            = OBJECT_END + 0x000E,
-    GAMEOBJECT_TYPE_ID                            = OBJECT_END + 0x000F,
-    GAMEOBJECT_LEVEL                              = OBJECT_END + 0x0010,
-    GAMEOBJECT_ARTKIT                             = OBJECT_END + 0x0011,
-    GAMEOBJECT_ANIMPROGRESS                       = OBJECT_END + 0x0012,
-    GAMEOBJECT_PADDING                            = OBJECT_END + 0x0013,
-    GAMEOBJECT_END                                = GAMEOBJECT_PADDING + 1,
+    OBJECT_FIELD_CREATED_BY                    = OBJECT_END + 0x00,
+    GAMEOBJECT_DISPLAYID                       = OBJECT_END + 0x02,
+    GAMEOBJECT_FLAGS                           = OBJECT_END + 0x03,
+    GAMEOBJECT_ROTATION                        = OBJECT_END + 0x04,
+    GAMEOBJECT_STATE                           = OBJECT_END + 0x08,
+    GAMEOBJECT_POS_X                           = OBJECT_END + 0x09,
+    GAMEOBJECT_POS_Y                           = OBJECT_END + 0x0A,
+    GAMEOBJECT_POS_Z                           = OBJECT_END + 0x0B,
+    GAMEOBJECT_FACING                          = OBJECT_END + 0x0C,
+    GAMEOBJECT_DYN_FLAGS                       = OBJECT_END + 0x0D,
+    GAMEOBJECT_FACTION                         = OBJECT_END + 0x0E,
+    GAMEOBJECT_TYPE_ID                         = OBJECT_END + 0x0F,
+    GAMEOBJECT_LEVEL                           = OBJECT_END + 0x10,
+    GAMEOBJECT_ARTKIT                          = OBJECT_END + 0x11,
+    GAMEOBJECT_ANIMPROGRESS                    = OBJECT_END + 0x12,
+    GAMEOBJECT_PADDING                         = OBJECT_END + 0x13,
+    GAMEOBJECT_END                             = OBJECT_END + 0x14,
 };
 
 enum EDynamicObjectFields
 {
-    DYNAMICOBJECT_CASTER                          = OBJECT_END + 0x0000,
-    DYNAMICOBJECT_BYTES                           = OBJECT_END + 0x0002,
-    DYNAMICOBJECT_SPELLID                         = OBJECT_END + 0x0003,
-    DYNAMICOBJECT_RADIUS                          = OBJECT_END + 0x0004,
-    DYNAMICOBJECT_POS_X                           = OBJECT_END + 0x0005,
-    DYNAMICOBJECT_POS_Y                           = OBJECT_END + 0x0006,
-    DYNAMICOBJECT_POS_Z                           = OBJECT_END + 0x0007,
-    DYNAMICOBJECT_FACING                          = OBJECT_END + 0x0008,
-    DYNAMICOBJECT_PAD                             = OBJECT_END + 0x0009,
-    DYNAMICOBJECT_END                             = DYNAMICOBJECT_PAD + 1,
+    DYNAMICOBJECT_CASTER                       = OBJECT_END + 0x00,
+    DYNAMICOBJECT_BYTES                        = OBJECT_END + 0x02,
+    DYNAMICOBJECT_SPELLID                      = OBJECT_END + 0x03,
+    DYNAMICOBJECT_RADIUS                       = OBJECT_END + 0x04,
+    DYNAMICOBJECT_POS_X                        = OBJECT_END + 0x05,
+    DYNAMICOBJECT_POS_Y                        = OBJECT_END + 0x06,
+    DYNAMICOBJECT_POS_Z                        = OBJECT_END + 0x07,
+    DYNAMICOBJECT_FACING                       = OBJECT_END + 0x08,
+    DYNAMICOBJECT_PAD                          = OBJECT_END + 0x09,
+    DYNAMICOBJECT_END                          = OBJECT_END + 0x0A,
 };
 
 enum ECorpseFields
 {
-    CORPSE_FIELD_OWNER                            = OBJECT_END + 0x0000,
-    CORPSE_FIELD_FACING                           = OBJECT_END + 0x0002,
-    CORPSE_FIELD_POS_X                            = OBJECT_END + 0x0003,
-    CORPSE_FIELD_POS_Y                            = OBJECT_END + 0x0004,
-    CORPSE_FIELD_POS_Z                            = OBJECT_END + 0x0005,
-    CORPSE_FIELD_DISPLAY_ID                       = OBJECT_END + 0x0006,
-    CORPSE_FIELD_ITEM                             = OBJECT_END + 0x0007,
-    CORPSE_FIELD_BYTES_1                          = OBJECT_END + 0x001A,
-    CORPSE_FIELD_BYTES_2                          = OBJECT_END + 0x001B,
-    CORPSE_FIELD_GUILD                            = OBJECT_END + 0x001C,
-    CORPSE_FIELD_FLAGS                            = OBJECT_END + 0x001D,
-    CORPSE_FIELD_DYNAMIC_FLAGS                    = OBJECT_END + 0x001E,
-    CORPSE_FIELD_PAD                              = OBJECT_END + 0x001F,
-    CORPSE_END                                    = CORPSE_FIELD_PAD + 1,
+    CORPSE_FIELD_OWNER                         = OBJECT_END + 0x00,
+    CORPSE_FIELD_FACING                        = OBJECT_END + 0x02,
+    CORPSE_FIELD_POS_X                         = OBJECT_END + 0x03,
+    CORPSE_FIELD_POS_Y                         = OBJECT_END + 0x04,
+    CORPSE_FIELD_POS_Z                         = OBJECT_END + 0x05,
+    CORPSE_FIELD_DISPLAY_ID                    = OBJECT_END + 0x06,
+    CORPSE_FIELD_ITEM                          = OBJECT_END + 0x07, // 19
+    CORPSE_FIELD_BYTES_1                       = OBJECT_END + 0x1A,
+    CORPSE_FIELD_BYTES_2                       = OBJECT_END + 0x1B,
+    CORPSE_FIELD_GUILD                         = OBJECT_END + 0x1C,
+    CORPSE_FIELD_FLAGS                         = OBJECT_END + 0x1D,
+    CORPSE_FIELD_DYNAMIC_FLAGS                 = OBJECT_END + 0x1E,
+    CORPSE_FIELD_PAD                           = OBJECT_END + 0x1F,
+    CORPSE_END                                 = OBJECT_END + 0x20,
 };
 #endif
Index: src/game/SpellAuraDefines.h
===================================================================
--- src/game/SpellAuraDefines.h	(working copy)
+++ src/game/SpellAuraDefines.h	(working copy)
@@ -19,7 +19,7 @@
 #define MANGOS_SPELLAURADEFINES_H
 
 #define MAX_AURAS 56
-#define MAX_POSITIVE_AURAS 32                               //24
+#define MAX_POSITIVE_AURAS 40
 
 enum AURA_FLAGS
 {
@@ -185,23 +185,79 @@
     SPELL_AURA_PERSUADED = 146,
     SPELL_AURA_ADD_CREATURE_IMMUNITY = 147,
     SPELL_AURA_RETAIN_COMBO_POINTS = 148,
-    SPELL_AURA_RESIST_PUSHBACK  =   149 ,                   //    Resist Pushback
-    SPELL_AURA_MOD_SHIELD_BLOCK_PCT =   150 ,               //    Mod Shield Block %
-    SPELL_AURA_TRACK_STEALTHED  =   151 ,                   //    Track Stealthed
-    SPELL_AURA_MOD_DETECTED_RANGE   =   152 ,               //    Mod Detected Range
-    SPELL_AURA_SPLIT_DAMAGE_FLAT    =   153 ,               //    Split Damage Flat
-    SPELL_AURA_MOD_STEALTH_LEVEL    =   154 ,               //    Stealth Level Modifier
-    SPELL_AURA_MOD_WATER_BREATHING  =   155 ,               //    Mod Water Breathing
-    SPELL_AURA_MOD_REPUTATION_GAIN    =   156 ,             //    Mod Reputation Gain
-    SPELL_AURA_PET_DAMAGE_MULTI =   157 ,                   //    Mod Pet Damage
-    SPELL_AURA_MOD_SHIELD_BLOCK  = 158,
-    SPELL_AURA_NO_PVP_CREDIT     = 159,
+    SPELL_AURA_RESIST_PUSHBACK  = 149,                   //    Resist Pushback
+    SPELL_AURA_MOD_SHIELD_BLOCK_PCT = 150,
+    SPELL_AURA_TRACK_STEALTHED  = 151,                   //    Track Stealthed
+    SPELL_AURA_MOD_DETECTED_RANGE = 152,               //    Mod Detected Range
+    SPELL_AURA_SPLIT_DAMAGE_FLAT = 153,               //    Split Damage Flat
+    SPELL_AURA_MOD_STEALTH_LEVEL = 154,               //    Stealth Level Modifier
+    SPELL_AURA_MOD_WATER_BREATHING = 155,               //    Mod Water Breathing
+    SPELL_AURA_MOD_REPUTATION_GAIN = 156,             //    Mod Reputation Gain
+    SPELL_AURA_PET_DAMAGE_MULTI = 157,                   //    Mod Pet Damage
+    SPELL_AURA_MOD_SHIELD_BLOCK = 158,
+    SPELL_AURA_NO_PVP_CREDIT = 159,
     SPELL_AURA_MOD_AOE_AVOIDANCE = 160,
     SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT = 161,
-    SPELL_AURA_POWER_BURN_MANA   = 162,
+    SPELL_AURA_POWER_BURN_MANA = 162,
+    SPELL_AURA_MOD_CRIT_DAMAGE_BONUS_MELEE = 163,
+    SPELL_AURA_164 = 164,
+    SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS = 165,
+    SPELL_AURA_MOD_ATTACK_POWER_PCT = 166,
+    SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT = 167,
+    SPELL_AURA_MOD_DAMAGE_DONE_VERSUS = 168,
+    SPELL_AURA_MOD_CRIT_PERCENT_VERSUS = 169,
+    SPELL_AURA_DETECT_AMORE = 170,
+    SPELL_AURA_MOD_PARTY_SPEED = 171, // unused
+    SPELL_AURA_MOD_PARTY_SPEED_MOUNTED = 172,
+    SPELL_AURA_ALLOW_CHAMPION_SPELLS = 173,
+    SPELL_AURA_MOD_SPELL_DAMAGE_OF_SPIRIT  = 174,
+    SPELL_AURA_MOD_SPELL_HEALING_OF_SPIRIT = 175,
+    SPELL_AURA_SPIRIT_OF_REDEMPTION = 176,
+    SPELL_AURA_AOE_CHARM = 177,
+    SPELL_AURA_MOD_DEBUFF_RESISTANCE = 178,
+    SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE = 179,
+    SPELL_AURA_MOD_SPELL_DAMAGE_VS_UNDEAD = 180,
+    SPELL_AURA_181 = 181,
+    SPELL_AURA_MOD_ARMOR_OF_INTELLECT = 182,
+    SPELL_AURA_MOD_CRITICAL_THREAT = 183,
+    SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE = 184,
+    SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE= 185,
+    SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE = 186,
+    SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE = 187,
+    SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE = 188,
+    SPELL_AURA_MOD_RATING = 189,
+    SPELL_AURA_MOD_FACTION_REPUTATION_GAIN = 190,
+    SPELL_AURA_191 = 191,
+    SPELL_AURA_HASTE_MELEE = 192,
+    SPELL_AURA_MELEE_SLOW = 193,
+    SPELL_AURA_MOD_SPELL_DAMAGE_OF_INTELLECT  = 194,
+    SPELL_AURA_MOD_SPELL_HEALING_OF_INTELLECT = 195,
+    SPELL_AURA_196 = 196, // unused
+    SPELL_AURA_197 = 197,
+    SPELL_AURA_MOD_ALL_WEAPON_SKILLS = 198,
+    SPELL_AURA_MOD_SPELL_HIT_CHANCE_ = 199,
+    SPELL_AURA_200 = 200,
+    SPELL_AURA_201 = 201,
+    SPELL_AURA_CANNOT_BE_DODGED = 202,
+    SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203,
+    SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204,
+    SPELL_AURA_205 = 205, // unused
+    SPELL_AURA_MOD_SPEED_MOUNTED = 206,
+    SPELL_AURA_MOD_SPEED_MOUNTED_FLIGHT = 207,
+    SPELL_AURA_208 = 208,
+    SPELL_AURA_209 = 209, // unused
+    SPELL_AURA_210 = 210, // unused
+    SPELL_AURA_211 = 211, // unused
+    SPELL_AURA_MOD_RANGED_ATTACK_POWER__OF_INTELLECT = 212,
+    SPELL_AURA_MOD_RANGE_FROM_DAMAGE_DEALT = 213,
+    SPELL_AURA_214 = 214,
+    SPELL_AURA_215 = 215,
+    SPELL_AURA_HASTE_SPELLS = 216,
+    SPELL_AURA_217 = 217,
+    SPELL_AURA_218 = 218,
+    SPELL_AURA_MOD_MANA_REGEN = 219,
+    SPELL_AURA_220 = 220,
 
-    // aura 163-191 not implemented yet but some from its used in 1.12.1 spell.dbc
-
-    TOTAL_AURAS=192
+    TOTAL_AURAS=221
 };
 #endif
Index: src/bindings/universal/Scripts/sc_defines.cpp
===================================================================
--- src/bindings/universal/Scripts/sc_defines.cpp	(working copy)
+++ src/bindings/universal/Scripts/sc_defines.cpp	(working copy)
@@ -27,6 +27,7 @@
     uint32 spell_journeyman = 0;
     uint32 spell_expert     = 0;
     uint32 spell_artisan    = 0;
+    uint32 spell_master     = 0;
 
     switch(trskill)
     {
@@ -35,81 +36,104 @@
             spell_journeyman = 3101;
             spell_expert     = 3464;
             spell_artisan    = 11611;
+            spell_master     = 28596; // teached by 28597
             break;
         case TRADESKILL_BLACKSMITHING:
             spell_apprentice = 2018;
             spell_journeyman = 3100;
             spell_expert     = 8768;
             spell_artisan    = 11454;
+            spell_master     = 29844; // teached by 29845
             break;
         case TRADESKILL_COOKING:
             spell_apprentice = 2550;
             spell_journeyman = 3102;
             spell_expert     = 3413;
             spell_artisan    = 18260;
+            spell_master     = 33359; // teached by 33361
             break;
         case TRADESKILL_ENCHANTING:
             spell_apprentice = 7411;
             spell_journeyman = 7412;
             spell_expert     = 7413;
             spell_artisan    = 13920;
+            spell_master     = 28029; // teached by 28030
             break;
         case TRADESKILL_ENGINEERING:
             spell_apprentice = 4036;
             spell_journeyman = 4037;
             spell_expert     = 4038;
             spell_artisan    = 12656;
+            spell_master     = 30350; // teached by 30351
             break;
         case TRADESKILL_FIRSTAID:
             spell_apprentice = 3273;
             spell_journeyman = 3274;
             spell_expert     = 7924;
             spell_artisan    = 10846;
+            spell_master     = 27028; // teached by 27029
             break;
         case TRADESKILL_HERBALISM:
             spell_apprentice = 2372;
             spell_journeyman = 2373;
             spell_expert     = 3571;
             spell_artisan    = 11994;
+            spell_master     = 0;
             break;
         case TRADESKILL_LEATHERWORKING:
             spell_apprentice = 2108;
             spell_journeyman = 3104;
             spell_expert     = 20649;
             spell_artisan    = 10662;
+            spell_master     = 32549; // teached by 32550
             break;
         case TRADESKILL_POISONS:
             spell_apprentice = 0;
             spell_journeyman = 0;
             spell_expert     = 0;
             spell_artisan    = 0;
+            spell_master     = 0;
             break;
         case TRADESKILL_TAILORING:
             spell_apprentice = 3908;
             spell_journeyman = 3909;
             spell_expert     = 3910;
             spell_artisan    = 12180;
+            spell_master     = 26790; // teached by 26791
             break;
         case TRADESKILL_MINING:
             spell_apprentice = 2581;
             spell_journeyman = 2582;
             spell_expert     = 3568;
             spell_artisan    = 10249;
+            spell_master     = 29354; // teached by 29355
             break;
         case TRADESKILL_FISHING:
             spell_apprentice = 7733;
             spell_journeyman = 7734;
             spell_expert     = 7736;
             spell_artisan    = 18249;
+            spell_master     = 33098; // teached by 33100 
             break;
         case TRADESKILL_SKINNING:
             spell_apprentice = 8615;
             spell_journeyman = 8619;
             spell_expert     = 8620;
             spell_artisan    = 10769;
+            spell_master     = 32679; // teached by 32678
             break;
+        case TRADESKILL_JAWELCRAFTING:
+            spell_apprentice = 25229; // teached by 25245
+            spell_journeyman = 25230; // teached by 25246
+            spell_expert     = 28894; // teached by 28896
+            spell_artisan    = 28895; // teached by 28899
+            spell_master     = 28897; // teached by 28901
+            break;
     }
 
+    if (player->HasSpell(spell_master))
+        return TRADESKILL_LEVEL_MASTER;
+
     if (player->HasSpell(spell_artisan))
         return TRADESKILL_LEVEL_ARTISAN;
 
Index: src/bindings/universal/Scripts/sc_defines.h
===================================================================
--- src/bindings/universal/Scripts/sc_defines.h	(working copy)
+++ src/bindings/universal/Scripts/sc_defines.h	(working copy)
@@ -36,12 +36,14 @@
 #define TRADESKILL_MINING                11
 #define TRADESKILL_FISHING               12
 #define TRADESKILL_SKINNING              13
+#define TRADESKILL_JAWELCRAFTING         14
 
 #define TRADESKILL_LEVEL_NONE            0
 #define TRADESKILL_LEVEL_APPRENTICE      1
 #define TRADESKILL_LEVEL_JOURNEYMAN      2
 #define TRADESKILL_LEVEL_EXPERT          3
 #define TRADESKILL_LEVEL_ARTISAN         4
+#define TRADESKILL_LEVEL_MASTER          5
 
 // Gossip defines