UpdateMask

An UpdateMask is a variable length way of sending known fields to the client. It is represented by a byte mask that decides which fields are sent afterwards.

Representation

The UpdateMask starts with a single u8 that decides how many u32 mask blocks will follow. The bit pattern in these mask blocks determine how many additional u32s of data will follow and how to interpret that data.

Examples

The absolute minimum amount of fields that need to be set to log a player into the world are:

  • OBJECT_GUID, an Object field.
  • OBJECT_TYPE, an Object field.
  • UNIT_HEALTH, a Unit field.
  • UNIT_BYTES_0, a Unit field.

To find out how many mask blocks we need to send we take the highest offset field (UNIT_BYTES_0 with 36) and divide it by the amount of bits in a u32 and rounding up. This gives us 2 mask blocks that we need to send.

To figure out which bits must be set on the mask blocks we look up the offset and sizes for our fields. A size of 1 means that only the bit at the offset should be set. A size of 2 means that the bit at the offset and the bit at the offset + 1 should be set, and so on.

Realistically you will have to store the mask blocks in an array of u32s. The correct index and bit position can then be found by dividing to find the index, and modulus to find the bit position within that index.

For UNIT_BYTES_0 with an offset of 36, this means that our index and bit position is:

index = 36 / 32 = 1
bit = 36 % 32 = 4

We do this for every field.

We then send, in order:

  1. A u8 with the amount of mask bytes.
  2. The mask bytes as u32s.
  3. The data values as u32s.

Examples

The following Python example uses the asyncio module. Additionally read_int is a function that reads a certain amount of bytes and returns it as an integer. So read_int(reader, 1) would return a u8 and read_int(reader, 4) would return a u32.

The dict[int, int] is a dictionary of integers, also called a hash map. The keys are the offsets defined below, and the values are u32 data values.

The write function uses Python's struct module to pack the data into a byte array. The reference for struct lists the different format characters used.

The Python code below does not have the best API; users will have to fill out the dict using the offsets defined as constants without any type safety, merging of fields for Guids, or splitting of fields into smaller types. When designing your own UpdateMask type consider what API it allows you to expose.

class UpdateMask:
    fields: dict[int, int]

    @staticmethod
    async def read(reader: asyncio.StreamReader):
        amount_of_blocks = await read_int(reader, 1)

        blocks = []
        for _ in range(0, amount_of_blocks):
            blocks.append(await read_int(reader, 4))

        fields = {}
        for block_index, block in enumerate(blocks):
            for bit in range(0, 32):
                if block & 1 << bit:
                    value = await read_int(reader, 4)
                    key = block_index * 32 + bit
                    fields[key] = value

        return UpdateMask(fields=fields)

    def write(self, fmt, data):
        highest_key = max(self.fields)
        amount_of_blocks = highest_key // 32
        if highest_key % 32 != 0:
            amount_of_blocks += 1

        fmt += 'B'
        data.append(amount_of_blocks)

        blocks = [0] * amount_of_blocks

        for key in self.fields:
            block = key // 32
            index = key % 32
            blocks[block] |= 1 << index

        fmt += f'{len(blocks)}I'
        data.extend(blocks)

        for key in sorted(self.fields):
            fmt += 'I'
            data.append(self.fields[key])

        return fmt, data

    def size(self):
        highest_key = max(self.fields)
        amount_of_blocks = highest_key // 32

        extra = highest_key % 32
        if extra != 0:
            extra = 1
        else:
            extra = 0

        return 1 + (extra + amount_of_blocks + len(self.fields)) * 4

Lookup Table

Version 1.12

Taken from vmangos with some modifications.

Fields that all objects have:

NameOffsetSizeType
OBJECT_GUID0x00002GUID
OBJECT_TYPE0x00021INT
OBJECT_ENTRY0x00031INT
OBJECT_SCALE_X0x00041FLOAT

Fields that all items have:

NameOffsetSizeType
ITEM_OWNER0x00062GUID
ITEM_CONTAINED0x00082GUID
ITEM_CREATOR0x000a2GUID
ITEM_GIFTCREATOR0x000c2GUID
ITEM_STACK_COUNT0x000e1INT
ITEM_DURATION0x000f1INT
ITEM_SPELL_CHARGES0x00105INT
ITEM_FLAGS0x00151INT
ITEM_ENCHANTMENT0x001621INT
ITEM_PROPERTY_SEED0x002b1INT
ITEM_RANDOM_PROPERTIES_ID0x002c1INT
ITEM_ITEM_TEXT_ID0x002d1INT
ITEM_DURABILITY0x002e1INT
ITEM_MAXDURABILITY0x002f1INT

Fields that all containers have:

NameOffsetSizeType
CONTAINER_NUM_SLOTS0x00301INT
CONTAINER_SLOT_10x003272GUID

Fields that all units have:

NameOffsetSizeType
UNIT_CHARM0x00062GUID
UNIT_SUMMON0x00082GUID
UNIT_CHARMEDBY0x000a2GUID
UNIT_SUMMONEDBY0x000c2GUID
UNIT_CREATEDBY0x000e2GUID
UNIT_TARGET0x00102GUID
UNIT_PERSUADED0x00122GUID
UNIT_CHANNEL_OBJECT0x00142GUID
UNIT_HEALTH0x00161INT
UNIT_POWER10x00171INT
UNIT_POWER20x00181INT
UNIT_POWER30x00191INT
UNIT_POWER40x001a1INT
UNIT_POWER50x001b1INT
UNIT_MAXHEALTH0x001c1INT
UNIT_MAXPOWER10x001d1INT
UNIT_MAXPOWER20x001e1INT
UNIT_MAXPOWER30x001f1INT
UNIT_MAXPOWER40x00201INT
UNIT_MAXPOWER50x00211INT
UNIT_LEVEL0x00221INT
UNIT_FACTIONTEMPLATE0x00231INT
UNIT_BYTES_00x00241BYTES
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY0x00253INT
UNIT_VIRTUAL_ITEM_INFO0x00286BYTES
UNIT_FLAGS0x002e1INT
UNIT_AURA0x002f48INT
UNIT_AURAFLAGS0x005f6BYTES
UNIT_AURALEVELS0x006512BYTES
UNIT_AURAAPPLICATIONS0x007112BYTES
UNIT_AURASTATE0x007d1INT
UNIT_BASEATTACKTIME0x007e2INT
UNIT_RANGEDATTACKTIME0x00801INT
UNIT_BOUNDINGRADIUS0x00811FLOAT
UNIT_COMBATREACH0x00821FLOAT
UNIT_DISPLAYID0x00831INT
UNIT_NATIVEDISPLAYID0x00841INT
UNIT_MOUNTDISPLAYID0x00851INT
UNIT_MINDAMAGE0x00861FLOAT
UNIT_MAXDAMAGE0x00871FLOAT
UNIT_MINOFFHANDDAMAGE0x00881FLOAT
UNIT_MAXOFFHANDDAMAGE0x00891FLOAT
UNIT_BYTES_10x008a1BYTES
UNIT_PETNUMBER0x008b1INT
UNIT_PET_NAME_TIMESTAMP0x008c1INT
UNIT_PETEXPERIENCE0x008d1INT
UNIT_PETNEXTLEVELEXP0x008e1INT
UNIT_DYNAMIC_FLAGS0x008f1INT
UNIT_CHANNEL_SPELL0x00901INT
UNIT_MOD_CAST_SPEED0x00911FLOAT
UNIT_CREATED_BY_SPELL0x00921INT
UNIT_NPC_FLAGS0x00931INT
UNIT_NPC_EMOTESTATE0x00941INT
UNIT_TRAINING_POINTS0x00951TWO_SHORT
UNIT_STRENGTH0x00961INT
UNIT_AGILITY0x00971INT
UNIT_STAMINA0x00981INT
UNIT_INTELLECT0x00991INT
UNIT_SPIRIT0x009a1INT
UNIT_NORMAL_RESISTANCE0x009b1INT
UNIT_HOLY_RESISTANCE0x009c1INT
UNIT_FIRE_RESISTANCE0x009d1INT
UNIT_NATURE_RESISTANCE0x009e1INT
UNIT_FROST_RESISTANCE0x009f1INT
UNIT_SHADOW_RESISTANCE0x00a01INT
UNIT_ARCANE_RESISTANCE0x00a11INT
UNIT_BASE_MANA0x00a21INT
UNIT_BASE_HEALTH0x00a31INT
UNIT_BYTES_20x00a41BYTES
UNIT_ATTACK_POWER0x00a51INT
UNIT_ATTACK_POWER_MODS0x00a61TWO_SHORT
UNIT_ATTACK_POWER_MULTIPLIER0x00a71FLOAT
UNIT_RANGED_ATTACK_POWER0x00a81INT
UNIT_RANGED_ATTACK_POWER_MODS0x00a91TWO_SHORT
UNIT_RANGED_ATTACK_POWER_MULTIPLIER0x00aa1FLOAT
UNIT_MINRANGEDDAMAGE0x00ab1FLOAT
UNIT_MAXRANGEDDAMAGE0x00ac1FLOAT
UNIT_POWER_COST_MODIFIER0x00ad7INT
UNIT_POWER_COST_MULTIPLIER0x00b47FLOAT

