ITM file format

Applies to:
BG1, BG1: TotS, BG2, BG2: ToB, IWD, IWD:HoW, IWD:TotL, BGEE

General Description
This file format describes an "item". Items include weapons, armor, books, scrolls, rings and more. Items can have attached abilties, occuring either when a target creature it hit, or when the item is equipped. ITM files have a similar structure to SPL files.

Header: Size = 114 Bytes Ext. Header: Size = 56 Bytes Feature Block: Size = 48 Bytes

Detailed Description
ITM files consist of a main header, zero or more extended headers (each containing zero or more feature blocks) and zero or more casting feature blocks. All the feature blocks are stored as a continuous data segment, with each extended header containing an offset into this data, and the main header containing an offset into this data for the casting feature blocks.
NB. A creature must meet the minimum stat requirements to be able to converse with an item.

Overall structure:


Offset Size (datatype) Description
0x0000 4 (char array)

Signature (‘ITM ‘)

0x0004 4 (char array)

Version (‘V1 ‘)

0x0008 4 (strref)

Unidentified Name (strref)

0x000c 4 (strref)

Identified Name (strref)

0x0010 8 (resref)

BG1, BG2, BGEE:
Replacement item (ITM)

PSTEE:
Drop sound - played when the item is dropped in the inventory (WAV)

0x0018 4 (dword)

Flags

0x001c 2 (word)

Item type

0x001e 1*4 (byte)

Usability bitmask

0x0022 2 (char array)

Item animation

0x0024 2 (word)

Min Level

0x0026 2 (word)

Min Strength (unused in BG1)

0x0028 1 (byte)

Min Strength Bonus (unused in BG1)
Note: A strength of 19 or above is considered to have a Strength Bonus of 0, and would therefore not be able to equip any weapon with a Strength Bonus restriction.

0x0029 1 (byte)

Kit Usability 1

0x002a 1 (byte)

Min Intelligence (unused in BG1)

0x002b 1 (byte)

Kit Usability 2

0x002c 1 (byte)

Min Dexterity (unused in BG1)

0x002d 1 (byte)

Kit Usability 3

0x002e 1 (byte)

Min Wisdom (unused in BG1)

0x002f 1 (byte)

Kit Usability 4

0x0030 1 (byte)

Min Constitution (unused in BG1)

0x0031 1 (byte)

Weapon Proficiency

0x0032 2 (word)

Min Charisma

0x0034 4 (dword)

Price

0x0038 2 (word)

Stack amount

0x003a 8 (resref)

Inventory icon (BAM)

0x0042 2 (word)

Lore to ID

0x0044 8 (resref)

Ground icon (BAM)

0x004c 4 (dword)

Weight

0x0050 4 (strref)

Unidentified Description (strref)

0x0054 4 (strref)

Identified Description (strref)

0x0058 8 (resref)

Description icon (BAM)

0x0060 4 (dword)

Enchantment

0x0064 4 (dword)

Offset to extended headers

0x0068 2 (word)

Count of extended headers

0x006a 4 (dword)

Offset to feature blocks

0x006e 2 (word)

Index into equipping feature blocks

0x0070 2 (word)

Count of equipping feature blocks



Items can have several "abilities" that correspond to an action the item can do (e.g. melee attacks, projectile attacks, spell-casting etc.). Each of these abilities is specified through an extended header. Only the first three extended headers can have charges (extended headers further than this use the charges of the first extended header). Tooltips for item abilities are set through tooltips.2da.

NB. For items to be stackable, they must contain at least one extension header, even if it is empty.
NB. For an attack type of projectile, if the projectile type is set to 1,2 or 3, the weapon will use the attack speed of the ammunition.

Offset Size (datatype) Description
0x0000 1 (char)

Attack type

  • 0 = None
  • 1 = Melee
  • 2 = Projectile
  • 3 = Magic
  • 4 = Launcher
0x0001 1 (char)

ID Req.

  • bit 0: ID Required
  • bit 1: Non-ID Required
0x0002 1 (char)

Location

  • 0 = None
  • 1 = Weapon
  • 2 = Spell
  • 3 = Equipment
  • 4 = Innate
