From 8ca9e8949fef57999e1ca8992314bc4843135477 Mon Sep 17 00:00:00 2001 From: shlainn Date: Sun, 25 Sep 2011 22:59:36 +0200 Subject: [PATCH] * Fix UpdateData for 2.4.3 --- src/Client/World/UpdateData.cpp | 16 +- src/Client/World/UpdateFields.cpp | 423 +++++++++++++++++++++++++++++- src/Client/World/UpdateFields.h | 109 +++++++- 3 files changed, 541 insertions(+), 7 deletions(-) diff --git a/src/Client/World/UpdateData.cpp b/src/Client/World/UpdateData.cpp index 9d8da2a..6811bd7 100644 --- a/src/Client/World/UpdateData.cpp +++ b/src/Client/World/UpdateData.cpp @@ -40,7 +40,7 @@ void WorldSession::_HandleUpdateObjectOpcode(WorldPacket& recvPacket) uint32 usize, ublocks, readblocks=0; uint64 uguid; recvPacket >> ublocks; // >> hasTransport; - if(GetInstance()->GetConf()->client == CLIENT_CLASSIC_WOW) + if(GetInstance()->GetConf()->client <= CLIENT_TBC) recvPacket >> hasTransport; logdev("UpdateObject: blocks = %u", ublocks); @@ -266,7 +266,7 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r logerror("MovementUpdate for unknown object "I64FMT" typeid=%u",uguid,objtypeid); } - if(client > CLIENT_CLASSIC_WOW) + if(client > CLIENT_TBC) recvPacket >> flags; else { @@ -277,11 +277,17 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r if(flags & UPDATEFLAG_LIVING) { recvPacket >> mi.flags; - if(client > CLIENT_CLASSIC_WOW) + if(client == CLIENT_TBC) + { + uint8 tempUnkFlags; + recvPacket >> tempUnkFlags; + mi.unkFlags = tempUnkFlags; + } + if(client == CLIENT_WOTLK) recvPacket >> mi.unkFlags; recvPacket>> mi.time; - logdev("MovementUpdate: TypeID=%u GUID="I64FMT" pObj=%X flags=%u mi.flags=%u",objtypeid,uguid,obj,flags,mi.flags); + logdev("MovementUpdate: TypeID=%u GUID="I64FMT" pObj=%X flags=%x mi.flags=%x",objtypeid,uguid,obj,flags,mi.flags); recvPacket >> mi.x >> mi.y >> mi.z >> mi.o; logdev("FLOATS: x=%f y=%f z=%f o=%f",mi.x, mi.y, mi.z ,mi.o); @@ -322,7 +328,7 @@ void WorldSession::_MovementUpdate(uint8 objtypeid, uint64 uguid, WorldPacket& r if(client > CLIENT_CLASSIC_WOW) recvPacket >> speedFly >> speedFlyBack; // fly added in 2.0.x recvPacket >> speedTurn; - if(client > CLIENT_CLASSIC_WOW) + if(client > CLIENT_TBC) recvPacket >> speedPitchRate; logdev("MovementUpdate: Got speeds, walk=%f run=%f turn=%f", speedWalk, speedRun, speedTurn); if(u) diff --git a/src/Client/World/UpdateFields.cpp b/src/Client/World/UpdateFields.cpp index fe980d0..7e1db51 100644 --- a/src/Client/World/UpdateFields.cpp +++ b/src/Client/World/UpdateFields.cpp @@ -294,7 +294,428 @@ void WorldSession::_SetupObjectFields() } case CLIENT_TBC: //2.4.3 { - break; //TODO: ADD DATA + uint32 mv[]={ + OBJECT_END, + ITEM_END_8606, + CONTAINER_END, + UNIT_END_8606, + PLAYER_END_8606, + GAMEOBJECT_END_8606, + DYNAMICOBJECT_END_8606, + CORPSE_END_8606 + }; + 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_PROPERTY_SEED ] = UpdateField( mv[TYPEID_OBJECT] + 0x0031 , UF_UINT32); + Object::updatefields[ ITEM_FIELD_ITEM_TEXT_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0032 , UF_UINT32); + Object::updatefields[ ITEM_FIELD_PAD ] = UpdateField( mv[TYPEID_OBJECT] + 0x0039 , UF_UINT32); + Object::updatefields[ ITEM_FIELD_DURABILITY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0034 , UF_UINT32); + Object::updatefields[ ITEM_FIELD_MAXDURABILITY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0035 , 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 ); // 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_FLAGS_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0029 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_AURA ] = UpdateField( mv[TYPEID_OBJECT] + 0x002A , UF_UINT32 ); // Size:56 + Object::updatefields[ UNIT_FIELD_AURAFLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0062 , UF_UINT32 ); // Size:14 + Object::updatefields[ UNIT_FIELD_AURALEVELS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0070 , UF_UINT32 ); // Size:14 + Object::updatefields[ UNIT_FIELD_AURAAPPLICATIONS ] = UpdateField( mv[TYPEID_OBJECT] + 0x007E , UF_UINT32 ); // Size:14 + Object::updatefields[ UNIT_FIELD_AURASTATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x008C , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_BASEATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x008D , UF_UINT64 ); // Size:2 + Object::updatefields[ UNIT_FIELD_OFFHANDATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x008E , UF_UINT64 ); // Size:2 + Object::updatefields[ UNIT_FIELD_RANGEDATTACKTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x008F , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_BOUNDINGRADIUS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0090 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_COMBATREACH ] = UpdateField( mv[TYPEID_OBJECT] + 0x0091 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_DISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0092 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_NATIVEDISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0093 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_MOUNTDISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0094 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_MINDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0095 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_MAXDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0096 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_MINOFFHANDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0097 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_MAXOFFHANDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0098 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_BYTES_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x0099 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_PETNUMBER ] = UpdateField( mv[TYPEID_OBJECT] + 0x009A , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_PET_NAME_TIMESTAMP ] = UpdateField( mv[TYPEID_OBJECT] + 0x009B , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_PETEXPERIENCE ] = UpdateField( mv[TYPEID_OBJECT] + 0x009C , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_PETNEXTLEVELEXP ] = UpdateField( mv[TYPEID_OBJECT] + 0x009D , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_DYNAMIC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x009E , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_CHANNEL_SPELL ] = UpdateField( mv[TYPEID_OBJECT] + 0x009F , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_MOD_CAST_SPEED ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A0 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_CREATED_BY_SPELL ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A1 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_NPC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A2 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_NPC_EMOTESTATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A3 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_TRAINING_POINTS ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A4 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_STAT0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A5 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_STAT1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A6 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_STAT2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A7 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_STAT3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A8 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_STAT4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00A9 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_POSSTAT0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AA , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_POSSTAT1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AB , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_POSSTAT2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AC , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_POSSTAT3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AD , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_POSSTAT4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AE , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_NEGSTAT0 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00AF , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_NEGSTAT1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B0 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_NEGSTAT2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B1 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_NEGSTAT3 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B2 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_NEGSTAT4 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B3 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_RESISTANCES ] = UpdateField( mv[TYPEID_OBJECT] + 0x00B4 , UF_UINT32 ); // Size:7 + Object::updatefields[ UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE ] = UpdateField( mv[TYPEID_OBJECT] + 0x00BB , UF_UINT32 ); // Size:7 + Object::updatefields[ UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE ] = UpdateField( mv[TYPEID_OBJECT] + 0x00C2 , UF_UINT32 ); // Size:7 + Object::updatefields[ UNIT_FIELD_BASE_MANA ] = UpdateField( mv[TYPEID_OBJECT] + 0x00C9 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_BASE_HEALTH ] = UpdateField( mv[TYPEID_OBJECT] + 0x00CA , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_BYTES_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x00CB , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_ATTACK_POWER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00CC , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_ATTACK_POWER_MODS ] = UpdateField( mv[TYPEID_OBJECT] + 0x00CD , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_ATTACK_POWER_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00CE , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00CF , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER_MODS ] = UpdateField( mv[TYPEID_OBJECT] + 0x00D0 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00D1 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_MINRANGEDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x00D2 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_MAXRANGEDDAMAGE ] = UpdateField( mv[TYPEID_OBJECT] + 0x00D3 , UF_UINT32 ); // Size:1 + Object::updatefields[ UNIT_FIELD_POWER_COST_MODIFIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00D4 , UF_UINT32 ); // Size:7 + Object::updatefields[ UNIT_FIELD_POWER_COST_MULTIPLIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00DB , UF_UINT32 ); // Size:7 + Object::updatefields[ UNIT_FIELD_MAXHEALTHMODIFIER ] = UpdateField( mv[TYPEID_OBJECT] + 0x00E2 , UF_UINT32 ); + Object::updatefields[ UNIT_FIELD_PADDING ] = UpdateField( mv[TYPEID_OBJECT] + 0x00E3 , UF_UINT32 ); + + Object::updatefields[ PLAYER_DUEL_ARBITER ] = UpdateField( mv[TYPEID_UNIT] + 0x0000 , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_FLAGS ] = UpdateField( mv[TYPEID_UNIT] + 0x0002 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_GUILDID ] = UpdateField( mv[TYPEID_UNIT] + 0x0003 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_GUILDRANK ] = UpdateField( mv[TYPEID_UNIT] + 0x0004 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_BYTES ] = UpdateField( mv[TYPEID_UNIT] + 0x0005 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PUBLIC + Object::updatefields[ PLAYER_BYTES_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0006 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PUBLIC + Object::updatefields[ PLAYER_BYTES_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0007 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PUBLIC + Object::updatefields[ PLAYER_DUEL_TEAM ] = UpdateField( mv[TYPEID_UNIT] + 0x0008 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_GUILD_TIMESTAMP ] = UpdateField( mv[TYPEID_UNIT] + 0x0009 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_QUEST_LOG_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x000A , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_1_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x000B , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_1_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x000C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_1_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x000D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_2_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x000E , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_2_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x000F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_2_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0010 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_2_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0011 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_3_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0012 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_3_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0013 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_3_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0014 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_3_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0015 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_4_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0016 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_4_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0017 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_4_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0018 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_4_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0019 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_5_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x001A , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_5_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x001B , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_5_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x001C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_5_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x001D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_6_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x001E , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_6_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x001F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_6_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0020 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_6_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0021 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_7_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0022 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_7_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0023 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_7_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0024 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_7_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0025 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_8_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0026 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_8_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0027 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_8_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0028 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_8_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0029 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_9_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x002A , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_9_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x002B , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_9_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x002C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_9_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x002D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_10_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x002E , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_10_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x002F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_10_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0030 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_10_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0031 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_11_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0032 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_11_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0033 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_11_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0034 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_11_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0035 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_12_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0036 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_12_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0037 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_12_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0038 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_12_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0039 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_13_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x003A , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_13_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x003B , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_13_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x003C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_13_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x003D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_14_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x003E , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_14_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x003F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_14_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0040 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_14_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0041 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_15_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0042 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_15_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0043 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_15_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0044 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_15_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0045 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_16_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0046 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_16_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0047 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_16_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0048 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_16_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0049 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_17_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x004A , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_17_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x004B , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_17_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x004C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_17_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x004D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_18_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x004E , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_18_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x004F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_18_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0050 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_18_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0051 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_19_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0052 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_19_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0053 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_19_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0054 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_19_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0055 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_20_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0056 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_20_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0057 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_20_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0058 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_20_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0059 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_21_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x005A , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_21_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x005B , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_21_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x005C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_21_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x005D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_22_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x005E , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_22_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x005F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_22_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0060 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_22_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0061 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_23_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0062 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_23_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0063 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_23_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0064 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_23_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0065 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_24_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0066 , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_24_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0067 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_24_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x0068 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_24_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x0069 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_25_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x006A , UF_UINT32 ); // Size: 1, Type: INT, Flags: GROUP_ONLY + Object::updatefields[ PLAYER_QUEST_LOG_25_2 ] = UpdateField( mv[TYPEID_UNIT] + 0x006B , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_25_3 ] = UpdateField( mv[TYPEID_UNIT] + 0x006C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_QUEST_LOG_25_4 ] = UpdateField( mv[TYPEID_UNIT] + 0x006D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_VISIBLE_ITEM_1_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x006E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_1_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0070 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_1_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x007C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_1_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x007D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_2_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x007E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_2_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0080 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_2_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x008C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_2_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x008D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_3_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x008E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_3_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0090 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_3_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x009C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_3_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x009D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_4_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x009E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_4_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x00A0 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_4_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x00AC , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_4_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x00AD , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_5_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x00AE , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_5_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x00B0 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_5_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x00BC , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_5_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x00BD , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_6_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x00BE , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_6_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x00C0 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_6_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x00CC , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_6_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x00CD , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_7_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x00CE , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_7_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x00D0 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_7_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x00DC , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_7_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x00DD , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_8_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x00DE , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_8_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x00E0 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_8_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x00EC , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_8_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x00ED , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_9_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x00EE , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_9_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x00F0 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_9_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x00FC , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_9_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x00FD , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_10_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x00FE , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_10_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0100 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_10_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x010C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_10_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x010D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_11_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x010E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_11_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0110 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_11_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x011C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_11_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x011D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_12_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x011E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_12_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0120 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_12_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x012C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_12_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x012D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_13_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x012E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_13_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0130 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_13_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x013C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_13_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x013D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_14_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x013E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_14_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0140 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_14_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x014C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_14_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x014D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_15_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x014E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_15_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0150 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_15_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x015C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_15_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x015D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_16_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x015E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_16_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0160 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_16_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x016C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_16_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x016D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_17_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x016E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_17_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0170 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_17_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x017C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_17_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x017D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_18_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x017E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_18_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0180 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_18_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x018C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_18_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x018D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_19_CREATOR ] = UpdateField( mv[TYPEID_UNIT] + 0x018E , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_19_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x0190 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_19_PROPERTIES ] = UpdateField( mv[TYPEID_UNIT] + 0x019C , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PUBLIC + Object::updatefields[ PLAYER_VISIBLE_ITEM_19_PAD ] = UpdateField( mv[TYPEID_UNIT] + 0x019D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_CHOSEN_TITLE ] = UpdateField( mv[TYPEID_UNIT] + 0x019E , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ PLAYER_FIELD_PAD_0 ] = UpdateField( mv[TYPEID_UNIT] + 0x019F , UF_UINT32 ); // Size: 1, Type: INT, Flags: NONE + Object::updatefields[ PLAYER_FIELD_INV_SLOT_HEAD ] = UpdateField( mv[TYPEID_UNIT] + 0x01A0 , UF_UINT32 ); // Size: 46, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_PACK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x01CE , UF_UINT32 ); // Size: 32, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_BANK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x01EE , UF_UINT32 ); // Size: 56, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_BANKBAG_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0226 , UF_UINT32 ); // Size: 14, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_VENDORBUYBACK_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0234 , UF_UINT32 ); // Size: 24, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_KEYRING_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x024C , UF_UINT32 ); // Size: 64, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_VANITYPET_SLOT_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x028C , UF_UINT32 ); // Size: 36, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_FARSIGHT ] = UpdateField( mv[TYPEID_UNIT] + 0x02B0 , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER__FIELD_KNOWN_TITLES ] = UpdateField( mv[TYPEID_UNIT] + 0x02B2 , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PRIVATE + Object::updatefields[ PLAYER_XP ] = UpdateField( mv[TYPEID_UNIT] + 0x02B4 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_NEXT_LEVEL_XP ] = UpdateField( mv[TYPEID_UNIT] + 0x02B5 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_SKILL_INFO_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x02B6 , UF_UINT32 ); // Size: 384, Type: TWO_SHORT, Flags: PRIVATE + Object::updatefields[ PLAYER_CHARACTER_POINTS1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0436 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_CHARACTER_POINTS2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0437 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_TRACK_CREATURES ] = UpdateField( mv[TYPEID_UNIT] + 0x0438 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_TRACK_RESOURCES ] = UpdateField( mv[TYPEID_UNIT] + 0x0439 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_BLOCK_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x043A , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_DODGE_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x043B , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_PARRY_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x043C , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_EXPERTISE ] = UpdateField( mv[TYPEID_UNIT] + 0x043D , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_OFFHAND_EXPERTISE ] = UpdateField( mv[TYPEID_UNIT] + 0x043E , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x043F , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_RANGED_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0440 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_OFFHAND_CRIT_PERCENTAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x0441 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_SPELL_CRIT_PERCENTAGE1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0442 , UF_UINT32 ); // Size: 7, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_SHIELD_BLOCK ] = UpdateField( mv[TYPEID_UNIT] + 0x0449 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_EXPLORED_ZONES_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x044A , UF_UINT32 ); // Size: 128, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_REST_STATE_EXPERIENCE ] = UpdateField( mv[TYPEID_UNIT] + 0x04CA , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_COINAGE ] = UpdateField( mv[TYPEID_UNIT] + 0x04CB , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_POS ] = UpdateField( mv[TYPEID_UNIT] + 0x04CC , UF_UINT32 ); // Size: 7, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_NEG ] = UpdateField( mv[TYPEID_UNIT] + 0x04D3 , UF_UINT32 ); // Size: 7, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_DAMAGE_DONE_PCT ] = UpdateField( mv[TYPEID_UNIT] + 0x04DA , UF_UINT32 ); // Size: 7, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_HEALING_DONE_POS ] = UpdateField( mv[TYPEID_UNIT] + 0x04E1 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_TARGET_RESISTANCE ] = UpdateField( mv[TYPEID_UNIT] + 0x04E2 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE ] = UpdateField( mv[TYPEID_UNIT] + 0x04E3 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_BYTES ] = UpdateField( mv[TYPEID_UNIT] + 0x04E4 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_AMMO_ID ] = UpdateField( mv[TYPEID_UNIT] + 0x04E5 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_SELF_RES_SPELL ] = UpdateField( mv[TYPEID_UNIT] + 0x04E6 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_PVP_MEDALS ] = UpdateField( mv[TYPEID_UNIT] + 0x04E7 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_BUYBACK_PRICE_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x04E8 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_BUYBACK_TIMESTAMP_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x04F4 , UF_UINT32 ); // Size: 12, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0500 , UF_UINT32 ); // Size: 1, Type: TWO_SHORT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_TODAY_CONTRIBUTION ] = UpdateField( mv[TYPEID_UNIT] + 0x0501 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_YESTERDAY_CONTRIBUTION ] = UpdateField( mv[TYPEID_UNIT] + 0x0502 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_LIFETIME_HONORBALE_KILLS ] = UpdateField( mv[TYPEID_UNIT] + 0x0503 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_BYTES2 ] = UpdateField( mv[TYPEID_UNIT] + 0x0504 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_WATCHED_FACTION_INDEX ] = UpdateField( mv[TYPEID_UNIT] + 0x0505 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_COMBAT_RATING_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0506 , UF_UINT32 ); // Size: 24, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_ARENA_TEAM_INFO_1_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x051E , UF_UINT32 ); // Size: 18, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_HONOR_CURRENCY ] = UpdateField( mv[TYPEID_UNIT] + 0x0530 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_ARENA_CURRENCY ] = UpdateField( mv[TYPEID_UNIT] + 0x0531 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_MANA_REGEN ] = UpdateField( mv[TYPEID_UNIT] + 0x0532 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT ] = UpdateField( mv[TYPEID_UNIT] + 0x0533 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_MAX_LEVEL ] = UpdateField( mv[TYPEID_UNIT] + 0x0534 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PRIVATE + Object::updatefields[ PLAYER_FIELD_DAILY_QUESTS_1 ] = UpdateField( mv[TYPEID_UNIT] + 0x0535 , UF_UINT32 ); // Size: 25, Type: INT, Flags: PRIVATE + + Object::updatefields[ OBJECT_FIELD_CREATED_BY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_DISPLAYID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0003 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_ROTATION ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT32 ); // Size: 4, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_STATE ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_POS_X ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_POS_Y ] = UpdateField( mv[TYPEID_OBJECT] + 0x000A , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_POS_Z ] = UpdateField( mv[TYPEID_OBJECT] + 0x000B , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_FACING ] = UpdateField( mv[TYPEID_OBJECT] + 0x000C , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_DYN_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x000D , UF_UINT32 ); // Size: 1, Type: INT, Flags: DYNAMIC + Object::updatefields[ GAMEOBJECT_FACTION ] = UpdateField( mv[TYPEID_OBJECT] + 0x000E , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_TYPE_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x000F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_LEVEL ] = UpdateField( mv[TYPEID_OBJECT] + 0x0010 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_ARTKIT ] = UpdateField( mv[TYPEID_OBJECT] + 0x0011 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ GAMEOBJECT_ANIMPROGRESS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0012 , UF_UINT32 ); // Size: 1, Type: INT, Flags: DYNAMIC + Object::updatefields[ GAMEOBJECT_PADDING ] = UpdateField( mv[TYPEID_OBJECT] + 0x0013 , UF_UINT32 ); // Size: 1, Type: INT, Flags: NONE + + Object::updatefields[ DYNAMICOBJECT_CASTER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_BYTES ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_SPELLID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0003 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_RADIUS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_POS_X ] = UpdateField( mv[TYPEID_OBJECT] + 0x0005 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_POS_Y ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_POS_Z ] = UpdateField( mv[TYPEID_OBJECT] + 0x0007 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_FACING ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ DYNAMICOBJECT_CASTTIME ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + + Object::updatefields[ CORPSE_FIELD_OWNER ] = UpdateField( mv[TYPEID_OBJECT] + 0x0000 , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_PARTY ] = UpdateField( mv[TYPEID_OBJECT] + 0x0002 , UF_UINT32 ); // Size: 2, Type: LONG, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_FACING ] = UpdateField( mv[TYPEID_OBJECT] + 0x0004 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_POS_X ] = UpdateField( mv[TYPEID_OBJECT] + 0x0005 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_POS_Y ] = UpdateField( mv[TYPEID_OBJECT] + 0x0006 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_POS_Z ] = UpdateField( mv[TYPEID_OBJECT] + 0x0007 , UF_UINT32 ); // Size: 1, Type: FLOAT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_DISPLAY_ID ] = UpdateField( mv[TYPEID_OBJECT] + 0x0008 , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_ITEM ] = UpdateField( mv[TYPEID_OBJECT] + 0x0009 , UF_UINT32 ); // Size: 19, Type: INT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_BYTES_1 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001C , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_BYTES_2 ] = UpdateField( mv[TYPEID_OBJECT] + 0x001D , UF_UINT32 ); // Size: 1, Type: BYTES, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_GUILD ] = UpdateField( mv[TYPEID_OBJECT] + 0x001E , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x001F , UF_UINT32 ); // Size: 1, Type: INT, Flags: PUBLIC + Object::updatefields[ CORPSE_FIELD_DYNAMIC_FLAGS ] = UpdateField( mv[TYPEID_OBJECT] + 0x0020 , UF_UINT32 ); // Size: 1, Type: INT, Flags: DYNAMIC + Object::updatefields[ CORPSE_FIELD_PAD ] = UpdateField( mv[TYPEID_OBJECT] + 0x0021 , UF_UINT32 ); // Size: 1, Type: INT, Flags: NONE + + break; } case CLIENT_WOTLK://3.3.5 { diff --git a/src/Client/World/UpdateFields.h b/src/Client/World/UpdateFields.h index b7fc6fe..d7272b9 100644 --- a/src/Client/World/UpdateFields.h +++ b/src/Client/World/UpdateFields.h @@ -20,11 +20,18 @@ enum UpdateFieldLimits DYNAMICOBJECT_END = OBJECT_END + 0x0006, CORPSE_END = OBJECT_END + 0x001E, + ITEM_END_8606 = OBJECT_END + 0x0036, + UNIT_END_8606 = OBJECT_END + 0x00E4, + PLAYER_END_8606 = UNIT_END_8606 + 0x054E, + GAMEOBJECT_END_8606 = OBJECT_END + 0x0014, + DYNAMICOBJECT_END_8606 = OBJECT_END + 0x000A, + CORPSE_END_8606 = OBJECT_END + 0x0022, + 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, + GAMEOBJECT_END_6005 = OBJECT_END + 0x0014 }; @@ -280,6 +287,8 @@ enum UpdateFieldName PLAYER_FIELD_MOD_HEALING_DONE_PCT, PLAYER_FIELD_MOD_HEALING_DONE_POS, PLAYER_FIELD_MOD_HEALING_PCT, + PLAYER_FIELD_MOD_MANA_REGEN, + PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT, PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, PLAYER_FIELD_MOD_TARGET_RESISTANCE, PLAYER_FIELD_NEGSTAT0, @@ -302,6 +311,7 @@ enum UpdateFieldName PLAYER_FIELD_THIS_WEEK_CONTRIBUTION, PLAYER_FIELD_THIS_WEEK_KILLS, PLAYER_FIELD_TODAY_CONTRIBUTION, + PLAYER_FIELD_VANITYPET_SLOT_1, PLAYER_FIELD_VENDORBUYBACK_SLOT_1, PLAYER_FIELD_VENDORBUYBACK_SLOT_LAST, PLAYER_FIELD_WATCHED_FACTION_INDEX, @@ -421,6 +431,30 @@ enum UpdateFieldName PLAYER_QUEST_LOG_LAST_1, PLAYER_QUEST_LOG_LAST_2, PLAYER_QUEST_LOG_LAST_3, + PLAYER_QUEST_LOG_2_4, + PLAYER_QUEST_LOG_3_4, + PLAYER_QUEST_LOG_4_4, + PLAYER_QUEST_LOG_5_4, + PLAYER_QUEST_LOG_6_4, + PLAYER_QUEST_LOG_7_4, + PLAYER_QUEST_LOG_8_4, + PLAYER_QUEST_LOG_9_4, + PLAYER_QUEST_LOG_10_4, + PLAYER_QUEST_LOG_11_4, + PLAYER_QUEST_LOG_12_4, + PLAYER_QUEST_LOG_13_4, + PLAYER_QUEST_LOG_14_4, + PLAYER_QUEST_LOG_15_4, + PLAYER_QUEST_LOG_16_4, + PLAYER_QUEST_LOG_17_4, + PLAYER_QUEST_LOG_18_4, + PLAYER_QUEST_LOG_19_4, + PLAYER_QUEST_LOG_20_4, + PLAYER_QUEST_LOG_21_4, + PLAYER_QUEST_LOG_22_4, + PLAYER_QUEST_LOG_23_4, + PLAYER_QUEST_LOG_24_4, + PLAYER_QUEST_LOG_25_4, PLAYER_RANGED_CRIT_PERCENTAGE, PLAYER_REST_STATE_EXPERIENCE, PLAYER_RUNE_REGEN_1, @@ -476,6 +510,79 @@ enum UpdateFieldName PLAYER_VISIBLE_ITEM_LAST_0, PLAYER_VISIBLE_ITEM_LAST_CREATOR, PLAYER_VISIBLE_ITEM_LAST_PAD, + PLAYER_VISIBLE_ITEM_2_CREATOR, + PLAYER_VISIBLE_ITEM_2_0, + PLAYER_VISIBLE_ITEM_2_PROPERTIES, + PLAYER_VISIBLE_ITEM_2_PAD, + PLAYER_VISIBLE_ITEM_3_CREATOR, + PLAYER_VISIBLE_ITEM_3_0, + PLAYER_VISIBLE_ITEM_3_PROPERTIES, + PLAYER_VISIBLE_ITEM_3_PAD, + PLAYER_VISIBLE_ITEM_4_CREATOR, + PLAYER_VISIBLE_ITEM_4_0, + PLAYER_VISIBLE_ITEM_4_PROPERTIES, + PLAYER_VISIBLE_ITEM_4_PAD, + PLAYER_VISIBLE_ITEM_5_CREATOR, + PLAYER_VISIBLE_ITEM_5_0, + PLAYER_VISIBLE_ITEM_5_PROPERTIES, + PLAYER_VISIBLE_ITEM_5_PAD, + PLAYER_VISIBLE_ITEM_6_CREATOR, + PLAYER_VISIBLE_ITEM_6_0, + PLAYER_VISIBLE_ITEM_6_PROPERTIES, + PLAYER_VISIBLE_ITEM_6_PAD, + PLAYER_VISIBLE_ITEM_7_CREATOR, + PLAYER_VISIBLE_ITEM_7_0, + PLAYER_VISIBLE_ITEM_7_PROPERTIES, + PLAYER_VISIBLE_ITEM_7_PAD, + PLAYER_VISIBLE_ITEM_8_CREATOR, + PLAYER_VISIBLE_ITEM_8_0, + PLAYER_VISIBLE_ITEM_8_PROPERTIES, + PLAYER_VISIBLE_ITEM_8_PAD, + PLAYER_VISIBLE_ITEM_9_CREATOR, + PLAYER_VISIBLE_ITEM_9_0, + PLAYER_VISIBLE_ITEM_9_PROPERTIES, + PLAYER_VISIBLE_ITEM_9_PAD, + PLAYER_VISIBLE_ITEM_10_CREATOR, + PLAYER_VISIBLE_ITEM_10_0, + PLAYER_VISIBLE_ITEM_10_PROPERTIES, + PLAYER_VISIBLE_ITEM_10_PAD, + PLAYER_VISIBLE_ITEM_11_CREATOR, + PLAYER_VISIBLE_ITEM_11_0, + PLAYER_VISIBLE_ITEM_11_PROPERTIES, + PLAYER_VISIBLE_ITEM_11_PAD, + PLAYER_VISIBLE_ITEM_12_CREATOR, + PLAYER_VISIBLE_ITEM_12_0, + PLAYER_VISIBLE_ITEM_12_PROPERTIES, + PLAYER_VISIBLE_ITEM_12_PAD, + PLAYER_VISIBLE_ITEM_13_CREATOR, + PLAYER_VISIBLE_ITEM_13_0, + PLAYER_VISIBLE_ITEM_13_PROPERTIES, + PLAYER_VISIBLE_ITEM_13_PAD, + PLAYER_VISIBLE_ITEM_14_CREATOR, + PLAYER_VISIBLE_ITEM_14_0, + PLAYER_VISIBLE_ITEM_14_PROPERTIES, + PLAYER_VISIBLE_ITEM_14_PAD, + PLAYER_VISIBLE_ITEM_15_CREATOR, + PLAYER_VISIBLE_ITEM_15_0, + PLAYER_VISIBLE_ITEM_15_PROPERTIES, + PLAYER_VISIBLE_ITEM_15_PAD, + PLAYER_VISIBLE_ITEM_16_CREATOR, + PLAYER_VISIBLE_ITEM_16_0, + PLAYER_VISIBLE_ITEM_16_PROPERTIES, + PLAYER_VISIBLE_ITEM_16_PAD, + PLAYER_VISIBLE_ITEM_17_CREATOR, + PLAYER_VISIBLE_ITEM_17_0, + PLAYER_VISIBLE_ITEM_17_PROPERTIES, + PLAYER_VISIBLE_ITEM_17_PAD, + PLAYER_VISIBLE_ITEM_18_CREATOR, + PLAYER_VISIBLE_ITEM_18_0, + PLAYER_VISIBLE_ITEM_18_PROPERTIES, + PLAYER_VISIBLE_ITEM_18_PAD, + PLAYER_VISIBLE_ITEM_19_CREATOR, + PLAYER_VISIBLE_ITEM_19_0, + PLAYER_VISIBLE_ITEM_19_PROPERTIES, + PLAYER_VISIBLE_ITEM_19_PAD, + PLAYER_VISIBLE_ITEM_LAST_PROPERTIES, PLAYER_XP,