Changelog:

Code:
Index: arcemu-logonserver/AccountCache.cpp
===================================================================
--- arcemu-logonserver/AccountCache.cpp	(revision 3234)
+++ arcemu-logonserver/AccountCache.cpp	(working copy)
@@ -108,13 +108,13 @@
 	acct->AccountId				= field[0].GetUInt32();
 	acct->AccountFlags			= field[5].GetUInt8();
 	acct->Banned				= field[6].GetUInt32();
-	if ( (uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned != 1) //1 = perm ban?
+	if ( (uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned != 1 && acct->Banned != 2) //1 = perm ban?
 	{
 		//Accounts should be unbanned once the date is past their set expiry date.
-		acct->Banned = 0;
+		acct->Banned = 2;
 		//me go boom :(
 		//printf("Account %s's ban has expired.\n",acct->UsernamePtr->c_str());
-		sLogonSQL->Execute("UPDATE accounts SET banned = 0 WHERE acct=%u",acct->AccountId);
+		sLogonSQL->Execute("UPDATE accounts SET banned = 2 WHERE acct=%u",acct->AccountId);
 	}
 	acct->SetGMFlags(GMFlags.c_str());
 	acct->Locale[0] = 'e';
@@ -201,12 +201,12 @@
 	acct->AccountId				= field[0].GetUInt32();
 	acct->AccountFlags			= field[5].GetUInt8();
 	acct->Banned				= field[6].GetUInt32();
-	if ((uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned != 1) //1 = perm ban?
+	if ((uint32)UNIXTIME > acct->Banned && acct->Banned != 0 && acct->Banned != 1 && acct->Banned != 2) //1 = perm ban?
 	{
 		//Accounts should be unbanned once the date is past their set expiry date.
-		acct->Banned = 0;
+		acct->Banned = 2;
 		sLog.outDebug("Account %s's ban has expired.",acct->UsernamePtr->c_str());
-		sLogonSQL->Execute("UPDATE accounts SET banned = 0 WHERE acct=%u",acct->AccountId);
+		sLogonSQL->Execute("UPDATE accounts SET banned = 2 WHERE acct=%u",acct->AccountId);
 	}
 	acct->SetGMFlags(GMFlags.c_str());
 	if(strcmp(field[7].GetString(), "enUS"))
Index: arcemu-logonserver/AuthSocket.cpp
===================================================================
--- arcemu-logonserver/AuthSocket.cpp	(revision 3234)
+++ arcemu-logonserver/AuthSocket.cpp	(working copy)
@@ -194,6 +194,11 @@
 	sLog.outDebug("[AuthChallenge] Account banned state = %u", m_account->Banned);
 
 	// Check that the account isn't banned.
+	if(m_account->Banned == 2)
+	{
+		SendChallengeError(CE_PREORDER_TIME_LIMIT);
+		return;
+	}
 	if(m_account->Banned == 1)
 	{
 		SendChallengeError(CE_ACCOUNT_CLOSED);
@@ -576,6 +581,11 @@
 	sLog.outDebug("[AuthChallenge] Account banned state = %u", m_account->Banned);
 
 	// Check that the account isn't banned.
+	if(m_account->Banned == 2)
+	{
+		SendChallengeError(CE_PREORDER_TIME_LIMIT);
+		return;
+	}
 	if(m_account->Banned == 1)
 	{
 		SendChallengeError(CE_ACCOUNT_CLOSED);
Index: arcemu-shared/Auth/WowCrypt.cpp
===================================================================
--- arcemu-shared/Auth/WowCrypt.cpp	(revision 3234)
+++ arcemu-shared/Auth/WowCrypt.cpp	(working copy)
@@ -32,8 +32,8 @@
 
 void WowCrypt::Init(uint8 *K)
 {
-	static const uint8 s[16] = { 0xF4, 0x66, 0x31, 0x59, 0xFC, 0x83, 0x6E, 0x31, 0x31, 0x02, 0x51, 0xD5, 0x44, 0x31, 0x67, 0x98 };
-	static const uint8 r[16] = { 0x22, 0xBE, 0xE5, 0xCF, 0xBB, 0x07, 0x64, 0xD9, 0x00, 0x45, 0x1B, 0xD0, 0x24, 0xB8, 0xD5, 0x45 };
+	static const uint8 s[16] = { 0xC2, 0xB3, 0x72, 0x3C, 0xC6, 0xAE, 0xD9, 0xB5, 0x34, 0x3C, 0x53, 0xEE, 0x2F, 0x43, 0x67, 0xCE };
+	static const uint8 r[16] = { 0xCC, 0x98, 0xAE, 0x04, 0xE8, 0x97, 0xEA, 0xCA, 0x12, 0xDD, 0xC0, 0x93, 0x42, 0x91, 0x53, 0x57 };
     uint8 encryptHash[SHA_DIGEST_LENGTH];
     uint8 decryptHash[SHA_DIGEST_LENGTH];
     uint8 pass[1024];
@@ -62,4 +62,4 @@
 WowCrypt::~WowCrypt()
 {
 
-}
+}
\ No newline at end of file
Index: arcemu-shared/AuthCodes.h
===================================================================
--- arcemu-shared/AuthCodes.h	(revision 3234)
+++ arcemu-shared/AuthCodes.h	(working copy)
@@ -23,118 +23,118 @@
 // client 3.3.0, 2009/12/20
 enum LoginErrorCode
 {
-	E_RESPONSE_SUCCESS											= 0x00,
-	E_RESPONSE_FAILURE											= 0x01,
-	E_RESPONSE_CANCELLED										= 0x02,
-	E_RESPONSE_DISCONNECTED										= 0x03,
-	E_RESPONSE_FAILED_TO_CONNECT								= 0x04,
-	E_RESPONSE_CONNECTED										= 0x05,
-	E_RESPONSE_VERSION_MISMATCH									= 0x06,
+	E_RESPONSE_SUCCESS										= 0x00,
+	E_RESPONSE_FAILURE										= 0x01,
+	E_RESPONSE_CANCELLED									= 0x02,
+	E_RESPONSE_DISCONNECTED									= 0x03,
+	E_RESPONSE_FAILED_TO_CONNECT							= 0x04,
+	E_RESPONSE_VERSION_MISMATCH								= 0x05,
 
-	E_CSTATUS_CONNECTING										= 0x07,
-	E_CSTATUS_NEGOTIATING_SECURITY								= 0x08,
-	E_CSTATUS_NEGOTIATION_COMPLETE								= 0x09,
-	E_CSTATUS_NEGOTIATION_FAILED								= 0x0A,
-	E_CSTATUS_AUTHENTICATING									= 0x0B,
+	E_CSTATUS_CONNECTING									= 0x06,
+	E_CSTATUS_NEGOTIATING_SECURITY							= 0x07,
+	E_CSTATUS_NEGOTIATION_COMPLETE							= 0x08,
+	E_CSTATUS_NEGOTIATION_FAILED							= 0x09,
+	E_CSTATUS_AUTHENTICATING								= 0x0A,
+	
+	E_AUTH_OK												= 0x0B,
+	E_AUTH_FAILED											= 0x0C,
+	E_AUTH_REJECT											= 0x0D,
+	E_AUTH_BAD_SERVER_PROOF									= 0x0E,
+	E_AUTH_UNAVAILABLE										= 0x0F,
+	E_AUTH_SYSTEM_ERROR										= 0x10,
+	E_AUTH_BILLING_ERROR									= 0x11,
+	E_AUTH_BILLING_EXPIRED									= 0x12,
+	E_AUTH_VERSION_MISMATCH									= 0x13,
+	E_AUTH_UNKNOWN_ACCOUNT									= 0x14,
+	E_AUTH_INCORRECT_PASSWORD								= 0x15,
+	E_AUTH_SESSION_EXPIRED									= 0x16,
+	E_AUTH_SERVER_SHUTTING_DOWN								= 0x17,
+	E_AUTH_ALREADY_LOGGING_IN								= 0x18,
+	E_AUTH_LOGIN_SERVER_NOT_FOUND							= 0x19,
+	E_AUTH_WAIT_QUEUE										= 0x1A,
+	E_AUTH_BANNED											= 0x1B,
+	E_AUTH_ALREADY_ONLINE									= 0x1C,
+	E_AUTH_NO_TIME											= 0x1D,
+	E_AUTH_DB_BUSY											= 0x1E,
+	E_AUTH_SUSPENDED										= 0x1F,
+	E_AUTH_PARENTAL_CONTROL									= 0x20,
+	E_AUTH_LOCKED_ENFORCED									= 0x21,
 
-	E_AUTH_OK													= 0x0C,
-	E_AUTH_FAILED												= 0x0D,
-	E_AUTH_REJECT												= 0x0E,
-	E_AUTH_BAD_SERVER_PROOF										= 0x0F,
-	E_AUTH_UNAVAILABLE											= 0x10,
-	E_AUTH_SYSTEM_ERROR											= 0x11,
-	E_AUTH_BILLING_ERROR										= 0x12,
-	E_AUTH_BILLING_EXPIRED										= 0x13,
-	E_AUTH_VERSION_MISMATCH										= 0x14,
-	E_AUTH_UNKNOWN_ACCOUNT										= 0x15,
-	E_AUTH_INCORRECT_PASSWORD									= 0x16,
-	E_AUTH_SESSION_EXPIRED										= 0x17,
-	E_AUTH_SERVER_SHUTTING_DOWN									= 0x18,
-	E_AUTH_ALREADY_LOGGING_IN									= 0x19,
-	E_AUTH_LOGIN_SERVER_NOT_FOUND								= 0x1A,
-	E_AUTH_WAIT_QUEUE											= 0x1B,
-	E_AUTH_BANNED												= 0x1C,
-	E_AUTH_ALREADY_ONLINE										= 0x1D,
-	E_AUTH_NO_TIME												= 0x1E,
-	E_AUTH_DB_BUSY												= 0x1F,
-	E_AUTH_SUSPENDED											= 0x20,
-	E_AUTH_PARENTAL_CONTROL										= 0x21,
-	E_AUTH_LOCKED_ENFORCED										= 0x22,
+	E_REALM_LIST_IN_PROGRESS								= 0x22,
+	E_REALM_LIST_SUCCESS									= 0x23,
+	E_REALM_LIST_FAILED										= 0x24,
+	E_REALM_LIST_INVALID									= 0x25,
+	E_REALM_LIST_REALM_NOT_FOUND							= 0x26,
 
-	E_REALM_LIST_IN_PROGRESS									= 0x23,
-	E_REALM_LIST_SUCCESS										= 0x24,
-	E_REALM_LIST_FAILED											= 0x25,
-	E_REALM_LIST_INVALID										= 0x26,
-	E_REALM_LIST_REALM_NOT_FOUND								= 0x27,
+	E_ACCOUNT_CREATE_IN_PROGRESS							= 0x27,
+	E_ACCOUNT_CREATE_SUCCESS								= 0x28,
+	E_ACCOUNT_CREATE_FAILED									= 0x29,
 
-	E_ACCOUNT_CREATE_IN_PROGRESS								= 0x28,
-	E_ACCOUNT_CREATE_SUCCESS									= 0x29,
-	E_ACCOUNT_CREATE_FAILED										= 0x2A,
+	E_CHAR_LIST_RETRIEVING									= 0x2A,
+	E_CHAR_LIST_RETRIEVED									= 0x2B,
+	E_CHAR_LIST_FAILED										= 0x2C,
 
-	E_CHAR_LIST_RETRIEVING										= 0x2B,
-	E_CHAR_LIST_RETRIEVED										= 0x2C,
-	E_CHAR_LIST_FAILED											= 0x2D,
+	E_CHAR_CREATE_IN_PROGRESS								= 0x2D,
+	E_CHAR_CREATE_SUCCESS									= 0x2E,
+	E_CHAR_CREATE_ERROR										= 0x2F,
+	E_CHAR_CREATE_FAILED									= 0x30,
+	E_CHAR_CREATE_NAME_IN_USE								= 0x31,
+	E_CHAR_CREATE_DISABLED									= 0x32,
+	E_CHAR_CREATE_PVP_TEAMS_VIOLATION						= 0x33,
+	E_CHAR_CREATE_SERVER_LIMIT								= 0x34,
+	E_CHAR_CREATE_ACCOUNT_LIMIT			 					= 0x35,
+	E_CHAR_CREATE_SERVER_QUEUE								= 0x36,
+	E_CHAR_CREATE_ONLY_EXISTING								= 0x37,
+	E_CHAR_CREATE_EXPANSION									= 0x38,
+	E_CHAR_CREATE_EXPANSION_CLASS							= 0x39,
+	E_CHAR_CREATE_LEVEL_REQUIREMENT							= 0x3A,
+	E_CHAR_CREATE_UNIQUE_CLASS_LIMIT						= 0x3B,
+	E_CHAR_CREATE_CHARACTER_IN_GUILD						= 0x3C,
+	E_CHAR_CREATE_RESTRICTED_RACECLASS						= 0x3D,
+	E_CHAR_CREATE_CHARACTER_CHOOSE_RACE						= 0x3E,
+	E_CHAR_CREATE_CHARACTER_ARENA_LEADER					= 0x3F,
+	E_CHAR_CREATE_CHARACTER_DELETE_MAIL						= 0x40,
+	E_CHAR_CREATE_CHARACTER_SWAP_FACTION					= 0x41,
+	E_CHAR_CREATE_CHARACTER_RACE_ONLY						= 0x42,
+	E_CHAR_CREATE_CHARACTER_GOLD_LIMIT						= 0x43,
+	E_CHAR_CREATE_FORCE_LOGIN								= 0x44,
 
-	E_CHAR_CREATE_IN_PROGRESS									= 0x2E,
-	E_CHAR_CREATE_SUCCESS										= 0x2F,
-	E_CHAR_CREATE_ERROR											= 0x30,
-	E_CHAR_CREATE_FAILED										= 0x31,
-	E_CHAR_CREATE_NAME_IN_USE									= 0x32,
-	E_CHAR_CREATE_DISABLED										= 0x33,
-	E_CHAR_CREATE_PVP_TEAMS_VIOLATION							= 0x34,
-	E_CHAR_CREATE_SERVER_LIMIT									= 0x35,
-	E_CHAR_CREATE_ACCOUNT_LIMIT									= 0x36,
-	E_CHAR_CREATE_SERVER_QUEUE									= 0x37,
-	E_CHAR_CREATE_ONLY_EXISTING									= 0x38,
-	E_CHAR_CREATE_EXPANSION										= 0x39,
-	E_CHAR_CREATE_EXPANSION_CLASS								= 0x3A,
-	E_CHAR_CREATE_LEVEL_REQUIREMENT								= 0x3B,
-	E_CHAR_CREATE_UNIQUE_CLASS_LIMIT							= 0x3C,
-	E_CHAR_CREATE_CHARACTER_IN_GUILD							= 0x3D,
-	E_CHAR_CREATE_RESTRICTED_RACECLASS							= 0x3E,
-	E_CHAR_CREATE_CHARACTER_CHOOSE_RACE							= 0x3F,
-	E_CHAR_CREATE_CHARACTER_ARENA_LEADER						= 0x40,
-	E_CHAR_CREATE_CHARACTER_DELETE_MAIL							= 0x41,
-	E_CHAR_CREATE_CHARACTER_SWAP_FACTION                        = 0x42,
-	E_CHAR_CREATE_CHARACTER_RACE_ONLY                           = 0x43,
-	E_CHAR_CREATE_CHARACTER_GOLD_LIMIT                          = 0x44,
-	E_CHAR_CREATE_FORCE_LOGIN									= 0x45,
+	E_CHAR_DELETE_IN_PROGRESS								= 0x45,
+	E_CHAR_DELETE_SUCCESS									= 0x46,
+	E_CHAR_DELETE_FAILED									= 0x47,
+	E_CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER				= 0x48,
+	E_CHAR_DELETE_FAILED_GUILD_LEADER						= 0x49,
+	E_CHAR_DELETE_FAILED_ARENA_CAPTAIN						= 0x4A,
 
-	E_CHAR_DELETE_IN_PROGRESS									= 0x46,
-	E_CHAR_DELETE_SUCCESS										= 0x47,
-	E_CHAR_DELETE_FAILED										= 0x48,
-	E_CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER					= 0x49,
-	E_CHAR_DELETE_FAILED_GUILD_LEADER							= 0x4A,
-	E_CHAR_DELETE_FAILED_ARENA_CAPTAIN							= 0x4B,
-
-	E_CHAR_LOGIN_IN_PROGRESS									= 0x4C,
-	E_CHAR_LOGIN_SUCCESS										= 0x4D,
-	E_CHAR_LOGIN_NO_WORLD										= 0x4E,
-	E_CHAR_LOGIN_DUPLICATE_CHARACTER							= 0x4F,
-	E_CHAR_LOGIN_NO_INSTANCES									= 0x50,
-	E_CHAR_LOGIN_FAILED											= 0x51,
-	E_CHAR_LOGIN_DISABLED										= 0x52,
-	E_CHAR_LOGIN_NO_CHARACTER									= 0x53,
-	E_CHAR_LOGIN_LOCKED_FOR_TRANSFER							= 0x54,
-	E_CHAR_LOGIN_LOCKED_BY_BILLING								= 0x55,
-
-	E_CHAR_NAME_SUCCESS											= 0x56,
-	E_CHAR_NAME_FAILURE											= 0x57,
-	E_CHAR_NAME_NO_NAME											= 0x58,
-	E_CHAR_NAME_TOO_SHORT										= 0x59,
-	E_CHAR_NAME_TOO_LONG										= 0x5A,
-	E_CHAR_NAME_INVALID_CHARACTER								= 0x5B,
-	E_CHAR_NAME_MIXED_LANGUAGES									= 0x5C,
-	E_CHAR_NAME_PROFANE											= 0x5D,
-	E_CHAR_NAME_RESERVED										= 0x5E,
-	E_CHAR_NAME_INVALID_APOSTROPHE								= 0x5F,
-	E_CHAR_NAME_MULTIPLE_APOSTROPHES							= 0x60,
-	E_CHAR_NAME_THREE_CONSECUTIVE								= 0x61,
-	E_CHAR_NAME_INVALID_SPACE									= 0x62,
-	E_CHAR_NAME_CONSECUTIVE_SPACES								= 0x63,
-	E_CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS			= 0x64,
-	E_CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END	= 0x65,
-	E_CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME				= 0x66,
+	E_CHAR_LOGIN_IN_PROGRESS								= 0x4B,
+	E_CHAR_LOGIN_SUCCESS									= 0x4C,
+	E_CHAR_LOGIN_NO_WORLD									= 0x4D,
+	E_CHAR_LOGIN_DUPLICATE_CHARACTER						= 0x4E,
+	E_CHAR_LOGIN_NO_INSTANCES								= 0x4F,
+	E_CHAR_LOGIN_FAILED										= 0x50,
+	E_CHAR_LOGIN_DISABLED									= 0x51,
+	E_CHAR_LOGIN_NO_CHARACTER								= 0x52,
+	E_CHAR_LOGIN_LOCKED_FOR_TRANSFER						= 0x53,
+	E_CHAR_LOGIN_LOCKED_BY_BILLING							= 0x54,
+	E_CHAR_LOGIN_LOCKED_BY_MOBILE_AH 						= 0x55,
+	
+	E_CHAR_NAME_SUCCESS										= 0x56,
+	E_CHAR_NAME_FAILURE										= 0x57,
+	E_CHAR_NAME_NO_NAME										= 0x58,
+	E_CHAR_NAME_TOO_SHORT									= 0x59,
+	E_CHAR_NAME_TOO_LONG									= 0x5A,
+	E_CHAR_NAME_INVALID_CHARACTER							= 0x5B,
+	E_CHAR_NAME_MIXED_LANGUAGES								= 0x5C,
+	E_CHAR_NAME_PROFANE										= 0x5D,
+	E_CHAR_NAME_RESERVED									= 0x5E,
+	E_CHAR_NAME_INVALID_APOSTROPHE							= 0x5F,
+	E_CHAR_NAME_MULTIPLE_APOSTROPHES						= 0x60,
+	E_CHAR_NAME_THREE_CONSECUTIVE							= 0x61,
+	E_CHAR_NAME_INVALID_SPACE								= 0x62,
+	E_CHAR_NAME_CONSECUTIVE_SPACES							= 0x63,
+	E_CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS		= 0x64,
+	E_CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END= 0x65,
+	E_CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME			= 0x66,
 };
 
 //These defines are for use with OutPacket
@@ -251,4 +251,4 @@
 #define    CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END "\x65"
 #define    CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME "\x66"
 
-#endif
+#endif
\ No newline at end of file
Index: arcemu-shared/Database/DBCStores.cpp
===================================================================
--- arcemu-shared/Database/DBCStores.cpp	(revision 3234)
+++ arcemu-shared/Database/DBCStores.cpp	(working copy)
@@ -37,6 +37,7 @@
 SERVER_DECL DBCStorage<CharRaceEntry> dbcCharRace;
 SERVER_DECL DBCStorage<CharTitlesEntry> dbcCharTitlesEntry;
 SERVER_DECL DBCStorage<ChatChannelDBC> dbcChatChannels;
+SERVER_DECL DBCStorage<ChatProfanityDBC> dbcChatProfanity;
 SERVER_DECL DBCStorage<CombatRatingDBC> dbcCombatRating;
 SERVER_DECL DBCStorage<CreatureSpellDataEntry> dbcCreatureSpellData;
 SERVER_DECL DBCStorage<CreatureFamilyEntry> dbcCreatureFamily;
@@ -97,9 +98,7 @@
 const char* GlyphSlotEntryFormat = "uuu";
 const char* skilllineentrYFormat = "uuulxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
-// const char* BattlemasterListEntryFormat = "uiiiiiiiiuuuuuiiiiiiiiiiiiiiiiiiuux";
-// const char* BattlemasterListEntryFormat = "uiiiiiiiiuuiiiiiiiiiiiiiiiiiuux";
-const char* BattlemasterListEntryFormat = "uiiiiiiiiuuiiiiiiiiiiiiiiiiiuux";
+const char* BattlemasterListEntryFormat = "niiiiiiiiixssssssssssssssssxxxxx";
 
 const char* CharTitlesEntryfmt =
 	"u" // ID
@@ -221,8 +220,6 @@
 	"u" // RequiredItemFlags
 	"uuu" // Effect[3]
 	"uuu" // EffectDieSides[3]
-	"uuu" // EffectBaseDice[3]
-	"uuu" // EffectDicePerLevel[3]
 	"uuu" // EffectRealPointsPerLevel[3]
 	"uuu" // EffectBasePoints[3]
 	"uuu" // EffectMechanic[3]
@@ -321,6 +318,7 @@
 
 const char* itemrandomsuffixformat = "uxxxxxxxxxxxxxxxxxxuuuxxuuuxx";//19, 20, 21, 24, 25, 26
 const char* chatchannelformat = "iixssssssssssssssslxxxxxxxxxxxxxxxxxx";
+const char* chatprofanityformat = "isi";
 const char* durabilityqualityFormat = "uf";
 const char* durabilitycostsFormat = "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu";
 const char* bankslotpriceformat = "uu";
@@ -389,6 +387,7 @@
 	LOAD_DBC("DBC/ItemRandomSuffix.dbc", itemrandomsuffixformat, true, dbcItemRandomSuffix, false);
 	LOAD_DBC("DBC/gtCombatRatings.dbc", gtfloatformat, false, dbcCombatRating, false);
 	LOAD_DBC("DBC/ChatChannels.dbc", chatchannelformat, true, dbcChatChannels, true);
+	LOAD_DBC("DBC/ChatProfanity.dbc", chatprofanityformat, true, dbcChatProfanity, false);
 	LOAD_DBC("DBC/DurabilityQuality.dbc", durabilityqualityFormat, true, dbcDurabilityQuality, false);
 	LOAD_DBC("DBC/DurabilityCosts.dbc", durabilitycostsFormat, true, dbcDurabilityCosts, false);
 	LOAD_DBC("DBC/BankBagSlotPrices.dbc", bankslotpriceformat, true, dbcBankSlotPrices, false);
@@ -407,4 +406,4 @@
 	LOAD_DBC("DBC/ScalingStatValues.dbc",scalingstatvaluesformat,true,dbcScalingStatValues, false);
 	LOAD_DBC("DBC/ItemLimitCategory.dbc", itemlimitcategoryformat, true, dbcItemLimitCategory, true);
 	return true;
-}
+}
\ No newline at end of file
Index: arcemu-shared/Database/DBCStores.h
===================================================================
--- arcemu-shared/Database/DBCStores.h	(revision 3234)
+++ arcemu-shared/Database/DBCStores.h	(working copy)
@@ -742,8 +742,6 @@
 	uint32 RequiredItemFlags;               //71
 	uint32 Effect[3];                       //72 - 74
 	uint32 EffectDieSides[3];               //75 - 77
-	uint32 EffectBaseDice[3];               //78 - 80
-	float  EffectDicePerLevel[3];           //81 - 83
 	float  EffectRealPointsPerLevel[3];     //84 - 86
 	int32  EffectBasePoints[3];             //87 - 89
 	int32  EffectMechanic[3];               //90 - 92       Related to SpellMechanic.dbc
@@ -1261,6 +1259,13 @@
 	char * name_pattern[16];
 };
 
+struct ChatProfanityDBC
+{
+	uint32 id;
+	char * text;
+	uint32 type;
+};
+
 struct DurabilityQualityEntry
 {
 	uint32 id;
@@ -1744,4 +1749,4 @@
 
 bool LoadDBCs();
 
-#endif
+#endif
\ No newline at end of file
Index: arcemu-world/AchievementMgr.h
===================================================================
--- arcemu-world/AchievementMgr.h	(revision 3234)
+++ arcemu-world/AchievementMgr.h	(working copy)
@@ -194,7 +194,7 @@
 	ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
 	ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
 	// 0..114 => 115 criteria types total
-	ACHIEVEMENT_CRITERIA_TYPE_TOTAL = 120,
+	ACHIEVEMENT_CRITERIA_TYPE_TOTAL = 124,
 };
 
 /**
Index: arcemu-world/NPCHandler.cpp
===================================================================
--- arcemu-world/NPCHandler.cpp	(revision 3234)
+++ arcemu-world/NPCHandler.cpp	(working copy)
@@ -407,8 +407,9 @@
 	}
 
 	WorldPacket data(MSG_AUCTION_HELLO, 12);
-	data << auctioneer->GetGUID();
+	data << uint64(auctioneer->GetGUID());
 	data << uint32(AH->GetID());
+	data << uint8(1); //seems to enable auction house if 1???
 
 	SendPacket( &data );
 }
Index: arcemu-world/Player.cpp
===================================================================
--- arcemu-world/Player.cpp	(revision 3234)
+++ arcemu-world/Player.cpp	(working copy)
@@ -2196,7 +2196,9 @@
 	mSpells.insert(spell_id);
 	if(IsInWorld())
 	{
-		m_session->OutPacket(SMSG_LEARNED_SPELL, 4, &spell_id);
+		 WorldPacket data(SMSG_LEARNED_SPELL, 6);
+		 data << (spell_id);
+		 data << uint16(0);
 	}
 
 	// Check if we're a deleted spell
Index: arcemu-world/Spell.cpp
===================================================================
--- arcemu-world/Spell.cpp	(revision 3234)
+++ arcemu-world/Spell.cpp	(working copy)
@@ -4793,7 +4793,7 @@
 	int32 value = 0;
 
 	float basePointsPerLevel    = GetProto()->EffectRealPointsPerLevel[i];
-	float randomPointsPerLevel  = GetProto()->EffectDicePerLevel[i];
+//	float randomPointsPerLevel  = GetProto()->EffectDicePerLevel[i];
 	int32 basePoints = GetProto()->EffectBasePoints[i] + 1;
 	int32 randomPoints = GetProto()->EffectDieSides[i];
 
@@ -4840,7 +4840,7 @@
 			diff +=GetProto()->maxLevel;
 		else
 			diff +=u_caster->getLevel();
-		randomPoints += float2int32(diff * randomPointsPerLevel);
+//		randomPoints += float2int32(diff * randomPointsPerLevel);
 		basePoints += float2int32(diff * basePointsPerLevel );
 	}
 
@@ -6047,4 +6047,4 @@
 	}
 
 	return 0;
-}
+}
\ No newline at end of file
Index: arcemu-world/Spell.h
===================================================================
--- arcemu-world/Spell.h	(revision 3234)
+++ arcemu-world/Spell.h	(working copy)
@@ -955,7 +955,9 @@
 	SPELL_EFFECT_UNKNOWN38,                 //    160
 	SPELL_EFFECT_LEARN_SPEC,                //    161
 	SPELL_EFFECT_ACTIVATE_SPEC,             //    162
-    TOTAL_SPELL_EFFECTS,                    //    163
+	SPELL_EFFECT_UNKNOWN163,                //    163
+	SPELL_EFFECT_UNKNOWN164,                //    164
+    TOTAL_SPELL_EFFECTS,                    //    165
 };
 
 // target type flags
Index: arcemu-world/SpellFixes.cpp
===================================================================
--- arcemu-world/SpellFixes.cpp	(revision 3234)
+++ arcemu-world/SpellFixes.cpp	(working copy)
@@ -133,8 +133,8 @@
 					float ftemp;
 					temp = sp->Effect[col1_swap];			sp->Effect[col1_swap] = sp->Effect[col2_swap] ;						sp->Effect[col2_swap] = temp;
 					temp = sp->EffectDieSides[col1_swap];	sp->EffectDieSides[col1_swap] = sp->EffectDieSides[col2_swap] ;		sp->EffectDieSides[col2_swap] = temp;
-					temp = sp->EffectBaseDice[col1_swap];	sp->EffectBaseDice[col1_swap] = sp->EffectBaseDice[col2_swap] ;		sp->EffectBaseDice[col2_swap] = temp;
-					ftemp = sp->EffectDicePerLevel[col1_swap];			sp->EffectDicePerLevel[col1_swap] = sp->EffectDicePerLevel[col2_swap] ;				sp->EffectDicePerLevel[col2_swap] = ftemp;
+//					temp = sp->EffectBaseDice[col1_swap];	sp->EffectBaseDice[col1_swap] = sp->EffectBaseDice[col2_swap] ;		sp->EffectBaseDice[col2_swap] = temp;
+//					ftemp = sp->EffectDicePerLevel[col1_swap];			sp->EffectDicePerLevel[col1_swap] = sp->EffectDicePerLevel[col2_swap] ;				sp->EffectDicePerLevel[col2_swap] = ftemp;
 					ftemp = sp->EffectRealPointsPerLevel[col1_swap];	sp->EffectRealPointsPerLevel[col1_swap] = sp->EffectRealPointsPerLevel[col2_swap] ;	sp->EffectRealPointsPerLevel[col2_swap] = ftemp;
 					temp = sp->EffectBasePoints[col1_swap];	sp->EffectBasePoints[col1_swap] = sp->EffectBasePoints[col2_swap] ;	sp->EffectBasePoints[col2_swap] = temp;
 					temp = sp->EffectMechanic[col1_swap];	sp->EffectMechanic[col1_swap] = sp->EffectMechanic[col2_swap] ;	sp->EffectMechanic[col2_swap] = temp;
@@ -3744,8 +3744,8 @@
 				healsp->Effect[0] = SPELL_EFFECT_HEAL;
 				healsp->Effect[1] = healsp->Effect[2] = SPELL_EFFECT_NULL;
 				healsp->EffectBasePoints[0] = sp->EffectBasePoints[0];
-				healsp->EffectBaseDice[0] = sp->EffectBaseDice[0];
-				healsp->EffectDicePerLevel[0] = sp->EffectDicePerLevel[0];
+//				healsp->EffectBaseDice[0] = sp->EffectBaseDice[0];
+//				healsp->EffectDicePerLevel[0] = sp->EffectDicePerLevel[0];
 				healsp->EffectDieSides[0] = sp->EffectDieSides[0];
 				healsp->EffectImplicitTargetA[0] = EFF_TARGET_PARTY_MEMBER;
 			}
@@ -5320,7 +5320,7 @@
 			sp->Effect[2] = SPELL_EFFECT_APPLY_AURA;
             sp->EffectAmplitude[2] = 3000;
 			sp->EffectImplicitTargetA[2] = EFF_TARGET_SELF;
-			sp->EffectBaseDice[2] = 1;
+//			sp->EffectBaseDice[2] = 1;
 			sp->EffectDieSides[2] = 1;
 			sp->EffectTriggerSpell[2] = 32612;
 			sp->EffectBasePoints[2] = -1;
Index: arcemu-world/UpdateFields.h
===================================================================
--- arcemu-world/UpdateFields.h	(revision 3234)
+++ arcemu-world/UpdateFields.h	(working copy)
@@ -38,49 +38,49 @@
 
 enum EItemFields
 {
-    ITEM_FIELD_OWNER                          = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
-    ITEM_FIELD_CONTAINED                      = OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
-    ITEM_FIELD_CREATOR                        = OBJECT_END + 0x0004, // Size: 2, Type: LONG, Flags: PUBLIC
-    ITEM_FIELD_GIFTCREATOR                    = OBJECT_END + 0x0006, // Size: 2, Type: LONG, Flags: PUBLIC
-    ITEM_FIELD_STACK_COUNT                    = OBJECT_END + 0x0008, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_DURATION                       = OBJECT_END + 0x0009, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_SPELL_CHARGES                  = OBJECT_END + 0x000A, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_SPELL_CHARGES_1                = OBJECT_END + 0x000B, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_SPELL_CHARGES_2                = OBJECT_END + 0x000C, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_SPELL_CHARGES_3                = OBJECT_END + 0x000D, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_SPELL_CHARGES_4                = OBJECT_END + 0x000E, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_FLAGS                          = OBJECT_END + 0x000F, // Size: 1, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_1_1                = OBJECT_END + 0x0010, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_1_3                = OBJECT_END + 0x0012, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_2_1                = OBJECT_END + 0x0013, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_2_3                = OBJECT_END + 0x0015, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_3_1                = OBJECT_END + 0x0016, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_3_3                = OBJECT_END + 0x0018, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_4_1                = OBJECT_END + 0x0019, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_4_3                = OBJECT_END + 0x001B, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_5_1                = OBJECT_END + 0x001C, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_5_3                = OBJECT_END + 0x001E, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_6_1                = OBJECT_END + 0x001F, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_6_3                = OBJECT_END + 0x0021, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_7_1                = OBJECT_END + 0x0022, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_7_3                = OBJECT_END + 0x0024, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_8_1                = OBJECT_END + 0x0025, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_8_3                = OBJECT_END + 0x0027, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_9_1                = OBJECT_END + 0x0028, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_9_3                = OBJECT_END + 0x002A, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_10_1               = OBJECT_END + 0x002B, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_10_3               = OBJECT_END + 0x002D, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_11_1               = OBJECT_END + 0x002E, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_11_3               = OBJECT_END + 0x0030, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_12_1               = OBJECT_END + 0x0031, // Size: 2, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ENCHANTMENT_12_3               = OBJECT_END + 0x0033, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
-    ITEM_FIELD_PROPERTY_SEED                  = OBJECT_END + 0x0034, // Size: 1, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_RANDOM_PROPERTIES_ID           = OBJECT_END + 0x0035, // Size: 1, Type: INT, Flags: PUBLIC
-    ITEM_FIELD_ITEM_TEXT_ID                   = OBJECT_END + 0x0036, // Size: 1, Type: INT, Flags: OWNER_ONLY
-    ITEM_FIELD_DURABILITY                     = OBJECT_END + 0x0037, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_MAXDURABILITY                  = OBJECT_END + 0x0038, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
-    ITEM_FIELD_CREATE_PLAYED_TIME             = OBJECT_END + 0x0039, // Size: 1, Type: INT, Flags: PUBLIC
-    ITEM_END                                  = OBJECT_END + 0x003A,
+	ITEM_FIELD_OWNER							= OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
+	ITEM_FIELD_CONTAINED						= OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
+	ITEM_FIELD_CREATOR							= OBJECT_END + 0x0004, // Size: 2, Type: LONG, Flags: PUBLIC
+	ITEM_FIELD_GIFTCREATOR						= OBJECT_END + 0x0006, // Size: 2, Type: LONG, Flags: PUBLIC
+	ITEM_FIELD_STACK_COUNT						= OBJECT_END + 0x0008, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_DURATION						 	= OBJECT_END + 0x0009, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_SPELL_CHARGES					= OBJECT_END + 0x000A, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_SPELL_CHARGES_1					= OBJECT_END + 0x000B, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_SPELL_CHARGES_2					= OBJECT_END + 0x000C, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_SPELL_CHARGES_3					= OBJECT_END + 0x000D, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_SPELL_CHARGES_4					= OBJECT_END + 0x000E, // Size: 5, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_FLAGS							= OBJECT_END + 0x000F, // Size: 1, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_1_1					= OBJECT_END + 0x0010, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_1_3					= OBJECT_END + 0x0012, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_2_1					= OBJECT_END + 0x0013, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_2_3					= OBJECT_END + 0x0015, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_3_1					= OBJECT_END + 0x0016, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_3_3					= OBJECT_END + 0x0018, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_4_1					= OBJECT_END + 0x0019, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_4_3					= OBJECT_END + 0x001B, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_5_1					= OBJECT_END + 0x001C, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_5_3					= OBJECT_END + 0x001E, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_6_1					= OBJECT_END + 0x001F, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_6_3					= OBJECT_END + 0x0021, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_7_1					= OBJECT_END + 0x0022, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_7_3					= OBJECT_END + 0x0024, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_8_1					= OBJECT_END + 0x0025, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_8_3					= OBJECT_END + 0x0027, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_9_1					= OBJECT_END + 0x0028, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_9_3					= OBJECT_END + 0x002A, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_10_1					= OBJECT_END + 0x002B, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_10_3					= OBJECT_END + 0x002D, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_11_1					= OBJECT_END + 0x002E, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_11_3					= OBJECT_END + 0x0030, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_12_1					= OBJECT_END + 0x0031, // Size: 2, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_ENCHANTMENT_12_3					= OBJECT_END + 0x0033, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
+	ITEM_FIELD_PROPERTY_SEED					= OBJECT_END + 0x0034, // Size: 1, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_RANDOM_PROPERTIES_ID				= OBJECT_END + 0x0035, // Size: 1, Type: INT, Flags: PUBLIC
+	ITEM_FIELD_DURABILITY						= OBJECT_END + 0x0036, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_MAXDURABILITY					= OBJECT_END + 0x0037, // Size: 1, Type: INT, Flags: OWNER_ONLY, UNK2
+	ITEM_FIELD_CREATE_PLAYED_TIME				= OBJECT_END + 0x0038, // Size: 1, Type: INT, Flags: NONE
+	ITEM_FIELD_ITEM_TEXT_ID						= OBJECT_END + 0x0039, // Size: 1, Type: INT, Flags: OWNER_ONLY // THIS is wrong, but we shall store the dataz
+	ITEM_END									= OBJECT_END + 0x003A,
 };
 
 enum EContainerFields
@@ -164,140 +164,140 @@
 
 enum EUnitFields
 {
-    UNIT_FIELD_CHARM                          = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
-    UNIT_FIELD_SUMMON                         = OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
-    UNIT_FIELD_CRITTER                        = OBJECT_END + 0x0004, // Size: 2, Type: LONG, Flags: PRIVATE
-    UNIT_FIELD_CHARMEDBY                      = OBJECT_END + 0x0006, // Size: 2, Type: LONG, Flags: PUBLIC
-    UNIT_FIELD_SUMMONEDBY                     = OBJECT_END + 0x0008, // Size: 2, Type: LONG, Flags: PUBLIC
-    UNIT_FIELD_CREATEDBY                      = OBJECT_END + 0x000A, // Size: 2, Type: LONG, Flags: PUBLIC
-    UNIT_FIELD_TARGET                         = OBJECT_END + 0x000C, // Size: 2, Type: LONG, Flags: PUBLIC
-    UNIT_FIELD_CHANNEL_OBJECT                 = OBJECT_END + 0x000E, // Size: 2, Type: LONG, Flags: PUBLIC
-    UNIT_FIELD_BYTES_0                        = OBJECT_END + 0x0010, // Size: 1, Type: BYTES, Flags: PUBLIC
-    UNIT_FIELD_HEALTH                         = OBJECT_END + 0x0011, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER1                         = OBJECT_END + 0x0012, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER2                         = OBJECT_END + 0x0013, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER3                         = OBJECT_END + 0x0014, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER4                         = OBJECT_END + 0x0015, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER5                         = OBJECT_END + 0x0016, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER6                         = OBJECT_END + 0x0017, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER7                         = OBJECT_END + 0x0018, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXHEALTH                      = OBJECT_END + 0x0019, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXPOWER1                      = OBJECT_END + 0x001A, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXPOWER2                      = OBJECT_END + 0x001B, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXPOWER3                      = OBJECT_END + 0x001C, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXPOWER4                      = OBJECT_END + 0x001D, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXPOWER5                      = OBJECT_END + 0x001E, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXPOWER6                      = OBJECT_END + 0x001F, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MAXPOWER7                      = OBJECT_END + 0x0020, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER      = OBJECT_END + 0x0021, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_1    = OBJECT_END + 0x0022, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_2    = OBJECT_END + 0x0023, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_3    = OBJECT_END + 0x0024, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_4    = OBJECT_END + 0x0025, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_5    = OBJECT_END + 0x0026, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_6    = OBJECT_END + 0x0027, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = OBJECT_END + 0x0028, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_1 = OBJECT_END + 0x0029, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_2 = OBJECT_END + 0x002A, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_3 = OBJECT_END + 0x002B, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_4 = OBJECT_END + 0x002C, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_5 = OBJECT_END + 0x002D, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_6 = OBJECT_END + 0x002E, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_LEVEL                          = OBJECT_END + 0x002F, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_FACTIONTEMPLATE                = OBJECT_END + 0x0030, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_VIRTUAL_ITEM_SLOT_ID                 = OBJECT_END + 0x0031, // Size: 3, Type: INT, Flags: PUBLIC
-    UNIT_VIRTUAL_ITEM_SLOT_ID_1               = OBJECT_END + 0x0032, // Size: 3, Type: INT, Flags: PUBLIC
-    UNIT_VIRTUAL_ITEM_SLOT_ID_2               = OBJECT_END + 0x0033, // Size: 3, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_FLAGS                          = OBJECT_END + 0x0034, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_FLAGS_2                        = OBJECT_END + 0x0035, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_AURASTATE                      = OBJECT_END + 0x0036, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_BASEATTACKTIME                 = OBJECT_END + 0x0037, // Size: 2, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_RANGEDATTACKTIME               = OBJECT_END + 0x0039, // Size: 1, Type: INT, Flags: PRIVATE
-    UNIT_FIELD_BOUNDINGRADIUS                 = OBJECT_END + 0x003A, // Size: 1, Type: FLOAT, Flags: PUBLIC
-    UNIT_FIELD_COMBATREACH                    = OBJECT_END + 0x003B, // Size: 1, Type: FLOAT, Flags: PUBLIC
-    UNIT_FIELD_DISPLAYID                      = OBJECT_END + 0x003C, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_NATIVEDISPLAYID                = OBJECT_END + 0x003D, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MOUNTDISPLAYID                 = OBJECT_END + 0x003E, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_MINDAMAGE                      = OBJECT_END + 0x003F, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_MAXDAMAGE                      = OBJECT_END + 0x0040, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_MINOFFHANDDAMAGE               = OBJECT_END + 0x0041, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_MAXOFFHANDDAMAGE               = OBJECT_END + 0x0042, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_BYTES_1                        = OBJECT_END + 0x0043, // Size: 1, Type: BYTES, Flags: PUBLIC
-    UNIT_FIELD_PETNUMBER                      = OBJECT_END + 0x0044, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_PET_NAME_TIMESTAMP             = OBJECT_END + 0x0045, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_PETEXPERIENCE                  = OBJECT_END + 0x0046, // Size: 1, Type: INT, Flags: OWNER_ONLY
-    UNIT_FIELD_PETNEXTLEVELEXP                = OBJECT_END + 0x0047, // Size: 1, Type: INT, Flags: OWNER_ONLY
-    UNIT_DYNAMIC_FLAGS                        = OBJECT_END + 0x0048, // Size: 1, Type: INT, Flags: DYNAMIC
-    UNIT_CHANNEL_SPELL                        = OBJECT_END + 0x0049, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_MOD_CAST_SPEED                       = OBJECT_END + 0x004A, // Size: 1, Type: FLOAT, Flags: PUBLIC
-    UNIT_CREATED_BY_SPELL                     = OBJECT_END + 0x004B, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_NPC_FLAGS                            = OBJECT_END + 0x004C, // Size: 1, Type: INT, Flags: DYNAMIC
-    UNIT_NPC_EMOTESTATE                       = OBJECT_END + 0x004D, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_STAT0                          = OBJECT_END + 0x004E, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_STAT1                          = OBJECT_END + 0x004F, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_STAT2                          = OBJECT_END + 0x0050, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_STAT3                          = OBJECT_END + 0x0051, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_STAT4                          = OBJECT_END + 0x0052, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POSSTAT0                       = OBJECT_END + 0x0053, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POSSTAT1                       = OBJECT_END + 0x0054, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POSSTAT2                       = OBJECT_END + 0x0055, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POSSTAT3                       = OBJECT_END + 0x0056, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POSSTAT4                       = OBJECT_END + 0x0057, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_NEGSTAT0                       = OBJECT_END + 0x0058, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_NEGSTAT1                       = OBJECT_END + 0x0059, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_NEGSTAT2                       = OBJECT_END + 0x005A, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_NEGSTAT3                       = OBJECT_END + 0x005B, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_NEGSTAT4                       = OBJECT_END + 0x005C, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCES                    = OBJECT_END + 0x005D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_RESISTANCES_1                  = OBJECT_END + 0x005E, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_RESISTANCES_2                  = OBJECT_END + 0x005F, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_RESISTANCES_3                  = OBJECT_END + 0x0060, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_RESISTANCES_4                  = OBJECT_END + 0x0061, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_RESISTANCES_5                  = OBJECT_END + 0x0062, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_RESISTANCES_6                  = OBJECT_END + 0x0063, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
-    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE     = OBJECT_END + 0x0064, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_1   = OBJECT_END + 0x0065, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_2   = OBJECT_END + 0x0066, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_3   = OBJECT_END + 0x0067, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_4   = OBJECT_END + 0x0068, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_5   = OBJECT_END + 0x0069, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_6   = OBJECT_END + 0x006A, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE     = OBJECT_END + 0x006B, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_1   = OBJECT_END + 0x006C, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_2   = OBJECT_END + 0x006D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_3   = OBJECT_END + 0x006E, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_4   = OBJECT_END + 0x006F, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_5   = OBJECT_END + 0x0070, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_6   = OBJECT_END + 0x0071, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_BASE_MANA                      = OBJECT_END + 0x0072, // Size: 1, Type: INT, Flags: PUBLIC
-    UNIT_FIELD_BASE_HEALTH                    = OBJECT_END + 0x0073, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_BYTES_2                        = OBJECT_END + 0x0074, // Size: 1, Type: BYTES, Flags: PUBLIC
-    UNIT_FIELD_ATTACK_POWER                   = OBJECT_END + 0x0075, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_ATTACK_POWER_MODS              = OBJECT_END + 0x0076, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_ATTACK_POWER_MULTIPLIER        = OBJECT_END + 0x0077, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RANGED_ATTACK_POWER            = OBJECT_END + 0x0078, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RANGED_ATTACK_POWER_MODS       = OBJECT_END + 0x0079, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x007A, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_MINRANGEDDAMAGE                = OBJECT_END + 0x007B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_MAXRANGEDDAMAGE                = OBJECT_END + 0x007C, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MODIFIER            = OBJECT_END + 0x007D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MODIFIER_1          = OBJECT_END + 0x007E, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MODIFIER_2          = OBJECT_END + 0x007F, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MODIFIER_3          = OBJECT_END + 0x0080, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MODIFIER_4          = OBJECT_END + 0x0081, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MODIFIER_5          = OBJECT_END + 0x0082, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MODIFIER_6          = OBJECT_END + 0x0083, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MULTIPLIER          = OBJECT_END + 0x0084, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MULTIPLIER_1        = OBJECT_END + 0x0085, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MULTIPLIER_2        = OBJECT_END + 0x0086, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MULTIPLIER_3        = OBJECT_END + 0x0087, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MULTIPLIER_4        = OBJECT_END + 0x0088, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MULTIPLIER_5        = OBJECT_END + 0x0089, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_POWER_COST_MULTIPLIER_6        = OBJECT_END + 0x008A, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_MAXHEALTHMODIFIER              = OBJECT_END + 0x008B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
-    UNIT_FIELD_HOVERHEIGHT                    = OBJECT_END + 0x008C, // Size: 1, Type: FLOAT, Flags: PUBLIC
-    UNIT_FIELD_PADDING                        = OBJECT_END + 0x008D, // Size: 1, Type: INT, Flags: NONE
-    UNIT_END                                  = OBJECT_END + 0x008E,
+	UNIT_FIELD_CHARM							= OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
+	UNIT_FIELD_SUMMON							= OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
+	UNIT_FIELD_CRITTER							= OBJECT_END + 0x0004, // Size: 2, Type: LONG, Flags: PRIVATE
+	UNIT_FIELD_CHARMEDBY						= OBJECT_END + 0x0006, // Size: 2, Type: LONG, Flags: PUBLIC
+	UNIT_FIELD_SUMMONEDBY						= OBJECT_END + 0x0008, // Size: 2, Type: LONG, Flags: PUBLIC
+	UNIT_FIELD_CREATEDBY						= OBJECT_END + 0x000A, // Size: 2, Type: LONG, Flags: PUBLIC
+	UNIT_FIELD_TARGET							= OBJECT_END + 0x000C, // Size: 2, Type: LONG, Flags: PUBLIC
+	UNIT_FIELD_CHANNEL_OBJECT					= OBJECT_END + 0x000E, // Size: 2, Type: LONG, Flags: PUBLIC
+	UNIT_CHANNEL_SPELL							= OBJECT_END + 0x0010, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_BYTES_0							= OBJECT_END + 0x0011, // Size: 1, Type: BYTES, Flags: PUBLIC
+	UNIT_FIELD_HEALTH							= OBJECT_END + 0x0012, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER1							= OBJECT_END + 0x0013, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER2							= OBJECT_END + 0x0014, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER3							= OBJECT_END + 0x0015, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER4							= OBJECT_END + 0x0016, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER5							= OBJECT_END + 0x0017, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER6							= OBJECT_END + 0x0018, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER7							= OBJECT_END + 0x0019, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXHEALTH						= OBJECT_END + 0x001A, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXPOWER1						= OBJECT_END + 0x001B, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXPOWER2						= OBJECT_END + 0x001C, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXPOWER3						= OBJECT_END + 0x001D, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXPOWER4						= OBJECT_END + 0x001E, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXPOWER5						= OBJECT_END + 0x001F, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXPOWER6						= OBJECT_END + 0x0020, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MAXPOWER7						= OBJECT_END + 0x0021, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER		= OBJECT_END + 0x0022, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_1		= OBJECT_END + 0x0023, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_2		= OBJECT_END + 0x0024, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_3		= OBJECT_END + 0x0025, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_4		= OBJECT_END + 0x0026, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_5		= OBJECT_END + 0x0027, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER_6		= OBJECT_END + 0x0028, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER	= OBJECT_END + 0x0029, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_1	= OBJECT_END + 0x002A, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_2	= OBJECT_END + 0x002B, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_3	= OBJECT_END + 0x002C, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_4	= OBJECT_END + 0x002D, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_5	= OBJECT_END + 0x002E, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER_6	= OBJECT_END + 0x002F, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_LEVEL							= OBJECT_END + 0x0030, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_FACTIONTEMPLATE					= OBJECT_END + 0x0031, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_VIRTUAL_ITEM_SLOT_ID					= OBJECT_END + 0x0032, // Size: 3, Type: INT, Flags: PUBLIC
+	UNIT_VIRTUAL_ITEM_SLOT_ID_1					= OBJECT_END + 0x0033, // Size: 3, Type: INT, Flags: PUBLIC
+	UNIT_VIRTUAL_ITEM_SLOT_ID_2					= OBJECT_END + 0x0034, // Size: 3, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_FLAGS							= OBJECT_END + 0x0035, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_FLAGS_2							= OBJECT_END + 0x0036, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_AURASTATE						= OBJECT_END + 0x0037, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_BASEATTACKTIME					= OBJECT_END + 0x0038, // Size: 2, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_RANGEDATTACKTIME					= OBJECT_END + 0x003A, // Size: 1, Type: INT, Flags: PRIVATE
+	UNIT_FIELD_BOUNDINGRADIUS					= OBJECT_END + 0x003B, // Size: 1, Type: FLOAT, Flags: PUBLIC
+	UNIT_FIELD_COMBATREACH						= OBJECT_END + 0x003C, // Size: 1, Type: FLOAT, Flags: PUBLIC
+	UNIT_FIELD_DISPLAYID						= OBJECT_END + 0x003D, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_NATIVEDISPLAYID					= OBJECT_END + 0x003E, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MOUNTDISPLAYID					= OBJECT_END + 0x003F, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_MINDAMAGE						= OBJECT_END + 0x0040, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_MAXDAMAGE						= OBJECT_END + 0x0041, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_MINOFFHANDDAMAGE				 	= OBJECT_END + 0x0042, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_MAXOFFHANDDAMAGE				 	= OBJECT_END + 0x0043, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_BYTES_1							= OBJECT_END + 0x0044, // Size: 1, Type: BYTES, Flags: PUBLIC
+	UNIT_FIELD_PETNUMBER						= OBJECT_END + 0x0045, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_PET_NAME_TIMESTAMP				= OBJECT_END + 0x0046, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_PETEXPERIENCE					= OBJECT_END + 0x0047, // Size: 1, Type: INT, Flags: OWNER_ONLY
+	UNIT_FIELD_PETNEXTLEVELEXP					= OBJECT_END + 0x0048, // Size: 1, Type: INT, Flags: OWNER_ONLY
+	UNIT_DYNAMIC_FLAGS							= OBJECT_END + 0x0049, // Size: 1, Type: INT, Flags: DYNAMIC
+	UNIT_MOD_CAST_SPEED							= OBJECT_END + 0x004A, // Size: 1, Type: FLOAT, Flags: PUBLIC
+	UNIT_CREATED_BY_SPELL						= OBJECT_END + 0x004B, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_NPC_FLAGS								= OBJECT_END + 0x004C, // Size: 1, Type: INT, Flags: DYNAMIC
+	UNIT_NPC_EMOTESTATE							= OBJECT_END + 0x004D, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_STAT0							= OBJECT_END + 0x004E, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_STAT1							= OBJECT_END + 0x004F, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_STAT2							= OBJECT_END + 0x0050, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_STAT3							= OBJECT_END + 0x0051, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_STAT4							= OBJECT_END + 0x0052, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POSSTAT0							= OBJECT_END + 0x0053, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POSSTAT1							= OBJECT_END + 0x0054, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POSSTAT2							= OBJECT_END + 0x0055, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POSSTAT3							= OBJECT_END + 0x0056, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POSSTAT4							= OBJECT_END + 0x0057, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_NEGSTAT0							= OBJECT_END + 0x0058, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_NEGSTAT1							= OBJECT_END + 0x0059, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_NEGSTAT2							= OBJECT_END + 0x005A, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_NEGSTAT3							= OBJECT_END + 0x005B, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_NEGSTAT4							= OBJECT_END + 0x005C, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCES						= OBJECT_END + 0x005D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_RESISTANCES_1					= OBJECT_END + 0x005E, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_RESISTANCES_2					= OBJECT_END + 0x005F, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_RESISTANCES_3					= OBJECT_END + 0x0060, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_RESISTANCES_4					= OBJECT_END + 0x0061, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_RESISTANCES_5					= OBJECT_END + 0x0062, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_RESISTANCES_6					= OBJECT_END + 0x0063, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY, UNK3
+	UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE		= OBJECT_END + 0x0064, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_1		= OBJECT_END + 0x0065, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_2		= OBJECT_END + 0x0066, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_3		= OBJECT_END + 0x0067, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_4		= OBJECT_END + 0x0068, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_5		= OBJECT_END + 0x0069, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE_6		= OBJECT_END + 0x006A, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE		= OBJECT_END + 0x006B, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_1		= OBJECT_END + 0x006C, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_2		= OBJECT_END + 0x006D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_3		= OBJECT_END + 0x006E, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_4		= OBJECT_END + 0x006F, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_5		= OBJECT_END + 0x0070, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE_6		= OBJECT_END + 0x0071, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_BASE_MANA						= OBJECT_END + 0x0072, // Size: 1, Type: INT, Flags: PUBLIC
+	UNIT_FIELD_BASE_HEALTH						= OBJECT_END + 0x0073, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_BYTES_2							= OBJECT_END + 0x0074, // Size: 1, Type: BYTES, Flags: PUBLIC
+	UNIT_FIELD_ATTACK_POWER					 	= OBJECT_END + 0x0075, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_ATTACK_POWER_MODS				= OBJECT_END + 0x0076, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_ATTACK_POWER_MULTIPLIER			= OBJECT_END + 0x0077, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RANGED_ATTACK_POWER				= OBJECT_END + 0x0078, // Size: 1, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RANGED_ATTACK_POWER_MODS			= OBJECT_END + 0x0079, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER	= OBJECT_END + 0x007A, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_MINRANGEDDAMAGE					= OBJECT_END + 0x007B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_MAXRANGEDDAMAGE					= OBJECT_END + 0x007C, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MODIFIER				= OBJECT_END + 0x007D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MODIFIER_1			= OBJECT_END + 0x007E, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MODIFIER_2			= OBJECT_END + 0x007F, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MODIFIER_3			= OBJECT_END + 0x0080, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MODIFIER_4			= OBJECT_END + 0x0081, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MODIFIER_5			= OBJECT_END + 0x0082, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MODIFIER_6			= OBJECT_END + 0x0083, // Size: 7, Type: INT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MULTIPLIER			= OBJECT_END + 0x0084, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MULTIPLIER_1			= OBJECT_END + 0x0085, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MULTIPLIER_2			= OBJECT_END + 0x0086, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MULTIPLIER_3			= OBJECT_END + 0x0087, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MULTIPLIER_4			= OBJECT_END + 0x0088, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MULTIPLIER_5			= OBJECT_END + 0x0089, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_POWER_COST_MULTIPLIER_6			= OBJECT_END + 0x008A, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_MAXHEALTHMODIFIER				= OBJECT_END + 0x008B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER_ONLY
+	UNIT_FIELD_HOVERHEIGHT						= OBJECT_END + 0x008C, // Size: 1, Type: FLOAT, Flags: PUBLIC
+	UNIT_FIELD_PADDING							= OBJECT_END + 0x008D, // Size: 1, Type: INT, Flags: NONE
+	UNIT_END									= OBJECT_END + 0x008E,
 
     PLAYER_DUEL_ARBITER                       = UNIT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
     PLAYER_FLAGS                              = UNIT_END + 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
@@ -1522,4 +1522,3 @@
 #define GAMEOBJECT_PARENTROTATION_03              OBJECT_END + 0x0007 // Size: 4, Type: FLOAT, Flags: PUBLIC
 
 #endif
-