struct Dice {
   unsigned char rolls; // F.e. 4
   unsigned char sides; // F.e. T6
   unsigned char base;  // F.e. +7
                        //   =  4T6+7
};

struct ItemType {
    unsigned short slots;       // At which position in inventory it is allowed to be put. See INVENTORY_USAGE_* above.
    short int flags;            // Item's flags. See ITEM_FLAG_* above.
    char ACbonus;               // Adds to armor class
    unsigned char professions;  // Allowed for this profession. See CLASS_USAGE_* above.
    unsigned char hands;        // Allowed for this hand (0x1 => right hand used, 0x2 => both hands used)
    Dice damageVsSmall;         // Damage versus small
    Dice damageVsBig;           // Damage versus big
    char unknown1;              // Always 0 in EotB 1 & 2
    char Action;                // Action to take when the item is used (ie: right click)
    char unknown2;              // Always 0 in EotB 1 & 2
};

typedef enum {
    INVENTORY_USAGE_NONE     = 0,
    INVENTORY_USAGE_QUIVER   = 1 << 0,
    INVENTORY_USAGE_ARMOUR   = 1 << 1,
    INVENTORY_USAGE_BRACERS  = 1 << 2,
    INVENTORY_USAGE_BACKPACK = 1 << 3,
    INVENTORY_USAGE_BOOTS    = 1 << 4,
    INVENTORY_USAGE_HELMET   = 1 << 5,
    INVENTORY_USAGE_NECKLACE = 1 << 6,
    INVENTORY_USAGE_BELT     = 1 << 7,
    INVENTORY_USAGE_RING     = 1 << 8
} InventoryUsage;

typedef enum {
    CLASS_USAGE_NONE    = 0,
    CLASS_USAGE_FIGHTER = 1 << 0,
    CLASS_USAGE_MAGE    = 1 << 1,
    CLASS_USAGE_CLERIC  = 1 << 2,
    CLASS_USAGE_THIEF   = 1 << 3,
} ClassUsage;
 

typedef enum {
    ITEM_FLAG_NONE        = 0,           //
    ITEM_FLAG_01          = 1 << 0,      // unused
    ITEM_FLAG_ARMOR_BONUS = 1 << 1,      // Give some armor bonus
    ITEM_FLAG_04          = 1 << 2,      // unused
    ITEM_FLAG_DRAIN_HP    = 1 << 3,      // Drain HP to the target
    ITEM_FLAG_SPEED_BONUS = 1 << 4,      // Give a move speed bonus
    ITEM_FLAG_CURSED      = 1 << 5,      // Item can't be removed from hand
    ITEM_FLAG_IDENTIFIED  = 1 << 6,      // Item is identified
    ITEM_FLAG_MAGIC       = 1 << 7,      // Magical item
    ITEM_FLAG_RING        = 1 << 8,      // Item is a ring
} ItemFlag;

Item action codes :

0x00 = "Nothing";
0x01 = "0x01";
0x02 = "Ammunition";
0x03 = "Use ammunition";
0x04 = "Amulet | Coin | Eye of Talon...";
0x05 = "Open Mage spell window";
0x06 = "Open Cleric spell window";
0x07 = "Food";
0x08 = "Bones";
0x09 = "Glass sphere | Magic dust | Scroll";
0x0A = "Scroll";
0x0B = "Parchment (something to read)";
0x0C = "Stone item (Cross, Dagger, Gem...)";
0x0D = "Key";
0x0E = "Potion";
0x0F = "Gem";
0x12 = "0x12";
0x13 = "Blow horn (N/S/W/E wind...)";
0x14 = "Amulet of Life or Death";
0x80 = "Range Party member";
0x81 = "Range Close";
0x82 = "Range Medium";
0x83 = "Range Long";
0x84 = "Lock picks";
0x8A = "Amulet";
0x90 = "Crimson ring";
0x92 = "Wand";