Fields that all players have:

NameOffsetSizeType
PLAYER_DUEL_ARBITER0x00bc2GUID
PLAYER_FLAGS0x00be1INT
PLAYER_GUILDID0x00bf1INT
PLAYER_GUILDRANK0x00c01INT
PLAYER_FEATURES0x00c11BYTES
PLAYER_BYTES_20x00c21BYTES
PLAYER_BYTES_30x00c31BYTES
PLAYER_DUEL_TEAM0x00c41INT
PLAYER_GUILD_TIMESTAMP0x00c51INT
PLAYER_QUEST_LOG_1_10x00c61INT
PLAYER_QUEST_LOG_1_20x00c72INT
PLAYER_QUEST_LOG_2_10x00c91INT
PLAYER_QUEST_LOG_2_20x00ca2INT
PLAYER_QUEST_LOG_3_10x00cc1INT
PLAYER_QUEST_LOG_3_20x00cd2INT
PLAYER_QUEST_LOG_4_10x00cf1INT
PLAYER_QUEST_LOG_4_20x00d02INT
PLAYER_QUEST_LOG_5_10x00d21INT
PLAYER_QUEST_LOG_5_20x00d32INT
PLAYER_QUEST_LOG_6_10x00d51INT
PLAYER_QUEST_LOG_6_20x00d62INT
PLAYER_QUEST_LOG_7_10x00d81INT
PLAYER_QUEST_LOG_7_20x00d92INT
PLAYER_QUEST_LOG_8_10x00db1INT
PLAYER_QUEST_LOG_8_20x00dc2INT
PLAYER_QUEST_LOG_9_10x00de1INT
PLAYER_QUEST_LOG_9_20x00df2INT
PLAYER_QUEST_LOG_10_10x00e11INT
PLAYER_QUEST_LOG_10_20x00e22INT
PLAYER_QUEST_LOG_11_10x00e41INT
PLAYER_QUEST_LOG_11_20x00e52INT
PLAYER_QUEST_LOG_12_10x00e71INT
PLAYER_QUEST_LOG_12_20x00e82INT
PLAYER_QUEST_LOG_13_10x00ea1INT
PLAYER_QUEST_LOG_13_20x00eb2INT
PLAYER_QUEST_LOG_14_10x00ed1INT
PLAYER_QUEST_LOG_14_20x00ee2INT
PLAYER_QUEST_LOG_15_10x00f01INT
PLAYER_QUEST_LOG_15_20x00f12INT
PLAYER_QUEST_LOG_16_10x00f31INT
PLAYER_QUEST_LOG_16_20x00f42INT
PLAYER_QUEST_LOG_17_10x00f61INT
PLAYER_QUEST_LOG_17_20x00f72INT
PLAYER_QUEST_LOG_18_10x00f91INT
PLAYER_QUEST_LOG_18_20x00fa2INT
PLAYER_QUEST_LOG_19_10x00fc1INT
PLAYER_QUEST_LOG_19_20x00fd2INT
PLAYER_QUEST_LOG_20_10x00ff1INT
PLAYER_QUEST_LOG_20_20x01002INT
PLAYER_VISIBLE_ITEM0x0102228CUSTOM
PLAYER_FIELD_INV0x01e6226CUSTOM
PLAYER_FARSIGHT0x02c82GUID
PLAYER_FIELD_COMBO_TARGET0x02ca2GUID
PLAYER_XP0x02cc1INT
PLAYER_NEXT_LEVEL_XP0x02cd1INT
PLAYER_SKILL_INFO0x02ce384CUSTOM
PLAYER_CHARACTER_POINTS10x044e1INT
PLAYER_CHARACTER_POINTS20x044f1INT
PLAYER_TRACK_CREATURES0x04501INT
PLAYER_TRACK_RESOURCES0x04511INT
PLAYER_BLOCK_PERCENTAGE0x04521FLOAT
PLAYER_DODGE_PERCENTAGE0x04531FLOAT
PLAYER_PARRY_PERCENTAGE0x04541FLOAT
PLAYER_CRIT_PERCENTAGE0x04551FLOAT
PLAYER_RANGED_CRIT_PERCENTAGE0x04561FLOAT
PLAYER_EXPLORED_ZONES_10x045764BYTES
PLAYER_REST_STATE_EXPERIENCE0x04971INT
PLAYER_FIELD_COINAGE0x04981INT
PLAYER_FIELD_POSSTAT00x04991INT
PLAYER_FIELD_POSSTAT10x049a1INT
PLAYER_FIELD_POSSTAT20x049b1INT
PLAYER_FIELD_POSSTAT30x049c1INT
PLAYER_FIELD_POSSTAT40x049d1INT
PLAYER_FIELD_NEGSTAT00x049e1INT
PLAYER_FIELD_NEGSTAT10x049f1INT
PLAYER_FIELD_NEGSTAT20x04a01INT
PLAYER_FIELD_NEGSTAT30x04a11INT
PLAYER_FIELD_NEGSTAT40x04a21INT
PLAYER_FIELD_RESISTANCEBUFFMODSPOSITIVE0x04a37INT
PLAYER_FIELD_RESISTANCEBUFFMODSNEGATIVE0x04aa7INT
PLAYER_FIELD_MOD_DAMAGE_DONE_POS0x04b17INT
PLAYER_FIELD_MOD_DAMAGE_DONE_NEG0x04b87INT
PLAYER_FIELD_MOD_DAMAGE_DONE_PCT0x04bf7INT
PLAYER_FIELD_BYTES0x04c61BYTES
PLAYER_AMMO_ID0x04c71INT
PLAYER_SELF_RES_SPELL0x04c81INT
PLAYER_FIELD_PVP_MEDALS0x04c91INT
PLAYER_FIELD_BUYBACK_PRICE_10x04ca12INT
PLAYER_FIELD_BUYBACK_TIMESTAMP_10x04d612INT
PLAYER_FIELD_SESSION_KILLS0x04e21TWO_SHORT
PLAYER_FIELD_YESTERDAY_KILLS0x04e31TWO_SHORT
PLAYER_FIELD_LAST_WEEK_KILLS0x04e41TWO_SHORT
PLAYER_FIELD_THIS_WEEK_KILLS0x04e51TWO_SHORT
PLAYER_FIELD_THIS_WEEK_CONTRIBUTION0x04e61INT
PLAYER_FIELD_LIFETIME_HONORBALE_KILLS0x04e71INT
PLAYER_FIELD_LIFETIME_DISHONORBALE_KILLS0x04e81INT
PLAYER_FIELD_YESTERDAY_CONTRIBUTION0x04e91INT
PLAYER_FIELD_LAST_WEEK_CONTRIBUTION0x04ea1INT
PLAYER_FIELD_LAST_WEEK_RANK0x04eb1INT
PLAYER_FIELD_BYTES20x04ec1BYTES
PLAYER_FIELD_WATCHED_FACTION_INDEX0x04ed1INT
PLAYER_FIELD_COMBAT_RATING_10x04ee20INT