0x0003 1 (char)

Alternative dice sides

0x0004 8 (resref)

Use icon

0x000c 1 (char)

Target type

  • 0 = Invalid (cannot be selected)
  • 1 = Creature
  • 2 = Crash
  • 3 = Character potrait
  • 4 = Area
  • 5 = Self
  • 6 = Crash
  • 7 = None (Self, ignores game pause)
0x000d 1 (char)

Target count

0x000e 2 (word)

Range

0x0010 1 (byte)

Projectile type

  • 0 = None
  • 1 = Arrow
  • 2 = Bolt
  • 3 = Bullet
  • 40 = Spear
  • 100 = Throwing Axe
0x0011 1 (byte)

Alternative dice thrown

0x0012 1 (byte)

Speed

0x0013 1 (byte)

Alternative damage bonus

0x0014 2 (word)

THAC0 bonus

A successful hit will always occur if any of the conditions below is true

  • This field is set to 32767
  • The target creature(s) is STATE_HELPLESS
  • The target is affected by time stop
0x0016 1 (byte)

Dice sides

0x0017 1 (byte)

Primary type

0x0018 1 (byte)

Dice thrown

0x0019 1 (byte)

Secondary type

0x001a 2 (word)

Damage bonus

0x001c 2 (word)

Damage type

  • 0 = None
  • 1 = Piercing/Magic
  • 2 = Blunt
  • 3 = Slashing
  • 4 = Ranged
  • 5 = Fists
  • 6 = Piercing/Blunt (more) (BG2)
  • 7 = Piercing/Slashing (more) (BG2)
  • 8 = Blunt/Slashing (less) (BG2)
0x001e 2 (word)

Count of feature blocks

0x0020 2 (word)

Index into feature blocks

0x0022 2 (word)

Charges

0x0024 2 (word)

Charge depletion behaviour

  • 0 = Don’t vanish
  • 1 = Expended
  • 2 = Expended (w/o sound)
  • 3 = Recharge each day
0x0026 4 (dword)

Flags

0x002a 2 (word)

Projectile animation (projectl.ids/missile.ids)

0x002c 2*3 (word)

Melee animation

0x0032 2 (word)

Bow/Arrow qualifier (0=No, 1=Yes)

0x0034 2 (word)

Crossbow/Bolt qualifier (0=No, 1=Yes)

0x0036 2 (word)

Misc. Projectile qualifier (0=No, 1=Yes)



Any action carried out by an item is done by feature blocks, each of which holds an effect number as well as targetting and timing information. The engine appears to roll a probability for each valid target type, rather than one probability per attack.

Offset Size (datatype) Description
0x0000 2 (word)

Opcode Number

0x0002 1 (char)

Target type

  • 0 = None
  • 1 = Self (pre-projectile)
  • 2 = Pre-target
  • 3 = Party
  • 4 = Everyone (inc. party)
  • 5 = Everyone (excl. party)
  • 6 = Everyone matching specific value of caster (or Party if cast by party member)
  • 7 = Everyone matching specific value of target (In ITM: ranged ability type only, otherwise no target)
  • 8 = Everyone (excl. caster)
  • 9 = Self (post-projectile)
0x0003 1 (char)

Power

0x0004 4 (dword)

Parameter 1

0x0008 4 (dword)

Parameter 2

0x000c 1 (char)

Timing Mode

  • 0 = Duration
  • 1 = Permanent
  • 2 = While equipped
  • 3 = Delayed Duration
  • 4 = Delayed
  • 5 = Delayed (transforms to 8)
  • 6 = Duration?
  • 7 = Permanent?
  • 8 = Permanent (unsaved)
  • 9 = Permanent (after Death)
  • 10 = Trigger
  • 4096 = Absolute duration

NB. all effects except those with Timing mode ‘9’ are removed by death.

0x000d 1 (char)

Resistance

