Jump to content

ITM/EFF file format

Andrea C.

Recommended Posts

This information also comes from the BG:EE devs. I thought I'd post it since CamDawg hasn't done so yet. To me, it's tantamount to reading Chinese :)


	DWORD   nFileType;
	DWORD   nFileVersion;
	STRREF  genericName;
	STRREF  identifiedName;
	RESREF  usedUpItemID;
	DWORD   itemFlags;
	WORD	itemType;
	DWORD   notUsableBy;
	BYTE	animationType[2];
	//WORD	animationType;
	WORD	minLevelRequired;
	WORD	minSTRRequired;
	BYTE	minSTRBonusRequired;
	BYTE	notUsableBy2a; //Uppermost byte of a DWORD
	BYTE	minINTRequired;
	BYTE	notUsableBy2b;
	BYTE	minDEXRequired;
	BYTE	notUsableBy2c;
	BYTE	minWISRequired;
	BYTE	notUsableBy2d;
	BYTE	minCONRequired;
	BYTE	proficiencyType;
	WORD	minCHRRequired;

	DWORD   baseValue;
	WORD	maxStackable;
	RESREF  itemIcon;
	WORD	loreValue;
	RESREF  groundIcon;
	DWORD   baseWeight;
	STRREF  genericDescription;
	STRREF  identifiedDescription;
	RESREF  descriptionPicture;
	DWORD   attributes;

	DWORD   abilityOffset;
	WORD	abilityCount;

	DWORD   effectsOffset;
	WORD	equipedStartingEffect;
	WORD	equipedEffectCount;


	WORD	type;
	BYTE	quickSlotType;
	BYTE	largeDamageDice; //NEW!
	RESREF  quickSlotIcon;
	BYTE	actionType;
	BYTE	actionCount;
	WORD	range;
	BYTE	launcherType;
	BYTE	largeDamageDiceCount; //New!
	BYTE	speedFactor;
	BYTE	largeDamageDiceBonus; //New!
	SHORT   thac0Bonus;
	BYTE	damageDice;
	BYTE	school;
	BYTE	damageDiceCount;
	BYTE	secondaryType;
	WORD	damageDiceBonus;
	WORD	damageType;
	WORD	effectCount;
	WORD	startingEffect;
	WORD	maxUsageCount;
	WORD	usageFlags;
	DWORD   abilityFlags;
	WORD	missileType;

	WORD	effectID;
	BYTE	targetType;
	BYTE	spellLevel;
	int	 effectAmount;
	DWORD   dwFlags;
	WORD	durationType;
	DWORD   duration;
	BYTE	probabilityUpper;
	BYTE	probabilityLower;
	RESREF  res;
	DWORD   numDice;
	DWORD   diceSize;
	DWORD   savingThrow;
	LONG	saveMod;
	DWORD   special;

Link to comment

No, "largedamage" fields are not entirely new, Ascension64 already reported them :)


0x0011 1 (byte)

Alternative dice thrown

0x0013 1 (byte) Alternative damage bonus




What is more interesting, there is no confirmation about these:


0x0017 1 (byte) Primary type

0x0019 1 (byte) Secondary type

Link to comment

They're there (school and secondaryType).


Taimon was the first to reverse these fields IIRC.

Where they are then, in the original source???

Of course they could hack the values out of the field, what i found interesting: there is no dedicated field for them.



Now i see them! Odd, i couldn't see them earlier.

Link to comment
No, "largedamage" fields are not entirely new, Ascension64 already reported them

The comments reflect the original developers hacking the code, rather than an interpretation by us. Anyway, local copy updated. I've kept some fields separate (e.g. in places we have a dword split into 2 words, with info on how the engine interprets each word).

Link to comment


This topic is now archived and is closed to further replies.

  • Create New...