Fields that all gameobjects have:

NameOffsetSizeType
GAMEOBJECT_CREATED_BY0x00062GUID
GAMEOBJECT_DISPLAYID0x00081INT
GAMEOBJECT_FLAGS0x00091INT
GAMEOBJECT_ROTATION0x000a4FLOAT
GAMEOBJECT_STATE0x000e1INT
GAMEOBJECT_POS_X0x000f1FLOAT
GAMEOBJECT_POS_Y0x00101FLOAT
GAMEOBJECT_POS_Z0x00111FLOAT
GAMEOBJECT_FACING0x00121FLOAT
GAMEOBJECT_DYN_FLAGS0x00131INT
GAMEOBJECT_FACTION0x00141INT
GAMEOBJECT_TYPE_ID0x00151INT
GAMEOBJECT_LEVEL0x00161INT
GAMEOBJECT_ARTKIT0x00171INT
GAMEOBJECT_ANIMPROGRESS0x00181INT

Fields that all dynamicobjects have:

NameOffsetSizeType
DYNAMICOBJECT_CASTER0x00062GUID
DYNAMICOBJECT_BYTES0x00081BYTES
DYNAMICOBJECT_SPELLID0x00091INT
DYNAMICOBJECT_RADIUS0x000a1FLOAT
DYNAMICOBJECT_POS_X0x000b1FLOAT
DYNAMICOBJECT_POS_Y0x000c1FLOAT
DYNAMICOBJECT_POS_Z0x000d1FLOAT
DYNAMICOBJECT_FACING0x000e1FLOAT

Fields that all corpses have:

NameOffsetSizeType
CORPSE_OWNER0x00062GUID
CORPSE_FACING0x00081FLOAT
CORPSE_POS_X0x00091FLOAT
CORPSE_POS_Y0x000a1FLOAT
CORPSE_POS_Z0x000b1FLOAT
CORPSE_DISPLAY_ID0x000c1INT
CORPSE_ITEM0x000d19INT
CORPSE_BYTES_10x00201BYTES
CORPSE_BYTES_20x00211BYTES
CORPSE_GUILD0x00221INT
CORPSE_FLAGS0x00231INT
CORPSE_DYNAMIC_FLAGS0x00241INT

Version 2.4.3

Taken from mangosone with some modifications.

Fields that all objects have:

NameOffsetSizeType
OBJECT_GUID0x00002GUID
OBJECT_TYPE0x00021INT
OBJECT_ENTRY0x00031INT
OBJECT_SCALE_X0x00041FLOAT
OBJECT_CREATED_BY0x00062GUID

Fields that all items have:

NameOffsetSizeType
ITEM_OWNER0x00062GUID
ITEM_CONTAINED0x00082GUID
ITEM_CREATOR0x000a2GUID
ITEM_GIFTCREATOR0x000c2GUID
ITEM_STACK_COUNT0x000e1INT
ITEM_DURATION0x000f1INT
ITEM_SPELL_CHARGES0x00105INT
ITEM_FLAGS0x00151INT
ITEM_ENCHANTMENT_1_10x001633INT
ITEM_PROPERTY_SEED0x00371INT
ITEM_RANDOM_PROPERTIES_ID0x00381INT
ITEM_ITEM_TEXT_ID0x00391INT
ITEM_DURABILITY0x003a1INT
ITEM_MAXDURABILITY0x003b1INT

Fields that all containers have:

NameOffsetSizeType
CONTAINER_NUM_SLOTS0x003c1INT
CONTAINER_SLOT_10x003e72GUID

Fields that all units have:

NameOffsetSizeType
UNIT_CHARM0x00062GUID
UNIT_SUMMON0x00082GUID
UNIT_CHARMEDBY0x000a2GUID
UNIT_SUMMONEDBY0x000c2GUID
UNIT_CREATEDBY0x000e2GUID
UNIT_TARGET0x00102GUID
UNIT_PERSUADED0x00122GUID
UNIT_CHANNEL_OBJECT0x00142GUID
UNIT_HEALTH0x00161INT
UNIT_POWER10x00171INT
UNIT_POWER20x00181INT
UNIT_POWER30x00191INT
UNIT_POWER40x001a1INT
UNIT_POWER50x001b1INT
UNIT_MAXHEALTH0x001c1INT
UNIT_MAXPOWER10x001d1INT
UNIT_MAXPOWER20x001e1INT
UNIT_MAXPOWER30x001f1INT
UNIT_MAXPOWER40x00201INT
UNIT_MAXPOWER50x00211INT
UNIT_LEVEL0x00221INT
UNIT_FACTIONTEMPLATE0x00231INT
UNIT_BYTES_00x00241BYTES
UNIT_VIRTUAL_ITEM_SLOT_DISPLAY0x00253INT
UNIT_VIRTUAL_ITEM_INFO0x00286BYTES
UNIT_FLAGS0x002e1INT
UNIT_FLAGS_20x002f1INT
UNIT_AURA0x003056INT
UNIT_AURAFLAGS0x006814BYTES
UNIT_AURALEVELS0x007614BYTES
UNIT_AURAAPPLICATIONS0x008414BYTES
UNIT_AURASTATE0x00921INT
UNIT_BASEATTACKTIME0x00932INT
UNIT_RANGEDATTACKTIME0x00951INT
UNIT_BOUNDINGRADIUS0x00961FLOAT
UNIT_COMBATREACH0x00971FLOAT
UNIT_DISPLAYID0x00981INT
UNIT_NATIVEDISPLAYID0x00991INT
UNIT_MOUNTDISPLAYID0x009a1INT
UNIT_MINDAMAGE0x009b1FLOAT
UNIT_MAXDAMAGE0x009c1FLOAT
UNIT_MINOFFHANDDAMAGE0x009d1FLOAT
UNIT_MAXOFFHANDDAMAGE0x009e1FLOAT
UNIT_BYTES_10x009f1BYTES
UNIT_PETNUMBER0x00a01INT
UNIT_PET_NAME_TIMESTAMP0x00a11INT
UNIT_PETEXPERIENCE0x00a21INT
UNIT_PETNEXTLEVELEXP0x00a31INT
UNIT_DYNAMIC_FLAGS0x00a41INT
UNIT_CHANNEL_SPELL0x00a51INT
UNIT_MOD_CAST_SPEED0x00a61FLOAT
UNIT_CREATED_BY_SPELL0x00a71INT
UNIT_NPC_FLAGS0x00a81INT
UNIT_NPC_EMOTESTATE0x00a91INT
UNIT_TRAINING_POINTS0x00aa1TWO_SHORT
UNIT_STRENGTH0x00ab1INT
UNIT_AGILITY0x00ac1INT
UNIT_STAMINA0x00ad1INT
UNIT_INTELLECT0x00ae1INT
UNIT_SPIRIT0x00af1INT
UNIT_POSSTAT10x00b11INT
UNIT_POSSTAT20x00b21INT
UNIT_POSSTAT30x00b31INT
UNIT_NEGSTAT10x00b61INT
UNIT_NEGSTAT20x00b71INT
UNIT_NEGSTAT30x00b81INT
UNIT_RESISTANCES0x00ba7INT
UNIT_BASE_MANA0x00cf1INT
UNIT_BASE_HEALTH0x00d01INT
UNIT_BYTES_20x00d11BYTES
UNIT_ATTACK_POWER0x00d21INT
UNIT_ATTACK_POWER_MODS0x00d31TWO_SHORT
UNIT_ATTACK_POWER_MULTIPLIER0x00d41FLOAT
UNIT_RANGED_ATTACK_POWER0x00d51INT
UNIT_RANGED_ATTACK_POWER_MODS0x00d61TWO_SHORT
UNIT_RANGED_ATTACK_POWER_MULTIPLIER0x00d71FLOAT
UNIT_MINRANGEDDAMAGE0x00d81FLOAT
UNIT_MAXRANGEDDAMAGE0x00d91FLOAT
UNIT_POWER_COST_MODIFIER0x00da7INT
UNIT_POWER_COST_MULTIPLIER0x00e17FLOAT
UNIT_MAXHEALTHMODIFIER0x00e81FLOAT

Fields that all players have:

NameOffsetSizeType
PLAYER_POSSTAT00x00b01INT
PLAYER_POSSTAT40x00b41INT
PLAYER_NEGSTAT00x00b51INT
PLAYER_NEGSTAT40x00b91INT
PLAYER_RESISTANCEBUFFMODSPOSITIVE0x00c17INT
PLAYER_RESISTANCEBUFFMODSNEGATIVE0x00c87INT
PLAYER_DUEL_ARBITER0x00ea2GUID
PLAYER_FLAGS0x00ec1INT
PLAYER_GUILDID0x00ed1INT
PLAYER_GUILDRANK0x00ee1INT
PLAYER_FIELD_BYTES0x00ef1BYTES
PLAYER_BYTES_20x00f01BYTES
PLAYER_BYTES_30x00f11BYTES
PLAYER_DUEL_TEAM0x00f21INT
PLAYER_GUILD_TIMESTAMP0x00f31INT
PLAYER_QUEST_LOG_1_10x00f41INT
PLAYER_QUEST_LOG_1_20x00f51INT
PLAYER_QUEST_LOG_1_30x00f61BYTES
PLAYER_QUEST_LOG_1_40x00f71INT
PLAYER_QUEST_LOG_2_10x00f81INT
PLAYER_QUEST_LOG_2_20x00f91INT
PLAYER_QUEST_LOG_2_30x00fa1BYTES
PLAYER_QUEST_LOG_2_40x00fb1INT
PLAYER_QUEST_LOG_3_10x00fc1INT
PLAYER_QUEST_LOG_3_20x00fd1INT
PLAYER_QUEST_LOG_3_30x00fe1BYTES
PLAYER_QUEST_LOG_3_40x00ff1INT
PLAYER_QUEST_LOG_4_10x01001INT
PLAYER_QUEST_LOG_4_20x01011INT
PLAYER_QUEST_LOG_4_30x01021BYTES
PLAYER_QUEST_LOG_4_40x01031INT
PLAYER_QUEST_LOG_5_10x01041INT
PLAYER_QUEST_LOG_5_20x01051INT
PLAYER_QUEST_LOG_5_30x01061BYTES
PLAYER_QUEST_LOG_5_40x01071INT
PLAYER_QUEST_LOG_6_10x01081INT
PLAYER_QUEST_LOG_6_20x01091INT
PLAYER_QUEST_LOG_6_30x010a1BYTES
PLAYER_QUEST_LOG_6_40x010b1INT
PLAYER_QUEST_LOG_7_10x010c1INT
PLAYER_QUEST_LOG_7_20x010d1INT
PLAYER_QUEST_LOG_7_30x010e1BYTES
PLAYER_QUEST_LOG_7_40x010f1INT
PLAYER_QUEST_LOG_8_10x01101INT
PLAYER_QUEST_LOG_8_20x01111INT
PLAYER_QUEST_LOG_8_30x01121BYTES
PLAYER_QUEST_LOG_8_40x01131INT
PLAYER_QUEST_LOG_9_10x01141INT
PLAYER_QUEST_LOG_9_20x01151INT
PLAYER_QUEST_LOG_9_30x01161BYTES
PLAYER_QUEST_LOG_9_40x01171INT
PLAYER_QUEST_LOG_10_10x01181INT
PLAYER_QUEST_LOG_10_20x01191INT
PLAYER_QUEST_LOG_10_30x011a1BYTES
PLAYER_QUEST_LOG_10_40x011b1INT
PLAYER_QUEST_LOG_11_10x011c1INT
PLAYER_QUEST_LOG_11_20x011d1INT
PLAYER_QUEST_LOG_11_30x011e1BYTES
PLAYER_QUEST_LOG_11_40x011f1INT
PLAYER_QUEST_LOG_12_10x01201INT
PLAYER_QUEST_LOG_12_20x01211INT
PLAYER_QUEST_LOG_12_30x01221BYTES
PLAYER_QUEST_LOG_12_40x01231INT
PLAYER_QUEST_LOG_13_10x01241INT
PLAYER_QUEST_LOG_13_20x01251INT
PLAYER_QUEST_LOG_13_30x01261BYTES
PLAYER_QUEST_LOG_13_40x01271INT
PLAYER_QUEST_LOG_14_10x01281INT
PLAYER_QUEST_LOG_14_20x01291INT
PLAYER_QUEST_LOG_14_30x012a1BYTES
PLAYER_QUEST_LOG_14_40x012b1INT
PLAYER_QUEST_LOG_15_10x012c1INT
PLAYER_QUEST_LOG_15_20x012d1INT
PLAYER_QUEST_LOG_15_30x012e1BYTES
PLAYER_QUEST_LOG_15_40x012f1INT
PLAYER_QUEST_LOG_16_10x01301INT
PLAYER_QUEST_LOG_16_20x01311INT
PLAYER_QUEST_LOG_16_30x01321BYTES
PLAYER_QUEST_LOG_16_40x01331INT
PLAYER_QUEST_LOG_17_10x01341INT
PLAYER_QUEST_LOG_17_20x01351INT
PLAYER_QUEST_LOG_17_30x01361BYTES
PLAYER_QUEST_LOG_17_40x01371INT
PLAYER_QUEST_LOG_18_10x01381INT
PLAYER_QUEST_LOG_18_20x01391INT
PLAYER_QUEST_LOG_18_30x013a1BYTES
PLAYER_QUEST_LOG_18_40x013b1INT
PLAYER_QUEST_LOG_19_10x013c1INT
PLAYER_QUEST_LOG_19_20x013d1INT
PLAYER_QUEST_LOG_19_30x013e1BYTES
PLAYER_QUEST_LOG_19_40x013f1INT
PLAYER_QUEST_LOG_20_10x01401INT
PLAYER_QUEST_LOG_20_20x01411INT
PLAYER_QUEST_LOG_20_30x01421BYTES
PLAYER_QUEST_LOG_20_40x01431INT
PLAYER_QUEST_LOG_21_10x01441INT
PLAYER_QUEST_LOG_21_20x01451INT
PLAYER_QUEST_LOG_21_30x01461BYTES
PLAYER_QUEST_LOG_21_40x01471INT
PLAYER_QUEST_LOG_22_10x01481INT
PLAYER_QUEST_LOG_22_20x01491INT
PLAYER_QUEST_LOG_22_30x014a1BYTES
PLAYER_QUEST_LOG_22_40x014b1INT
PLAYER_QUEST_LOG_23_10x014c1INT
PLAYER_QUEST_LOG_23_20x014d1INT
PLAYER_QUEST_LOG_23_30x014e1BYTES
PLAYER_QUEST_LOG_23_40x014f1INT
PLAYER_QUEST_LOG_24_10x01501INT
PLAYER_QUEST_LOG_24_20x01511INT
PLAYER_QUEST_LOG_24_30x01521BYTES
PLAYER_QUEST_LOG_24_40x01531INT
PLAYER_QUEST_LOG_25_10x01541INT
PLAYER_QUEST_LOG_25_20x01551INT
PLAYER_QUEST_LOG_25_30x01561BYTES
PLAYER_QUEST_LOG_25_40x01571INT
PLAYER_VISIBLE_ITEM0x0158228CUSTOM
PLAYER_CHOSEN_TITLE0x02881INT
PLAYER_FIELD_INV0x01e6272CUSTOM
PLAYER_FARSIGHT0x039a2GUID
PLAYER_KNOWN_TITLES0x039c2GUID
PLAYER_XP0x039e1INT
PLAYER_NEXT_LEVEL_XP0x039f1INT
PLAYER_SKILL_INFO0x03a0384CUSTOM
PLAYER_CHARACTER_POINTS10x05201INT
PLAYER_CHARACTER_POINTS20x05211INT
PLAYER_TRACK_CREATURES0x05221INT
PLAYER_TRACK_RESOURCES0x05231INT
PLAYER_BLOCK_PERCENTAGE0x05241FLOAT
PLAYER_DODGE_PERCENTAGE0x05251FLOAT
PLAYER_PARRY_PERCENTAGE0x05261FLOAT
PLAYER_EXPERTISE0x05271INT
PLAYER_OFFHAND_EXPERTISE0x05281INT
PLAYER_CRIT_PERCENTAGE0x05291FLOAT
PLAYER_RANGED_CRIT_PERCENTAGE0x052a1FLOAT
PLAYER_OFFHAND_CRIT_PERCENTAGE0x052b1FLOAT
PLAYER_SPELL_CRIT_PERCENTAGE10x052c7FLOAT
PLAYER_SHIELD_BLOCK0x05331INT
PLAYER_EXPLORED_ZONES_10x0534128BYTES
PLAYER_REST_STATE_EXPERIENCE0x05b41INT
PLAYER_COINAGE0x05b51INT
PLAYER_MOD_DAMAGE_DONE_POS0x05b67INT
PLAYER_MOD_DAMAGE_DONE_NEG0x05bd7INT
PLAYER_MOD_DAMAGE_DONE_PCT0x05c47INT
PLAYER_MOD_HEALING_DONE_POS0x05cb1INT
PLAYER_MOD_TARGET_RESISTANCE0x05cc1INT
PLAYER_MOD_TARGET_PHYSICAL_RESISTANCE0x05cd1INT
PLAYER_FEATURES0x05ce1BYTES
PLAYER_AMMO_ID0x05cf1INT
PLAYER_SELF_RES_SPELL0x05d01INT
PLAYER_PVP_MEDALS0x05d11INT
PLAYER_BUYBACK_PRICE_10x05d212INT
PLAYER_BUYBACK_TIMESTAMP_10x05de12INT
PLAYER_KILLS0x05ea1TWO_SHORT
PLAYER_TODAY_CONTRIBUTION0x05eb1INT
PLAYER_YESTERDAY_CONTRIBUTION0x05ec1INT
PLAYER_LIFETIME_HONORABLE_KILLS0x05ed1INT
PLAYER_BYTES20x05ee1BYTES
PLAYER_WATCHED_FACTION_INDEX0x05ef1INT
PLAYER_COMBAT_RATING_10x05f024INT
PLAYER_ARENA_TEAM_INFO_1_10x060818INT
PLAYER_HONOR_CURRENCY0x061a1INT
PLAYER_ARENA_CURRENCY0x061b1INT
PLAYER_MOD_MANA_REGEN0x061c1FLOAT
PLAYER_MOD_MANA_REGEN_INTERRUPT0x061d1FLOAT
PLAYER_MAX_LEVEL0x061e1INT
PLAYER_DAILY_QUESTS_10x061f25INT

Fields that all gameobjects have:

NameOffsetSizeType
GAMEOBJECT_DISPLAYID0x00081INT
GAMEOBJECT_FLAGS0x00091INT
GAMEOBJECT_ROTATION0x000a4FLOAT
GAMEOBJECT_STATE0x000e1INT
GAMEOBJECT_POS_X0x000f1FLOAT
GAMEOBJECT_POS_Y0x00101FLOAT
GAMEOBJECT_POS_Z0x00111FLOAT
GAMEOBJECT_FACING0x00121FLOAT
GAMEOBJECT_DYN_FLAGS0x00131INT
GAMEOBJECT_FACTION0x00141INT
GAMEOBJECT_TYPE_ID0x00151INT
GAMEOBJECT_LEVEL0x00161INT
GAMEOBJECT_ARTKIT0x00171INT
GAMEOBJECT_ANIMPROGRESS0x00181INT

Fields that all dynamicobjects have:

NameOffsetSizeType
DYNAMICOBJECT_CASTER0x00062GUID
DYNAMICOBJECT_BYTES0x00081BYTES
DYNAMICOBJECT_SPELLID0x00091INT
DYNAMICOBJECT_RADIUS0x000a1FLOAT
DYNAMICOBJECT_POS_X0x000b1FLOAT
DYNAMICOBJECT_POS_Y0x000c1FLOAT
DYNAMICOBJECT_POS_Z0x000d1FLOAT
DYNAMICOBJECT_FACING0x000e1FLOAT
DYNAMICOBJECT_CASTTIME0x000f1INT

Fields that all corpses have:

NameOffsetSizeType
CORPSE_OWNER0x00062GUID
CORPSE_PARTY0x00082GUID
CORPSE_FACING0x000a1FLOAT
CORPSE_POS_X0x000b1FLOAT
CORPSE_POS_Y0x000c1FLOAT
CORPSE_POS_Z0x000d1FLOAT
CORPSE_DISPLAY_ID0x000e1INT
CORPSE_ITEM0x000f19INT
CORPSE_BYTES_10x00221BYTES
CORPSE_BYTES_20x00231BYTES
CORPSE_GUILD0x00241INT
CORPSE_FLAGS0x00251INT
CORPSE_DYNAMIC_FLAGS0x00261INT

Version 3.3.5

Taken from ArcEmu with some modifications.

Fields that all objects have:

NameOffsetSizeType
OBJECT_GUID0x00002GUID
OBJECT_TYPE0x00021INT
OBJECT_ENTRY0x00031INT
OBJECT_SCALE_X0x00041FLOAT
OBJECT_CREATED_BY0x00062GUID

Fields that all items have:

NameOffsetSizeType
ITEM_OWNER0x00062GUID
ITEM_CONTAINED0x00082GUID
ITEM_CREATOR0x000a2GUID
ITEM_GIFTCREATOR0x000c2GUID
ITEM_STACK_COUNT0x000e1INT
ITEM_DURATION0x000f1INT
ITEM_SPELL_CHARGES0x00105INT
ITEM_FLAGS0x00151INT
ITEM_ENCHANTMENT_1_10x00162INT
ITEM_ENCHANTMENT_1_30x00181TWO_SHORT
ITEM_ENCHANTMENT_2_10x00192INT
ITEM_ENCHANTMENT_2_30x001b1TWO_SHORT
ITEM_ENCHANTMENT_3_10x001c2INT
ITEM_ENCHANTMENT_3_30x001e1TWO_SHORT
ITEM_ENCHANTMENT_4_10x001f2INT
ITEM_ENCHANTMENT_4_30x00211TWO_SHORT
ITEM_ENCHANTMENT_5_10x00222INT
ITEM_ENCHANTMENT_5_30x00241TWO_SHORT
ITEM_ENCHANTMENT_6_10x00252INT
ITEM_ENCHANTMENT_6_30x00271TWO_SHORT
ITEM_ENCHANTMENT_7_10x00282INT
ITEM_ENCHANTMENT_7_30x002a1TWO_SHORT
ITEM_ENCHANTMENT_8_10x002b2INT
ITEM_ENCHANTMENT_8_30x002d1TWO_SHORT
ITEM_ENCHANTMENT_9_10x002e2INT
ITEM_ENCHANTMENT_9_30x00301TWO_SHORT
ITEM_ENCHANTMENT_10_10x00312INT
ITEM_ENCHANTMENT_10_30x00331TWO_SHORT
ITEM_ENCHANTMENT_11_10x00342INT
ITEM_ENCHANTMENT_11_30x00361TWO_SHORT
ITEM_ENCHANTMENT_12_10x00372INT
ITEM_ENCHANTMENT_12_30x00391TWO_SHORT
ITEM_PROPERTY_SEED0x003a1INT
ITEM_RANDOM_PROPERTIES_ID0x003b1INT
ITEM_DURABILITY0x003c1INT
ITEM_MAXDURABILITY0x003d1INT
ITEM_CREATE_PLAYED_TIME0x003e1INT

Fields that all containers have:

NameOffsetSizeType
CONTAINER_NUM_SLOTS0x00401INT
CONTAINER_SLOT_10x004272GUID

Fields that all units have:

NameOffsetSizeType
UNIT_CHARM0x00062GUID
UNIT_SUMMON0x00082GUID
UNIT_CRITTER0x000a2GUID
UNIT_CHARMEDBY0x000c2GUID
UNIT_SUMMONEDBY0x000e2GUID
UNIT_CREATEDBY0x00102GUID
UNIT_TARGET0x00122GUID
UNIT_CHANNEL_OBJECT0x00142GUID
UNIT_CHANNEL_SPELL0x00161INT
UNIT_BYTES_00x00171BYTES
UNIT_HEALTH0x00181INT
UNIT_POWER10x00191INT
UNIT_POWER20x001a1INT
UNIT_POWER30x001b1INT
UNIT_POWER40x001c1INT
UNIT_POWER50x001d1INT
UNIT_POWER60x001e1INT
UNIT_POWER70x001f1INT
UNIT_MAXHEALTH0x00201INT
UNIT_MAXPOWER10x00211INT
UNIT_MAXPOWER20x00221INT
UNIT_MAXPOWER30x00231INT
UNIT_MAXPOWER40x00241INT
UNIT_MAXPOWER50x00251INT
UNIT_MAXPOWER60x00261INT
UNIT_MAXPOWER70x00271INT
UNIT_POWER_REGEN_FLAT_MODIFIER0x00287FLOAT
UNIT_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER0x002f7FLOAT
UNIT_LEVEL0x00361INT
UNIT_FACTIONTEMPLATE0x00371INT
UNIT_VIRTUAL_ITEM_SLOT_ID0x00383INT
UNIT_FLAGS0x003b1INT
UNIT_FLAGS_20x003c1INT
UNIT_AURASTATE0x003d1INT
UNIT_BASEATTACKTIME0x003e2INT
UNIT_RANGEDATTACKTIME0x00401INT
UNIT_BOUNDINGRADIUS0x00411FLOAT
UNIT_COMBATREACH0x00421FLOAT
UNIT_DISPLAYID0x00431INT
UNIT_NATIVEDISPLAYID0x00441INT
UNIT_MOUNTDISPLAYID0x00451INT
UNIT_MINDAMAGE0x00461FLOAT
UNIT_MAXDAMAGE0x00471FLOAT
UNIT_MINOFFHANDDAMAGE0x00481FLOAT
UNIT_MAXOFFHANDDAMAGE0x00491FLOAT
UNIT_BYTES_10x004a1BYTES
UNIT_PETNUMBER0x004b1INT
UNIT_PET_NAME_TIMESTAMP0x004c1INT
UNIT_PETEXPERIENCE0x004d1INT
UNIT_PETNEXTLEVELEXP0x004e1INT
UNIT_DYNAMIC_FLAGS0x004f1INT
UNIT_MOD_CAST_SPEED0x00501FLOAT
UNIT_CREATED_BY_SPELL0x00511INT
UNIT_NPC_FLAGS0x00521INT
UNIT_NPC_EMOTESTATE0x00531INT
UNIT_STRENGTH0x00541INT
UNIT_AGILITY0x00551INT
UNIT_STAMINA0x00561INT
UNIT_INTELLECT0x00571INT
UNIT_SPIRIT0x00581INT
UNIT_POSSTAT00x00591INT
UNIT_POSSTAT10x005a1INT
UNIT_POSSTAT20x005b1INT
UNIT_POSSTAT30x005c1INT
UNIT_POSSTAT40x005d1INT
UNIT_NEGSTAT00x005e1INT
UNIT_NEGSTAT10x005f1INT
UNIT_NEGSTAT20x00601INT
UNIT_NEGSTAT30x00611INT
UNIT_NEGSTAT40x00621INT
UNIT_RESISTANCES0x00637INT
UNIT_RESISTANCEBUFFMODSPOSITIVE0x006a7INT
UNIT_RESISTANCEBUFFMODSNEGATIVE0x00717INT
UNIT_BASE_MANA0x00781INT
UNIT_BASE_HEALTH0x00791INT
UNIT_BYTES_20x007a1BYTES
UNIT_ATTACK_POWER0x007b1INT
UNIT_ATTACK_POWER_MODS0x007c1TWO_SHORT
UNIT_ATTACK_POWER_MULTIPLIER0x007d1FLOAT
UNIT_RANGED_ATTACK_POWER0x007e1INT
UNIT_RANGED_ATTACK_POWER_MODS0x007f1TWO_SHORT
UNIT_RANGED_ATTACK_POWER_MULTIPLIER0x00801FLOAT
UNIT_MINRANGEDDAMAGE0x00811FLOAT
UNIT_MAXRANGEDDAMAGE0x00821FLOAT
UNIT_POWER_COST_MODIFIER0x00837INT
UNIT_POWER_COST_MULTIPLIER0x008a7FLOAT
UNIT_MAXHEALTHMODIFIER0x00911FLOAT
UNIT_HOVERHEIGHT0x00921FLOAT

