* Replace hardcoded UpdateFields offsets by Clientversion-depended values

This commit is contained in:
shlainn 2011-09-21 21:39:30 +02:00
parent 74d4945a72
commit 2d7a4c4faa
8 changed files with 1260 additions and 713 deletions

View File

@ -861,11 +861,11 @@ DefReturnResult DefScriptPackage::SCGetObjectValue(CmdSet &Set)
else
{
if(DefScriptTools::stringToLower(Set.arg[1]) == "f")
return toString((ldbl)o->GetFloatValue(v));
return toString((ldbl)o->GetFloatValue((UpdateFieldName)v));
else if(DefScriptTools::stringToLower(Set.arg[1]) == "i64")
return toString(o->GetUInt64Value(v));
return toString(o->GetUInt64Value((UpdateFieldName)v));
else
return toString((uint64)o->GetUInt32Value(v));
return toString((uint64)o->GetUInt32Value((UpdateFieldName)v));
}
}
return "";

View File

@ -9,7 +9,7 @@ CacheHandler.h GameObject.h ObjectDefines.h Unit.cpp WorldP
Channel.cpp Item.cpp Object.h Unit.h WorldSession.cpp\
Channel.h Item.h ObjMgr.cpp UpdateData.cpp WorldSession.h\
CMSGConstructor.cpp ObjMgr.h UpdateData.h WorldSocket.cpp\
Corpse.cpp MapMgr.cpp Opcodes.cpp UpdateFields.h WorldSocket.h\
Corpse.cpp MapMgr.cpp Opcodes.cpp UpdateFields.cpp WorldSocket.h\
Corpse.h MapMgr.h Opcodes.h UpdateMask.h
libworld_a_LIBADD = ../../shared/libshared.a ../../shared/Auth/libauth.a ../../shared/Network/libnetwork.a

View File