The default behaviour is that effects cannot be dispelled and ignore magic resistance.

  • bit 0: Can be dispelled, affected by magic resistance
  • bit 1: Ignores magic resistance (when used in combination with bit 0)
  • bit 2: Bypasses deflection/reflection/trap opcodes (only in EE games patched to v2.0+ / external EFF files)
  • bit 31: Effect was applied by an ITM (only present in EE games patched to v2.0+ / external EFF files). It is set by the engine if the effect’s source ITM is identified. This bit is only used by opcode #324 which checks it to determine whether it should set STRREF_FEEDBACK_IMMUNE_RESOURCE (see ENGINEST.2DA) to the ITM’s general or identified name

The only difference between 0 and 2 is that 0 will automatically convert to 2 when targeting yourself.

This can also be presented in the more traditional way:

  • 0 = Natural/Nonmagical
  • 1 = Can be dispelled/Affected by resistance
  • 2 = Cannot be dispelled/Ignores resistance
  • 3 = Can be dispelled/Ignores resistance
0x000e 4 (dword)

Duration

0x0012 1 (char)

Probability 1

0x0013 1 (char)

Probability 2

Note: The BG1 engine treats probability as a single word, effects are applied in the range 0-probability.
Note: Other engines treat probability as two values, effects are applied in the range probability <= x <= probability.
Probability range is 0-99

0x0014 8 (resref)

Resource

0x001c 4 (dword)

Dice Thrown

0x0020 4 (dword)

Dice Sides

0x0024 4 (dword)

Saving Throw Type

  • bit 0: Spells
  • bit 1: Breathe
  • bit 2: Death
  • bit 3: Wands
  • bit 4: Polymorph
  • bit 10: Ignore primary target – Line AoE projectile doesn’t affect end target (EE only)
  • bit 11: Ignore secondary target – Line AoE projectile doesn’t affect bystanders (EE only)
  • bit 24: Bypass mirror image (EE/TobEx only)
  • bit 25: EE - ignore difficulty; TobEx - limit effect stacking
  • bit 26: TobEx internal (don’t use) - suspend effect application

NB. If more than 1 saving throw type is specified, the target rolls against their best save.

0x0028 4 (dword)

Saving Throw Bonus

0x002c 4 (dword)

TobEx: Stacking ID. Checked when bit 25 of the Saving Throw Type is set.

If two effects of the same opcode are applied, both have Limit Effect Stacking bit set, and both have the same stacking ID, then the latter applied effect is suspended in application until the former effect expires. Regardless of whether it is applied, the latter effect will expire at the same time that it would expire if it was applied. In other words, the total duration of some non-stacking effect opcode is not extended because more than one copy of the effect was applied.

Stacking IDs are unique to the opcode being applied. To maintain uniqueness of stacking IDs between different mods, one recommendation is to use the higher word of Special as the modder’s Infinity Engine Community Prefix, then use the lower word as an identifying ID. For example, 0x41360001 (‘A6’ 0x0001).




Header Flags

Bit Byte 1 Byte 2 Byte 3 Byte 4
0 Unsellable (critical item)1 Silver Unused Not dispellable in magical weapon slot (BGEE, TobEx)
1 Two-handed2 Cold-Iron Unused Toggle critical hit aversion5(BGEE, TobEx)
2 Movable Stolen (unsellable) / forces dual-wield animation

Set offhand animations for 0x5###-0x6### animId series (excluding 0x64##) when weapon placed in offhand.
Unused Unused
3 Displayable Conversable Unused Unused
4 Cursed Force two-handed animation (BGEE) Unused Unused
5 Cannot scribe to spellbook (scrolls) Not usable in off-hand4(BGEE) Unused Unused
6 Magical Usable in inventory (PSTEE) Unused Unused
7 Left-handed3 Adamantine (BGEE) Unused Unused

1 In BG1, this flag does not affect whether the item can be sold.
2 Forces Two-Handed Weapon style, disables off-hand attacks and equipped effects.
3 Disables off-hand attacks, equipped effects and Two-Weapon style (inventory still displays Two-Weapon style modifiers, but they are not included in the calculations).
4 It does not disable equipped effects of the off-hand (weapon or shield). In particular:
  • For normal weapons, it only disables Two-Weapon style.
  • For magically created weapons, it disables off-hand attacks and Two-Weapon style.