Fields that all players have:

NameOffsetSizeType
PLAYER_DUEL_ARBITER0x00942GUID
PLAYER_FLAGS0x00961INT
PLAYER_GUILDID0x00971INT
PLAYER_GUILDRANK0x00981INT
PLAYER_FIELD_BYTES0x00991BYTES
PLAYER_BYTES_20x009a1BYTES
PLAYER_BYTES_30x009b1BYTES
PLAYER_DUEL_TEAM0x009c1INT
PLAYER_GUILD_TIMESTAMP0x009d1INT
PLAYER_QUEST_LOG_1_10x009e1INT
PLAYER_QUEST_LOG_1_20x009f1INT
PLAYER_QUEST_LOG_1_30x00a02TWO_SHORT
PLAYER_QUEST_LOG_1_40x00a21INT
PLAYER_QUEST_LOG_2_10x00a31INT
PLAYER_QUEST_LOG_2_20x00a41INT
PLAYER_QUEST_LOG_2_30x00a52TWO_SHORT
PLAYER_QUEST_LOG_2_50x00a71INT
PLAYER_QUEST_LOG_3_10x00a81INT
PLAYER_QUEST_LOG_3_20x00a91INT
PLAYER_QUEST_LOG_3_30x00aa2TWO_SHORT
PLAYER_QUEST_LOG_3_50x00ac1INT
PLAYER_QUEST_LOG_4_10x00ad1INT
PLAYER_QUEST_LOG_4_20x00ae1INT
PLAYER_QUEST_LOG_4_30x00af2TWO_SHORT
PLAYER_QUEST_LOG_4_50x00b11INT
PLAYER_QUEST_LOG_5_10x00b21INT
PLAYER_QUEST_LOG_5_20x00b31INT
PLAYER_QUEST_LOG_5_30x00b42TWO_SHORT
PLAYER_QUEST_LOG_5_50x00b61INT
PLAYER_QUEST_LOG_6_10x00b71INT
PLAYER_QUEST_LOG_6_20x00b81INT
PLAYER_QUEST_LOG_6_30x00b92TWO_SHORT
PLAYER_QUEST_LOG_6_50x00bb1INT
PLAYER_QUEST_LOG_7_10x00bc1INT
PLAYER_QUEST_LOG_7_20x00bd1INT
PLAYER_QUEST_LOG_7_30x00be2TWO_SHORT
PLAYER_QUEST_LOG_7_50x00c01INT
PLAYER_QUEST_LOG_8_10x00c11INT
PLAYER_QUEST_LOG_8_20x00c21INT
PLAYER_QUEST_LOG_8_30x00c32TWO_SHORT
PLAYER_QUEST_LOG_8_50x00c51INT
PLAYER_QUEST_LOG_9_10x00c61INT
PLAYER_QUEST_LOG_9_20x00c71INT
PLAYER_QUEST_LOG_9_30x00c82TWO_SHORT
PLAYER_QUEST_LOG_9_50x00ca1INT
PLAYER_QUEST_LOG_10_10x00cb1INT
PLAYER_QUEST_LOG_10_20x00cc1INT
PLAYER_QUEST_LOG_10_30x00cd2TWO_SHORT
PLAYER_QUEST_LOG_10_50x00cf1INT
PLAYER_QUEST_LOG_11_10x00d01INT
PLAYER_QUEST_LOG_11_20x00d11INT
PLAYER_QUEST_LOG_11_30x00d22TWO_SHORT
PLAYER_QUEST_LOG_11_50x00d41INT
PLAYER_QUEST_LOG_12_10x00d51INT
PLAYER_QUEST_LOG_12_20x00d61INT
PLAYER_QUEST_LOG_12_30x00d72TWO_SHORT
PLAYER_QUEST_LOG_12_50x00d91INT
PLAYER_QUEST_LOG_13_10x00da1INT
PLAYER_QUEST_LOG_13_20x00db1INT
PLAYER_QUEST_LOG_13_30x00dc2TWO_SHORT
PLAYER_QUEST_LOG_13_50x00de1INT
PLAYER_QUEST_LOG_14_10x00df1INT
PLAYER_QUEST_LOG_14_20x00e01INT
PLAYER_QUEST_LOG_14_30x00e12TWO_SHORT
PLAYER_QUEST_LOG_14_50x00e31INT
PLAYER_QUEST_LOG_15_10x00e41INT
PLAYER_QUEST_LOG_15_20x00e51INT
PLAYER_QUEST_LOG_15_30x00e62TWO_SHORT
PLAYER_QUEST_LOG_15_50x00e81INT
PLAYER_QUEST_LOG_16_10x00e91INT
PLAYER_QUEST_LOG_16_20x00ea1INT
PLAYER_QUEST_LOG_16_30x00eb2TWO_SHORT
PLAYER_QUEST_LOG_16_50x00ed1INT
PLAYER_QUEST_LOG_17_10x00ee1INT
PLAYER_QUEST_LOG_17_20x00ef1INT
PLAYER_QUEST_LOG_17_30x00f02TWO_SHORT
PLAYER_QUEST_LOG_17_50x00f21INT
PLAYER_QUEST_LOG_18_10x00f31INT
PLAYER_QUEST_LOG_18_20x00f41INT
PLAYER_QUEST_LOG_18_30x00f52TWO_SHORT
PLAYER_QUEST_LOG_18_50x00f71INT
PLAYER_QUEST_LOG_19_10x00f81INT
PLAYER_QUEST_LOG_19_20x00f91INT
PLAYER_QUEST_LOG_19_30x00fa2TWO_SHORT
PLAYER_QUEST_LOG_19_50x00fc1INT
PLAYER_QUEST_LOG_20_10x00fd1INT
PLAYER_QUEST_LOG_20_20x00fe1INT
PLAYER_QUEST_LOG_20_30x00ff2TWO_SHORT
PLAYER_QUEST_LOG_20_50x01011INT
PLAYER_QUEST_LOG_21_10x01021INT
PLAYER_QUEST_LOG_21_20x01031INT
PLAYER_QUEST_LOG_21_30x01042TWO_SHORT
PLAYER_QUEST_LOG_21_50x01061INT
PLAYER_QUEST_LOG_22_10x01071INT
PLAYER_QUEST_LOG_22_20x01081INT
PLAYER_QUEST_LOG_22_30x01092TWO_SHORT
PLAYER_QUEST_LOG_22_50x010b1INT
PLAYER_QUEST_LOG_23_10x010c1INT
PLAYER_QUEST_LOG_23_20x010d1INT
PLAYER_QUEST_LOG_23_30x010e2TWO_SHORT
PLAYER_QUEST_LOG_23_50x01101INT
PLAYER_QUEST_LOG_24_10x01111INT
PLAYER_QUEST_LOG_24_20x01121INT
PLAYER_QUEST_LOG_24_30x01132TWO_SHORT
PLAYER_QUEST_LOG_24_50x01151INT
PLAYER_QUEST_LOG_25_10x01161INT
PLAYER_QUEST_LOG_25_20x01171INT
PLAYER_QUEST_LOG_25_30x01182TWO_SHORT
PLAYER_QUEST_LOG_25_50x011a1INT
PLAYER_VISIBLE_ITEM0x011b38CUSTOM
PLAYER_CHOSEN_TITLE0x01411INT
PLAYER_FAKE_INEBRIATION0x01421INT
PLAYER_FIELD_INV0x0144300CUSTOM
PLAYER_FARSIGHT0x02702GUID
PLAYER_KNOWN_TITLES0x02722GUID
PLAYER_KNOWN_TITLES10x02742GUID
PLAYER_KNOWN_TITLES20x02762GUID
PLAYER_KNOWN_CURRENCIES0x02782GUID
PLAYER_XP0x027a1INT
PLAYER_NEXT_LEVEL_XP0x027b1INT
PLAYER_SKILL_INFO0x027c384CUSTOM
PLAYER_CHARACTER_POINTS10x03fc1INT
PLAYER_CHARACTER_POINTS20x03fd1INT
PLAYER_TRACK_CREATURES0x03fe1INT
PLAYER_TRACK_RESOURCES0x03ff1INT
PLAYER_BLOCK_PERCENTAGE0x04001FLOAT
PLAYER_DODGE_PERCENTAGE0x04011FLOAT
PLAYER_PARRY_PERCENTAGE0x04021FLOAT
PLAYER_EXPERTISE0x04031INT
PLAYER_OFFHAND_EXPERTISE0x04041INT
PLAYER_CRIT_PERCENTAGE0x04051FLOAT
PLAYER_RANGED_CRIT_PERCENTAGE0x04061FLOAT
PLAYER_OFFHAND_CRIT_PERCENTAGE0x04071FLOAT
PLAYER_SPELL_CRIT_PERCENTAGE10x04087FLOAT
PLAYER_SHIELD_BLOCK0x040f1INT
PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE0x04101FLOAT
PLAYER_EXPLORED_ZONES_10x0411128BYTES
PLAYER_REST_STATE_EXPERIENCE0x04911INT
PLAYER_COINAGE0x04921INT
PLAYER_MOD_DAMAGE_DONE_POS0x04937INT
PLAYER_MOD_DAMAGE_DONE_NEG0x049a7INT
PLAYER_MOD_DAMAGE_DONE_PCT0x04a17INT
PLAYER_MOD_HEALING_DONE_POS0x04a81INT
PLAYER_MOD_HEALING_PCT0x04a91FLOAT
PLAYER_MOD_HEALING_DONE_PCT0x04aa1FLOAT
PLAYER_MOD_TARGET_RESISTANCE0x04ab1INT
PLAYER_MOD_TARGET_PHYSICAL_RESISTANCE0x04ac1INT
PLAYER_FEATURES0x04ad1BYTES
PLAYER_AMMO_ID0x04ae1INT
PLAYER_SELF_RES_SPELL0x04af1INT
PLAYER_PVP_MEDALS0x04b01INT
PLAYER_BUYBACK_PRICE_10x04b112INT
PLAYER_BUYBACK_TIMESTAMP_10x04bd12INT
PLAYER_KILLS0x04c91TWO_SHORT
PLAYER_TODAY_CONTRIBUTION0x04ca1INT
PLAYER_YESTERDAY_CONTRIBUTION0x04cb1INT
PLAYER_LIFETIME_HONORBALE_KILLS0x04cc1INT
PLAYER_BYTES20x04cd1BYTES
PLAYER_WATCHED_FACTION_INDEX0x04ce1INT
PLAYER_COMBAT_RATING_10x04cf25INT
PLAYER_ARENA_TEAM_INFO_1_10x04e821INT
PLAYER_HONOR_CURRENCY0x04fd1INT
PLAYER_ARENA_CURRENCY0x04fe1INT
PLAYER_MAX_LEVEL0x04ff1INT
PLAYER_DAILY_QUESTS_10x050025INT
PLAYER_RUNE_REGEN_10x05194FLOAT
PLAYER_NO_REAGENT_COST_10x051d3INT
PLAYER_GLYPH_SLOTS_10x05206INT
PLAYER_GLYPHS_10x05266INT
PLAYER_GLYPHS_ENABLED0x052c1INT
PLAYER_PET_SPELL_POWER0x052d1INT