@ -7,6 +7,14 @@
#include "HelperDefs.h"
#include "World.h"
struct UpdateField
{
UpdateField(){};
UpdateField(uint16 o, uint16 t):offset(o),type(t){};
uint16 offset;
uint16 type;
};
enum TYPE
{
TYPE_OBJECT = 1,
@ -40,9 +48,9 @@ class Object
{
public:
virtual ~Object();
inline const uint64 GetGUID() const { return GetUInt64Value(0); }
inline const uint32 GetGUIDLow() const { return GetUInt32Value(0); }
inline const uint32 GetGUIDHigh() const { return GetUInt32Value(1); }
inline const uint64 GetGUID() const { return GetUInt64Value(OBJECT_FIELD_GUID); }
inline const uint32 GetGUIDLow() const { return GetUInt32Value(OBJECT_FIELD_GUID_LOW); }
inline const uint32 GetGUIDHigh() const { return GetUInt32Value(OBJECT_FIELD_GUID_HIGH); }
inline uint32 GetEntry() const { return GetUInt32Value(OBJECT_FIELD_ENTRY); }
inline uint16 GetValuesCount(void) { return _valuescount; }
@ -58,35 +66,39 @@ public:
inline bool IsDynObject(void) { return _typeid == TYPEID_DYNAMICOBJECT; } // specific
inline bool IsGameObject(void) { return _typeid == TYPEID_GAMEOBJECT; } // specific
inline bool IsWorldObject(void) { return _type & (TYPE_PLAYER | TYPE_UNIT | TYPE_CORPSE | TYPE_DYNAMICOBJECT | TYPE_GAMEOBJECT); }
inline const uint32 GetUInt32Value( uint16 index ) const
inline const uint32 GetUInt32Value( UpdateFieldName index ) const
{
return _uint32values[ index ];
return _uint32values[ Object::updatefields[index].offset ];
}
inline const uint64 GetUInt64Value( uint16 index ) const
inline const uint64 GetUInt64Value( UpdateFieldName index ) const
{
return *((uint64*)&(_uint32values[ index ]));
return *((uint64*)&(_uint32values[ Object::updatefields[index].offset ]));
}
inline bool HasFlag( uint16 index, uint32 flag ) const
inline bool HasFlag( UpdateFieldName index, uint32 flag ) const
{
return (_uint32values[ index ] & flag) != 0;
return (_uint32values[ Object::updatefields[index].offset ] & flag) != 0;
}
inline const float GetFloatValue( uint16 index ) const
inline const float GetFloatValue( UpdateFieldName index ) const
{
return _floatvalues[ index ];
return _floatvalues[ Object::updatefields[index].offset ];
}
inline void SetFloatValue( uint16 index, float value )
inline void SetFloatValue( UpdateFieldName index, float value )
{
_floatvalues[ index ] = value;
_floatvalues[ Object::updatefields[index].offset ] = value;
}
inline void SetUInt32Value( uint16 index, uint32 value )
inline void SetUInt32Value( UpdateFieldName index, uint32 value )
{
_uint32values[ index ] = value;
_uint32values[ Object::updatefields[index].offset ] = value;
}
inline void SetUInt64Value( uint16 index, uint64 value )
inline void SetUInt32Value( uint16 offset, uint32 value )
{
*((uint64*)&(_uint32values[ index ])) = value;
_uint32values[ offset ] = value;
}
inline void SetUInt64Value( UpdateFieldName index, uint64 value )
{
*((uint64*)&(_uint32values[ Object::updatefields[index].offset ])) = value;
}
inline void SetName(std::string name) { _name = name; }
@ -94,7 +106,7 @@ public:
inline float GetObjectSize() const
{
return ( _valuescount > UNIT_FIELD_BOUNDINGRADIUS ) ? _floatvalues[UNIT_FIELD_BOUNDINGRADIUS] : 0.39f;
return ( _valuescount > Object::updatefields[UNIT_FIELD_BOUNDINGRADIUS].offset ) ? _floatvalues[Object::updatefields[UNIT_FIELD_BOUNDINGRADIUS].offset] : 0.39f;
}
void Create(uint64 guid);
@ -102,6 +114,7 @@ public:
inline void _SetDepleted(void) { _depleted = true; }
static uint32 maxvalues[];
static UpdateField updatefields[];
protected:
Object();

View File

@ -128,6 +128,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
Unit *unit = new Unit();
unit->Create(uguid);
objmgr.Add(unit);
logdebug("Created Unit with guid "I64FMT,uguid);
break;
}
case TYPEID_PLAYER:
@ -137,6 +138,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
Player *player = new Player();
player->Create(uguid);
objmgr.Add(player);
logdebug("Created Player with guid "I64FMT,uguid);
break;
}
case TYPEID_GAMEOBJECT:
@ -144,6 +146,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
GameObject *go = new GameObject();
go->Create(uguid);
objmgr.Add(go);
logdebug("Created GO with guid "I64FMT,uguid);
break;
}
case TYPEID_CORPSE:
@ -151,6 +154,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
Corpse *corpse = new Corpse();
corpse->Create(uguid);
objmgr.Add(corpse);
logdebug("Created Corpse with guid "I64FMT,uguid);
break;
}
case TYPEID_DYNAMICOBJECT:
@ -158,6 +162,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
DynamicObject *dobj = new DynamicObject();
dobj->Create(uguid);
objmgr.Add(dobj);
logdebug("Created DynObj with guid "I64FMT,uguid);
break;
}
}
@ -181,6 +186,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket)
Set.defaultarg = toString(uguid);
Set.arg[0] = toString(objtypeid);
GetInstance()->GetScripts()->RunScript("_onobjectcreate", &Set);
}
// if our own character got finally created, we have successfully entered the world,
@ -428,8 +434,6 @@ void WorldSession::_ValuesUpdate(uint64 uguid, WorldPacket& recvPacket)
Object *obj = objmgr.GetObj(uguid);
uint8 blockcount,tyid;
uint32 value, masksize, valuesCount;
float fvalue;
uint64 value64;
if(obj)
{
@ -454,7 +458,6 @@ void WorldSession::_ValuesUpdate(uint64 uguid, WorldPacket& recvPacket)
umask.SetMask(updateMask);
//delete [] updateMask; // will be deleted at ~UpdateMask() !!!!
logdev("ValuesUpdate TypeId=%u GUID="I64FMT" pObj=%X Blocks=%u Masksize=%u",tyid,uguid,obj,blockcount,masksize);
// just in case the object does not exist, and we have really a container instead of an item, and a value in
// the container fields is set, THEN we have a problem. this should never be the case; it can be fixed in a
// more correct way if there is the need.
@ -465,25 +468,9 @@ void WorldSession::_ValuesUpdate(uint64 uguid, WorldPacket& recvPacket)
{
if(obj)
{
if(IsFloatField(obj->GetTypeMask(),i))
{
recvPacket >> fvalue;
obj->SetFloatValue(i, fvalue);
logdev("-> Field[%u] = %f",i,fvalue);
}
else if(IsUInt64Field(obj->GetTypeMask(),i) && umask.GetBit(i+1))
{
recvPacket >> value64;
obj->SetUInt64Value(i, value64);
logdev("-> Field[%u] = "I64FMT,i,value64);
i++;
}
else
{
recvPacket >> value;
obj->SetUInt32Value(i, value);
logdev("-> Field[%u] = %u",i,value);
}
recvPacket >> value;
obj->SetUInt32Value(i, value); //It does not matter what type of value we are setting, just copy the bytes
logdev("%u %u",i,value);
}
else
{
@ -548,222 +535,3 @@ void WorldSession::_QueryObjectInfo(uint64 guid)
}
}
// helper to determine if an updatefield should store float or int values, depending on TypeId
bool IsFloatField(uint8 ty, uint32 f)
{
static uint32 floats_object[] =
{
(uint32)OBJECT_FIELD_SCALE_X,
(uint32)-1
};
/*
static uint32 floats_item[] =
{
(uint32)-1
};
static uint32 floats_container[] =
{
(uint32)-1
};
*/
static uint32 floats_unit[] =
{
(uint32)UNIT_FIELD_BOUNDINGRADIUS,
(uint32)UNIT_FIELD_COMBATREACH,
(uint32)UNIT_FIELD_MINDAMAGE,
(uint32)UNIT_FIELD_MAXDAMAGE,
(uint32)UNIT_FIELD_MINOFFHANDDAMAGE,
(uint32)UNIT_FIELD_MINOFFHANDDAMAGE,
(uint32)UNIT_MOD_CAST_SPEED,
(uint32)UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER,
(uint32)UNIT_FIELD_ATTACK_POWER_MULTIPLIER,
(uint32)UNIT_FIELD_MINRANGEDDAMAGE,
(uint32)UNIT_FIELD_MAXRANGEDDAMAGE,
(uint32)UNIT_FIELD_POWER_COST_MULTIPLIER,
(uint32)UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER,
(uint32)UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER,
(uint32)UNIT_FIELD_MAXHEALTHMODIFIER,
(uint32)UNIT_FIELD_HOVERHEIGHT,
(uint32)-1
};
static uint32 floats_player[] =
{
(uint32)PLAYER_BLOCK_PERCENTAGE,
(uint32)PLAYER_DODGE_PERCENTAGE,
(uint32)PLAYER_PARRY_PERCENTAGE,
(uint32)PLAYER_RANGED_CRIT_PERCENTAGE,
(uint32)PLAYER_OFFHAND_CRIT_PERCENTAGE,
(uint32)PLAYER_SPELL_CRIT_PERCENTAGE1,
(uint32)PLAYER_CRIT_PERCENTAGE,
(uint32)PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE,
(uint32)PLAYER_FIELD_MOD_HEALING_PCT,
(uint32)PLAYER_FIELD_MOD_HEALING_DONE_PCT,
(uint32)PLAYER_RUNE_REGEN_1,
(uint32)-1
};
static uint32 floats_gameobject[] =
{
(uint32)GAMEOBJECT_PARENTROTATION,
(uint32)(GAMEOBJECT_PARENTROTATION + 1),
(uint32)(GAMEOBJECT_PARENTROTATION + 2),
(uint32)(GAMEOBJECT_PARENTROTATION + 3),
(uint32)-1
};
static uint32 floats_dynobject[] =
{
(uint32)DYNAMICOBJECT_RADIUS,
(uint32)-1
};
/*
static uint32 floats_corpse[] =
{
(uint32)-1
};
*/
if(ty & TYPE_OBJECT)
for(uint32 i = 0; floats_object[i] != (uint32)(-1); i++)
if(floats_object[i] == f)
return true;
/*
if(ty & TYPE_ITEM)
for(uint32 i = 0; floats_item[i] != (-1); i++)
if(floats_object[i] == f)
return true;
if(ty & TYPE_CONTAINER)
for(uint32 i = 0; floats_container[i] != (-1); i++)
if(floats_object[i] == f)
return true;
*/
if(ty & TYPE_UNIT)
for(uint32 i = 0; floats_unit[i] != (uint32)(-1); i++)
if(floats_unit[i] == f)
return true;
if(ty & TYPE_PLAYER)
for(uint32 i = 0; floats_player[i] != (uint32)(-1); i++)
if(floats_player[i] == f)
return true;
if(ty & TYPE_GAMEOBJECT)
for(uint32 i = 0; floats_gameobject[i] != (uint32)(-1); i++)
if(floats_gameobject[i] == f)
return true;
if(ty & TYPE_DYNAMICOBJECT)
for(uint32 i = 0; floats_dynobject[i] != (uint32)(-1); i++)
if(floats_dynobject[i] == f)
return true;
/*
if(ty & TYPE_CORPSE)
for(uint32 i = 0; floats_corpse[i] != (uint32)(-1); i++)
if(floats_corpse[i] == f)
return true;
*/
return false;
}
bool IsUInt64Field(uint8 ty, uint32 f)
{
static uint32 u64_object[] =
{
(uint32)OBJECT_FIELD_GUID,
(uint32)-1
};
static uint32 u64_item[] =
{
(uint32)ITEM_FIELD_OWNER,
(uint32)ITEM_FIELD_CONTAINED,
(uint32)ITEM_FIELD_CREATOR,
(uint32)ITEM_FIELD_GIFTCREATOR,
(uint32)-1
};
static uint32 u64_container[] =
{
(uint32)CONTAINER_FIELD_SLOT_1,
(uint32)-1
};
static uint32 u64_unit[] =
{
(uint32)UNIT_FIELD_CHARM,
(uint32)UNIT_FIELD_SUMMON,
(uint32)UNIT_FIELD_CRITTER,
(uint32)UNIT_FIELD_CHARMEDBY,
(uint32)UNIT_FIELD_SUMMONEDBY,
(uint32)UNIT_FIELD_CREATEDBY,
(uint32)UNIT_FIELD_TARGET,
(uint32)UNIT_FIELD_CHANNEL_OBJECT,
(uint32)-1
};
static uint32 u64_player[] =
{
(uint32)PLAYER_DUEL_ARBITER,
(uint32)PLAYER_FIELD_INV_SLOT_HEAD,
(uint32)PLAYER_FIELD_PACK_SLOT_1,
(uint32)PLAYER_FIELD_BANK_SLOT_1,
(uint32)PLAYER_FIELD_BANKBAG_SLOT_1,
(uint32)PLAYER_FIELD_VENDORBUYBACK_SLOT_1,
(uint32)PLAYER_FIELD_KEYRING_SLOT_1,
(uint32)PLAYER_FIELD_CURRENCYTOKEN_SLOT_1,
(uint32)PLAYER_FARSIGHT,
(uint32)PLAYER__FIELD_KNOWN_TITLES,
(uint32)PLAYER__FIELD_KNOWN_TITLES1,
(uint32)PLAYER__FIELD_KNOWN_TITLES2,
(uint32)PLAYER_FIELD_KNOWN_CURRENCIES,
(uint32)-1
};
static uint32 u64_gameobject[] =
{
(uint32)OBJECT_FIELD_CREATED_BY,
(uint32)-1
};
static uint32 u64_dynobject[] =
{
(uint32)DYNAMICOBJECT_CASTER,
(uint32)-1
};
static uint32 u64_corpse[] =
{
(uint32)CORPSE_FIELD_OWNER,
(uint32)CORPSE_FIELD_PARTY,
(uint32)-1
};
if(ty & TYPE_OBJECT)
for(uint32 i = 0; u64_object[i] != (uint32)(-1); i++)
if(u64_object[i] == f)
return true;
if(ty & TYPE_ITEM)
for(uint32 i = 0; u64_item[i] != (uint32)(-1); i++)
if(u64_item[i] == f)
return true;
if(ty & TYPE_CONTAINER)
for(uint32 i = 0; u64_container[i] != (uint32)(-1); i++)
if(u64_container[i] == f)
return true;
if(ty & TYPE_UNIT)
for(uint32 i = 0; u64_unit[i] != (uint32)(-1); i++)
if(u64_unit[i] == f)
return true;
if(ty & TYPE_PLAYER)
for(uint32 i = 0; u64_player[i] != (uint32)(-1); i++)
if(u64_player[i] == f)
return true;
if(ty & TYPE_GAMEOBJECT)
for(uint32 i = 0; u64_gameobject[i] != (uint32)(-1); i++)
if(u64_gameobject[i] == f)
return true;
if(ty & TYPE_DYNAMICOBJECT)
for(uint32 i = 0; u64_dynobject[i] != (uint32)(-1); i++)
if(u64_dynobject[i] == f)
return true;
if(ty & TYPE_CORPSE)
for(uint32 i = 0; u64_corpse[i] != (uint32)(-1); i++)
if(u64_corpse[i] == f)
return true;
return false;
}

View File

@ -0,0 +1,697 @@
#include "PseuWoW.h"
#include "Object.h"
#include "WorldSession.h"
void WorldSession::_SetupObjectFields()
{
switch(_instance->GetConf()->client)//TODO: Add TBC/WOTLK cases
{
case CLIENT_CLASSIC_WOW:
{
uint32 mv[]={
OBJECT_END,
ITEM_END_6005,
CONTAINER_END_6005,
UNIT_END_6005,
PLAYER_END_6005,
GAMEOBJECT_END_6005,
DYNAMICOBJECT_END,
CORPSE_END
};
memcpy(Object::maxvalues,mv,sizeof(mv));
Object::updatefields[ OBJECT_FIELD_GUID ] = UpdateField( 0x0000 , UF_UINT64 ); // Size:2
Object::updatefields[ OBJECT_FIELD_GUID_LOW ] = UpdateField( 0x0000 , UF_UINT32 );
Object::updatefields[ OBJECT_FIELD_GUID_HIGH ] = UpdateField( 0x0001 , UF_UINT32 );
Object::updatefields[ OBJECT_FIELD_TYPE ] = UpdateField( 0x0002 , UF_UINT32 ); // Size:1
Object::updatefields[ OBJECT_FIELD_ENTRY ] = UpdateField( 0x0003 , UF_UINT32 ); // Size:1
Object::updatefields[ OBJECT_FIELD_SCALE_X ] = UpdateField( 0x0004 , UF_FLOAT ); // Size:1
Object::updatefields[ OBJECT_FIELD_PADDING ] = UpdateField( 0x0005 , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_OWNER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64 ); // Size:2
Object::updatefields[ ITEM_FIELD_CONTAINED ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT64 ); // Size:2
Object::updatefields[ ITEM_FIELD_CREATOR ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT64 ); // Size:2
Object::updatefields[ ITEM_FIELD_GIFTCREATOR ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT64 ); // Size:2
Object::updatefields[ ITEM_FIELD_STACK_COUNT ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_DURATION ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_SPELL_CHARGES ] = UpdateField( mv[TYPEID_OBJECT] + 0x000A , UF_UINT32 ); // Size:5
Object::updatefields[ ITEM_FIELD_SPELL_CHARGES_01 ] = UpdateField( mv[TYPEID_OBJECT] + 0x000B , UF_UINT32 );
Object::updatefields[ ITEM_FIELD_SPELL_CHARGES_02 ] = UpdateField( mv[TYPEID_OBJECT] + 0x000C , UF_UINT32 );
Object::updatefields[ ITEM_FIELD_SPELL_CHARGES_03 ] = UpdateField( mv[TYPEID_OBJECT] + 0x000D , UF_UINT32 );
Object::updatefields[ ITEM_FIELD_SPELL_CHARGES_04 ] = UpdateField( mv[TYPEID_OBJECT] + 0x000E , UF_UINT32 );
Object::updatefields[ ITEM_FIELD_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x000F , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_ENCHANTMENT ] = UpdateField( mv[TYPEID_OBJECT] + 0x0010 , UF_UINT32 ); // Count=21
Object::updatefields[ ITEM_FIELD_PROPERTY_SEED ] = UpdateField( mv[TYPEID_OBJECT] + 0x0025 , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_RANDOM_PROPERTIES_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0026 , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_ITEM_TEXT_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0027 , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_DURABILITY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0028 , UF_UINT32 ); // Size:1
Object::updatefields[ ITEM_FIELD_MAXDURABILITY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0029 , UF_UINT32 ); // Size:1
Object::updatefields[ CONTAINER_FIELD_NUM_SLOTS ] = UpdateField( mv[TYPEID_UNIT] + 0x0000 , UF_UINT32 ); // Size:1
Object::updatefields[ CONTAINER_ALIGN_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x0001 , UF_UINT32 ); // Size:1
Object::updatefields[ CONTAINER_FIELD_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0002 , UF_UINT32 ); // Count=56
Object::updatefields[ CONTAINER_FIELD_SLOT_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x0038 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_CHARM ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_SUMMON ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_CHARMEDBY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_SUMMONEDBY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_CREATEDBY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_TARGET ] = UpdateField( mv[TYPEID_OBJECT] + 0x000A , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_PERSUADED ] = UpdateField( mv[TYPEID_OBJECT] + 0x000C , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_CHANNEL_OBJECT ] = UpdateField( mv[TYPEID_OBJECT] + 0x000E , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_HEALTH ] = UpdateField( mv[TYPEID_OBJECT] + 0x0010 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_POWER1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0011 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_POWER2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0012 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_POWER3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0013 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_POWER4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0014 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_POWER5 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0015 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXHEALTH ] = UpdateField( mv[TYPEID_OBJECT] + 0x0016 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXPOWER1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0017 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXPOWER2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0018 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXPOWER3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0019 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXPOWER4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001A , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXPOWER5 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001B , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_LEVEL ] = UpdateField( mv[TYPEID_OBJECT] + 0x001C , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_FACTIONTEMPLATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x001D , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_BYTES_0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001E , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_VIRTUAL_ITEM_SLOT_DISPLAY ] = UpdateField( mv[TYPEID_OBJECT] + 0x001F , UF_UINT32 ); // Size:3
Object::updatefields[ UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_01 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0020 , UF_UINT32 );
Object::updatefields[ UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_02 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0021 , UF_UINT32 );
Object::updatefields[ UNIT_VIRTUAL_ITEM_INFO ] = UpdateField( mv[TYPEID_OBJECT] + 0x0022 , UF_UINT32 ); // Size:6
Object::updatefields[ UNIT_VIRTUAL_ITEM_INFO_01 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0023 , UF_UINT32 );
Object::updatefields[ UNIT_VIRTUAL_ITEM_INFO_02 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0024 , UF_UINT32 );
Object::updatefields[ UNIT_VIRTUAL_ITEM_INFO_03 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0025 , UF_UINT32 );
Object::updatefields[ UNIT_VIRTUAL_ITEM_INFO_04 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0026 , UF_UINT32 );
Object::updatefields[ UNIT_VIRTUAL_ITEM_INFO_05 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0027 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0028 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_AURA ] = UpdateField( mv[TYPEID_OBJECT] + 0x0029 , UF_UINT32 ); // Size:48
Object::updatefields[ UNIT_FIELD_AURA_LAST ] = UpdateField( mv[TYPEID_OBJECT] + 0x0058 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURAFLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0059 , UF_UINT32 ); // Size:6
Object::updatefields[ UNIT_FIELD_AURAFLAGS_01 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005A , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURAFLAGS_02 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005B , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURAFLAGS_03 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005C , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURAFLAGS_04 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005D , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURAFLAGS_05 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005E , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURALEVELS ] = UpdateField( mv[TYPEID_OBJECT] + 0x005F , UF_UINT32 ); // Size:12
Object::updatefields[ UNIT_FIELD_AURALEVELS_LAST ] = UpdateField( mv[TYPEID_OBJECT] + 0x006A , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURAAPPLICATIONS ] = UpdateField( mv[TYPEID_OBJECT] + 0x006B , UF_UINT32 ); // Size:12
Object::updatefields[ UNIT_FIELD_AURAAPPLICATIONS_LAST ] = UpdateField( mv[TYPEID_OBJECT] + 0x0076 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_AURASTATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0077 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_BASEATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x0078 , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_OFFHANDATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x0079 , UF_UINT64 ); // Size:2
Object::updatefields[ UNIT_FIELD_RANGEDATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x007A , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_BOUNDINGRADIUS ] = UpdateField( mv[TYPEID_OBJECT] + 0x007B , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_COMBATREACH ] = UpdateField( mv[TYPEID_OBJECT] + 0x007C , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_DISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x007D , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_NATIVEDISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x007E , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MOUNTDISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x007F , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MINDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0080 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0081 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MINOFFHANDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0082 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXOFFHANDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0083 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_BYTES_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0084 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_PETNUMBER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0085 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_PET_NAME_TIMESTAMP ] = UpdateField( mv[TYPEID_OBJECT] + 0x0086 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_PETEXPERIENCE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0087 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_PETNEXTLEVELEXP ] = UpdateField( mv[TYPEID_OBJECT] + 0x0088 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_DYNAMIC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0089 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_CHANNEL_SPELL ] = UpdateField( mv[TYPEID_OBJECT] + 0x008A , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_MOD_CAST_SPEED ] = UpdateField( mv[TYPEID_OBJECT] + 0x008B , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_CREATED_BY_SPELL ] = UpdateField( mv[TYPEID_OBJECT] + 0x008C , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_NPC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x008D , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_NPC_EMOTESTATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x008E , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_TRAINING_POINTS ] = UpdateField( mv[TYPEID_OBJECT] + 0x008F , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_STAT0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0090 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_STAT1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0091 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_STAT2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0092 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_STAT3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0093 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_STAT4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0094 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_RESISTANCES ] = UpdateField( mv[TYPEID_OBJECT] + 0x0095 , UF_UINT32 ); // Size:7
Object::updatefields[ UNIT_FIELD_RESISTANCES_01 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0096 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_RESISTANCES_02 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0097 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_RESISTANCES_03 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0098 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_RESISTANCES_04 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0099 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_RESISTANCES_05 ] = UpdateField( mv[TYPEID_OBJECT] + 0x009A , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_RESISTANCES_06 ] = UpdateField( mv[TYPEID_OBJECT] + 0x009B , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_BASE_MANA ] = UpdateField( mv[TYPEID_OBJECT] + 0x009C , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_BASE_HEALTH ] = UpdateField( mv[TYPEID_OBJECT] + 0x009D , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_BYTES_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x009E , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_ATTACK_POWER ] = UpdateField( mv[TYPEID_OBJECT] + 0x009F , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_ATTACK_POWER_MODS ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A0 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_ATTACK_POWER_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A1 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A2 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER_MODS ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A3 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A4 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MINRANGEDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A5 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_MAXRANGEDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A6 , UF_UINT32 ); // Size:1
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A7 , UF_UINT32 ); // Size:7
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER_01 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A8 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER_02 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A9 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER_03 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AA , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER_04 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AB , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER_05 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AC , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER_06 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AD , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AE , UF_UINT32 ); // Size:7
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER_01 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AF , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER_02 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B0 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER_03 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B1 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER_04 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B2 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER_05 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B3 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER_06 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B4 , UF_UINT32 );
Object::updatefields[ UNIT_FIELD_PADDING ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B5 , UF_UINT32 );
Object::updatefields[ PLAYER_DUEL_ARBITER ] = UpdateField( mv[TYPEID_UNIT] + 0x0000 , UF_UINT64 ); // Size:2
Object::updatefields[ PLAYER_FLAGS ] = UpdateField( mv[TYPEID_UNIT] + 0x0002 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_GUILDID ] = UpdateField( mv[TYPEID_UNIT] + 0x0003 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_GUILDRANK ] = UpdateField( mv[TYPEID_UNIT] + 0x0004 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_BYTES ] = UpdateField( mv[TYPEID_UNIT] + 0x0005 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_BYTES_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0006 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_BYTES_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0007 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_DUEL_TEAM ] = UpdateField( mv[TYPEID_UNIT] + 0x0008 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_GUILD_TIMESTAMP ] = UpdateField( mv[TYPEID_UNIT] + 0x0009 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_QUEST_LOG_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x000A , UF_UINT32 ); // Count = 20
Object::updatefields[ PLAYER_QUEST_LOG_1_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x000B , UF_UINT32 );
Object::updatefields[ PLAYER_QUEST_LOG_1_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x000C , UF_UINT32 );
Object::updatefields[ PLAYER_QUEST_LOG_LAST_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0043 , UF_UINT32 );
Object::updatefields[ PLAYER_QUEST_LOG_LAST_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0044 , UF_UINT32 );
Object::updatefields[ PLAYER_QUEST_LOG_LAST_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0045 , UF_UINT32 );
Object::updatefields[ PLAYER_VISIBLE_ITEM_1_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x0046 , UF_UINT64 ); // Size:2, Count = 19
Object::updatefields[ PLAYER_VISIBLE_ITEM_1_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0048 , UF_UINT64 ); // Size:8
Object::updatefields[ PLAYER_VISIBLE_ITEM_1_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x0050 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_VISIBLE_ITEM_1_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x0051 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_VISIBLE_ITEM_LAST_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x011E , UF_UINT32 );
Object::updatefields[ PLAYER_VISIBLE_ITEM_LAST_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0120 , UF_UINT32 );
Object::updatefields[ PLAYER_VISIBLE_ITEM_LAST_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x0128 , UF_UINT32 );
Object::updatefields[ PLAYER_VISIBLE_ITEM_LAST_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x0129 , UF_UINT32 );
Object::updatefields[ PLAYER_FIELD_INV_SLOT_HEAD ] = UpdateField( mv[TYPEID_UNIT] + 0x012A , UF_UINT32 ); // Size:46
Object::updatefields[ PLAYER_FIELD_PACK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0158 , UF_UINT32 ); // Size:32
Object::updatefields[ PLAYER_FIELD_PACK_SLOT_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x0176 , UF_UINT32 );
Object::updatefields[ PLAYER_FIELD_BANK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0178 , UF_UINT32 ); // Size:48
Object::updatefields[ PLAYER_FIELD_BANK_SLOT_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x01A6 , UF_UINT32 );
Object::updatefields[ PLAYER_FIELD_BANKBAG_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x01A8 , UF_UINT32 ); // Size:12
Object::updatefields[ PLAYER_FIELD_BANKBAG_SLOT_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x0AB2 , UF_UINT32 );
Object::updatefields[ PLAYER_FIELD_VENDORBUYBACK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x01B4 , UF_UINT32 ); // Size:24
Object::updatefields[ PLAYER_FIELD_VENDORBUYBACK_SLOT_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x01CA , UF_UINT32 );
Object::updatefields[ PLAYER_FIELD_KEYRING_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x01CC , UF_UINT32 ); // Size:64
Object::updatefields[ PLAYER_FIELD_KEYRING_SLOT_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x020A , UF_UINT32 );
Object::updatefields[ PLAYER_FARSIGHT ] = UpdateField( mv[TYPEID_UNIT] + 0x020C , UF_UINT64 ); // Size:2
Object::updatefields[ PLAYER_FIELD_COMBO_TARGET ] = UpdateField( mv[TYPEID_UNIT] + 0x020E , UF_UINT64 ); // Size:2
Object::updatefields[ PLAYER_XP ] = UpdateField( mv[TYPEID_UNIT] + 0x0210 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_NEXT_LEVEL_XP ] = UpdateField( mv[TYPEID_UNIT] + 0x0211 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_SKILL_INFO_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0212 , UF_UINT32 ); // Size:384
Object::updatefields[ PLAYER_CHARACTER_POINTS1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0392 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_CHARACTER_POINTS2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0393 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_TRACK_CREATURES ] = UpdateField( mv[TYPEID_UNIT] + 0x0394 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_TRACK_RESOURCES ] = UpdateField( mv[TYPEID_UNIT] + 0x0395 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_BLOCK_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0396 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_DODGE_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0397 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_PARRY_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0398 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0399 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_RANGED_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x039A , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_EXPLORED_ZONES_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x039B , UF_UINT32 ); // Size:64
Object::updatefields[ PLAYER_REST_STATE_EXPERIENCE ] = UpdateField( mv[TYPEID_UNIT] + 0x03DB , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_COINAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x03DC , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_POSSTAT0 ] = UpdateField( mv[TYPEID_UNIT] + 0x03DD , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_POSSTAT1 ] = UpdateField( mv[TYPEID_UNIT] + 0x03DE , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_POSSTAT2 ] = UpdateField( mv[TYPEID_UNIT] + 0x03DF , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_POSSTAT3 ] = UpdateField( mv[TYPEID_UNIT] + 0x03E0 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_POSSTAT4 ] = UpdateField( mv[TYPEID_UNIT] + 0x03E1 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_NEGSTAT0 ] = UpdateField( mv[TYPEID_UNIT] + 0x03E2 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_NEGSTAT1 ] = UpdateField( mv[TYPEID_UNIT] + 0x03E3 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_NEGSTAT2 ] = UpdateField( mv[TYPEID_UNIT] + 0x03E4 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_NEGSTAT3 ] = UpdateField( mv[TYPEID_UNIT] + 0x03E5 , UF_UINT32 ); // Size:1,
Object::updatefields[ PLAYER_FIELD_NEGSTAT4 ] = UpdateField( mv[TYPEID_UNIT] + 0x03E6 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE ] = UpdateField( mv[TYPEID_UNIT] + 0x03E7 , UF_UINT32 ); // Size:7
Object::updatefields[ PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE ] = UpdateField( mv[TYPEID_UNIT] + 0x03EE , UF_UINT32 ); // Size:7
Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_POS ] = UpdateField( mv[TYPEID_UNIT] + 0x03F5 , UF_UINT32 ); // Size:7
Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_NEG ] = UpdateField( mv[TYPEID_UNIT] + 0x03FC , UF_UINT32 ); // Size:7
Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_PCT ] = UpdateField( mv[TYPEID_UNIT] + 0x0403 , UF_UINT32 ); // Size:7
Object::updatefields[ PLAYER_FIELD_BYTES ] = UpdateField( mv[TYPEID_UNIT] + 0x040A , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_AMMO_ID ] = UpdateField( mv[TYPEID_UNIT] + 0x040B , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_SELF_RES_SPELL ] = UpdateField( mv[TYPEID_UNIT] + 0x040C , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_PVP_MEDALS ] = UpdateField( mv[TYPEID_UNIT] + 0x040D , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_BUYBACK_PRICE_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x040E , UF_UINT32 ); // Count=12
Object::updatefields[ PLAYER_FIELD_BUYBACK_PRICE_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x0419 , UF_UINT32 );
Object::updatefields[ PLAYER_FIELD_BUYBACK_TIMESTAMP_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x041A , UF_UINT32 ); // Count=12
Object::updatefields[ PLAYER_FIELD_BUYBACK_TIMESTAMP_LAST ] = UpdateField( mv[TYPEID_UNIT] + 0x0425 , UF_UINT32 );
Object::updatefields[ PLAYER_FIELD_SESSION_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0426 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_YESTERDAY_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0427 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_LAST_WEEK_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0428 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_THIS_WEEK_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0429 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_THIS_WEEK_CONTRIBUTION ] = UpdateField( mv[TYPEID_UNIT] + 0x042A , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_LIFETIME_HONORABLE_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x042B , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_LIFETIME_DISHONORABLE_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x042C , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_YESTERDAY_CONTRIBUTION ] = UpdateField( mv[TYPEID_UNIT] + 0x042D , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_LAST_WEEK_CONTRIBUTION ] = UpdateField( mv[TYPEID_UNIT] + 0x042E , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_LAST_WEEK_RANK ] = UpdateField( mv[TYPEID_UNIT] + 0x042F , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_BYTES2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0430 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_WATCHED_FACTION_INDEX ] = UpdateField( mv[TYPEID_UNIT] + 0x0431 , UF_UINT32 ); // Size:1
Object::updatefields[ PLAYER_FIELD_COMBAT_RATING_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0432 , UF_UINT32 ); // Size:20
Object::updatefields[ OBJECT_FIELD_CREATED_BY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64 );
Object::updatefields[ GAMEOBJECT_DISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0003 , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_ROTATION ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_STATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_POS_X ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_FLOAT );
Object::updatefields[ GAMEOBJECT_POS_Y ] = UpdateField( mv[TYPEID_OBJECT] + 0x000A , UF_FLOAT );
Object::updatefields[ GAMEOBJECT_POS_Z ] = UpdateField( mv[TYPEID_OBJECT] + 0x000B , UF_FLOAT );
Object::updatefields[ GAMEOBJECT_FACING ] = UpdateField( mv[TYPEID_OBJECT] + 0x000C , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_DYN_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x000D , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_FACTION ] = UpdateField( mv[TYPEID_OBJECT] + 0x000E , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_TYPE_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x000F , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_LEVEL ] = UpdateField( mv[TYPEID_OBJECT] + 0x0010 , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_ARTKIT ] = UpdateField( mv[TYPEID_OBJECT] + 0x0011 , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_ANIMPROGRESS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0012 , UF_UINT32 );
Object::updatefields[ GAMEOBJECT_PADDING ] = UpdateField( mv[TYPEID_OBJECT] + 0x0013 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_CASTER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64 );
Object::updatefields[ DYNAMICOBJECT_BYTES ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_SPELLID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0003 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_RADIUS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_POS_X ] = UpdateField( mv[TYPEID_OBJECT] + 0x0005 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_POS_Y ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_POS_Z ] = UpdateField( mv[TYPEID_OBJECT] + 0x0007 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_FACING ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32 );
Object::updatefields[ DYNAMICOBJECT_PAD ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_OWNER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64 );
Object::updatefields[ CORPSE_FIELD_FACING ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_POS_X ] = UpdateField( mv[TYPEID_OBJECT] + 0x0003 , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_POS_Y ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_POS_Z ] = UpdateField( mv[TYPEID_OBJECT] + 0x0005 , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_DISPLAY_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_ITEM ] = UpdateField( mv[TYPEID_OBJECT] + 0x0007 , UF_UINT32 ); // 19
Object::updatefields[ CORPSE_FIELD_BYTES_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001A , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_BYTES_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001B , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_GUILD ] = UpdateField( mv[TYPEID_OBJECT] + 0x001C , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x001D , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_DYNAMIC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x001E , UF_UINT32 );
Object::updatefields[ CORPSE_FIELD_PAD ] = UpdateField( mv[TYPEID_OBJECT] + 0x001F , UF_UINT32 );
break;
}
case CLIENT_TBC: //2.4.3
{
break; //TODO: ADD DATA
}
case CLIENT_WOTLK://3.3.5
{
uint32 mv[]={
OBJECT_END,
ITEM_END,
CONTAINER_END,
UNIT_END,
PLAYER_END,
GAMEOBJECT_END,
DYNAMICOBJECT_END,
CORPSE_END
};
memcpy(Object::maxvalues,mv,sizeof(mv));
Object::updatefields[ OBJECT_FIELD_GUID ] = UpdateField( 0x0000 , UF_UINT64);
Object::updatefields[ OBJECT_FIELD_GUID_LOW ] = UpdateField( 0x0000 , UF_UINT32);
Object::updatefields[ OBJECT_FIELD_GUID_HIGH ] = UpdateField( 0x0001 , UF_UINT32);
Object::updatefields[ OBJECT_FIELD_TYPE ] = UpdateField( 0x0002 , UF_UINT32);
Object::updatefields[ OBJECT_FIELD_ENTRY ] = UpdateField( 0x0003 , UF_UINT32);
Object::updatefields[ OBJECT_FIELD_SCALE_X ] = UpdateField( 0x0004 , UF_FLOAT);
Object::updatefields[ OBJECT_FIELD_PADDING ] = UpdateField( 0x0005 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_OWNER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64);
Object::updatefields[ ITEM_FIELD_CONTAINED ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT64);
Object::updatefields[ ITEM_FIELD_CREATOR ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT64);
Object::updatefields[ ITEM_FIELD_GIFTCREATOR ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT64);
Object::updatefields[ ITEM_FIELD_STACK_COUNT ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_DURATION ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_SPELL_CHARGES ] = UpdateField( mv[TYPEID_OBJECT] + 0x000A , UF_UINT32);
Object::updatefields[ ITEM_FIELD_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x000F , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_1_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0010 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_1_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0012 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_2_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0013 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_2_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0015 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_3_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0016 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_3_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0018 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_4_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0019 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_4_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001B , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_5_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001C , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_5_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001E , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_6_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001F , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_6_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0021 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_7_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0022 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_7_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0024 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_8_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0025 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_8_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0027 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_9_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0028 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_9_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x002A , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_10_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x002B , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_10_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x002D , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_11_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x002E , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_11_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0030 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_12_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0031 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_ENCHANTMENT_12_3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0033 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_PROPERTY_SEED ] = UpdateField( mv[TYPEID_OBJECT] + 0x0034 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_RANDOM_PROPERTIES_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0035 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_DURABILITY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0036 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_MAXDURABILITY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0037 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_CREATE_PLAYED_TIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x0038 , UF_UINT32);
Object::updatefields[ ITEM_FIELD_PAD ] = UpdateField( mv[TYPEID_OBJECT] + 0x0039 , UF_UINT32);
Object::updatefields[ CONTAINER_FIELD_NUM_SLOTS ] = UpdateField( mv[TYPEID_ITEM] + 0x0000 , UF_UINT32);
Object::updatefields[ CONTAINER_ALIGN_PAD ] = UpdateField( mv[TYPEID_ITEM] + 0x0001 , UF_UINT32);
Object::updatefields[ CONTAINER_FIELD_SLOT_1 ] = UpdateField( mv[TYPEID_ITEM] + 0x0002 , UF_UINT64);
Object::updatefields[ UNIT_FIELD_CHARM ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64);
Object::updatefields[ UNIT_FIELD_SUMMON ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT64);
Object::updatefields[ UNIT_FIELD_CRITTER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT64);
Object::updatefields[ UNIT_FIELD_CHARMEDBY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT64);
Object::updatefields[ UNIT_FIELD_SUMMONEDBY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT64);
Object::updatefields[ UNIT_FIELD_CREATEDBY ] = UpdateField( mv[TYPEID_OBJECT] + 0x000A , UF_UINT64);
Object::updatefields[ UNIT_FIELD_TARGET ] = UpdateField( mv[TYPEID_OBJECT] + 0x000C , UF_UINT64);
Object::updatefields[ UNIT_FIELD_CHANNEL_OBJECT ] = UpdateField( mv[TYPEID_OBJECT] + 0x000E , UF_UINT64);
Object::updatefields[ UNIT_CHANNEL_SPELL ] = UpdateField( mv[TYPEID_OBJECT] + 0x0010 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_BYTES_0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0011 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_HEALTH ] = UpdateField( mv[TYPEID_OBJECT] + 0x0012 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0013 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0014 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0015 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0016 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER5 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0017 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER6 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0018 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER7 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0019 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXHEALTH ] = UpdateField( mv[TYPEID_OBJECT] + 0x001A , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXPOWER1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001B , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXPOWER2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001C , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXPOWER3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001D , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXPOWER4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001E , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXPOWER5 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001F , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXPOWER6 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0020 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MAXPOWER7 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0021 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0022 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER] = UpdateField( mv[TYPEID_OBJECT] + 0x0029 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_LEVEL ] = UpdateField( mv[TYPEID_OBJECT] + 0x0030 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_FACTIONTEMPLATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0031 , UF_UINT32);
Object::updatefields[ UNIT_VIRTUAL_ITEM_SLOT_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0032 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0035 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_FLAGS_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0036 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_AURASTATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0037 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_BASEATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x0038 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_RANGEDATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x003A , UF_UINT32);
Object::updatefields[ UNIT_FIELD_BOUNDINGRADIUS ] = UpdateField( mv[TYPEID_OBJECT] + 0x003B , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_COMBATREACH ] = UpdateField( mv[TYPEID_OBJECT] + 0x003C , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_DISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x003D , UF_UINT32);
Object::updatefields[ UNIT_FIELD_NATIVEDISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x003E , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MOUNTDISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x003F , UF_UINT32);
Object::updatefields[ UNIT_FIELD_MINDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0040 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_MAXDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0041 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_MINOFFHANDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0042 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_MAXOFFHANDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0043 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_BYTES_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0044 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_PETNUMBER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0045 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_PET_NAME_TIMESTAMP ] = UpdateField( mv[TYPEID_OBJECT] + 0x0046 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_PETEXPERIENCE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0047 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_PETNEXTLEVELEXP ] = UpdateField( mv[TYPEID_OBJECT] + 0x0048 , UF_UINT32);
Object::updatefields[ UNIT_DYNAMIC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0049 , UF_UINT32);
Object::updatefields[ UNIT_MOD_CAST_SPEED ] = UpdateField( mv[TYPEID_OBJECT] + 0x004A , UF_FLOAT);
Object::updatefields[ UNIT_CREATED_BY_SPELL ] = UpdateField( mv[TYPEID_OBJECT] + 0x004B , UF_UINT32);
Object::updatefields[ UNIT_NPC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x004C , UF_UINT32);
Object::updatefields[ UNIT_NPC_EMOTESTATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x004D , UF_UINT32);
Object::updatefields[ UNIT_FIELD_STAT0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x004E , UF_UINT32);
Object::updatefields[ UNIT_FIELD_STAT1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x004F , UF_UINT32);
Object::updatefields[ UNIT_FIELD_STAT2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0050 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_STAT3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0051 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_STAT4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0052 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POSSTAT0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0053 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POSSTAT1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0054 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POSSTAT2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0055 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POSSTAT3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0056 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POSSTAT4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0057 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_NEGSTAT0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0058 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_NEGSTAT1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0059 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_NEGSTAT2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005A , UF_UINT32);
Object::updatefields[ UNIT_FIELD_NEGSTAT3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005B , UF_UINT32);
Object::updatefields[ UNIT_FIELD_NEGSTAT4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x005C , UF_UINT32);
Object::updatefields[ UNIT_FIELD_RESISTANCES ] = UpdateField( mv[TYPEID_OBJECT] + 0x005D , UF_UINT32);
Object::updatefields[ UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0064 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE ] = UpdateField( mv[TYPEID_OBJECT] + 0x006B , UF_UINT32);
Object::updatefields[ UNIT_FIELD_BASE_MANA ] = UpdateField( mv[TYPEID_OBJECT] + 0x0072 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_BASE_HEALTH ] = UpdateField( mv[TYPEID_OBJECT] + 0x0073 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_BYTES_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0074 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_ATTACK_POWER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0075 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_ATTACK_POWER_MODS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0076 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_ATTACK_POWER_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0077 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0078 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER_MODS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0079 , UF_UINT32);
Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER] = UpdateField( mv[TYPEID_OBJECT] + 0x007A , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_MINRANGEDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x007B , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_MAXRANGEDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x007C , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x007D , UF_UINT32);
Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0084 , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_MAXHEALTHMODIFIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x008B , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_HOVERHEIGHT ] = UpdateField( mv[TYPEID_OBJECT] + 0x008C , UF_FLOAT);
Object::updatefields[ UNIT_FIELD_PADDING ] = UpdateField( mv[TYPEID_OBJECT] + 0x008D , UF_UINT32);
Object::updatefields[ PLAYER_DUEL_ARBITER ] = UpdateField( mv[TYPEID_UNIT] + 0x0000 , UF_UINT64);
Object::updatefields[ PLAYER_FLAGS ] = UpdateField( mv[TYPEID_UNIT] + 0x0002 , UF_UINT32);
Object::updatefields[ PLAYER_GUILDID ] = UpdateField( mv[TYPEID_UNIT] + 0x0003 , UF_UINT32);
Object::updatefields[ PLAYER_GUILDRANK ] = UpdateField( mv[TYPEID_UNIT] + 0x0004 , UF_UINT32);
Object::updatefields[ PLAYER_BYTES ] = UpdateField( mv[TYPEID_UNIT] + 0x0005 , UF_UINT32);
Object::updatefields[ PLAYER_BYTES_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0006 , UF_UINT32);
Object::updatefields[ PLAYER_BYTES_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0007 , UF_UINT32);
Object::updatefields[ PLAYER_DUEL_TEAM ] = UpdateField( mv[TYPEID_UNIT] + 0x0008 , UF_UINT32);
Object::updatefields[ PLAYER_GUILD_TIMESTAMP ] = UpdateField( mv[TYPEID_UNIT] + 0x0009 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x000A , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_1_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x000B , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_1_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x000C , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_1_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x000E , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_2_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x000F , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_2_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0010 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_2_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0011 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_2_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0013 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_3_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0014 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_3_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0015 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_3_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0016 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_3_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0018 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_4_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0019 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_4_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x001A , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_4_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x001B , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_4_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x001D , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_5_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x001E , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_5_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x001F , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_5_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0020 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_5_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0022 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_6_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0023 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_6_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0024 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_6_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0025 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_6_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0027 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_7_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0028 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_7_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0029 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_7_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x002A , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_7_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x002C , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_8_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x002D , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_8_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x002E , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_8_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x002F , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_8_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0031 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_9_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0032 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_9_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0033 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_9_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0034 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_9_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0036 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_10_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0037 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_10_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0038 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_10_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0039 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_10_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x003B , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_11_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x003C , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_11_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x003D , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_11_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x003E , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_11_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0040 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_12_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0041 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_12_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0042 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_12_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0043 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_12_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0045 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_13_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0046 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_13_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0047 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_13_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0048 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_13_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x004A , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_14_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x004B , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_14_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x004C , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_14_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x004D , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_14_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x004F , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_15_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0050 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_15_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0051 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_15_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0052 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_15_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0054 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_16_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0055 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_16_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0056 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_16_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0057 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_16_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0059 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_17_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x005A , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_17_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x005B , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_17_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x005C , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_17_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x005E , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_18_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x005F , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_18_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0060 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_18_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0061 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_18_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0063 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_19_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0064 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_19_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0065 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_19_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0066 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_19_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0068 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_20_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0069 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_20_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x006A , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_20_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x006B , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_20_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x006D , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_21_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x006E , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_21_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x006F , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_21_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0070 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_21_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0072 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_22_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0073 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_22_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0074 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_22_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0075 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_22_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0077 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_23_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0078 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_23_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0079 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_23_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x007A , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_23_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x007C , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_24_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x007D , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_24_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x007E , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_24_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x007F , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_24_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0081 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_25_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0082 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_25_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0083 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_25_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0084 , UF_UINT32);
Object::updatefields[ PLAYER_QUEST_LOG_25_5 ] = UpdateField( mv[TYPEID_UNIT] + 0x0086 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_1_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x0087 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_1_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x0088 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_2_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x0089 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_2_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x008A , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_3_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x008B , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_3_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x008C , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_4_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x008D , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_4_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x008E , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_5_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x008F , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_5_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x0090 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_6_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x0091 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_6_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x0092 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_7_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x0093 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_7_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x0094 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_8_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x0095 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_8_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x0096 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_9_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x0097 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_9_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x0098 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_10_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x0099 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_10_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x009A , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_11_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x009B , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_11_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x009C , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_12_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x009D , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_12_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x009E , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_13_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x009F , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_13_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x00A0 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_14_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x00A1 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_14_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x00A2 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_15_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x00A3 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_15_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x00A4 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_16_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x00A5 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_16_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x00A6 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_17_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x00A7 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_17_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x00A8 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_18_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x00A9 , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_18_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x00AA , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_19_ENTRYID ] = UpdateField( mv[TYPEID_UNIT] + 0x00AB , UF_UINT32);
Object::updatefields[ PLAYER_VISIBLE_ITEM_19_ENCHANTMENT ] = UpdateField( mv[TYPEID_UNIT] + 0x00AC , UF_UINT32);
Object::updatefields[ PLAYER_CHOSEN_TITLE ] = UpdateField( mv[TYPEID_UNIT] + 0x00AD , UF_UINT32);
Object::updatefields[ PLAYER_FAKE_INEBRIATION ] = UpdateField( mv[TYPEID_UNIT] + 0x00AE , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_PAD_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x00AF , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_INV_SLOT_HEAD ] = UpdateField( mv[TYPEID_UNIT] + 0x00B0 , UF_UINT64);
Object::updatefields[ PLAYER_FIELD_PACK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x00DE , UF_UINT64);
Object::updatefields[ PLAYER_FIELD_BANK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x00FE , UF_UINT64);
Object::updatefields[ PLAYER_FIELD_BANKBAG_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0136 , UF_UINT64);
Object::updatefields[ PLAYER_FIELD_VENDORBUYBACK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0144 , UF_UINT64);
Object::updatefields[ PLAYER_FIELD_KEYRING_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x015C , UF_UINT64);
Object::updatefields[ PLAYER_FIELD_CURRENCYTOKEN_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x019C , UF_UINT64);
Object::updatefields[ PLAYER_FARSIGHT ] = UpdateField( mv[TYPEID_UNIT] + 0x01DC , UF_UINT64);
Object::updatefields[ PLAYER__FIELD_KNOWN_TITLES ] = UpdateField( mv[TYPEID_UNIT] + 0x01DE , UF_UINT64);
Object::updatefields[ PLAYER__FIELD_KNOWN_TITLES1 ] = UpdateField( mv[TYPEID_UNIT] + 0x01E0 , UF_UINT64);
Object::updatefields[ PLAYER__FIELD_KNOWN_TITLES2 ] = UpdateField( mv[TYPEID_UNIT] + 0x01E2 , UF_UINT64);
Object::updatefields[ PLAYER_FIELD_KNOWN_CURRENCIES ] = UpdateField( mv[TYPEID_UNIT] + 0x01E4 , UF_UINT64);
Object::updatefields[ PLAYER_XP ] = UpdateField( mv[TYPEID_UNIT] + 0x01E6 , UF_UINT32);
Object::updatefields[ PLAYER_NEXT_LEVEL_XP ] = UpdateField( mv[TYPEID_UNIT] + 0x01E7 , UF_UINT32);
Object::updatefields[ PLAYER_SKILL_INFO_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x01E8 , UF_UINT32);
Object::updatefields[ PLAYER_CHARACTER_POINTS1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0368 , UF_UINT32);
Object::updatefields[ PLAYER_CHARACTER_POINTS2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0369 , UF_UINT32);
Object::updatefields[ PLAYER_TRACK_CREATURES ] = UpdateField( mv[TYPEID_UNIT] + 0x036A , UF_UINT32);
Object::updatefields[ PLAYER_TRACK_RESOURCES ] = UpdateField( mv[TYPEID_UNIT] + 0x036B , UF_UINT32);
Object::updatefields[ PLAYER_BLOCK_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x036C , UF_FLOAT);
Object::updatefields[ PLAYER_DODGE_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x036D , UF_FLOAT);
Object::updatefields[ PLAYER_PARRY_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x036E , UF_FLOAT);
Object::updatefields[ PLAYER_EXPERTISE ] = UpdateField( mv[TYPEID_UNIT] + 0x036F , UF_UINT32);
Object::updatefields[ PLAYER_OFFHAND_EXPERTISE ] = UpdateField( mv[TYPEID_UNIT] + 0x0370 , UF_UINT32);
Object::updatefields[ PLAYER_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0371 , UF_FLOAT);
Object::updatefields[ PLAYER_RANGED_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0372 , UF_FLOAT);
Object::updatefields[ PLAYER_OFFHAND_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0373 , UF_FLOAT);
Object::updatefields[ PLAYER_SPELL_CRIT_PERCENTAGE1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0374 , UF_FLOAT);
Object::updatefields[ PLAYER_SHIELD_BLOCK ] = UpdateField( mv[TYPEID_UNIT] + 0x037B , UF_UINT32);
Object::updatefields[ PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x037C , UF_FLOAT);
Object::updatefields[ PLAYER_EXPLORED_ZONES_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x037D , UF_UINT32);
Object::updatefields[ PLAYER_REST_STATE_EXPERIENCE ] = UpdateField( mv[TYPEID_UNIT] + 0x03FD , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_COINAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x03FE , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_POS ] = UpdateField( mv[TYPEID_UNIT] + 0x03FF , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_NEG ] = UpdateField( mv[TYPEID_UNIT] + 0x0406 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_PCT ] = UpdateField( mv[TYPEID_UNIT] + 0x040D , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_MOD_HEALING_DONE_POS ] = UpdateField( mv[TYPEID_UNIT] + 0x0414 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_MOD_HEALING_PCT ] = UpdateField( mv[TYPEID_UNIT] + 0x0415 , UF_FLOAT);
Object::updatefields[ PLAYER_FIELD_MOD_HEALING_DONE_PCT ] = UpdateField( mv[TYPEID_UNIT] + 0x0416 , UF_FLOAT);
Object::updatefields[ PLAYER_FIELD_MOD_TARGET_RESISTANCE ] = UpdateField( mv[TYPEID_UNIT] + 0x0417 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE] = UpdateField(mv[TYPEID_UNIT] + 0x0418 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_BYTES ] = UpdateField( mv[TYPEID_UNIT] + 0x0419 , UF_UINT32);
Object::updatefields[ PLAYER_AMMO_ID ] = UpdateField( mv[TYPEID_UNIT] + 0x041A , UF_UINT32);
Object::updatefields[ PLAYER_SELF_RES_SPELL ] = UpdateField( mv[TYPEID_UNIT] + 0x041B , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_PVP_MEDALS ] = UpdateField( mv[TYPEID_UNIT] + 0x041C , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_BUYBACK_PRICE_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x041D , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_BUYBACK_TIMESTAMP_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0429 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0435 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_TODAY_CONTRIBUTION ] = UpdateField( mv[TYPEID_UNIT] + 0x0436 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_YESTERDAY_CONTRIBUTION ] = UpdateField( mv[TYPEID_UNIT] + 0x0437 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_LIFETIME_HONORBALE_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0438 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_BYTES2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0439 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_WATCHED_FACTION_INDEX ] = UpdateField( mv[TYPEID_UNIT] + 0x043A , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_COMBAT_RATING_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x043B , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_ARENA_TEAM_INFO_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0454 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_HONOR_CURRENCY ] = UpdateField( mv[TYPEID_UNIT] + 0x0469 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_ARENA_CURRENCY ] = UpdateField( mv[TYPEID_UNIT] + 0x046A , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_MAX_LEVEL ] = UpdateField( mv[TYPEID_UNIT] + 0x046B , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_DAILY_QUESTS_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x046C , UF_UINT32);
Object::updatefields[ PLAYER_RUNE_REGEN_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0485 , UF_FLOAT);
Object::updatefields[ PLAYER_NO_REAGENT_COST_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0489 , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_GLYPH_SLOTS_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x048C , UF_UINT32);
Object::updatefields[ PLAYER_FIELD_GLYPHS_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0492 , UF_UINT32);
Object::updatefields[ PLAYER_GLYPHS_ENABLED ] = UpdateField( mv[TYPEID_UNIT] + 0x0498 , UF_UINT32);
Object::updatefields[ PLAYER_PET_SPELL_POWER ] = UpdateField( mv[TYPEID_UNIT] + 0x0499 , UF_UINT32);
Object::updatefields[ OBJECT_FIELD_CREATED_BY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64);
Object::updatefields[ GAMEOBJECT_DISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32);
Object::updatefields[ GAMEOBJECT_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0003 , UF_UINT32);
Object::updatefields[ GAMEOBJECT_PARENTROTATION ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_FLOAT);
Object::updatefields[ GAMEOBJECT_DYNAMIC ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32);
Object::updatefields[ GAMEOBJECT_FACTION ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_UINT32);
Object::updatefields[ GAMEOBJECT_LEVEL ] = UpdateField( mv[TYPEID_OBJECT] + 0x000A , UF_UINT32);
Object::updatefields[ GAMEOBJECT_BYTES_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x000B , UF_UINT32);
Object::updatefields[ DYNAMICOBJECT_CASTER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64);
Object::updatefields[ DYNAMICOBJECT_BYTES ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32);
Object::updatefields[ DYNAMICOBJECT_SPELLID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0003 , UF_UINT32);
Object::updatefields[ DYNAMICOBJECT_RADIUS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_FLOAT);
Object::updatefields[ DYNAMICOBJECT_CASTTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x0005 , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_OWNER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT64);
Object::updatefields[ CORPSE_FIELD_PARTY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT64);
Object::updatefields[ CORPSE_FIELD_DISPLAY_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_ITEM ] = UpdateField( mv[TYPEID_OBJECT] + 0x0005 , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_BYTES_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0018 , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_BYTES_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0019 , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_GUILD ] = UpdateField( mv[TYPEID_OBJECT] + 0x001A , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x001B , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_DYNAMIC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x001C , UF_UINT32);
Object::updatefields[ CORPSE_FIELD_PAD ] = UpdateField( mv[TYPEID_OBJECT] + 0x001D , UF_UINT32);
break;
}
}
}