5 Keep in mind that if you set this bit to 1 for an ITM whose Item type is 0x0007 (Headgear), then you'll toggle off the Critical hit aversion.

Header Item Type

The item type of an item affects the pick-up/put-down sound when moving the item in the inventory, whether stores will buy the item and the ability buttons shown on the item description screen.

Code Item type
0x0000 Books/misc
0x0001 Amulets and necklaces
0x0002 Armor
0x0003 Belts and girdles
0x0004 Boots
0x0005 Arrows
0x0006 Bracers and gauntlets
0x0007 Helms, hats, and other head-wear
0x0008 Keys (not in Icewind Dale?)
0x0009 Potions
0x000a Rings
0x000b Scrolls
0x000c Shields (not in IWD)
0x000d Food
0x000e Bullets (for a sling)
0x000f Bows
0x0010 Daggers
0x0011 Maces (in BG, this includes clubs)
0x0012 Slings
0x0013 Small swords
0x0014 Large swords
0x0015 Hammers
0x0016 Morning stars
0x0017 Flails
0x0018 Darts
0x0019 Axes (specifically, 1-handed axes -- halberds and 2-handed polearms not included)
0x001a Quarterstaff
0x001b Crossbow
0x001c Hand-to-hand weapons (fist, fist irons, punch daggers, etc)
0x001d Spears
0x001e Halberds (2-handed polearms)
0x001f Crossbow bolts
0x0020 Cloaks and robes
0x0021 Gold pieces (not an inventory item, but can appear as "monster dropped" treasure)
0x0022 Gems
0x0023 Wands
0x0024 Containers/eye/broken armor
0x0025 Books/Broken shields/bracelets
0x0026 Familiars/Broken swords/earrings
0x0027 Tattoos (PST)
0x0028 Lenses (PST)
0x0029 Bucklers/teeth
0x002a Candles
0x002b
Unknown
0x002c Clubs (IWD)
0x002d
Unknown
0x002e
Unknown
0x002f Large Shields (IWD)
0x0030
Unknown
0x0031 Medium Shields (IWD)
0x0032 Notes
0x0033
Unknown
0x0034
Unknown
0x0035 Small Shields (IWD)
0x0036
Unknown
0x0037 Telescopes (IWD)
0x0038 Drinks (IWD)
0x0039 Great Swords (IWD)
0x003a Container
0x003b Fur/pelt
0x003c Leather Armor
0x003d Studded Leather Armor
0x003e Chain Mail
0x003f Splint Mail
0x0040 Half Plate
0x0041 Full Plate
0x0042 Hide Armor
0x0043 Robe
0x0044
Unknown
0x0045 Bastard Sword
0x0046 Scarf
0x0047 Food (IWD2)
0x0048 Hat
0x0049 Gauntlet

Header Usability

Bit Byte 1 Byte 2 Byte 3 Byte 4
0 Chaotic... Cleric/Mage Fighter/Mage/Thief Dwarf
1 ...Evil Cleric/Thief Fighter/Thief Half-Elf
2 ...Good Cleric/Ranger Mage Halfling
3 ...Neutral Fighter Mage/Thief Human
4 Lawful... Fighter/Druid Paladin Gnome
5 Neutral... Fighter/Mage Ranger Monk
6 Bard Fighter/Cleric Thief Druid
7 Cleric Fighter/Mage/Cleric Elf Half-Orc

Note: PSTEE uses ITM V1.1 usability flags.

Header Animation