Fields that all gameobjects have:

NameOffsetSizeType
GAMEOBJECT_DISPLAYID0x00081INT
GAMEOBJECT_FLAGS0x00091INT
GAMEOBJECT_PARENTROTATION0x000a4FLOAT
GAMEOBJECT_DYNAMIC0x000e1TWO_SHORT
GAMEOBJECT_FACTION0x000f1INT
GAMEOBJECT_LEVEL0x00101INT
GAMEOBJECT_BYTES_10x00111BYTES

Fields that all dynamicobjects have:

NameOffsetSizeType
DYNAMICOBJECT_CASTER0x00062GUID
DYNAMICOBJECT_BYTES0x00081BYTES
DYNAMICOBJECT_SPELLID0x00091INT
DYNAMICOBJECT_RADIUS0x000a1FLOAT
DYNAMICOBJECT_CASTTIME0x000b1INT

Fields that all corpses have:

NameOffsetSizeType
CORPSE_OWNER0x00062GUID
CORPSE_PARTY0x00082GUID
CORPSE_DISPLAY_ID0x000a1INT
CORPSE_ITEM0x000b19INT
CORPSE_BYTES_10x001e1BYTES
CORPSE_BYTES_20x001f1BYTES
CORPSE_GUILD0x00201INT
CORPSE_FLAGS0x00211INT
CORPSE_DYNAMIC_FLAGS0x00221INT