View File

@ -1,439 +1,531 @@
/*
* Copyright (C) 2005-2010 MaNGOS <http://getmangos.com/>
*
* 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 _UPDATEFIELDS_H
#define _UPDATEFIELDS_H
#ifndef _UPDATEFIELDS_AUTO_H
#define _UPDATEFIELDS_AUTO_H
// Auto generated for version 3, 3, 5, 12340
enum EObjectFields
enum UpdateFieldTypes
{
OBJECT_FIELD_GUID = 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
OBJECT_FIELD_TYPE = 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
OBJECT_FIELD_ENTRY = 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
OBJECT_FIELD_SCALE_X = 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
OBJECT_FIELD_PADDING = 0x0005, // Size: 1, Type: INT, Flags: NONE
OBJECT_END = 0x0006,
UF_UNDEFINED = 0,
UF_UINT32,
UF_UINT64,
UF_FLOAT
};
enum EItemFields
enum UpdateFieldLimits
{
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, ITEM_OWNER
ITEM_FIELD_DURATION = OBJECT_END + 0x0009, // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER
ITEM_FIELD_SPELL_CHARGES = OBJECT_END + 0x000A, // Size: 5, Type: INT, Flags: OWNER, ITEM_OWNER
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, ITEM_OWNER
ITEM_FIELD_MAXDURABILITY = OBJECT_END + 0x0037, // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER
ITEM_FIELD_CREATE_PLAYED_TIME = OBJECT_END + 0x0038, // Size: 1, Type: INT, Flags: PUBLIC
ITEM_FIELD_PAD = OBJECT_END + 0x0039, // Size: 1, Type: INT, Flags: NONE
OBJECT_END = 0x0006,
ITEM_END = OBJECT_END + 0x003A,
ITEM_END_6005 = OBJECT_END + 0x2A,
};
enum EContainerFields
{
CONTAINER_FIELD_NUM_SLOTS = ITEM_END + 0x0000, // Size: 1, Type: INT, Flags: PUBLIC
CONTAINER_ALIGN_PAD = ITEM_END + 0x0001, // Size: 1, Type: BYTES, Flags: NONE
CONTAINER_FIELD_SLOT_1 = ITEM_END + 0x0002, // Size: 72, Type: LONG, Flags: PUBLIC
CONTAINER_END = ITEM_END + 0x004A,
CONTAINER_END_6005 = ITEM_END + 0x003A,
};
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_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
UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = OBJECT_END + 0x0029, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER
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_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, PARTY_LEADER
UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x0041, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER, PARTY_LEADER
UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x0042, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER, PARTY_LEADER
UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x0043, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER, PARTY_LEADER
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
UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x0048, // Size: 1, Type: INT, Flags: OWNER
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
UNIT_FIELD_STAT1 = OBJECT_END + 0x004F, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_STAT2 = OBJECT_END + 0x0050, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_STAT3 = OBJECT_END + 0x0051, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_STAT4 = OBJECT_END + 0x0052, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POSSTAT0 = OBJECT_END + 0x0053, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POSSTAT1 = OBJECT_END + 0x0054, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POSSTAT2 = OBJECT_END + 0x0055, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POSSTAT3 = OBJECT_END + 0x0056, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POSSTAT4 = OBJECT_END + 0x0057, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_NEGSTAT0 = OBJECT_END + 0x0058, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_NEGSTAT1 = OBJECT_END + 0x0059, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_NEGSTAT2 = OBJECT_END + 0x005A, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_NEGSTAT3 = OBJECT_END + 0x005B, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_NEGSTAT4 = OBJECT_END + 0x005C, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RESISTANCES = OBJECT_END + 0x005D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER, PARTY_LEADER
UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x0064, // Size: 7, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x006B, // Size: 7, Type: INT, Flags: PRIVATE, OWNER
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
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
UNIT_FIELD_ATTACK_POWER_MODS = OBJECT_END + 0x0076, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER
UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0077, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x0078, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MODS = OBJECT_END + 0x0079, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x007A, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x007B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x007C, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x007D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0084, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x008B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
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_END_6005 = OBJECT_END + 0x00B6,
PLAYER_DUEL_ARBITER = UNIT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_FLAGS = UNIT_END + 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_GUILDID = UNIT_END + 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_GUILDRANK = UNIT_END + 0x0004, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_BYTES = UNIT_END + 0x0005, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_BYTES_2 = UNIT_END + 0x0006, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_BYTES_3 = UNIT_END + 0x0007, // Size: 1, Type: BYTES, Flags: PUBLIC
PLAYER_DUEL_TEAM = UNIT_END + 0x0008, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_GUILD_TIMESTAMP = UNIT_END + 0x0009, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_QUEST_LOG_1_1 = UNIT_END + 0x000A, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_1_2 = UNIT_END + 0x000B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_1_3 = UNIT_END + 0x000C, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_1_4 = UNIT_END + 0x000E, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_2_1 = UNIT_END + 0x000F, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_2_2 = UNIT_END + 0x0010, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_2_3 = UNIT_END + 0x0011, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_2_5 = UNIT_END + 0x0013, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_3_1 = UNIT_END + 0x0014, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_3_2 = UNIT_END + 0x0015, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_3_3 = UNIT_END + 0x0016, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_3_5 = UNIT_END + 0x0018, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_4_1 = UNIT_END + 0x0019, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_4_2 = UNIT_END + 0x001A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_4_3 = UNIT_END + 0x001B, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_4_5 = UNIT_END + 0x001D, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_5_1 = UNIT_END + 0x001E, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_5_2 = UNIT_END + 0x001F, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_5_3 = UNIT_END + 0x0020, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_5_5 = UNIT_END + 0x0022, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_6_1 = UNIT_END + 0x0023, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_6_2 = UNIT_END + 0x0024, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_6_3 = UNIT_END + 0x0025, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_6_5 = UNIT_END + 0x0027, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_7_1 = UNIT_END + 0x0028, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_7_2 = UNIT_END + 0x0029, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_7_3 = UNIT_END + 0x002A, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_7_5 = UNIT_END + 0x002C, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_8_1 = UNIT_END + 0x002D, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_8_2 = UNIT_END + 0x002E, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_8_3 = UNIT_END + 0x002F, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_8_5 = UNIT_END + 0x0031, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_9_1 = UNIT_END + 0x0032, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_9_2 = UNIT_END + 0x0033, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_9_3 = UNIT_END + 0x0034, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_9_5 = UNIT_END + 0x0036, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_10_1 = UNIT_END + 0x0037, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_10_2 = UNIT_END + 0x0038, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_10_3 = UNIT_END + 0x0039, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_10_5 = UNIT_END + 0x003B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_11_1 = UNIT_END + 0x003C, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_11_2 = UNIT_END + 0x003D, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_11_3 = UNIT_END + 0x003E, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_11_5 = UNIT_END + 0x0040, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_12_1 = UNIT_END + 0x0041, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_12_2 = UNIT_END + 0x0042, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_12_3 = UNIT_END + 0x0043, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_12_5 = UNIT_END + 0x0045, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_13_1 = UNIT_END + 0x0046, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_13_2 = UNIT_END + 0x0047, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_13_3 = UNIT_END + 0x0048, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_13_5 = UNIT_END + 0x004A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_14_1 = UNIT_END + 0x004B, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_14_2 = UNIT_END + 0x004C, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_14_3 = UNIT_END + 0x004D, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_14_5 = UNIT_END + 0x004F, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_15_1 = UNIT_END + 0x0050, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_15_2 = UNIT_END + 0x0051, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_15_3 = UNIT_END + 0x0052, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_15_5 = UNIT_END + 0x0054, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_16_1 = UNIT_END + 0x0055, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_16_2 = UNIT_END + 0x0056, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_16_3 = UNIT_END + 0x0057, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_16_5 = UNIT_END + 0x0059, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_17_1 = UNIT_END + 0x005A, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_17_2 = UNIT_END + 0x005B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_17_3 = UNIT_END + 0x005C, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_17_5 = UNIT_END + 0x005E, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_18_1 = UNIT_END + 0x005F, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_18_2 = UNIT_END + 0x0060, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_18_3 = UNIT_END + 0x0061, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_18_5 = UNIT_END + 0x0063, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_19_1 = UNIT_END + 0x0064, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_19_2 = UNIT_END + 0x0065, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_19_3 = UNIT_END + 0x0066, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_19_5 = UNIT_END + 0x0068, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_20_1 = UNIT_END + 0x0069, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_20_2 = UNIT_END + 0x006A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_20_3 = UNIT_END + 0x006B, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_20_5 = UNIT_END + 0x006D, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_21_1 = UNIT_END + 0x006E, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_21_2 = UNIT_END + 0x006F, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_21_3 = UNIT_END + 0x0070, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_21_5 = UNIT_END + 0x0072, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_22_1 = UNIT_END + 0x0073, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_22_2 = UNIT_END + 0x0074, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_22_3 = UNIT_END + 0x0075, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_22_5 = UNIT_END + 0x0077, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_23_1 = UNIT_END + 0x0078, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_23_2 = UNIT_END + 0x0079, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_23_3 = UNIT_END + 0x007A, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_23_5 = UNIT_END + 0x007C, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_24_1 = UNIT_END + 0x007D, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_24_2 = UNIT_END + 0x007E, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_24_3 = UNIT_END + 0x007F, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_24_5 = UNIT_END + 0x0081, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_25_1 = UNIT_END + 0x0082, // Size: 1, Type: INT, Flags: PARTY_MEMBER
PLAYER_QUEST_LOG_25_2 = UNIT_END + 0x0083, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_QUEST_LOG_25_3 = UNIT_END + 0x0084, // Size: 2, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_QUEST_LOG_25_5 = UNIT_END + 0x0086, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_VISIBLE_ITEM_1_ENTRYID = UNIT_END + 0x0087, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_1_ENCHANTMENT = UNIT_END + 0x0088, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_2_ENTRYID = UNIT_END + 0x0089, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_2_ENCHANTMENT = UNIT_END + 0x008A, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_3_ENTRYID = UNIT_END + 0x008B, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_3_ENCHANTMENT = UNIT_END + 0x008C, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_4_ENTRYID = UNIT_END + 0x008D, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_4_ENCHANTMENT = UNIT_END + 0x008E, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_5_ENTRYID = UNIT_END + 0x008F, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_5_ENCHANTMENT = UNIT_END + 0x0090, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_6_ENTRYID = UNIT_END + 0x0091, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_6_ENCHANTMENT = UNIT_END + 0x0092, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_7_ENTRYID = UNIT_END + 0x0093, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_7_ENCHANTMENT = UNIT_END + 0x0094, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_8_ENTRYID = UNIT_END + 0x0095, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_8_ENCHANTMENT = UNIT_END + 0x0096, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_9_ENTRYID = UNIT_END + 0x0097, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_9_ENCHANTMENT = UNIT_END + 0x0098, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_10_ENTRYID = UNIT_END + 0x0099, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_10_ENCHANTMENT = UNIT_END + 0x009A, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_11_ENTRYID = UNIT_END + 0x009B, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_11_ENCHANTMENT = UNIT_END + 0x009C, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_12_ENTRYID = UNIT_END + 0x009D, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_12_ENCHANTMENT = UNIT_END + 0x009E, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_13_ENTRYID = UNIT_END + 0x009F, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_13_ENCHANTMENT = UNIT_END + 0x00A0, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_14_ENTRYID = UNIT_END + 0x00A1, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_14_ENCHANTMENT = UNIT_END + 0x00A2, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_15_ENTRYID = UNIT_END + 0x00A3, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_15_ENCHANTMENT = UNIT_END + 0x00A4, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_ENTRYID = UNIT_END + 0x00A5, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_16_ENCHANTMENT = UNIT_END + 0x00A6, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_ENTRYID = UNIT_END + 0x00A7, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_17_ENCHANTMENT = UNIT_END + 0x00A8, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_ENTRYID = UNIT_END + 0x00A9, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_18_ENCHANTMENT = UNIT_END + 0x00AA, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_ENTRYID = UNIT_END + 0x00AB, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_VISIBLE_ITEM_19_ENCHANTMENT = UNIT_END + 0x00AC, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
PLAYER_CHOSEN_TITLE = UNIT_END + 0x00AD, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_FAKE_INEBRIATION = UNIT_END + 0x00AE, // Size: 1, Type: INT, Flags: PUBLIC
PLAYER_FIELD_PAD_0 = UNIT_END + 0x00AF, // Size: 1, Type: INT, Flags: NONE
PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x00B0, // Size: 46, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_PACK_SLOT_1 = UNIT_END + 0x00DE, // Size: 32, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_BANK_SLOT_1 = UNIT_END + 0x00FE, // Size: 56, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_BANKBAG_SLOT_1 = UNIT_END + 0x0136, // Size: 14, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_VENDORBUYBACK_SLOT_1 = UNIT_END + 0x0144, // Size: 24, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_KEYRING_SLOT_1 = UNIT_END + 0x015C, // Size: 64, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_CURRENCYTOKEN_SLOT_1 = UNIT_END + 0x019C, // Size: 64, Type: LONG, Flags: PRIVATE
PLAYER_FARSIGHT = UNIT_END + 0x01DC, // Size: 2, Type: LONG, Flags: PRIVATE
PLAYER__FIELD_KNOWN_TITLES = UNIT_END + 0x01DE, // Size: 2, Type: LONG, Flags: PRIVATE
PLAYER__FIELD_KNOWN_TITLES1 = UNIT_END + 0x01E0, // Size: 2, Type: LONG, Flags: PRIVATE
PLAYER__FIELD_KNOWN_TITLES2 = UNIT_END + 0x01E2, // Size: 2, Type: LONG, Flags: PRIVATE
PLAYER_FIELD_KNOWN_CURRENCIES = UNIT_END + 0x01E4, // Size: 2, Type: LONG, Flags: PRIVATE
PLAYER_XP = UNIT_END + 0x01E6, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x01E7, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_SKILL_INFO_1_1 = UNIT_END + 0x01E8, // Size: 384, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_CHARACTER_POINTS1 = UNIT_END + 0x0368, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_CHARACTER_POINTS2 = UNIT_END + 0x0369, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_TRACK_CREATURES = UNIT_END + 0x036A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_TRACK_RESOURCES = UNIT_END + 0x036B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x036C, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x036D, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x036E, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_EXPERTISE = UNIT_END + 0x036F, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_OFFHAND_EXPERTISE = UNIT_END + 0x0370, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x0371, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x0372, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_OFFHAND_CRIT_PERCENTAGE = UNIT_END + 0x0373, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_SPELL_CRIT_PERCENTAGE1 = UNIT_END + 0x0374, // Size: 7, Type: FLOAT, Flags: PRIVATE
PLAYER_SHIELD_BLOCK = UNIT_END + 0x037B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE = UNIT_END + 0x037C, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x037D, // Size: 128, Type: BYTES, Flags: PRIVATE
PLAYER_REST_STATE_EXPERIENCE = UNIT_END + 0x03FD, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_COINAGE = UNIT_END + 0x03FE, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x03FF, // Size: 7, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x0406, // Size: 7, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x040D, // Size: 7, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x0414, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_HEALING_PCT = UNIT_END + 0x0415, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_FIELD_MOD_HEALING_DONE_PCT = UNIT_END + 0x0416, // Size: 1, Type: FLOAT, Flags: PRIVATE
PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x0417, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x0418, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BYTES = UNIT_END + 0x0419, // Size: 1, Type: BYTES, Flags: PRIVATE
PLAYER_AMMO_ID = UNIT_END + 0x041A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_SELF_RES_SPELL = UNIT_END + 0x041B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x041C, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x041D, // Size: 12, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x0429, // Size: 12, Type: INT, Flags: PRIVATE
PLAYER_FIELD_KILLS = UNIT_END + 0x0435, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE
PLAYER_FIELD_TODAY_CONTRIBUTION = UNIT_END + 0x0436, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_YESTERDAY_CONTRIBUTION = UNIT_END + 0x0437, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS = UNIT_END + 0x0438, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_BYTES2 = UNIT_END + 0x0439, // Size: 1, Type: 6, Flags: PRIVATE
PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x043A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x043B, // Size: 25, Type: INT, Flags: PRIVATE
PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0x0454, // Size: 21, Type: INT, Flags: PRIVATE
PLAYER_FIELD_HONOR_CURRENCY = UNIT_END + 0x0469, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_ARENA_CURRENCY = UNIT_END + 0x046A, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0x046B, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_FIELD_DAILY_QUESTS_1 = UNIT_END + 0x046C, // Size: 25, Type: INT, Flags: PRIVATE
PLAYER_RUNE_REGEN_1 = UNIT_END + 0x0485, // Size: 4, Type: FLOAT, Flags: PRIVATE
PLAYER_NO_REAGENT_COST_1 = UNIT_END + 0x0489, // Size: 3, Type: INT, Flags: PRIVATE
PLAYER_FIELD_GLYPH_SLOTS_1 = UNIT_END + 0x048C, // Size: 6, Type: INT, Flags: PRIVATE
PLAYER_FIELD_GLYPHS_1 = UNIT_END + 0x0492, // Size: 6, Type: INT, Flags: PRIVATE
PLAYER_GLYPHS_ENABLED = UNIT_END + 0x0498, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_PET_SPELL_POWER = UNIT_END + 0x0499, // Size: 1, Type: INT, Flags: PRIVATE
PLAYER_END = UNIT_END + 0x049A,
PLAYER_END_6005 = UNIT_END + 0x0446,
};
enum EGameObjectFields
{
OBJECT_FIELD_CREATED_BY = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
GAMEOBJECT_DISPLAYID = OBJECT_END + 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_FLAGS = OBJECT_END + 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_PARENTROTATION = OBJECT_END + 0x0004, // Size: 4, Type: FLOAT, Flags: PUBLIC
GAMEOBJECT_DYNAMIC = OBJECT_END + 0x0008, // Size: 1, Type: TWO_SHORT, Flags: DYNAMIC
GAMEOBJECT_FACTION = OBJECT_END + 0x0009, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_LEVEL = OBJECT_END + 0x000A, // Size: 1, Type: INT, Flags: PUBLIC
GAMEOBJECT_BYTES_1 = OBJECT_END + 0x000B, // Size: 1, Type: BYTES, Flags: PUBLIC
GAMEOBJECT_END = OBJECT_END + 0x000C,
GAMEOBJECT_END_6005 = OBJECT_END + 0x0014,
};
enum EDynamicObjectFields
{
DYNAMICOBJECT_CASTER = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
DYNAMICOBJECT_BYTES = OBJECT_END + 0x0002, // Size: 1, Type: BYTES, Flags: PUBLIC
DYNAMICOBJECT_SPELLID = OBJECT_END + 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
DYNAMICOBJECT_RADIUS = OBJECT_END + 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
DYNAMICOBJECT_CASTTIME = OBJECT_END + 0x0005, // Size: 1, Type: INT, Flags: PUBLIC
DYNAMICOBJECT_END = OBJECT_END + 0x0006,
CORPSE_END = OBJECT_END + 0x001E,
ITEM_END_6005 = OBJECT_END + 0x002A,
CONTAINER_END_6005 = ITEM_END_6005 + 0x003A,
UNIT_END_6005 = OBJECT_END + 0x00B6,
PLAYER_END_6005 = UNIT_END_6005 + 0x0446,
GAMEOBJECT_END_6005 = OBJECT_END + 0x0014,
};
enum ECorpseFields
enum UpdateFieldName
{
CORPSE_FIELD_OWNER = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
CORPSE_FIELD_PARTY = OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x0004, // Size: 1, Type: INT, Flags: PUBLIC
CORPSE_FIELD_ITEM = OBJECT_END + 0x0005, // Size: 19, Type: INT, Flags: PUBLIC
CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x0018, // Size: 1, Type: BYTES, Flags: PUBLIC
CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x0019, // Size: 1, Type: BYTES, Flags: PUBLIC
CORPSE_FIELD_GUILD = OBJECT_END + 0x001A, // Size: 1, Type: INT, Flags: PUBLIC
CORPSE_FIELD_FLAGS = OBJECT_END + 0x001B, // Size: 1, Type: INT, Flags: PUBLIC
CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x001C, // Size: 1, Type: INT, Flags: DYNAMIC
CORPSE_FIELD_PAD = OBJECT_END + 0x001D, // Size: 1, Type: INT, Flags: NONE
CORPSE_END = OBJECT_END + 0x001E,
//This is just an list of updatefield names. sorted alphabetically
//ToDo: Sort in a way that makes sense!!! (All, WoW, TBC, WoTLK)
OBJECT_FIELD_ENTRY,
OBJECT_FIELD_GUID,
OBJECT_FIELD_GUID_LOW,
OBJECT_FIELD_GUID_HIGH,
OBJECT_FIELD_PADDING,
OBJECT_FIELD_SCALE_X,
OBJECT_FIELD_TYPE,
ITEM_FIELD_CONTAINED,
ITEM_FIELD_CREATE_PLAYED_TIME,
ITEM_FIELD_CREATOR,
ITEM_FIELD_DURABILITY,
ITEM_FIELD_DURATION,
ITEM_FIELD_ENCHANTMENT,
ITEM_FIELD_ENCHANTMENT_1_1,
ITEM_FIELD_ENCHANTMENT_1_3,
ITEM_FIELD_ENCHANTMENT_10_1,
ITEM_FIELD_ENCHANTMENT_10_3,
ITEM_FIELD_ENCHANTMENT_11_1,
ITEM_FIELD_ENCHANTMENT_11_3,
ITEM_FIELD_ENCHANTMENT_12_1,
ITEM_FIELD_ENCHANTMENT_12_3,
ITEM_FIELD_ENCHANTMENT_2_1,
ITEM_FIELD_ENCHANTMENT_2_3,
ITEM_FIELD_ENCHANTMENT_3_1,
ITEM_FIELD_ENCHANTMENT_3_3,
ITEM_FIELD_ENCHANTMENT_4_1,
ITEM_FIELD_ENCHANTMENT_4_3,
ITEM_FIELD_ENCHANTMENT_5_1,
ITEM_FIELD_ENCHANTMENT_5_3,
ITEM_FIELD_ENCHANTMENT_6_1,
ITEM_FIELD_ENCHANTMENT_6_3,
ITEM_FIELD_ENCHANTMENT_7_1,
ITEM_FIELD_ENCHANTMENT_7_3,
ITEM_FIELD_ENCHANTMENT_8_1,
ITEM_FIELD_ENCHANTMENT_8_3,
ITEM_FIELD_ENCHANTMENT_9_1,
ITEM_FIELD_ENCHANTMENT_9_3,
ITEM_FIELD_FLAGS,
ITEM_FIELD_GIFTCREATOR,
ITEM_FIELD_ITEM_TEXT_ID,
ITEM_FIELD_MAXDURABILITY,
ITEM_FIELD_OWNER,
ITEM_FIELD_PAD,
ITEM_FIELD_PROPERTY_SEED,
ITEM_FIELD_RANDOM_PROPERTIES_ID,
ITEM_FIELD_SPELL_CHARGES,
ITEM_FIELD_SPELL_CHARGES_01,
ITEM_FIELD_SPELL_CHARGES_02,
ITEM_FIELD_SPELL_CHARGES_03,
ITEM_FIELD_SPELL_CHARGES_04,
ITEM_FIELD_STACK_COUNT,
CONTAINER_ALIGN_PAD,
CONTAINER_FIELD_NUM_SLOTS,
CONTAINER_FIELD_SLOT_1,
CONTAINER_FIELD_SLOT_LAST,
UNIT_CHANNEL_SPELL,
UNIT_CREATED_BY_SPELL,
UNIT_DYNAMIC_FLAGS,
UNIT_FIELD_ATTACK_POWER,
UNIT_FIELD_ATTACK_POWER_MODS,
UNIT_FIELD_ATTACK_POWER_MULTIPLIER,
UNIT_FIELD_AURA,
UNIT_FIELD_AURA_LAST,
UNIT_FIELD_AURAAPPLICATIONS,
UNIT_FIELD_AURAAPPLICATIONS_LAST,
UNIT_FIELD_AURAFLAGS,
UNIT_FIELD_AURAFLAGS_01,
UNIT_FIELD_AURAFLAGS_02,
UNIT_FIELD_AURAFLAGS_03,
UNIT_FIELD_AURAFLAGS_04,
UNIT_FIELD_AURAFLAGS_05,
UNIT_FIELD_AURALEVELS,
UNIT_FIELD_AURALEVELS_LAST,
UNIT_FIELD_AURASTATE,
UNIT_FIELD_BASE_HEALTH,
UNIT_FIELD_BASE_MANA,
UNIT_FIELD_BASEATTACKTIME,
UNIT_FIELD_BOUNDINGRADIUS,
UNIT_FIELD_BYTES_0,
UNIT_FIELD_BYTES_1,
UNIT_FIELD_BYTES_2,
UNIT_FIELD_CHANNEL_OBJECT,
UNIT_FIELD_CHARM,
UNIT_FIELD_CHARMEDBY,
UNIT_FIELD_COMBATREACH,
UNIT_FIELD_CREATEDBY,
UNIT_FIELD_CRITTER,
UNIT_FIELD_DISPLAYID,
UNIT_FIELD_FACTIONTEMPLATE,
UNIT_FIELD_FLAGS,
UNIT_FIELD_FLAGS_2,
UNIT_FIELD_HEALTH,
UNIT_FIELD_HOVERHEIGHT,
UNIT_FIELD_LEVEL,
UNIT_FIELD_MAXDAMAGE,
UNIT_FIELD_MAXHEALTH,
UNIT_FIELD_MAXHEALTHMODIFIER,
UNIT_FIELD_MAXOFFHANDDAMAGE,
UNIT_FIELD_MAXPOWER1,
UNIT_FIELD_MAXPOWER2,
UNIT_FIELD_MAXPOWER3,
UNIT_FIELD_MAXPOWER4,
UNIT_FIELD_MAXPOWER5,
UNIT_FIELD_MAXPOWER6,
UNIT_FIELD_MAXPOWER7,
UNIT_FIELD_MAXRANGEDDAMAGE,
UNIT_FIELD_MINDAMAGE,
UNIT_FIELD_MINOFFHANDDAMAGE,
UNIT_FIELD_MINRANGEDDAMAGE,
UNIT_FIELD_MOUNTDISPLAYID,
UNIT_FIELD_NATIVEDISPLAYID,
UNIT_FIELD_NEGSTAT0,
UNIT_FIELD_NEGSTAT1,
UNIT_FIELD_NEGSTAT2,
UNIT_FIELD_NEGSTAT3,
UNIT_FIELD_NEGSTAT4,
UNIT_FIELD_OFFHANDATTACKTIME,
UNIT_FIELD_PADDING,
UNIT_FIELD_PERSUADED,
UNIT_FIELD_PET_NAME_TIMESTAMP,
UNIT_FIELD_PETEXPERIENCE,
UNIT_FIELD_PETNEXTLEVELEXP,
UNIT_FIELD_PETNUMBER,
UNIT_FIELD_POSSTAT0,
UNIT_FIELD_POSSTAT1,
UNIT_FIELD_POSSTAT2,
UNIT_FIELD_POSSTAT3,
UNIT_FIELD_POSSTAT4,
UNIT_FIELD_POWER_COST_MODIFIER,
UNIT_FIELD_POWER_COST_MODIFIER_01,
UNIT_FIELD_POWER_COST_MODIFIER_02,
UNIT_FIELD_POWER_COST_MODIFIER_03,
UNIT_FIELD_POWER_COST_MODIFIER_04,
UNIT_FIELD_POWER_COST_MODIFIER_05,
UNIT_FIELD_POWER_COST_MODIFIER_06,
UNIT_FIELD_POWER_COST_MULTIPLIER,
UNIT_FIELD_POWER_COST_MULTIPLIER_01,
UNIT_FIELD_POWER_COST_MULTIPLIER_02,
UNIT_FIELD_POWER_COST_MULTIPLIER_03,
UNIT_FIELD_POWER_COST_MULTIPLIER_04,
UNIT_FIELD_POWER_COST_MULTIPLIER_05,
UNIT_FIELD_POWER_COST_MULTIPLIER_06,
UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER,
UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER,
UNIT_FIELD_POWER1,
UNIT_FIELD_POWER2,
UNIT_FIELD_POWER3,
UNIT_FIELD_POWER4,
UNIT_FIELD_POWER5,
UNIT_FIELD_POWER6,
UNIT_FIELD_POWER7,
UNIT_FIELD_RANGED_ATTACK_POWER,
UNIT_FIELD_RANGED_ATTACK_POWER_MODS,
UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER,
UNIT_FIELD_RANGEDATTACKTIME,
UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE,
UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE,
UNIT_FIELD_RESISTANCES,
UNIT_FIELD_RESISTANCES_01,
UNIT_FIELD_RESISTANCES_02,
UNIT_FIELD_RESISTANCES_03,
UNIT_FIELD_RESISTANCES_04,
UNIT_FIELD_RESISTANCES_05,
UNIT_FIELD_RESISTANCES_06,
UNIT_FIELD_STAT0,
UNIT_FIELD_STAT1,
UNIT_FIELD_STAT2,
UNIT_FIELD_STAT3,
UNIT_FIELD_STAT4,
UNIT_FIELD_SUMMON,
UNIT_FIELD_SUMMONEDBY,
UNIT_FIELD_TARGET,
UNIT_MOD_CAST_SPEED,
UNIT_NPC_EMOTESTATE,
UNIT_NPC_FLAGS,
UNIT_TRAINING_POINTS,
UNIT_VIRTUAL_ITEM_INFO,
UNIT_VIRTUAL_ITEM_INFO_01,
UNIT_VIRTUAL_ITEM_INFO_02,
UNIT_VIRTUAL_ITEM_INFO_03,
UNIT_VIRTUAL_ITEM_INFO_04,
UNIT_VIRTUAL_ITEM_INFO_05,
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY,
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_01,
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY_02,
UNIT_VIRTUAL_ITEM_SLOT_ID,
PLAYER__FIELD_KNOWN_TITLES,
PLAYER__FIELD_KNOWN_TITLES1,
PLAYER__FIELD_KNOWN_TITLES2,
PLAYER_AMMO_ID,
PLAYER_BLOCK_PERCENTAGE,
PLAYER_BYTES,
PLAYER_BYTES_2,
PLAYER_BYTES_3,
PLAYER_CHARACTER_POINTS1,
PLAYER_CHARACTER_POINTS2,
PLAYER_CHOSEN_TITLE,
PLAYER_CRIT_PERCENTAGE,
PLAYER_DODGE_PERCENTAGE,
PLAYER_DUEL_ARBITER,
PLAYER_DUEL_TEAM,
PLAYER_EXPERTISE,
PLAYER_EXPLORED_ZONES_1,
PLAYER_FAKE_INEBRIATION,
PLAYER_FARSIGHT,
PLAYER_FIELD_ARENA_CURRENCY,
PLAYER_FIELD_ARENA_TEAM_INFO_1_1,
PLAYER_FIELD_BANK_SLOT_1,
PLAYER_FIELD_BANK_SLOT_LAST,
PLAYER_FIELD_BANKBAG_SLOT_1,
PLAYER_FIELD_BANKBAG_SLOT_LAST,
PLAYER_FIELD_BUYBACK_PRICE_1,
PLAYER_FIELD_BUYBACK_PRICE_LAST,
PLAYER_FIELD_BUYBACK_TIMESTAMP_1,
PLAYER_FIELD_BUYBACK_TIMESTAMP_LAST,
PLAYER_FIELD_BYTES,
PLAYER_FIELD_BYTES2,
PLAYER_FIELD_COINAGE,
PLAYER_FIELD_COMBAT_RATING_1,
PLAYER_FIELD_COMBO_TARGET,
PLAYER_FIELD_CURRENCYTOKEN_SLOT_1,
PLAYER_FIELD_DAILY_QUESTS_1,
PLAYER_FIELD_GLYPH_SLOTS_1,
PLAYER_FIELD_GLYPHS_1,
PLAYER_FIELD_HONOR_CURRENCY,
PLAYER_FIELD_INV_SLOT_HEAD,
PLAYER_FIELD_KEYRING_SLOT_1,
PLAYER_FIELD_KEYRING_SLOT_LAST,
PLAYER_FIELD_KILLS,
PLAYER_FIELD_KNOWN_CURRENCIES,
PLAYER_FIELD_LAST_WEEK_CONTRIBUTION,
PLAYER_FIELD_LAST_WEEK_KILLS,
PLAYER_FIELD_LAST_WEEK_RANK,
PLAYER_FIELD_LIFETIME_DISHONORABLE_KILLS,
PLAYER_FIELD_LIFETIME_HONORABLE_KILLS,
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS,
PLAYER_FIELD_MAX_LEVEL,
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG,
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT,
PLAYER_FIELD_MOD_DAMAGE_DONE_POS,
PLAYER_FIELD_MOD_HEALING_DONE_PCT,
PLAYER_FIELD_MOD_HEALING_DONE_POS,
PLAYER_FIELD_MOD_HEALING_PCT,
PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE,
PLAYER_FIELD_MOD_TARGET_RESISTANCE,
PLAYER_FIELD_NEGSTAT0,
PLAYER_FIELD_NEGSTAT1,
PLAYER_FIELD_NEGSTAT2,
PLAYER_FIELD_NEGSTAT3,
PLAYER_FIELD_NEGSTAT4,
PLAYER_FIELD_PACK_SLOT_1,
PLAYER_FIELD_PACK_SLOT_LAST,
PLAYER_FIELD_PAD_0,
PLAYER_FIELD_POSSTAT0,
PLAYER_FIELD_POSSTAT1,
PLAYER_FIELD_POSSTAT2,
PLAYER_FIELD_POSSTAT3,
PLAYER_FIELD_POSSTAT4,
PLAYER_FIELD_PVP_MEDALS,
PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE,
PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE,
PLAYER_FIELD_SESSION_KILLS,
PLAYER_FIELD_THIS_WEEK_CONTRIBUTION,
PLAYER_FIELD_THIS_WEEK_KILLS,
PLAYER_FIELD_TODAY_CONTRIBUTION,
PLAYER_FIELD_VENDORBUYBACK_SLOT_1,
PLAYER_FIELD_VENDORBUYBACK_SLOT_LAST,
PLAYER_FIELD_WATCHED_FACTION_INDEX,
PLAYER_FIELD_YESTERDAY_CONTRIBUTION,
PLAYER_FIELD_YESTERDAY_KILLS,
PLAYER_FLAGS,
PLAYER_GLYPHS_ENABLED,
PLAYER_GUILD_TIMESTAMP,
PLAYER_GUILDID,
PLAYER_GUILDRANK,
PLAYER_NEXT_LEVEL_XP,
PLAYER_NO_REAGENT_COST_1,
PLAYER_OFFHAND_CRIT_PERCENTAGE,
PLAYER_OFFHAND_EXPERTISE,
PLAYER_PARRY_PERCENTAGE,
PLAYER_PET_SPELL_POWER,
PLAYER_QUEST_LOG_1_1,
PLAYER_QUEST_LOG_1_2,
PLAYER_QUEST_LOG_1_3,
PLAYER_QUEST_LOG_1_4,
PLAYER_QUEST_LOG_10_1,
PLAYER_QUEST_LOG_10_2,
PLAYER_QUEST_LOG_10_3,
PLAYER_QUEST_LOG_10_5,
PLAYER_QUEST_LOG_11_1,
PLAYER_QUEST_LOG_11_2,
PLAYER_QUEST_LOG_11_3,
PLAYER_QUEST_LOG_11_5,
PLAYER_QUEST_LOG_12_1,
PLAYER_QUEST_LOG_12_2,
PLAYER_QUEST_LOG_12_3,
PLAYER_QUEST_LOG_12_5,
PLAYER_QUEST_LOG_13_1,
PLAYER_QUEST_LOG_13_2,
PLAYER_QUEST_LOG_13_3,
PLAYER_QUEST_LOG_13_5,
PLAYER_QUEST_LOG_14_1,
PLAYER_QUEST_LOG_14_2,
PLAYER_QUEST_LOG_14_3,
PLAYER_QUEST_LOG_14_5,
PLAYER_QUEST_LOG_15_1,
PLAYER_QUEST_LOG_15_2,
PLAYER_QUEST_LOG_15_3,
PLAYER_QUEST_LOG_15_5,
PLAYER_QUEST_LOG_16_1,
PLAYER_QUEST_LOG_16_2,
PLAYER_QUEST_LOG_16_3,
PLAYER_QUEST_LOG_16_5,
PLAYER_QUEST_LOG_17_1,
PLAYER_QUEST_LOG_17_2,
PLAYER_QUEST_LOG_17_3,
PLAYER_QUEST_LOG_17_5,
PLAYER_QUEST_LOG_18_1,
PLAYER_QUEST_LOG_18_2,
PLAYER_QUEST_LOG_18_3,
PLAYER_QUEST_LOG_18_5,
PLAYER_QUEST_LOG_19_1,
PLAYER_QUEST_LOG_19_2,
PLAYER_QUEST_LOG_19_3,
PLAYER_QUEST_LOG_19_5,
PLAYER_QUEST_LOG_2_1,
PLAYER_QUEST_LOG_2_2,
PLAYER_QUEST_LOG_2_3,
PLAYER_QUEST_LOG_2_5,
PLAYER_QUEST_LOG_20_1,
PLAYER_QUEST_LOG_20_2,
PLAYER_QUEST_LOG_20_3,
PLAYER_QUEST_LOG_20_5,
PLAYER_QUEST_LOG_21_1,
PLAYER_QUEST_LOG_21_2,
PLAYER_QUEST_LOG_21_3,
PLAYER_QUEST_LOG_21_5,
PLAYER_QUEST_LOG_22_1,
PLAYER_QUEST_LOG_22_2,
PLAYER_QUEST_LOG_22_3,
PLAYER_QUEST_LOG_22_5,
PLAYER_QUEST_LOG_23_1,
PLAYER_QUEST_LOG_23_2,
PLAYER_QUEST_LOG_23_3,
PLAYER_QUEST_LOG_23_5,
PLAYER_QUEST_LOG_24_1,
PLAYER_QUEST_LOG_24_2,
PLAYER_QUEST_LOG_24_3,
PLAYER_QUEST_LOG_24_5,
PLAYER_QUEST_LOG_25_1,
PLAYER_QUEST_LOG_25_2,
PLAYER_QUEST_LOG_25_3,
PLAYER_QUEST_LOG_25_5,
PLAYER_QUEST_LOG_3_1,
PLAYER_QUEST_LOG_3_2,
PLAYER_QUEST_LOG_3_3,
PLAYER_QUEST_LOG_3_5,
PLAYER_QUEST_LOG_4_1,
PLAYER_QUEST_LOG_4_2,
PLAYER_QUEST_LOG_4_3,
PLAYER_QUEST_LOG_4_5,
PLAYER_QUEST_LOG_5_1,
PLAYER_QUEST_LOG_5_2,
PLAYER_QUEST_LOG_5_3,
PLAYER_QUEST_LOG_5_5,
PLAYER_QUEST_LOG_6_1,
PLAYER_QUEST_LOG_6_2,
PLAYER_QUEST_LOG_6_3,
PLAYER_QUEST_LOG_6_5,
PLAYER_QUEST_LOG_7_1,
PLAYER_QUEST_LOG_7_2,
PLAYER_QUEST_LOG_7_3,
PLAYER_QUEST_LOG_7_5,
PLAYER_QUEST_LOG_8_1,
PLAYER_QUEST_LOG_8_2,
PLAYER_QUEST_LOG_8_3,
PLAYER_QUEST_LOG_8_5,
PLAYER_QUEST_LOG_9_1,
PLAYER_QUEST_LOG_9_2,
PLAYER_QUEST_LOG_9_3,
PLAYER_QUEST_LOG_9_5,
PLAYER_QUEST_LOG_LAST_1,
PLAYER_QUEST_LOG_LAST_2,
PLAYER_QUEST_LOG_LAST_3,
PLAYER_RANGED_CRIT_PERCENTAGE,
PLAYER_REST_STATE_EXPERIENCE,
PLAYER_RUNE_REGEN_1,
PLAYER_SELF_RES_SPELL,
PLAYER_SHIELD_BLOCK,
PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE,
PLAYER_SKILL_INFO_1_1,
PLAYER_SPELL_CRIT_PERCENTAGE1,
PLAYER_TRACK_CREATURES,
PLAYER_TRACK_RESOURCES,
PLAYER_VISIBLE_ITEM_1_0,
PLAYER_VISIBLE_ITEM_1_CREATOR,
PLAYER_VISIBLE_ITEM_1_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_1_ENTRYID,
PLAYER_VISIBLE_ITEM_1_PAD,
PLAYER_VISIBLE_ITEM_1_PROPERTIES,
PLAYER_VISIBLE_ITEM_10_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_10_ENTRYID,
PLAYER_VISIBLE_ITEM_11_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_11_ENTRYID,
PLAYER_VISIBLE_ITEM_12_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_12_ENTRYID,
PLAYER_VISIBLE_ITEM_13_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_13_ENTRYID,
PLAYER_VISIBLE_ITEM_14_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_14_ENTRYID,
PLAYER_VISIBLE_ITEM_15_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_15_ENTRYID,
PLAYER_VISIBLE_ITEM_16_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_16_ENTRYID,
PLAYER_VISIBLE_ITEM_17_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_17_ENTRYID,
PLAYER_VISIBLE_ITEM_18_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_18_ENTRYID,
PLAYER_VISIBLE_ITEM_19_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_19_ENTRYID,
PLAYER_VISIBLE_ITEM_2_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_2_ENTRYID,
PLAYER_VISIBLE_ITEM_3_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_3_ENTRYID,
PLAYER_VISIBLE_ITEM_4_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_4_ENTRYID,
PLAYER_VISIBLE_ITEM_5_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_5_ENTRYID,
PLAYER_VISIBLE_ITEM_6_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_6_ENTRYID,
PLAYER_VISIBLE_ITEM_7_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_7_ENTRYID,
PLAYER_VISIBLE_ITEM_8_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_8_ENTRYID,
PLAYER_VISIBLE_ITEM_9_ENCHANTMENT,
PLAYER_VISIBLE_ITEM_9_ENTRYID,
PLAYER_VISIBLE_ITEM_LAST_0,
PLAYER_VISIBLE_ITEM_LAST_CREATOR,
PLAYER_VISIBLE_ITEM_LAST_PAD,
PLAYER_VISIBLE_ITEM_LAST_PROPERTIES,
PLAYER_XP,
OBJECT_FIELD_CREATED_BY,
GAMEOBJECT_ANIMPROGRESS,
GAMEOBJECT_ARTKIT,
GAMEOBJECT_BYTES_1,
GAMEOBJECT_DISPLAYID,
GAMEOBJECT_DYN_FLAGS,
GAMEOBJECT_DYNAMIC,
GAMEOBJECT_FACING,
GAMEOBJECT_FACTION,
GAMEOBJECT_FLAGS,
GAMEOBJECT_LEVEL,
GAMEOBJECT_PADDING,
GAMEOBJECT_PARENTROTATION,
GAMEOBJECT_POS_X,
GAMEOBJECT_POS_Y,
GAMEOBJECT_POS_Z,
GAMEOBJECT_ROTATION,
GAMEOBJECT_STATE,
GAMEOBJECT_TYPE_ID,
DYNAMICOBJECT_BYTES,
DYNAMICOBJECT_CASTER,
DYNAMICOBJECT_CASTTIME,
DYNAMICOBJECT_FACING,
DYNAMICOBJECT_PAD,
DYNAMICOBJECT_POS_X,
DYNAMICOBJECT_POS_Y,
DYNAMICOBJECT_POS_Z,
DYNAMICOBJECT_RADIUS,
DYNAMICOBJECT_SPELLID,
CORPSE_FIELD_BYTES_1,
CORPSE_FIELD_BYTES_2,
CORPSE_FIELD_DISPLAY_ID,
CORPSE_FIELD_DYNAMIC_FLAGS,
CORPSE_FIELD_FACING,
CORPSE_FIELD_FLAGS,
CORPSE_FIELD_GUILD,
CORPSE_FIELD_ITEM,
CORPSE_FIELD_OWNER,
CORPSE_FIELD_PAD,
CORPSE_FIELD_PARTY,
CORPSE_FIELD_POS_X,
CORPSE_FIELD_POS_Y,
CORPSE_FIELD_POS_Z,
UPDATEFIELDS_NAME_COUNT
};
#endif

View File

@ -23,6 +23,7 @@ struct OpcodeHandler
};
uint32 Object::maxvalues[TYPEID_MAX];
UpdateField Object::updatefields[UPDATEFIELDS_NAME_COUNT];
WorldSession::WorldSession(PseuInstance *in)
{
@ -38,33 +39,8 @@ WorldSession::WorldSession(PseuInstance *in)
objmgr.SetInstance(in);
_lag_ms = 0;
//...
switch(in->GetConf()->client)//TODO: Add TBC/WOTLK cases
{
case CLIENT_CLASSIC_WOW:
{
Object::maxvalues[TYPEID_OBJECT]=OBJECT_END;
Object::maxvalues[TYPEID_ITEM]=ITEM_END_6005;
Object::maxvalues[TYPEID_CONTAINER]=CONTAINER_END_6005;
Object::maxvalues[TYPEID_UNIT]=UNIT_END_6005;
Object::maxvalues[TYPEID_PLAYER]=PLAYER_END_6005;
Object::maxvalues[TYPEID_GAMEOBJECT]=GAMEOBJECT_END_6005;
Object::maxvalues[TYPEID_DYNAMICOBJECT]=DYNAMICOBJECT_END;
Object::maxvalues[TYPEID_CORPSE]=CORPSE_END;
break;
}
default:
{
Object::maxvalues[TYPEID_OBJECT]=OBJECT_END;
Object::maxvalues[TYPEID_ITEM]=ITEM_END;
Object::maxvalues[TYPEID_CONTAINER]=CONTAINER_END;
Object::maxvalues[TYPEID_UNIT]=UNIT_END;
Object::maxvalues[TYPEID_PLAYER]=PLAYER_END;
Object::maxvalues[TYPEID_GAMEOBJECT]=GAMEOBJECT_END;
Object::maxvalues[TYPEID_DYNAMICOBJECT]=DYNAMICOBJECT_END;
Object::maxvalues[TYPEID_CORPSE]=CORPSE_END;
break;
}
}
_SetupObjectFields();
in->GetScripts()->RunScriptIfExists("_onworldsessioncreate");

View File

@ -126,6 +126,7 @@ private:
void _DoTimedActions(void);
void _DelayWorldPacket(WorldPacket&, uint32);
void _HandleDelayedPackets(void);
void _SetupObjectFields(void);
// Opcode Handlers
void _HandleAuthChallengeOpcode(WorldPacket& recvPacket);