Value(ASCII) Value(Hex) Description
" " 2020h <none>
"2A" 3241h Leather Armor
"3A" 3341h Chainmail
"4A" 3441h Plate Mail
"2W" 3257h Robe
"3W" 3357h Robe
"4W" 3457h Robe
"AX" 4158h Axe
"BW" 4257h Bow
"CB" 4342h Crossbow
"CL" 434Ch Club
"D1" 4431h Buckler
"D2" 4432h Shield (Small)
"D3" 4433h Shield (Medium)
"D4" 4434h Shield (Large)
"DD" 4444h Dagger
"FL" 464Ch Flail
"FS" 4653h Flame Sword
"H0" 4830h Small Vertical Horns
"H1" 4831h Large Horizontal Horns
"H2" 4832h Feather Wings
"H3" 4833h Top Plume
"H4" 4834h Dragon Wings
"H5" 4835h Feather Sideburns
"H6" 4836h Large Curved Horns (incorrect paperdoll image)
"HB" 4842h Halberd
"MC" 4D43h Mace
"MS" 4D53h Morning Star
"QS" 5153h Quarter Staff (Metal)
"S1" 5331h Sword 1-Handed
"S2" 5332h Sword 2-Handed
"SL" 534Ch Sling
"SP" 5350h Spear
"SS" 5353h Short Sword
"WH" 5748h War Hammer
"S3" 5333h Katana #
"SC" 5343h Scimitar #

Header Kit Usability

Bit Byte 1 Byte 2 Byte 3 Byte 4
0 Cleric of Talos Stalker Ranger Diviner Beserker Fighter
1 Cleric of Helm Beastmaster Ranger Enchanter Wizardslayer Fighter
2 Cleric of Lathlander Assassin Thief Illusionist Kensai Fighter
3 Totemic Druid Bounty Hunter Thief Invoker Cavalier Paladin
4 Shapeshifter Druid Swashbuckler Thief Necromancer Inquisiter Paladin
5 Avenger Druid Blade Bard Transmuter Undead Hunter Paladin
6 Barbarian Jester Bard All (no kit) Abjurer
7 Wildmage Skald Bard Ferlain Conjurer

Header Proficiency

Value (hex) Description
00h None
59h Bastard Sword
5Ah Long Sword
5Bh Short Sword
5Ch Axe
5Dh Two-Handed Sword
5Eh Katana
5Fh Scimitar/Wakizashi/Ninja-To
60h Dagger
61h War Hammer
62h Spear
63h Halberd
64h Flail/Morningstar
65h Mace
66h Quarterstaff
67h Crossbow
68h Long Bow
69h Short Bow
6Ah Darts
6Bh Sling
6Ch Blackjack
6Dh Gun
6Eh Martial Arts
6Fh Two-Handed Weapon Skill
70h Sword and Shield Skill
71h Single Weapon Skill
72h Two Weapon skill
73h Club
74h Extra Proficiency 2
75h Extra Proficiency 3
76h Extra Proficiency 4
77h Extra Proficiency 5
78h Extra Proficiency 6
79h Extra Proficiency 7
7Ah Extra Proficiency 8
7Bh Extra Proficiency 9
7Ch Extra Proficiency 10
7Dh Extra Proficiency 11
7Eh Extra Proficiency 12
7Fh Extra Proficiency 13
80h Extra Proficiency 14
81h Extra Proficiency 15
82h Extra Proficiency 16
83h Extra Proficiency 17
84h Extra Proficiency 18
85h Extra Proficiency 19
86h Extra Proficiency 20

Extended Header MeleeAnimation

Value Word 1 Value Word 2 Value Word 3 Data
00h 14h 50h Dagger
0Ah 19h 41h Short Sword
32h 32h 00h Long Sword, Bastard Sword, Scimitar, Battle Axe, Warhammer, Club, Mace, Flail, Morning Star
3Ch 28h 00h Two-Handed Sword
00h 23h 41h Halberd
00h 00h 64h Spear
0Ah 46h 14h Staff
00h 00h 00h Any Missile Weapon (Bow, Arrow, CrossBow, Bolt, Sling, Bullet, Throwing Axe, Dart, Throwing Dagger, etc.)
22h 21h 21h Any Non-Weapon Item (Amulets, Rings, Wands, etc.)

Extension Header Flags

Bit Byte 1 Byte 2
0 Add strength bonus Unknown
1 Breakable EE: Break Sanctuary
2 Damage strength bonus (BGEE split bit 0) Hostile
3 THAC0 strength bonus (BGEE split bit 0) Recharges
4 Unknown Unknown
5 Unknown Unknown
6 Unknown Unknown
7 Unknown Unknown