Code:
// * the counterpart to H3ObjectAttributes
    struct H3ObjectDetails
    {
        // * +0
        // * reference to H3ObjectAttributes
        UINT32 setup;
        // * +4
        // * x position on map
        UINT8 x;
        // * +5
        // * y position on map
        UINT8 y;
        // * +6
        // * z position on map
        UINT8 z;
    protected:
        h3align _f_7;
    public:
        // * +8
        // * reference to object's DEF for drawing purposes
        UINT16 num;
    protected:
        h3align _f_A[2];
    };
struct H3ObjectAttributes
    {
        // * +0
        // * the name of the DEF
        H3String defName;
        // * +10
        // * the width of object, read from LoD @ 0x503ED5
        UINT8 width;
        // * +11
        // * the height of object, read from LoD @ 0x503EE2
        UINT8 height;
    protected:
        h3align _f_12[2];
    public:
        // * +14
        // * a 8x6 bitfield of the object's presence
        H3ObjectMask colors;
        // * +1C
        // * a 8x6 bitfield of the object's passability
        H3ObjectMask passability;
        // * +24
        // * a 8x6 bitfield of the object's shadow
        H3ObjectMask shadows;
        // * +2C
        // * a 8x6 bitfield of the object's yellow tiles
        H3ObjectMask entrances;
        // * +34
        // * a bitfield of vaild terrains for this object
        H3Bitfield maskTerrain;
        // * +38
        // * the type of object, 0 ~ 232
        INT32 type;
        // * +3C
        // * the subtype of object, depends on type
        INT32 subtype;
        // * +40
        // * is the object flat on the adventure map? e.g. cursed ground
        BOOL8 flat;
    protected:
        h3align _f_41;
        // * referenced a few places, e.g. 0x50663A
        h3unk _f_42[2];
    };