[1.10] D2DataTables - Txt-File structs

This forum is for discussions on how to edit what can not be edited through the txt files, needless to say this isn't about battle net hacking.

Moderators: Nefarius, Havvoric

Post Reply
User avatar
Mnw1995
Junior Member
Paladin
Posts: 100
Joined: Sat Apr 02, 2011 6:28 pm

[1.10] D2DataTables - Txt-File structs

Post by Mnw1995 » Sun Dec 01, 2013 1:10 am

Misc structs used in the DataTables:

D2CharItemStrc

Code: Select all

struct D2CharItemStrc
{
	union
	{
		DWORD dwItemCode;				//0x00
		char szItemCode[4];				//0x00
	};
    char nBodyLoc;						//0x04
    char nItemCount;					//0x05
    WORD unk0x6;						//0x06
};
D2CubeInputItem

Code: Select all

struct D2CubeInputItem
{
	BYTE nInputFlags;					//0x00
	BYTE nItemType;						//0x01
	WORD wItem;							//0x02
	WORD wItemID;						//0x04
	BYTE nQuality;						//0x06
	BYTE nQuantity;						//0x07
};
D2CubeOutputItem

Code: Select all

struct D2CubeOutputItem
{
	BYTE nItemFlags;					//0x00
	BYTE nItemType;						//0x01
	WORD wItem;							//0x02
	WORD wItemID;						//0x04
	BYTE nQuality;						//0x06
	BYTE nQuantity;						//0x07
	BYTE nType;							//0x08
	BYTE nLvl;							//0x09
	BYTE nPLvl;							//0x0A
	BYTE nILvl;							//0x0B
	WORD wPrefixId;						//0x0C
	WORD unk0x0E;						//0x0E
	WORD unk0x10;						//0x10
	WORD wSuffixId;						//0x12
	DWORD unk0x14;						//0x14
	struct 
	{					
		DWORD	dwMod;			//0x00
		WORD	wModParam;		//0x04
		WORD	wModMin;		//0x06
		WORD	wModMax;		//0x08
		WORD	wModChance;		//0x0A
	} sMods[5]; 						//0x18	
};

And now the Txt's:


Arena.txt

Code: Select all

struct D2ArenaTxt
{
	DWORD dwSuicide;					//0x00
	DWORD dwPlayerKill;					//0x04
	DWORD dwPlayerKillPercent;			//0x08
	DWORD dwMonsterKill;				//0x0C
	DWORD dwPlayerDeath;				//0x10
	DWORD dwPlayerDeathPercent;			//0x14
	DWORD dwMonsterDeath;				//0x18
};
Armtype.txt

Code: Select all

struct D2ArmTypeTxt
{
	char szName[32];					//0x00
	char szToken[20];					//0x20
};
Automagic.txt, MagicSuffix.txt, MagicPrefix.txt

Code: Select all

struct D2AutoMagicTxt
{
	char* szName[32];					//0x00
	WORD wTblIndex;						//0x20
	WORD wVersion;						//0x22
	DWORD dwMod1Code;					//0x24
	DWORD dwMod1Param;					//0x28
	DWORD dwMod1Min;					//0x2C
	DWORD dwMod1Max;					//0x30
	DWORD dwMod2Code;					//0x34
	DWORD dwMod2Param;					//0x38
	DWORD dwMod2Min;					//0x3C
	DWORD dwMod2Max;					//0x40
	DWORD dwMod3Code;					//0x44
	DWORD dwMod3Param;					//0x48
	DWORD dwMod3Min;					//0x4C
	DWORD dwMod3Max;					//0x50
	WORD wSpawnable;					//0x54
	WORD wTransformColor;				//0x56
	DWORD dwLevel;						//0x58
	DWORD dwGroup;						//0x5C
	DWORD dwMaxLevel;					//0x60
	BYTE nRare;							//0x64
	BYTE nLevelReq;						//0x65
	BYTE nClassSpecific;				//0x66
	BYTE nClass;						//0x67
	WORD wClassLevelReq;				//0x68
	WORD wIType1;						//0x6A
	WORD wIType2;						//0x6C
	WORD wIType3;						//0x6E
	WORD wIType4;						//0x70
	WORD wIType5;						//0x72
	WORD wIType6;						//0x74
	WORD wIType7;						//0x76
	WORD wEType1;						//0x78
	WORD wEType2;						//0x7A
	WORD wEType3;						//0x7C
	WORD wEType4;						//0x7E
	WORD wEType5;						//0x80
	WORD wFrequency;					//0x82
	DWORD dwDivide;						//0x84
	DWORD dwMultiply;					//0x88
	DWORD dwAdd;						//0x8C
};
Automap.txt

Code: Select all

struct D2AutomapTxt
{
	char szLevelName[16];				//0x00
	char szTileName[8];					//0x10
	BYTE nStyle;						//0x18
	BYTE nStartSequence;				//0x19
	WORD wEndSequence;					//0x1A
	DWORD dwCel1;						//0x1C
	DWORD dwCel2;						//0x20
	DWORD dwCel3;						//0x24
	DWORD dwCel4;						//0x28
};
Belts.txt

Code: Select all

struct D2BeltsTxt
{
	DWORD unk0x00;						//0x00
	DWORD dwNumBoxes;					//0x04
	DWORD dwBox1Left;					//0x08
	DWORD dwBox1Right;					//0x0C
	DWORD dwBox1Top;					//0x10
	DWORD dwBox1Bottom;					//0x14
	DWORD dwBox2Left;					//0x18
	DWORD dwBox2Right;					//0x1C
	DWORD dwBox2Top;					//0x20
	DWORD dwBox2Bottom;					//0x24
	DWORD dwBox3Left;					//0x28
	DWORD dwBox3Right;					//0x2C
	DWORD dwBox3Top;					//0x30
	DWORD dwBox3Bottom;					//0x34
	DWORD dwBox4Left;					//0x38
	DWORD dwBox4Right;					//0x3C
	DWORD dwBox4Top;					//0x40
	DWORD dwBox4Bottom;					//0x44
	DWORD dwBox5Left;					//0x48
	DWORD dwBox5Right;					//0x4C
	DWORD dwBox5Top;					//0x50
	DWORD dwBox5Bottom;					//0x54
	DWORD dwBox6Left;					//0x58
	DWORD dwBox6Right;					//0x5C
	DWORD dwBox6Top;					//0x60
	DWORD dwBox6Bottom;					//0x64
	DWORD dwBox7Left;					//0x68
	DWORD dwBox7Right;					//0x6C
	DWORD dwBox7Top;					//0x70
	DWORD dwBox7Bottom;					//0x74
	DWORD dwBox8Left;					//0x78
	DWORD dwBox8Right;					//0x7C
	DWORD dwBox8Top;					//0x80
	DWORD dwBox8Bottom;					//0x84
	DWORD dwBox9Left;					//0x88
	DWORD dwBox9Right;					//0x8C
	DWORD dwBox9Top;					//0x90
	DWORD dwBox9Bottom;					//0x94
	DWORD dwBox10Left;					//0x98
	DWORD dwBox10Right;					//0x9C
	DWORD dwBox10Top;					//0xA0
	DWORD dwBox10Bottom;				//0xA4
	DWORD dwBox11Left;					//0xA8
	DWORD dwBox11Right;					//0xAC
	DWORD dwBox11Top;					//0xB0
	DWORD dwBox11Bottom;				//0xB4
	DWORD dwBox12Left;					//0xB8
	DWORD dwBox12Right;					//0xBC
	DWORD dwBox12Top;					//0xC0
	DWORD dwBox12Bottom;				//0xC4
	DWORD dwBox13Left;					//0xC8
	DWORD dwBox13Right;					//0xCC
	DWORD dwBox13Top;					//0xD0
	DWORD dwBox13Bottom;				//0xD4
	DWORD dwBox14Left;					//0xD8
	DWORD dwBox14Right;					//0xDC
	DWORD dwBox14Top;					//0xE0
	DWORD dwBox14Bottom;				//0xE4
	DWORD dwBox15Left;					//0xE8
	DWORD dwBox15Right;					//0xEC
	DWORD dwBox15Top;					//0xF0
	DWORD dwBox15Bottom;				//0xF4
	DWORD dwBox16Left;					//0xF8
	DWORD dwBox16Right;					//0xFC
	DWORD dwBox16Top;					//0x100
	DWORD dwBox16Bottom;				//0x104
};
BodyLocs.txt

Code: Select all

struct D2BodyLocsTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
Books.txt

Code: Select all

struct D2BooksTxt
{
	WORD wStr;							//0x00
	WORD wSpellIcon;					//0x02
	DWORD dwPSpell;						//0x04
	DWORD dwScrollSkillId;				//0x08
	DWORD dwBookSkillId;				//0x0C
	DWORD dwBaseCost;					//0x10
	DWORD dwCostPerCharge;				//0x14
	DWORD dwScrollICode;				//0x18
	DWORD dwBookICode;					//0x1C
};
CharStats.txt

Code: Select all

struct D2CharStatsTxt
{
	wchar_t wszName[16];				//0x00
    char szName[16];					//0x20
    BYTE nStr;							//0x30
    BYTE nDex;							//0x31
    BYTE nEne;							//0x32
    BYTE nVita;							//0x33
    BYTE nStamina;						//0x34
    BYTE nHpAdd;						//0x35
    BYTE nPercentStr;					//0x36
    BYTE nPercentInt;					//0x37
    BYTE nPercentDex;					//0x38
    BYTE nPercentVit;					//0x39
    BYTE nManaRecovery;					//0x3A
    BYTE unk0x3B;						//0x3B
    DWORD dwToHitFactor;				//0x3C
    BYTE nWalkSpeed;					//0x40
    BYTE nRunSpeed;						//0x41
    BYTE nRunDrain;						//0x42
    BYTE nLifePerLevel;					//0x43
    BYTE nStaminaPerLevel;				//0x44
    BYTE nManaPerLevel;					//0x45
    BYTE nLifePerVitality;				//0x46
    BYTE nStaminaPerVitality;			//0x47
    BYTE nManaPerMagic;					//0x48
    BYTE nBlockFactor;					//0x49
    WORD unk0x4A;						//0x4A
    DWORD dwWeaponClassCode;			//0x4C
    BYTE nStatsPerLevel;				//0x50
    BYTE unk0x51;						//0x51
    WORD wAllSkills;					//0x52
    WORD wSkillTab[3];					//0x54
    WORD wClassSkills;					//0x5A
    D2CharItemStrc pItems[10];			//0x5C
    WORD nStartSkill;					//0xAC
    WORD nBaseSkill[10];				//0xAE
    WORD unk0xC2;						//0xC2
};
CharTemplate.txt

Code: Select all

struct D2CharTemplateTxt
{
	char szName[31];					//0x00
	BYTE nLevel;						//0x1F
	BYTE nClass;						//0x20
	BYTE nStr;							//0x21
	BYTE nDex;							//0x22
	BYTE nInt;							//0x23
	BYTE nVit;							//0x24
	BYTE nMana;							//0x25
	BYTE nHitpoints;					//0x26
	BYTE nManaRegenBonus;				//0x27
	BYTE nVelocity;						//0x28
	BYTE nAttackRate;					//0x29
	BYTE nOtherRate;					//0x2A
	BYTE nRightSkill;					//0x2B
	DWORD unk0x2C;						//0x2C
	DWORD dwSkill[9];					//0x30
	DWORD dwSkillLevel[9];				//0x54
	D2CharItemStrc pItems[15];			//0x78
};
Colors.txt

Code: Select all

struct D2ColorsTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
CompCode.txt

Code: Select all

struct D2CompCodeTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
Composit.txt

Code: Select all

struct D2CompositTxt
{
	char szName[32];					//0x00
	char szToken[20];					//0x20
};
CubeMain.txt

Code: Select all

struct D2CubeMainTxt
{
	BYTE nEnabled;						//0x00
	BYTE nLadder;						//0x01
	BYTE nMindiff;						//0x02
	BYTE nClass;						//0x03
	DWORD dwOp;							//0x04
	DWORD dwParam;						//0x08
	DWORD dwValue;						//0x0C
	WORD wNumInputs;					//0x10
	WORD wVersion;						//0x12
	D2CubeInputItem pInputItem[7];		//0x14
	D2CubeOutputItem pOutputItem[3];	//0x4C
};
DifficultyLevels.txt

Code: Select all

struct D2DifficultyLevelsTxt
{
	DWORD dwResistPenalty;				//0x00
	DWORD dwDeathExpPenalty;			//0x04
	DWORD dwUberCodeOddsNorm;			//0x08
	DWORD dwUberCodeOddsGood;			//0x0C
	DWORD dwMonsterSkillBonus;			//0x10
	DWORD dwMonsterFreezeDiv;			//0x14
	DWORD dwMonsterColdDiv;				//0x18
	DWORD dwAiCurseDiv;					//0x1C
	DWORD dwUltraCodeOddsNorm;			//0x20
	DWORD dwUltraCodeOddsGood;			//0x24
	DWORD dwLifeStealDiv;				//0x28
	DWORD dwManaStealDiv;				//0x2C
	DWORD dwUniqueDmgBonus;				//0x30
	DWORD dwChampionDmgBonus;			//0x34
	DWORD dwHireableBossDmgPercent;		//0x38
	DWORD dwMonsterCEDmgPercent;		//0x3C
	DWORD dwStaticFieldMin;				//0x40
	DWORD dwGambleRare;					//0x44
	DWORD dwGambleSet;					//0x48
	DWORD dwGambleUniq;					//0x4C
	DWORD dwGambleUber;					//0x50
	DWORD dwGambleUltra;				//0x54
};
ElemTypes.txt

Code: Select all

struct D2ElemTypesTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
Events.txt

Code: Select all

struct D2EventsTxt
{
	WORD wEvent;						//0x00
};
Experience.txt

Code: Select all

struct D2ExperienceTxt
{
	DWORD dwAmazon;						//0x00
	DWORD dwSorceress;					//0x04
	DWORD dwNecromancer;				//0x08
	DWORD dwPaladin;					//0x0C
	DWORD dwBarbarian;					//0x10
	DWORD dwDruid;						//0x14
	DWORD dwAssassin;					//0x18
	DWORD dwExpRatio;					//0x1C
};
Gamble.txt

Code: Select all

struct D2GambleTxt
{
	char szItemCode[12];				//0x00
};
Gems.txt

Code: Select all

struct D2GemsTxt
{
	char szName[32];					//0x00
	char szLetter[8];					//0x20
	BYTE unk0x28[6];					//0x28
	BYTE nNumMods;						//0x2E
	BYTE nTransForm;					//0x2F
	DWORD dwWeaponMod1Code;				//0x30
	DWORD dwWeaponMod1Param;			//0x34
	DWORD dwWeaponMod1Min;				//0x38
	DWORD dwWeaponMod1Max;				//0x3C
	DWORD dwWeaponMod2Code;				//0x40
	DWORD dwWeaponMod2Param;			//0x44
	DWORD dwWeaponMod2Min;				//0x48
	DWORD dwWeaponMod2Max;				//0x4C
	DWORD dwWeaponMod3Code;				//0x50
	DWORD dwWeaponMod3Param;			//0x54
	DWORD dwWeaponMod3Min;				//0x58
	DWORD dwWeaponMod3Max;				//0x5C
	DWORD dwHelmMod1Code;				//0x60
	DWORD dwHelmMod1Param;				//0x64
	DWORD dwHelmMod1Min;				//0x68
	DWORD dwHelmMod1Max;				//0x6C
	DWORD dwHelmMod2Code;				//0x70
	DWORD dwHelmMod2Param;				//0x74
	DWORD dwHelmMod2Min;				//0x78
	DWORD dwHelmMod2Max;				//0x7C
	DWORD dwHelmMod3Code;				//0x80
	DWORD dwHelmMod3Param;				//0x84
	DWORD dwHelmMod3Min;				//0x88
	DWORD dwHelmMod3Max;				//0x8C
	DWORD dwShieldMod1Code;				//0x90
	DWORD dwShieldMod1Param;			//0x94
	DWORD dwShieldMod1Min;				//0x98
	DWORD dwShieldMod1Max;				//0x9C
	DWORD dwShieldMod2Code;				//0xA0
	DWORD dwShieldMod2Param;			//0xA4
	DWORD dwShieldMod2Min;				//0xA8
	DWORD dwShieldMod2Max;				//0xAC
	DWORD dwShieldMod3Code;				//0xB0
	DWORD dwShieldMod3Param;			//0xB4
	DWORD dwShieldMod3Min;				//0xB8
	DWORD dwShieldMod3Max;				//0xBC
};
HireDesc.txt

Code: Select all

struct D2HireDescTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
Hireling.txt

Code: Select all

struct D2HirelingTxt
{
	DWORD dwVersion;					//0x00
	DWORD dwId;							//0x04
	DWORD dwClass;						//0x08
	DWORD dwAct;						//0x0C
	DWORD dwDifficulty;					//0x10
	DWORD dwSeller;						//0x14
	DWORD dwGold;						//0x18
	DWORD dwLevel;						//0x1C
	DWORD dwExpPerLvl;					//0x20
	DWORD dwHitpoints;					//0x24
	DWORD dwHitpointsPerLvl;			//0x28
	DWORD dwDefense;					//0x2C
	DWORD dwDefensePerLvl;				//0x30
	DWORD dwStr;						//0x34
	DWORD dwStrPerLvl;					//0x38
	DWORD dwDex;						//0x3C
	DWORD dwDexPerLvl;					//0x40
	DWORD dwAttackRate;					//0x44
	DWORD dwAttackRatePerLvl;			//0x48
	DWORD dwShare;						//0x4C
	DWORD dwDmgMin;						//0x50
	DWORD dwDmgMax;						//0x54
	DWORD dwDmgPerLvl;					//0x58
	DWORD dwResist;						//0x5C
	DWORD dwResistPerLvl;				//0x60
	DWORD dwDefaultChance;				//0x64
	DWORD dwHead;						//0x68
	DWORD dwTorso;						//0x6C
	DWORD dwWeapon;						//0x70
	DWORD dwShield;						//0x74
	DWORD dwSkill[6];					//0x78
	DWORD dwChance[6];					//0x90
	DWORD dwChancePerLvl[6];			//0xA8
	BYTE nMode[6];						//0xC0
	BYTE nLevel[6];						//0xC6
	BYTE nLvlPerLvl[6];					//0xCC
	BYTE nHireDesc;						//0xD2
	char szNameFirst[32];				//0xD3
	char szNameLast[32];				//0xF3
	BYTE unk0x113;						//0x113
	WORD wNameFirst;					//0x114
	WORD wNameLast;						//0x116
};
HitClass.txt

Code: Select all

struct D2HitClassTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
Inventory.txt

Code: Select all

struct D2InventoryTxt
{
	DWORD dwInvLeft;					//0x00
	DWORD dwInvRight;					//0x04
	DWORD dwInvTop;						//0x08
	DWORD dwInvBottom;					//0x0C
	BYTE nGridX;						//0x10
	BYTE nGridY;						//0x11
	WORD unk0x12;						//0x12
	DWORD dwGridLeft;					//0x14
	DWORD dwGridRight;					//0x18
	DWORD dwGridTop;					//0x1C
	DWORD dwGridBottom;					//0x20
	BYTE nGridBoxWidth;					//0x24
	BYTE nGridBoxHeight;				//0x25
	WORD unk0x26;						//0x26
	DWORD dwRArmLeft;					//0x28
	DWORD dwRArmRight;					//0x2C
	DWORD dwRArmTop;					//0x30
	DWORD dwRArmBottom;					//0x34
	BYTE nRArmWidth;					//0x38
	BYTE nRArmHeight;					//0x39
	WORD unk0x3A;						//0x3A
	DWORD dwTorsoLeft;					//0x3C
	DWORD dwTorsoRight;					//0x40
	DWORD dwTorsoTop;					//0x44
	DWORD dwTorsoBottom;				//0x48
	BYTE nTorsoWidth;					//0x4C
	BYTE nTorsoHeight;					//0x4D
	WORD unk0x4E;						//0x4E
	DWORD dwLArmLeft;					//0x50
	DWORD dwLArmRight;					//0x54
	DWORD dwLArmTop;					//0x58
	DWORD dwLArmBottom;					//0x5C
	BYTE nLArmWidth;					//0x60
	BYTE nLArmHeight;					//0x61
	WORD unk0x62;						//0x62
	DWORD dwHeadLeft;					//0x64
	DWORD dwHeadRight;					//0x68
	DWORD dwHeadTop;					//0x6C
	DWORD dwHeadBottom;					//0x70
	BYTE nHeadWidth;					//0x74
	BYTE nHeadHeight;					//0x75
	WORD unk0x76;						//0x76
	DWORD dwNeckLeft;					//0x78
	DWORD dwNeckRight;					//0x7C
	DWORD dwNeckTop;					//0x80
	DWORD dwNeckBottom;					//0x84
	BYTE nNeckWidth;					//0x88
	BYTE nNeckHeight;					//0x89
	WORD unk0x8A;						//0x8A
	DWORD dwRHandLeft;					//0x8C
	DWORD dwRHandRight;					//0x90
	DWORD dwRHandTop;					//0x94
	DWORD dwRHandBottom;				//0x98
	BYTE nRHandWidth;					//0x9C
	BYTE nRHandHeight;					//0x9D
	WORD unk0x9E;						//0x9E
	DWORD dwLHandLeft;					//0xA0
	DWORD dwLHandRight;					//0xA4
	DWORD dwLHandTop;					//0xA8
	DWORD dwLHandBottom;				//0xAC
	BYTE nLHandWidth;					//0xB0
	BYTE nLHandHeight;					//0xB1
	WORD unk0xB2;						//0xB2
	DWORD dwBeltLeft;					//0xB4
	DWORD dwBeltRight;					//0xB8
	DWORD dwBeltTop;					//0xBC
	DWORD dwBeltBottom;					//0xC0
	BYTE nBeltWidth;					//0xC4
	BYTE nBeltHeight;					//0xC5
	WORD unk0xC6;						//0xC6
	DWORD dwFeetLeft;					//0xC8
	DWORD dwFeetRight;					//0xCC
	DWORD dwFeetTop;					//0xD0
	DWORD dwFeetBottom;					//0xD4
	BYTE nFeetWidth;					//0xD8
	BYTE nFeetHeight;					//0xD9
	WORD unk0xDA;						//0xDA
	DWORD dwGlovesLeft;					//0xDC
	DWORD dwGlovesRight;				//0xE0
	DWORD dwGlovesTop;					//0xE4
	DWORD dwGlovesBottom;				//0xE8
	BYTE nGlovesWidth;					//0xEC
	BYTE nGlovesHeight;					//0xED
	WORD unk0xEE;						//0xEE
};
ItemRatio.txt

Code: Select all

struct D2ItemRatioTxt
{
	DWORD dwUnique;						//0x00
	DWORD dwUniqueDivisor;				//0x04
	DWORD dwUniqueMin;					//0x08
	DWORD dwRare;						//0x0C
	DWORD dwRareDivisor;				//0x10
	DWORD dwRareMin;					//0x14
	DWORD dwSet;						//0x18
	DWORD dwSetDivisor;					//0x1C
	DWORD dwSetMin;						//0x20
	DWORD dwMagic;						//0x24
	DWORD dwMagicDivisor;				//0x28
	DWORD dwMagicMin;					//0x2C
	DWORD dwHiQuality;					//0x30
	DWORD dwHiQualityDivisor;			//0x34
	DWORD dwNormal;						//0x38
	DWORD dwNormalDivisor;				//0x3C
	WORD wVersion;						//0x40
	BYTE nClassSpecific;				//0x42
	BYTE nUber;							//0x43 
};
ItemStatCost.txt

Code: Select all

struct D2ItemStatCostTxt
{
	WORD wStatId;						//0x00
	WORD unk0x02;						//0x02
	WORD wItemStatFlags;				//0x04
	WORD unk0x06;	  					//0x06
	BYTE nSendBits;						//0x08
	BYTE nSendParamBits;				//0x09
	BYTE nCsvBits;						//0x0A
	BYTE nCsvParam;						//0x0B
	DWORD dwDivide;						//0x0C
	DWORD dwMultiply;					//0x10
	DWORD dwAdd;						//0x14
	BYTE nValShift;						//0x18
	BYTE nSaveBits;						//0x19
	BYTE n09SaveBits;					//0x1A
	BYTE unk0x1B;						//0x1B
	DWORD dwSaveAdd;					//0x1C
	DWORD dw09SaveAdd;					//0x20
	DWORD dwSaveParamBits;				//0x24
	DWORD unk0x28;						//0x28
	DWORD dwMinAccr;					//0x2C
	BYTE nEncode;						//0x30
	BYTE unk0x31;						//0x31
	WORD wMaxAtat;						//0x32
	WORD wDescPriority;					//0x34
	BYTE nDescFunc;						//0x36
	BYTE nDescVal;						//0x37
	WORD wDescStrPos;					//0x38
	WORD wDescStrNeg;					//0x3A
	WORD wDescStr2;						//0x3C
	WORD wDGrp;							//0x3E
	BYTE nDGrpFunc;						//0x40
	BYTE nDGrpVal;						//0x41
	WORD wDGrpStrPos;					//0x42
	WORD wDGrpStrNeg;					//0x44
	WORD wDGrpStr2;						//0x46
	WORD wItemEvent1;					//0x48
	WORD wItemEvent2;					//0x4A
	WORD wItemEventFunc1;				//0x4C
	WORD wItemEventFunc2;				//0x4E
	DWORD dwKeepZero;					//0x50
	BYTE nOp;							//0x54
	BYTE nOpParam;						//0x55
	WORD wOpBase;						//0x56
	WORD wOpStat1;						//0x58
	WORD wOpStat2;						//0x5A
	WORD wOpStat3;						//0x5C
	BYTE _Stuff[230];					//0x5E
};
Armor.txt, Misct.txt, Weapon.txt -> Items.txt

Code: Select all

struct D2ItemsTxt
{
	char	szFlippyFile[32];			//0x00
	char	szInvFile[32];				//0x20
	char	szUniqueInvFile[32];		//0x40
	char	szSetInvFile[32];			//0x60
	union
	{
		DWORD	dwCode;					//0x80
		char	szCode[4];				//0x80
	};
	DWORD	dwNormCode;					//0x84
	DWORD	dwUberCode;					//0x88
	DWORD	dwUltraCode;				//0x8C
	DWORD	dwAlternateGfx;				//0x90
	DWORD	dwPSpell;					//0x94
	WORD	wState;						//0x98
	WORD	wCState1;					//0x9A
	WORD	wCState2;					//0x9C
	WORD	wStat1;						//0x9E
	WORD	wStat2;						//0xA0
	WORD	wStat3;						//0xA2
	DWORD	dwCalc1;					//0xA4
	DWORD	dwCalc2;					//0xA8
	DWORD	dwCalc3;					//0xAC
	DWORD	dwLen;						//0xB0
	WORD	wSpellDesc;					//0xB4
	WORD	wSpellDescStr;				//0xB6
	DWORD	dwSpellDescCalc;			//0xB8
	DWORD	dwBetterGem;				//0xBC
	DWORD	dwWClass;					//0xC0
	DWORD	dw2HandedWClass;			//0xC4
	DWORD	dwTMogType;					//0xC8
	DWORD	dwMinAc;					//0xCC
	DWORD	dwMaxAc;					//0xD0
	DWORD	dwGambleCost;				//0xD4
	DWORD	dwSpeed;					//0xD8
	DWORD	dwBitfield1;				//0xDC
	DWORD	dwCost;						//0xE0
	DWORD	dwMinStack;					//0xE4
	DWORD	dwMaxStack;					//0xE8
	DWORD	dwSpawnStack;				//0xEC
	DWORD	dwGemOffset;				//0xF0
	WORD	wNameStr;					//0xF4
	WORD	wVersion;					//0xF6
	WORD	wAutoPrefix;				//0xF8
	WORD	wMissileType;				//0xFA
	BYTE	bRarity;					//0xFC
	BYTE	bLevel;						//0xFD
	BYTE	bMinDam;					//0xFE
	BYTE	bMaxDam;					//0xFF
	BYTE	bMinMisDam;					//0x100
	BYTE	bMaxMisDam;					//0x101
	BYTE	b2HandMinDam;				//0x102
	BYTE	b2HandMaxDam;				//0x103
	WORD	bRangeAdder;				//0x104
	WORD	wStrBonus;					//0x106
	WORD	wDexBonus;					//0x108
	WORD	wReqStr;					//0x10A
	WORD	wReqDex;					//0x10C
	BYTE	bAbsorbs;					//0x10E
	BYTE	bInvWidth;					//0x10F
	BYTE	bInvHeight;					//0x110
	BYTE	bBlock;						//0x111
	BYTE	bDurability;				//0x112
	BYTE	bNoDurability;				//0x113
	BYTE	bMissile;					//0x114
	BYTE	bComponent;					//0x115
	BYTE	bRArm;						//0x116
	BYTE	bLArm;						//0x117
	BYTE	bTorso;						//0x118
	BYTE	bLegs;						//0x119
	BYTE	bRSPad;						//0x11A
	BYTE	bLSPad;						//0x11B
	BYTE	b2Handed;					//0x11C
	BYTE	bUseable;					//0x11D
	WORD	wType;						//0x11E
	WORD	wType2;						//0x120
	WORD	bSubType;					//0x122
	WORD	wDropSound;					//0x124
	WORD	wUseSound;					//0x126
	BYTE	bDropSfxFrame;				//0x128
	BYTE	bUnique;					//0x129
	BYTE	bQuest;						//0x12A
	BYTE	bQuestDiffCheck;			//0x12B
	BYTE	bTransparent;				//0x12C
	BYTE	bTransTbl;					//0x12D
	BYTE 	pad0x12E;					//0x12E
	BYTE	bLightRadius;				//0x12F
	BYTE	bBelt;						//0x130
	BYTE	bAutoBelt;					//0x131
	BYTE	bStackable;					//0x132
	BYTE	bSpawnable;					//0x133
	BYTE	bSpellIcon;					//0x134
	BYTE	bDurWarning;				//0x135
	BYTE	bQntWarning;				//0x136
	BYTE	bHasInv;					//0x137
	BYTE	bGemSockets;				//0x138
	BYTE	bTransmogrify;				//0x139
	BYTE	bTMogMin;					//0x13A
	BYTE	bTMogMax;					//0x13B
	BYTE	bHitClass;					//0x13C
	BYTE	b1or2Handed;				//0x13D
	BYTE	bGemApplyType;				//0x13E
	BYTE	bLevelReq;					//0x13F
	BYTE	bMagicLvl;					//0x140
	BYTE	bTransform;					//0x141
	BYTE	bInvTrans;					//0x142
	BYTE	bCompactSave;				//0x143
	BYTE	bSkipName;					//0x144
	BYTE	bNameable;					//0x145
	BYTE	bAkaraMin;					//0x146
	BYTE	bGheedMin;					//0x147
	BYTE	bCharsiMin;					//0x148
	BYTE	bFaraMin;					//0x149
	BYTE	bLysanderMin;				//0x14A
	BYTE	bDrognanMin;				//0x14B
	BYTE	bHraltiMin;					//0x14C
	BYTE	bAlkorMin;					//0x14D
	BYTE	bOrmusMin;					//0x14E
	BYTE	bElzixMin;					//0x14F
	BYTE	bAshearaMin;				//0x150
	BYTE	bCainMin;					//0x151
	BYTE	bHalbuMin;					//0x152
	BYTE	bJamellaMin;				//0x153
	BYTE	bMalahMin;					//0x154
	BYTE	bLarzukMin;					//0x155
	BYTE	bDrehyaMin;					//0x156
	BYTE	bAkaraMax;					//0x157
	BYTE	bGheedMax;					//0x158
	BYTE	bCharsiMax;					//0x159
	BYTE	bFaraMax;					//0x15A
	BYTE	bLysanderMax;				//0x15B
	BYTE	bDrognanMax;				//0x15C
	BYTE	bHraltiMax;					//0x15D
	BYTE	bAlkorMax;					//0x15E
	BYTE	bOrmusMax;					//0x15F
	BYTE	bElzixMax;					//0x160
	BYTE	bAshearaMax;				//0x161
	BYTE	bCainMax;					//0x162
	BYTE	bHalbuMax;					//0x163
	BYTE	bJamellaMax;				//0x164
	BYTE	bMalahMax;					//0x165
	BYTE	bLarzukMax;					//0x166
	BYTE	bDrehyaMax;					//0x167
	BYTE	bAkaraMagicMin;				//0x168
	BYTE	bGheedMagicMin;				//0x169
	BYTE	bCharsiMagicMin;			//0x16A
	BYTE	bFaraMagicMin;				//0x16B
	BYTE	bLysanderMagicMin;			//0x16C
	BYTE	bDrognanMagicMin;			//0x16D
	BYTE	bHraltiMagicMin;			//0x16E
	BYTE	bAlkorMagicMin;				//0x16F
	BYTE	bOrmusMagicMin;				//0x170
	BYTE	bElzixMagicMin;				//0x171
	BYTE	bAshearaMagicMin;			//0x172
	BYTE	bCainMagicMin;				//0x173
	BYTE	bHalbuMagicMin;				//0x174
	BYTE	bJamellaMagicMin;			//0x175
	BYTE	bMalahMagicMin;				//0x176
	BYTE	bLarzukMagicMin;			//0x177
	BYTE	bDrehyaMagicMin;			//0x178
	BYTE	bAkaraMagicMax;				//0x179
	BYTE	bGheedMagicMax;				//0x17A
	BYTE	bCharsiMagicMax;			//0x17B
	BYTE	bFaraMagicMax;				//0x17C
	BYTE	bLysanderMagicMax;			//0x17D
	BYTE	bDrognanMagicMax;			//0x17E
	BYTE	bHraltiMagicMax;			//0x17F
	BYTE	bAlkorMagicMax;				//0x180
	BYTE	bOrmusMagicMax;				//0x181
	BYTE	bElzixMagicMax;				//0x182
	BYTE	bAshearaMagicMax;			//0x183
	BYTE	bCainMagicMax;				//0x184
	BYTE	bHalbuMagicMax;				//0x185
	BYTE	bJamellaMagicMax;			//0x186
	BYTE	bMalahMagicMax;				//0x187
	BYTE	bLarzukMagicMax;			//0x188
	BYTE	bDrehyaMagicMax;			//0x189
	BYTE	bAkaraMagicLvl;				//0x18A
	BYTE	bGheedMagicLvl;				//0x18B
	BYTE	bCharsiMagicLvl;			//0x18C
	BYTE	bFaraMagicLvl;				//0x18D
	BYTE	bLysanderMagicLvl;			//0x18E
	BYTE	bDrognanMagicLvl;			//0x18F
	BYTE	bHraltiMagicLvl;			//0x190
	BYTE	bAlkorMagicLvl;				//0x191
	BYTE	bOrmusMagicLvl;				//0x192
	BYTE	bElzixMagicLvl;				//0x193
	BYTE	bAshearaMagicLvl;			//0x194
	BYTE	bCainMagicLvl;				//0x195
	BYTE	bHalbuMagicLvl;				//0x196
	BYTE	bJamellaMagicLvl;			//0x197
	BYTE	bMalahMagicLvl;				//0x198
	BYTE	bLarzukMagicLvl;			//0x199
	BYTE	bDrehyaMagicLvl;			//0x19A
	BYTE	pad0x19B;					//0x19B
	DWORD	dwNightmareUpgrade;			//0x19C
	DWORD	dwHellUpgrade;				//0x1A0
	BYTE	bPermStoreItem;				//0x1A4
	BYTE	bMultibuy;					//0x1A5
	WORD	pad0x1A6;					//0x1A6
};
ItemTypes.txt

Code: Select all

struct D2ItemTypesTxt
{
	char szCode[4];						//0x00
	WORD wEquiv1;						//0x04
	WORD wEquiv2;						//0x06
	BYTE nRepair;						//0x08
	BYTE nBody;							//0x09
	BYTE nBodyLoc1;						//0x0A
	BYTE nBodyLoc2;						//0x0B
	WORD wShoots;						//0x0C
	WORD wQuiver;						//0x0E
	BYTE nThrowable;					//0x10
	BYTE nReload;						//0x11
	BYTE nReEquip;						//0x12
	BYTE nAutoStack;					//0x13
	BYTE nMagic;						//0x14
	BYTE nRare;							//0x15
	BYTE nNormal;						//0x16
	BYTE nCharm;						//0x17
	BYTE nGem;							//0x18
	BYTE nBeltable;						//0x19
	BYTE nMaxSock1;						//0x1A
	BYTE nMaxSock25;					//0x1B
	BYTE nMaxSock40;					//0x1C
	BYTE nTreasureClass;				//0x1D
	BYTE nRarity;						//0x1E
	BYTE nStaffMods;					//0x1F
	BYTE nCostFormula;					//0x20
	BYTE nClass;						//0x21
	BYTE nStorePage;					//0x22
	BYTE nVarInvGfx;					//0x23
	char szInvGfx1[32];					//0x24
	char szInvGfx2[32];					//0x44
	char szInvGfx3[32];					//0x64
	char szInvGfx4[32];					//0x84
	char szInvGfx5[32];					//0xA4
	char szInvGfx6[32];					//0xC4
};
LevelDef.bin

Code: Select all

struct D2LevelDefBin
{
	DWORD dwQuestFlag;					//0x00
	DWORD dwQuestFlagEx;				//0x04
	DWORD dwLayer;						//0x08
	DWORD dwSizeX;						//0x0C
	DWORD dwSizeX_N;					//0x10
	DWORD dwSizeX_H;					//0x14
	DWORD dwSizeY;						//0x18
	DWORD dwSizeY_N;					//0x1C
	DWORD dwSizeY_H;					//0x20
	DWORD dwOffsetX;					//0x24
	DWORD dwOffsetY;					//0x28
	DWORD dwDepend;						//0x2C
	DWORD dwDrlgType;					//0x30
	DWORD dwLevelType;					//0x34
	DWORD dwSubType;					//0x38
	DWORD dwSubTheme;					//0x3C
	DWORD dwSubWaypoint;				//0x40
	DWORD dwSubShrine;					//0x44
	DWORD dwVis0;						//0x48
	DWORD dwVis1;						//0x4C
	DWORD dwVis2;						//0x50
	DWORD dwVis3;						//0x54
	DWORD dwVis4;						//0x58
	DWORD dwVis5;						//0x5C
	DWORD dwVis6;						//0x60
	DWORD dwVis7;						//0x64
	DWORD dwWarp0;						//0x68
	DWORD dwWarp1;						//0x6C
	DWORD dwWarp2;						//0x70
	DWORD dwWarp3;						//0x74
	DWORD dwWarp4;						//0x78
	DWORD dwWarp5;						//0x7C
	DWORD dwWarp6;						//0x80
	DWORD dwWarp7;						//0x84
	BYTE nIntensity;					//0x88
	BYTE nRed;							//0x89
	BYTE nGreen;						//0x8A
	BYTE nBlue;							//0x8B
	DWORD dwPortal;						//0x8C
	DWORD dwPosition;					//0x90
	DWORD dwSaveMonsters;				//0x94
	DWORD dwLOSDraw;					//0x98
};
Levels.txt

Code: Select all

struct D2LevelsTxt
{
	WORD wLevelNo;						//0x00
	BYTE nPal;							//0x02
	BYTE nAct;							//0x03
	BYTE nTeleport;						//0x04
	BYTE nRain;							//0x05
	BYTE nMud;							//0x06
	BYTE nNoPer;						//0x07
	BYTE nIsInside;						//0x08
	BYTE nDrawEdges;					//0x09
	WORD unk0x0A;						//0x0A
	DWORD dwWarpDist;					//0x0C
	WORD wMonLvl1;						//0x10
	WORD wMonLvl2;						//0x12
	WORD wMonLvl3;						//0x14
	WORD wMonLvl1Ex;					//0x16
	WORD wMonLvl2Ex;					//0x18
	WORD wMonLvl3Ex;					//0x1A
	DWORD dwMonDen[3];					//0x1C
	BYTE nMonUMin[3];					//0x28
	BYTE nMonUMax[3];					//0x2B
	BYTE nMonWndr;						//0x2E
	BYTE nMonSpcWalk;					//0x2F
	BYTE nQuest;						//0x30
	BYTE nRangedSpawn;					//0x31
	DWORD dwNumMon;						//0x32
	WORD wMon[25];						//0x36
	WORD wNMon[25];						//0x68
	WORD wUMon[25];						//0x9A
	WORD wCMon[4];						//0xCC
	WORD wCPct[4];						//0xD4
	WORD wCAmt[4];						//0xDC
	BYTE nWaypoint;						//0xE4
	BYTE nObjGroup[8];					//0xE5
	BYTE nObjPrb[8];					//0xED
	char szLevelName[40];				//0xF5
	char szLevelWarp[40];				//0x11D
	char szEntryFile[41];				//0x145
	wchar_t wszLevelName[40];			//0x16E
	wchar_t wszLevelWarp[41];			//0x1BE
	DWORD dwThemes;						//0x210
	DWORD dwFloorFilter;				//0x214
	DWORD dwBlankScreen;				//0x218
	DWORD dwSoundEnv;					//0x21C
};
LowQualityItems.txt

Code: Select all

struct D2LowQualityItems
{
	char szName[32];					//0x00
	WORD wTblId;						//0x20
};
LvlMaze.txt

Code: Select all

struct D2LvlMazeTxt
{
	DWORD dwLevelId;					//0x00
	DWORD dwRooms[3];					//0x04
	DWORD dwSizeX;						//0x10
	DWORD dwSizeY;						//0x14
	DWORD dwMerge;						//0x18
};
LvlPrest.txt

Code: Select all

struct D2LvlPrestTxt
{
	DWORD dwDef;						//0x00
	DWORD dwLevelId;					//0x04
	DWORD dwPopulate;					//0x08
	DWORD dwLogicals;					//0x0C
	DWORD dwOutdoors;					//0x10
	DWORD dwAnimate;					//0x14
	DWORD dwKillEdge;					//0x18
	DWORD dwFillBlanks;					//0x1C
	DWORD dwExpansion;					//0x20
	DWORD unk;							//0x24
	DWORD dwSizeX;						//0x28
	DWORD dwSizeY;						//0x2C
	DWORD dwAutoMap;					//0x30
	DWORD dwScan;						//0x34
	DWORD dwPops;						//0x38
	DWORD dwPopPad;						//0x3C
	DWORD dwFiles;						//0x40
	char szFile1[60];					//0x44
	char szFile2[60];					//0x80
	char szFile3[60];					//0xBC
	char szFile4[60];					//0xF8
	char szFile5[60];					//0x134
	char szFile6[60];					//0x170
	DWORD dwDt1Mask;					//0x1AC
};
LvlSub.txt

Code: Select all

struct D2LvlSubTxt
{
	DWORD dwType;						//0x00
	char* szFile[60];					//0x04
	DWORD dwCheckAll;					//0x40
	DWORD dwBordType;					//0x44
	DWORD dwDt1Mask;					//0x48
	DWORD dwGridSize;					//0x4C
	DWORD unk[204];						//0x50
	DWORD dwProb[5];					//0x11C
	DWORD dwTrials[5];					//0x130
	DWORD dwMax[5];						//0x144
	DWORD dwExpansion;					//0x158
};
LvlTypes.txt

Code: Select all

struct D2LvlTypesTxt
{
	char szFile1[60];					//0x00
	char szFile2[60];					//0x3C
	char szFile3[60];					//0x78
	char szFile4[60];					//0xB4
	char szFile5[60];					//0xF0
	char szFile6[60];					//0x12C
	char szFile7[60];					//0x168
	char szFile8[60];					//0x1A4
	char szFile9[60];					//0x1E0
	char szFile10[60];					//0x21C
	char szFile11[60];					//0x258
	char szFile12[60];					//0x294
	char szFile13[60];					//0x2D0
	char szFile14[60];					//0x30C
	char szFile15[60];					//0x348
	char szFile16[60];					//0x384
	char szFile17[60];					//0x3C0
	char szFile18[60];					//0x3FC
	char szFile19[60];					//0x438
	char szFile20[60];					//0x474
	char szFile21[60];					//0x4B0
	char szFile22[60];					//0x4EC
	char szFile23[60];					//0x528
	char szFile24[60];					//0x564
	char szFile25[60];					//0x5A0
	char szFile26[60];					//0x5DC
	char szFile27[60];					//0x618
	char szFile28[60];					//0x654
	char szFile29[60];					//0x690
	char szFile30[60];					//0x6CC
	char szFile31[60];					//0x708
	char szFile32[60];					//0x744
	DWORD dwAct;						//0x780
	DWORD dwExpansion;					//0x784
};
LvlWarp.txt

Code: Select all

struct D2LvlWarpTxt
{
	DWORD dwLevelId;					//0x00
	DWORD dwSelectX;					//0x04
	DWORD dwSelectY;					//0x08
	DWORD dwSelectDX;					//0x0C
	DWORD dwSelectDY;					//0x10
	DWORD dwExitWalkX;					//0x14
	DWORD dwExitWalkY;					//0x18
	DWORD dwOffsetX;					//0x1C
	DWORD dwOffsetY;					//0x20
	DWORD dwLitVersion;					//0x24
	DWORD dwTiles;						//0x28
	DWORD dwDirection;					//0x30
};
MissCalc.txt

Code: Select all

struct D2MissCalcTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
Missiles.txt

Code: Select all

struct D2MissilesTxt
{
	DWORD dwId;							//0x00
	DWORD dwMissileFlags;				//0x04
	WORD wCltDoFunc;					//0x08
	WORD wCltHitFunc;					//0x0A
	WORD wSrvDoFunc;					//0x0C
	WORD wSrvHitFunc;					//0x0E
	WORD wSrvDmgFunc;					//0x10
	WORD wTravelSound;					//0x12
	WORD wHitSound;						//0x14
	WORD wExplosionMissile;				//0x16
	WORD wSubMissile[3];				//0x18
	WORD wCltSubMissile[3];				//0x1E
	WORD wHitSubMissile[4];				//0x24
	WORD wCltHitSubMissile[4];			//0x2C
	WORD wProgSound;					//0x34
	WORD wProgOverlay;					//0x36
	DWORD dwParam[5];					//0x38
	DWORD dwHitPar[3];					//0x4C
	DWORD dwCltParam[5];				//0x58
	DWORD dwCltHitPar[3];				//0x6C
	DWORD dwDmgParam[2];				//0x78
	DWORD dwSrvCalc;					//0x80
	DWORD dwCltCalc;					//0x84
	DWORD dwHitCalc;					//0x88
	DWORD dwCltHitCalc;					//0x8C
	DWORD dwDmgCalc;					//0x90
	WORD wHitClass;						//0x94
	WORD wRange;						//0x96
	WORD wLevRange;						//0x98
	BYTE nVel;							//0x9A
	BYTE nVelLev;						//0x9B
	WORD wMaxVel;						//0x9C
	WORD wAccel;						//0x9E
	WORD wAnimRate;						//0xA0
	WORD wXoffset;						//0xA2
	WORD wYoffset;						//0xA4
	WORD wZoffset;						//0xA6
	DWORD dwHitFlags;					//0xA8
	WORD wResultFlags;					//0xAC
	WORD wKnockBack;					//0xAE
	DWORD dwMinDamage;					//0xB0
	DWORD dwMaxDamage;					//0xB4
	DWORD dwMinLevDam[5];				//0xB8
	DWORD dwMaxLevDam[5];				//0xCC
	DWORD dwDmgSymPerCalc;				//0xE0
	DWORD dwElemType;					//0xE4
	DWORD dwElemMin;					//0xE8
	DWORD dwElemMax;					//0xEC
	DWORD dwMinElemLev[5];				//0xF0
	DWORD dwMaxElemLev[5];				//0x104
	DWORD dwElemDmgSymPerCalc;			//0x118
	DWORD dwElemLen;					//0x11C
	DWORD dwElemLevLen[3];				//0x120
	BYTE unk0x12C;						//0x12C
	BYTE nSrcDamage;					//0x12D
	BYTE nSrcMissDmg;					//0x12E
	BYTE nHoly;							//0x12F
	BYTE nLight;						//0x130
	BYTE nFlicker;						//0x131
	BYTE nRGB[3];						//0x132
	BYTE nInitSteps;					//0x135
	BYTE nActivate;						//0x136
	BYTE nLoopAnim;						//0x137
	char szCelFile[64];					//0x138
	DWORD dwAnimLen;					//0x178
	DWORD dwRandStart;					//0x17C
	BYTE nSubLoop;						//0x180
	BYTE nSubStart;						//0x181
	BYTE nSubStop;						//0x182
	BYTE nCollideType;					//0x183
	BYTE nCollision;					//0x184
	BYTE nClientCol;					//0x185
	BYTE nCollideKill;					//0x186
	BYTE nCollideFriend;				//0x187
	BYTE nNextHit;						//0x188
	BYTE nNextDelay;					//0x189
	BYTE nSize;							//0x18A
	BYTE nToHit;						//0x18B
	BYTE nAlwaysExplode;				//0x18C
	BYTE nTrans;						//0x18D
	WORD wQty;							//0x18E
	DWORD dwSpecialSetup;				//0x190
	WORD wSkill;						//0x194
	BYTE nHitShift;						//0x196
	BYTE unk0x197[5];					//0x197
	DWORD dwDamageRate;					//0x19C
	BYTE nNumDirections;				//0x1A0
	BYTE nAnimSpeed;					//0x1A1
	BYTE nLocalBlood;					//0x1A2
	BYTE unk;							//0x1A3
};
MonAi.txt

Code: Select all

struct D2MonAiTxt
{
	WORD wAi;							//0x00
};
MonEquip.txt - to do

Code: Select all

struct D2MonEquipTxt
{
	//to do
};
MonItemPecent.txt - to do

Code: Select all

struct D2MonItemPercentTxt
{
	//to do
};
MonLvl.txt - to do

Code: Select all

struct D2MonLvlTxt
{
	//to do
};
MonMode.txt

Code: Select all

struct D2MonModeTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
MonPlace.txt - to do

Code: Select all

struct D2MonPlaceTxt
{
	//to do
};
MonPreset.txt - to do

Code: Select all

struct D2MonPresetTxt
{
	//to do
};
MonProp.txt - to do

Code: Select all

struct D2MonPropTxt
{
	//to do
};
MonSeq.txt - to do

Code: Select all

struct D2MonSeqTxt
{
	//to do
};
MonSounds.txt

Code: Select all

struct D2MonSoundsTxt
{
	//to do
};
MonStats.txt

Code: Select all

struct D2MonStatsTxt
{
	WORD	wId;						//0x00
	WORD	wBaseId;					//0x02
	WORD	wNextInClass;				//0x04
	WORD	wNameStr;					//0x06
	WORD	wDescStr;					//0x08
	WORD	unk0x0A;					//0x0A
	DWORD dwMonStatsFlags;				//0x0C
	DWORD	dwCode;						//0x10
	WORD	wMonSound;					//0x14
	WORD	wUMonSound;					//0x16
	WORD	wMonStatsEx;				//0x18
	WORD	wMonProp;					//0x1A
	WORD	wMonType;					//0x1C
	WORD	wAI;						//0x1E
	WORD	wSpawn;						//0x20
	BYTE	bSpawnX;					//0x22
	BYTE	bSpawnY;					//0x23
	WORD	bSpawnMode;					//0x24
	WORD	wMinion1;					//0x26
	WORD	wMinion2;					//0x28
	WORD	unk0x2A;					//0x2A
	BYTE	bPartyMin;					//0x2C
	BYTE	bPartyMax;					//0x2D
	BYTE	bRarity;					//0x2E
	BYTE	bMinGrp;					//0x2F
	BYTE	bMaxGrp;					//0x30
	BYTE	bSparsePopulate;			//0x31
	WORD	wVelocity;					//0x32
	WORD	wRun;						//0x34
	WORD	unk0x36;					//0x36
	WORD	unk0x38;					//0x38
	WORD	wMissA1;					//0x3A
	WORD	wMissA2;					//0x3C
	WORD	wMissS1;					//0x3E
	WORD	wMissS2;					//0x40
	WORD	wMissS3;					//0x42
	WORD	wMissS4;					//0x44
	WORD	wMissC;						//0x46
	WORD	wMissSQ;					//0x48
	WORD	unk0x4A;					//0x4A
	BYTE	bAlign;						//0x4C
	BYTE	bTransLvl;					//0x4D
	BYTE	bThreat;					//0x4E
	BYTE	bAIdel;						//0x4F
	BYTE	bAIdel_N;					//0x50
	BYTE	bAIdel_H;					//0x51
	BYTE	bAiDist;					//0x52
	BYTE	bAiDist_N;					//0x53
	WORD	bAiDist_H;					//0x54
	WORD	wAiP1;						//0x56
	WORD	wAiP1_N;					//0x58
	WORD	wAiP1_H;					//0x5A
	WORD	wAiP2;						//0x5C
	WORD	wAiP2_N;					//0x5E
	WORD	wAiP2_H;					//0x60
	WORD	wAiP3;						//0x62
	WORD	wAiP3_N;					//0x64
	WORD	wAiP3_H;					//0x66
	WORD	wAiP4;						//0x68
	WORD	wAiP4_N;					//0x6A
	WORD	wAiP4_H;					//0x6C
	WORD	wAiP5;						//0x6E
	WORD	wAiP5_N;					//0x70
	WORD	wAiP5_H;					//0x72
	WORD	wAiP6;						//0x74
	WORD	wAiP6_N;					//0x76
	WORD	wAiP6_H;					//0x78
	WORD	wAiP7;						//0x7A
	WORD	wAiP7_N;					//0x7C
	WORD	wAiP7_H;					//0x7E
	WORD	wAiP8;						//0x80
	WORD	wAiP8_N;					//0x82
	WORD	wAiP8_H;					//0x84
	WORD	wTreasureClass1;			//0x86
	WORD	wTreasureClass2;			//0x88
	WORD	wTreasureClass3;			//0x8A
	WORD	wTreasureClass4;			//0x8C
	WORD	wTreasureClass1_N;			//0x8E
	WORD	wTreasureClass2_N;			//0x90
	WORD	wTreasureClass3_N;			//0x92
	WORD	wTreasureClass4_N;			//0x94
	WORD	wTreasureClass1_H;			//0x96
	WORD	wTreasureClass2_H;			//0x98
	WORD	wTreasureClass3_H;			//0x9A
	WORD	wTreasureClass4_H;			//0x9C
	BYTE	bTCQuestId;					//0x9E
	BYTE	bTCQuestCP;					//0x9F
	BYTE	bDrain;						//0xA0
	BYTE	bDrain_N;					//0xA1
	BYTE	bDrain_H;					//0xA2
	BYTE	bToBlock;					//0xA3
	BYTE	bToBlock_N;					//0xA4
	BYTE	bToBlock_H;					//0xA5
	WORD	bCrit;						//0xA6
	WORD	wSkillDamage;				//0xA8
	WORD	wLevel;						//0xAA
	WORD	wLevel_N;					//0xAC
	WORD	wLevel_H;					//0xAE
	WORD	wMinHP;						//0xB0
	WORD	wMinHP_N;					//0xB2
	WORD	wMinHP_H;					//0xB4
	WORD	wMaxHP;						//0xB6
	WORD	wMaxHP_N;					//0xB8
	WORD	wMaxHP_H;					//0xBA
	WORD	wAC;						//0xBC
	WORD	wAC_N;						//0xBE
	WORD	wAC_H;						//0xC0
	WORD	wA1TH;						//0xC2
	WORD	wA1TH_N;					//0xC4
	WORD	wA1TH_H;					//0xC6
	WORD	wA2TH;						//0xC8
	WORD	wA2TH_N;					//0xCA
	WORD	wA2TH_H;					//0xCC
	WORD	wS1TH;						//0xCE
	WORD	wS1TH_N;					//0xD0
	WORD	wS1TH_H;					//0xD2
	WORD	wExp;						//0xD4
	WORD	wExp_N;						//0xD6
	WORD	wExp_H;						//0xD8
	WORD	wA1MinD;					//0xDA
	WORD	wA1MinD_N;					//0xDC
	WORD	wA1MinD_H;					//0xDE
	WORD	wA1MaxD;					//0xE0
	WORD	wA1MaxD_N;					//0xE2
	WORD	wA1MaxD_H;					//0xE4
	WORD	wA2MinD;					//0xE6
	WORD	wA2MinD_N;					//0xE8
	WORD	wA2MinD_H;					//0xEA
	WORD	wA2MaxD;					//0xEC
	WORD	wA2MaxD_N;					//0xEE
	WORD	wA2MaxD_H;					//0xF0
	WORD	wS1MinD;					//0xF2
	WORD	wS1MinD_N;					//0xF4
	WORD	wS1MinD_H;					//0xF6
	WORD	wS1MaxD;					//0xF8
	WORD	wS1MaxD_N;					//0xFA
	WORD	wS1MaxD_H;					//0xFC
	BYTE	bEl1Mode;					//0xFE
	BYTE	bEl2Mode;					//0xFF
	BYTE	bEl3Mode;					//0x100
	BYTE	bEl1Type;					//0x101
	BYTE	bEl2Type;					//0x102
	BYTE	bEl3Type;					//0x103
	BYTE	bEl1Pct;					//0x104
	BYTE	bEl1Pct_N;					//0x105
	BYTE	bEl1Pct_H;					//0x106
	BYTE	bEl2Pct;					//0x107
	BYTE	bEl2Pct_N;					//0x108
	BYTE	bEl2Pct_H;					//0x109
	BYTE	bEl3Pct;					//0x10A
	BYTE	bEl3Pct_N;					//0x10B
	BYTE	bEl3Pct_H;					//0x10C
	BYTE	unk0x10D;					//0x10D
	WORD	wEl1MinD;					//0x10E
	WORD	wEl1MinD_N;					//0x110
	WORD	wEl1MinD_H;					//0x112
	WORD	wEl2MinD;					//0x114
	WORD	wEl2MinD_N;					//0x116
	WORD	wEl2MinD_H;					//0x118
	WORD	wEl3MinD;					//0x11A
	WORD	wEl3MinD_N;					//0x11C
	WORD	wEl3MinD_H;					//0x11E
	WORD	wEl1MaxD;					//0x120
	WORD	wEl1MaxD_N;					//0x122
	WORD	wEl1MaxD_H;					//0x124
	WORD	wEl2MaxD;					//0x126
	WORD	wEl2MaxD_N;					//0x128
	WORD	wEl2MaxD_H;					//0x12A
	WORD	wEl3MaxD;					//0x12C
	WORD	wEl3MaxD_N;					//0x12E
	WORD	wEl3MaxD_H;					//0x130
	WORD	wEl1Dur;					//0x132
	WORD	wEl1Dur_N;					//0x134
	WORD	wEl1Dur_H;					//0x136
	WORD	wEl2Dur;					//0x138
	WORD	wEl2Dur_N;					//0x13A
	WORD	wEl2Dur_H;					//0x13C
	WORD	wEl3Dur;					//0x13E
	WORD	wEl3Dur_N;					//0x140
	WORD	wEl3Dur_H;					//0x142
	WORD	wResDmg;					//0x144
	WORD	wResDmg_N;					//0x146
	WORD	wResDmg_H;					//0x148
	WORD	wResMagic;					//0x14A
	WORD	wResMagic_N;				//0x14C
	WORD	wResMagic_H;				//0x14E
	WORD	wResFire;					//0x150
	WORD	wResFire_N;					//0x152
	WORD	wResFire_H;					//0x154
	WORD	wResLight;					//0x156
	WORD	wResLight_N;				//0x158
	WORD	wResLight_H;				//0x15A
	WORD	wResCold;					//0x15C
	WORD	wResCold_N;					//0x15E
	WORD	wResCold_H;					//0x160
	WORD	wResPoison;					//0x162
	WORD	wResPoison_N;				//0x164
	WORD	wResPoiosn_H;				//0x166
	BYTE	bColdEffect;				//0x168
	BYTE	bColdEffect_N;				//0x169
	WORD	bColdEffect_H;				//0x16A
	DWORD	dwSendSkills;				//0x16C
	WORD	wSkill1;					//0x170
	WORD	wSkill2;					//0x172
	WORD	wSkill3;					//0x174
	WORD	wSkill4;					//0x176
	WORD	wSkill5;					//0x178
	WORD	wSkill6;					//0x17A
	WORD	wSkill7;					//0x17C
	WORD	wSkill8;					//0x17E
	DWORD   unk0x180[6];				//0x180
	BYTE	bSk1lvl;					//0x198
	BYTE	bSk2lvl;					//0x199
	BYTE	bSk3lvl;					//0x19A
	BYTE	bSk4lvl;					//0x19B
	BYTE	bSk5lvl;					//0x19C
	BYTE	bSk6lvl;					//0x19D
	BYTE	bSk7lvl;					//0x19E
	BYTE	bSk8lvl;					//0x19F
	DWORD	dwDamageRegen;				//0x1A0
	BYTE	bSplEndDeath;				//0x1A4
	BYTE	bSplGetModeChart;			//0x1A5
	BYTE	bSplEndGeneric;				//0x1A6
	BYTE	bSplClientEnd;				//0x1A7
};
MonStats2.txt - to do

Code: Select all

struct D2MonStats2Txt
{
	//to do
};
MonType.txt - to do

Code: Select all

struct D2MonTypeTxt
{
	//to do
};
MonUMod.txt

Code: Select all

struct D2MonUModTxt
{
	//to do
};
Npc.txt

Code: Select all

struct D2NpcTxt
{
	DWORD dwNpc;						//0x00
	DWORD dwSellMult;					//0x04
	DWORD dwBuyMult;					//0x08
	DWORD dwRepMult;					//0x0C
	DWORD dwQuestflagA;					//0x10
	DWORD dwQuestFlagB;					//0x14
	DWORD dwQuestFlagC;					//0x18
	DWORD dwQuestSellMultA;				//0x1C
	DWORD dwQuestSellMultB;				//0x20
	DWORD dwQuestSellMultC;				//0x24
	DWORD dwQuestBuyMultA;				//0x28
	DWORD dwQuestBuyMultB;				//0x2C
	DWORD dwQuestBuyMultC;				//0x30
	DWORD dwQuestRepMultA;				//0x34
	DWORD dwQuestRepMultB;				//0x38
	DWORD dwQuestRepMultC;				//0x3C
	DWORD dwMaxBuy;						//0x40
	DWORD dwMaxBuy_N;					//0x44
	DWORD dwMaxBuy_H;					//0x48
};
Objects.txt

Code: Select all

struct D2ObjectsTxt
{
	char szName[64];					//0x00
	wchar_t wszName[64];				//0x40
	char szToken[2];					//0xC0
	WORD wSpawnMax;						//0xC2
	BYTE nSelectable[8];				//0xC4
	DWORD dwTrapProb;					//0xCC
	DWORD dwSizeX;						//0xD0
	DWORD dwSizeY;						//0xD4
	BYTE pad0xD8;						//0xD8
	DWORD dwFrameCnt[7];				//0xD9
	WORD wFrameCnt7;					//0xF5
	BYTE pad0xF7;						//0xF7
	WORD wFrameDelta[8];				//0xF8
	BYTE nCycleAnim[8];					//0x108
	BYTE nLit[8];						//0x110
	BYTE nBlocksLight[8];				//0x118
	BYTE nHasCollision[8];				//0x120
	BYTE nIsAttackable0;				//0x128
	BYTE nStart[8];						//0x129
	BYTE nOrderFlag[8];					//0x131
	BYTE nEnvEffect;					//0x139
	BYTE nIsDoor;						//0x13A
	BYTE nBlocksVis;					//0x13B
	BYTE nOrientation;					//0x13C
	BYTE nPreOperate;					//0x13D
	BYTE nTrans;						//0x13E
	BYTE nMode[8];						//0x13F
	BYTE pad0x147;						//0x147
	DWORD dwXOffset;					//0x148
	DWORD dwYOffset;					//0x14C
	BYTE nDraw;							//0x150
	BYTE nHD;							//0x151
	BYTE nTR;							//0x152
	BYTE nLG;							//0x153
	BYTE nRA;							//0x154
	BYTE nLA;							//0x155
	BYTE nRH;							//0x156
	BYTE nLH;							//0x157
	BYTE nSH;							//0x158
	BYTE nS1;							//0x159
	BYTE nS2;							//0x15A
	BYTE nS3;							//0x15B
	BYTE nS4;							//0x15C
	BYTE nS5;							//0x15D
	BYTE nS6;							//0x15E
	BYTE nS7;							//0x15F
	BYTE nS8;							//0x160
	BYTE nTotalPieces;					//0x161
	BYTE nXSpace;						//0x162
	BYTE nYSpace;						//0x163
	BYTE nRed;							//0x164
	BYTE nGreen;						//0x165
	BYTE nBlue;							//0x166
	BYTE nSubClass;						//0x167
	DWORD dwNameOffset;					//0x168
	BYTE pad0x16C;						//0x16C
	BYTE nMonsterOK;					//0x16D
	BYTE nOperateRange;					//0x16E
	BYTE nShrineFunction;				//0x16F
	BYTE nAct;							//0x170
	BYTE nLockable;						//0x171
	BYTE nGore;							//0x172
	BYTE nRestore;						//0x173
	BYTE nRestoreVirgins;				//0x174
	WORD wSync;							//0x175
	BYTE pad0x177;						//0x177
	DWORD dwParm[8];					//0x178
	BYTE nTgtFX;						//0x198
	BYTE nTgtFY;						//0x199
	BYTE nTgtBX;						//0x19A
	BYTE nTgtBY;						//0x19B
	BYTE nDamage;						//0x19C
	BYTE nCollisionSubst;				//0x19D
	WORD pad0x19E;						//0x19E
	DWORD dwLeft;						//0x1A0
	DWORD dwTop;						//0x1A4
	DWORD dwWidth;						//0x1A8
	DWORD dwHeight;						//0x1AC
	BYTE nBeta;							//0x1B0
	BYTE nInitFn;						//0x1B1
	BYTE nPopulateFn;					//0x1B2
	BYTE nOperateFn;					//0x1B3
	BYTE nClientFn;						//0x1B4
	BYTE nOverlay;						//0x1B5
	BYTE nBlockMissile;					//0x1B6
	BYTE nDrawUnder;					//0x1B7
	DWORD dwOpenWarp;					//0x1B8
	DWORD dwAutomap;					//0x1BC
};
ObjGroup.txt - to do

Code: Select all

struct D2ObjGroupTxt
{
	//to do
};
ObjMode.txt

Code: Select all

struct D2ObjModeTxt
{
	char szName[32];					//0x00
	char szToken[20];					//0x20
};
ObjType.txt

Code: Select all

struct D2ObjTypeTxt
{
	char szName[32];					//0x00
	char szToken[20];					//0x20
};
Overlay.txt

Code: Select all

struct D2OverlayTxt
{
	WORD wOverlay;						//0x00
	char szFilename[64];				//0x02
	WORD wVersion;						//0x42
	DWORD dwFrames;						//0x44
	DWORD dwPreDraw;					//0x48
	DWORD dw1ofN;						//0x4C
	BYTE nDir;							//0x50
	BYTE nOpen;							//0x51
	WORD wBeta;							//0x52
	DWORD dwXoffset;					//0x54
	DWORD dwYoffset;					//0x58
	DWORD dwHeight1;					//0x5C
	DWORD dwHeight2;					//0x60
	DWORD dwHeight3;					//0x64
	DWORD dwHeight4;					//0x68
	DWORD dwAnimRate;					//0x6C
	DWORD dwInitRadius;					//0x70
	DWORD dwRadius;						//0x74
	DWORD dwLoopWaitTime;				//0x78
	BYTE nTrans;						//0x7C
	BYTE nRed;							//0x7D
	BYTE nGreen;						//0x7E
	BYTE nBlue;							//0x7F
	BYTE nNumDirections;				//0x80
	BYTE nLocalBlood;					//0x81
	WORD unk;							//0x82
};
PetType.txt

Code: Select all

struct D2PetTypeTxt
{
	DWORD dwHcIdx;						//0x00
	DWORD dwPetFlags;					//0x04
	WORD wGroup;						//0x08
	WORD wBaseMax;						//0x0A
	WORD wNameStr;						//0x0C
	BYTE nIconType;						//0x0E
	char szIcon[5][32];					//0x10
	DWORD unk0xAF;						//0xAF
	WORD wClass[4];						//0xB2
};
PlayerClass.txt

Code: Select all

struct D2PlayerClassTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
PlrMode.txt

Code: Select all

struct D2PlrModeTxt
{
	DWORD dwCode;						//0x00
};
PlrType.txt

Code: Select all

struct D2PlrTypeTxt
{
	char szName[32];					//0x00
	char szToken[20];					//0x20
};
Properties.txt

Code: Select all

struct D2PropertiesTxt
{
	WORD wProp;							//0x00
	BYTE nSet[8];						//0x02
	WORD wVal[7];						//0x0A
	BYTE nFunc[8];						//0x18
	WORD wStat[7];						//0x20
};
QualityItems.txt - to do

Code: Select all

struct D2QualityItemsTxt
{
	//to do
};
RarePrefix.txt - to do

Code: Select all

struct D2RarePrefixTxt
{
	//to do
};
RareSuffix.txt - to do

Code: Select all

struct D2RareSuffixTxt
{
	//to do
};
Runes.txt - to do

Code: Select all

struct D2RunesTxt
{
	char szName[64];						//0x00
	char szRuneName[64];					//0x40
	BYTE nComplete;							//0x80
	DWORD dwServer;							//0x81
	BYTE unk;								//0x85
	WORD dwIType1;							//0x86
	WORD dwIType2;							//0x88
	WORD dwIType3;							//0x8A
	WORD dwIType4;							//0x8C
	WORD dwIType5;							//0x8E
	WORD dwIType6;							//0x90
	WORD dwEType1;							//0x92
	WORD dwEType2;							//0x94
	WORD dwEType3;							//0x96
	DWORD dwRune1;							//0x98
	DWORD dwRune2;							//0x9C
	DWORD dwRune3;							//0xA0
	DWORD dwRune4;							//0xA4
	DWORD dwRune5;							//0xA8
	DWORD dwRune6;							//0xAC
	DWORD dwT1Code1;						//0xB0
	DWORD dwT1Param1;						//0xB4
	DWORD dwT1Min1;							//0xB8
	DWORD dwT1Max1;							//0xBC
	DWORD dwT1Code2;						//0xC0
	DWORD dwT1Param2;						//0xC4
	DWORD dwT1Min2;							//0xC8
	DWORD dwT1Max2;							//0xCC
	DWORD dwT1Code3;						//0xD0
	DWORD dwT1Param3;						//0xD4
	DWORD dwT1Min3;							//0xD8
	DWORD dwT1Max3;							//0xDC
	DWORD dwT1Code4;						//0xE0
	DWORD dwT1Param4;						//0xE4
	DWORD dwT1Min4;							//0xE8
	DWORD dwT1Max4;							//0xEC
	DWORD dwT1Code5;						//0xF0
	DWORD dwT1Param5;						//0xF4
	DWORD dwT1Min5;							//0xF8
	DWORD dwT1Max5;							//0xFC
	DWORD dwT1Code6;						//0x100
	DWORD dwT1Param6;						//0x104
	DWORD dwT1Min6;							//0x108
	DWORD dwT1Max6;							//0x10C
	DWORD dwT1Code7;						//0x110
	DWORD dwT1Param7;						//0x114
	DWORD dwT1Min7;							//0x118
	DWORD dwT1Max7;							//0x11C
};
SetItems.txt

Code: Select all

struct D2SetItemsTxt
{
	WORD wSetItemId;					//0x00
	char szName[32];					//0x02
	WORD pad0x22;						//0x22
	DWORD dwTblIndex;					//0x24
	char szItemCode[4];					//0x28
	DWORD pad0x2C;						//0x2C
	WORD wLvl;							//0x30
	WORD wLvlReq;						//0x32
	DWORD dwRarity;						//0x34
	DWORD dwCostMult;					//0x38
	DWORD dwCostAdd;					//0x3C
	BYTE nChrTransform;					//0x40
	BYTE nInvTransform;					//0x41
	char szFlippyFile[32];				//0x42
	char szInvFile[32];					//0x62
	WORD wDropSound;					//0x82
	WORD wUseSound;						//0x84
	BYTE nDropSfxFrame;					//0x86
	BYTE nAddFunc;						//0x87
	DWORD dwProp1;						//0x88
	DWORD dwPar1;						//0x8C
	DWORD dwMin1;						//0x90
	DWORD dwMax1;						//0x94
	DWORD dwProp2;						//0x98
	DWORD dwPar2;						//0x9C
	DWORD dwMin2;						//0xA0
	DWORD dwMax2;						//0xA4
	DWORD dwProp3;						//0xA8
	DWORD dwPar3;						//0xAC
	DWORD dwMin3;						//0xB0
	DWORD dwMax3;						//0xB4
	DWORD dwProp4;						//0xB8
	DWORD dwPar4;						//0xBC
	DWORD dwMin4;						//0xC0
	DWORD dwMax4;						//0xC4
	DWORD dwProp5;						//0xC8
	DWORD dwPar5;						//0xCC
	DWORD dwMin5;						//0xD0
	DWORD dwMax5;						//0xD4
	DWORD dwProp6;						//0xD8
	DWORD dwPar6;						//0xDC
	DWORD dwMin6;						//0xE0
	DWORD dwMax6;						//0xE4
	DWORD dwProp7;						//0xE8
	DWORD dwPar7;						//0xEC
	DWORD dwMin7;						//0xF0
	DWORD dwMax7;						//0xF4
	DWORD dwProp8;						//0xF8
	DWORD dwPar8;						//0xFC
	DWORD dwMin8;						//0x100
	DWORD dwMax8;						//0x104
	DWORD dwProp9;						//0x108
	DWORD dwPar9;						//0x10C
	DWORD dwMin9;						//0x110
	DWORD dwMax9;						//0x114
	DWORD dwAProp1a;					//0x118
	DWORD dwAPar1a;						//0x11C
	DWORD dwAMin1a;						//0x120
	DWORD dwAMax1a;						//0x124
	DWORD dwAProp1b;					//0x128
	DWORD dwAPar1b;						//0x12C
	DWORD dwAMin1b;						//0x130
	DWORD dwAMax1b;						//0x134
	DWORD dwAProp2a;					//0x138
	DWORD dwAPar2a;						//0x13C
	DWORD dwAMin2a;						//0x140
	DWORD dwAMax2a;						//0x144
	DWORD dwAProp2b;					//0x148
	DWORD dwAPar2b;						//0x14C
	DWORD dwAMin2b;						//0x150
	DWORD dwAMax2b;						//0x154
	DWORD dwAProp3a;					//0x158
	DWORD dwAPar3a;						//0x15C
	DWORD dwAMin3a;						//0x160
	DWORD dwAMax3a;						//0x164
	DWORD dwAProp3b;					//0x168
	DWORD dwAPar3b;						//0x16C
	DWORD dwAMin3b;						//0x170
	DWORD dwAMax3b;						//0x174
	DWORD dwAProp4a;					//0x178
	DWORD dwAPar4a;						//0x17C
	DWORD dwAMin4a;						//0x180
	DWORD dwAMax4a;						//0x184
	DWORD dwAProp4b;					//0x188
	DWORD dwAPar4b;						//0x18C
	DWORD dwAMin4b;						//0x190
	DWORD dwAMax4b;						//0x194
	DWORD dwAProp5a;					//0x198
	DWORD dwAPar5a;						//0x19C
	DWORD dwAMin5a;						//0x1A0
	DWORD dwAMax5a;						//0x1A4
	DWORD dwAProp5b;					//0x1A8
	DWORD dwAPar5b;						//0x1AC
	DWORD dwAMin5b;						//0x1B0
	DWORD dwAMax5b;						//0x1B4
};
Sets.txt

Code: Select all

struct D2SetsTxt
{
	WORD wSetId;						//0x00
	WORD wTblIndex;						//0x02
	DWORD dwVersion;					//0x04
	DWORD unk0x08;						//0x08
	DWORD dwSetItems;					//0x0C
	DWORD dwPCode2a;					//0x10
	DWORD dwPPar2a;						//0x14
	DWORD dwPMin2a;						//0x18
	DWORD dwPMax2a;						//0x1C
	DWORD dwPCode2b;					//0x20
	DWORD dwPPar2b;						//0x24
	DWORD dwPMin2b;						//0x28
	DWORD dwPMax2b;						//0x2C
	DWORD dwPCode3a;					//0x30
	DWORD dwPPar3a;						//0x34
	DWORD dwPMin3a;						//0x38
	DWORD dwPMax3a;						//0x3C
	DWORD dwPCode3b;					//0x40
	DWORD dwPPar3b;						//0x44
	DWORD dwPMin3b;						//0x48
	DWORD dwPMax3b;						//0x4C
	DWORD dwPCode4a;					//0x50
	DWORD dwPPar4a;						//0x54
	DWORD dwPMin4a;						//0x58
	DWORD dwPMax4a;						//0x5C
	DWORD dwPCode4b;					//0x60
	DWORD dwPPar4b;						//0x64
	DWORD dwPMin4b;						//0x68
	DWORD dwPMax4b;						//0x6C
	DWORD dwPCode5a;					//0x70
	DWORD dwPPar5a;						//0x74
	DWORD dwPMin5a;						//0x78
	DWORD dwPMax5a;						//0x7C
	DWORD dwPCode5b;					//0x80
	DWORD dwPPar5b;						//0x84
	DWORD dwPMin5b;						//0x88
	DWORD dwPMax5b;						//0x8C
	DWORD dwFCode1;						//0x90
	DWORD dwFPar1;						//0x94
	DWORD dwFMin1;						//0x98
	DWORD dwFMax1;						//0x9C
	DWORD dwFCode2;						//0xA0
	DWORD dwFPar2;						//0xA4
	DWORD dwFMin2;						//0xA8
	DWORD dwFMax2;						//0xAC
	DWORD dwFCode3;						//0xB0
	DWORD dwFPar3;						//0xB4
	DWORD dwFMin3;						//0xB8
	DWORD dwFMax3;						//0xBC
	DWORD dwFCode4;						//0xC0
	DWORD dwFPar4;						//0xC4
	DWORD dwFMin4;						//0xC8
	DWORD dwFMax4;						//0xCC
	DWORD dwFCode5;						//0xD0
	DWORD dwFPar5;						//0xD4
	DWORD dwFMin5;						//0xD8
	DWORD dwFMax5;						//0xDC
	DWORD dwFCode6;						//0xE0
	DWORD dwFPar6;						//0xE4
	DWORD dwFMin6;						//0xE8
	DWORD dwFMax6;						//0xEC
	DWORD dwFCode7;						//0xF0
	DWORD dwFPar7;						//0xF4
	DWORD dwFMin7;						//0xF8
	DWORD dwFMax7;						//0xFC
	DWORD dwFCode8;						//0x100
	DWORD dwFPar8;						//0x104
	DWORD dwFMin8;						//0x108
	DWORD dwFMax8;						//0x10C
	D2SetItemsTxt* pSetItem1;			//0x110
	D2SetItemsTxt* pSetItem2;			//0x114
	D2SetItemsTxt* pSetItem3;			//0x118
	D2SetItemsTxt* pSetItem4;			//0x11C
	D2SetItemsTxt* pSetItem5;			//0x120
	D2SetItemsTxt* pSetItem6;			//0x124
};
Last edited by Mnw1995 on Sun Dec 08, 2013 5:49 pm, edited 3 times in total.

User avatar
Mnw1995
Junior Member
Paladin
Posts: 100
Joined: Sat Apr 02, 2011 6:28 pm

Re: [1.10] D2DataTables - Txt-File structs

Post by Mnw1995 » Sun Dec 08, 2013 5:50 pm

Shrines.txt

Code: Select all

struct D2ShrinesTxt
{
	DWORD dwCode;						//0x00
	DWORD dwArg0;						//0x04
	DWORD dwArg1;						//0x08
	DWORD dwDurationInFrames;			//0x0C
	BYTE nResetTimeInMins;				//0x10
	BYTE nRarity;						//0x11
	char szViewname[32];				//0x12
	char szNiftyphrase[128];			//0x32
	WORD wEffectClass;					//0xB2
	DWORD dwLevelMin;					//0xB4
};
SkillCalc.txt

Code: Select all

struct D2SkillCalcTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
SkillDesc.txt

Code: Select all

struct D2SkillDescTxt
{
	WORD wSkillDesc;					//0x00
	BYTE nSkillPage;					//0x02
	BYTE nSkillRow;						//0x03
	BYTE nSkillColumn;					//0x04
	BYTE nListRow;						//0x05
	BYTE nListPool;						//0x06
	BYTE nIconCel;						//0x07
	WORD wStrName;						//0x08
	WORD wStrShort;						//0x0A
	WORD wStrLong;						//0x0C
	WORD wStrAlt;						//0x0E
	WORD wStrMana;						//0x10
	WORD wDescDam;						//0x12
	WORD wDescAtt;						//0x14
	WORD unk0x16;						//0x16
	DWORD dwDamCalc[2];					//0x18
	BYTE nPrgDamElem[4];				//0x20
	DWORD dwProgDmgMin[3];				//0x24
	DWORD dwProgDmgMax[3];				//0x30
	WORD wDescMissile[3];				//0x3C
	BYTE nDescLine[18];					//0x42
	WORD wDescTextA[17];				//0x54
	WORD wDescTextB[17];				//0x76
	DWORD dwDescCalcA[17];				//0x98
	DWORD dwDescCalcB[17];				//0xDC
};
Skills.txt

Code: Select all

struct D2SkillsTxt
{
	DWORD dwSkillId; 					//0x00
	DWORD dwFlags[2];					//0x04
	DWORD dwClassId;					//0x0C
	BYTE nAnim;							//0x10
	BYTE nMonAnim;						//0x11
	BYTE nSeqTrans;						//0x12
	BYTE nSeqNum;						//0x13
	BYTE nRange;						//0x14
	BYTE nSelectProc;					//0x15
	BYTE nSeqInput;						//0x16
	BYTE unk0x17;						//0x17
	WORD wITypeA1;						//0x18
	WORD wITypeA2;						//0x1A
	WORD wITypeA3;						//0x1C
	WORD wITypeB1;						//0x1E
	WORD wITypeB2;						//0x20
	WORD wITypeB3;						//0x22
	WORD wETypeA1;						//0x24
	WORD wETypeA2;						//0x26
	WORD wETypeB1;						//0x28
	WORD wETypeB2;						//0x2A
	WORD wSrvStartFunc;					//0x2C
	WORD wSrvDoFunc;					//0x2E
	WORD wSrvPrgFunc1;					//0x30
	WORD wSrvPrgFunc2;					//0x32
	WORD wSrvPrgFunc3;					//0x34
	WORD unk0x36;						//0x36
	DWORD dwPrgCalc1;					//0x38
	DWORD dwPrgCalc2;					//0x3C
	DWORD dwPrgCalc3;					//0x40
	WORD wPrgDamage;					//0x44
	WORD wSrvMissile;					//0x46
	WORD wSrvMissileA;					//0x48
	WORD wSrvMissileB;					//0x4A
	WORD wSrvMissileC;					//0x4C
	WORD wSrvOverlay;					//0x4E
	DWORD dwAuraFilter;					//0x50
	WORD wAuraStat1;					//0x54
	WORD wAuraStat2;					//0x56
	WORD wAuraStat3;					//0x58
	WORD wAuraStat4;					//0x5A
	WORD wAuraStat5;					//0x5C
	WORD wAuraStat6;					//0x5E
	DWORD dwAuraLenCalc;				//0x60
	DWORD dwAuraRangeCalc;				//0x64
	DWORD dwAuraStatCalc1;				//0x68
	DWORD dwAuraStatCalc2;				//0x6C
	DWORD dwAuraStatCalc3;				//0x70
	DWORD dwAuraStatCalc4;				//0x74
	DWORD dwAuraStatCalc5;				//0x78
	DWORD dwAuraStatCalc6;				//0x7C
	WORD wAuraState;					//0x80
	WORD wAuraTargetState;				//0x82
	WORD wAuraEvent1;					//0x84
	WORD wAuraEvent2;					//0x86
	WORD wAuraEvent3;					//0x88
	WORD wAuraEventFunc1;				//0x8A
	WORD wAuraEventFunc2;				//0x8C
	WORD wAuraEventFunc3;				//0x8E
	WORD wAuraTgtEvent;					//0x90
	WORD wAuraTgtEventFunc;				//0x92
	WORD wPassiveState;					//0x94
	WORD wPassiveIType;					//0x96
	WORD wPassiveStat1;					//0x98
	WORD wPassiveStat2;					//0x9A
	WORD wPassiveStat3;					//0x9C
	WORD wPassiveStat4;					//0x9E
	WORD wPassiveStat5;					//0xA0
	WORD unk0xA2;						//0xA2
	DWORD dwPassiveCalc1;				//0xA4
	DWORD dwPassiveCalc2;				//0xA8
	DWORD dwPassiveCalc3;				//0xAC
	DWORD dwPassiveCalc4;				//0xB0
	DWORD dwPassiveCalc5;				//0xB4
	WORD wPassiveEvent;					//0xB8
	WORD wPassiveEventFunc;				//0xBA
	WORD wSummon;						//0xBC
	BYTE nPetType;						//0xBE
	BYTE nSumMode;						//0xBF
	DWORD dwPetMax;						//0xC0
	WORD wSumSkill1;					//0xC4
	WORD wSumSkill2;					//0xC6
	WORD wSumSkill3;					//0xC8
	WORD wSumSkill4;					//0xCA
	WORD wSumSkill5;					//0xCC
	WORD unk0xCE;						//0xCE
	DWORD dwSumSkCalc1;					//0xD0
	DWORD dwSumSkCalc2;					//0xD4
	DWORD dwSumSkCalc3;					//0xD8
	DWORD dwSumSkCalc4;					//0xDC
	DWORD dwSumSkCalc5;					//0xE0
	WORD wSumUMod;						//0xE4
	WORD wSumOverlay;					//0xE6
	WORD wCltMissile;					//0xE8
	WORD wCltMissileA;					//0xEA
	WORD wCltMissileB;					//0xEC
	WORD wCltMissileC;					//0xEE
	WORD wCltMissileD;					//0xF0
	WORD wCltStFunc;					//0xF2
	WORD wCltDoFunc;					//0xF4
	WORD wCltPrgFunc1;					//0xF6
	WORD wCltPrgFunc2;					//0xF8
	WORD wCltPrgFunc3;					//0xFA
	WORD wStSound;						//0xFC
	WORD unk0xFE;						//0xFE
	WORD wDoSound;						//0x100
	WORD wDoSoundA;						//0x102
	WORD wDoSoundB;						//0x104
	WORD wCastOverlay;					//0x106
	WORD wTgtOverlay;					//0x108
	WORD wTgtSound;						//0x10A
	WORD wPrgOverlay;					//0x10C
	WORD wPrgSound;						//0x10E
	WORD wCltOverlayA;					//0x110
	WORD wCltOverlayB;					//0x112
	DWORD dwCltCalc1;					//0x114
	DWORD dwCltCalc2;					//0x118
	DWORD dwCltCalc3;					//0x11C
	WORD wItemTarget;					//0x120
	WORD wItemCastSound;				//0x122
	DWORD wItemCastOverlay;				//0x124
	DWORD dwPerDelay;					//0x128
	WORD wMaxLvl;						//0x12C
	WORD wResultFlags;					//0x12E
	DWORD dwHitFlags;					//0x130
	DWORD dwHitClass;					//0x134
	DWORD dwCalc1;						//0x138
	DWORD dwCalc2;						//0x13C
	DWORD dwCalc3;						//0x140
	DWORD dwCalc4;						//0x144
	DWORD dwParam1;						//0x148
	DWORD dwParam2;						//0x14C
	DWORD dwParam3;						//0x150
	DWORD dwParam4;						//0x154
	DWORD dwParam5;						//0x158
	DWORD dwParam6;						//0x15C
	DWORD dwParam7;						//0x160
	DWORD dwParam8;						//0x164
	WORD wWeapSel;						//0x168
	WORD wItemEffect;					//0x16A
	DWORD wItemCltEffect;				//0x16C
	DWORD dwSkPoints;					//0x170
	WORD wReqLevel;						//0x174
	WORD wReqStr;						//0x176
	WORD wReqDex;						//0x178
	WORD wReqInt;						//0x17A
	WORD wReqVit;						//0x17C
	WORD wReqSkill1;					//0x17E
	WORD wReqSkill2;					//0x180
	WORD wReqSkill3;					//0x182
	WORD wStartMana;					//0x184
	WORD wMinMana;						//0x186
	WORD wManaShift;					//0x188
	WORD wMana;							//0x18A
	WORD wLevelMana;					//0x18C
	BYTE nAttackRank;					//0x18E
	BYTE nLineOfSight;					//0x18F
	DWORD dwDelay;						//0x190
	DWORD wSkillDesc;					//0x194
	DWORD dwToHit;						//0x198
	DWORD dwLevToHit;					//0x19C
	DWORD dwToHitCalc;					//0x1A0
	BYTE nToHitShift;					//0x1A4
	BYTE nSrcDam;						//0x1A5
	WORD unk0x1A6;						//0x1A6
	DWORD dwMinDam;						//0x1A8
	DWORD dwMaxDam;						//0x1AC
	DWORD dwMinLvlDam1;					//0x1B0
	DWORD dwMinLvlDam2;					//0x1B4
	DWORD dwMinLvlDam3;					//0x1B8
	DWORD dwMinLvlDam4;					//0x1BC
	DWORD dwMinLvlDam5;					//0x1C0
	DWORD dwMaxLvlDam1;					//0x1C4
	DWORD dwMaxLvlDam2;					//0x1C8
	DWORD dwMaxLvlDam3;					//0x1CC
	DWORD dwMaxLvlDam4;					//0x1D0
	DWORD dwMaxLvlDam5;					//0x1D4
	DWORD dwDmgSymPerCalc;				//0x1D8
	WORD wEType;						//0x1DC
	WORD unk0x1DE;						//0x1DE
	DWORD dwEMin;						//0x1E0
	DWORD dwEMax;						//0x1E4
	DWORD dwEMinLev1;					//0x1E8
	DWORD dwEMinLev2;					//0x1EC
	DWORD dwEMinLev3;					//0x1F0
	DWORD dwEMinLev4;					//0x1F4
	DWORD dwEMinLev5;					//0x1F8
	DWORD dwEMaxLev1;					//0x1FC
	DWORD dwEMaxLev2;					//0x200
	DWORD dwEMaxLev3;					//0x204
	DWORD dwEMaxLev4;					//0x208
	DWORD dwEMaxLev5;					//0x20C
	DWORD dwEDmgSymPerCalc;				//0x210
	DWORD dwELen;						//0x214
	DWORD dwELevLen1;					//0x218
	DWORD dwELevLen2;					//0x21C
	DWORD dwELevLen3;					//0x220
	DWORD dwELenSymPerCalc;				//0x224
	WORD wRestrict;						//0x228
	WORD wState1;						//0x22A
	WORD wState2;						//0x22C
	WORD wState3;						//0x22E
	WORD wAiType;						//0x230
	WORD wAiBonus;						//0x232
	DWORD dwCostMult;					//0x234
	DWORD dwCostAdd;					//0x238
};

States.txt

Code: Select all

struct D2StatesTxt
{
	WORD wState;						//0x00
	WORD wOverlay[4];					//0x02
	WORD wCastOverlay;					//0x0A
	WORD wRemoveOverlay;				//0x0C
	WORD wPrgOverlay;					//0x0E
	DWORD dwStateFlags;					//0x10
	DWORD dwStateFlagsEx;				//0x14
	WORD wStat;							//0x18
	WORD wSetFunc;						//0x1A
	WORD wRemFunc;						//0x1C
	WORD wGroup;						//0x1E
	BYTE nColorPri;						//0x20
	BYTE nColorShift;					//0x21
	BYTE nLightRGB[4];					//0x22
	WORD wOnSound;						//0x26
	WORD wOffSound;						//0x28
	WORD wItemType;						//0x2A
	BYTE nItemTrans;					//0x2C
	BYTE nGfxType;						//0x2D
	WORD wGfxClass;						//0x2E
	WORD wCltEvent;						//0x30
	WORD wCltEventFunc;					//0x32
	WORD wCltActiveFunc;				//0x34
	WORD wSrvActiveFunc;				//0x36
	WORD wSkill;						//0x38
	WORD wMissile;						//0x3A
};
Sounds.txt

Code: Select all

struct D2SoundsTxt
{
	WORD wSound;
};
StorePage.txt

Code: Select all

struct D2StorePageTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
SuperUniques.txt

Code: Select all

struct D2SuperUniquesTxt
{
	WORD wHcIdx;						//0x00
	WORD wNameStr;						//0x02
	DWORD dwClass;						//0x04
	DWORD dwHcIdx;						//0x08
	DWORD dwMod[3];						//0x0C
	DWORD dwMonSound;					//0x18
	DWORD dwMinGrp;						//0x1C
	DWORD dwMaxGrp;						//0x20
	BYTE nAutopos;						//0x24
	BYTE nEclass;						//0x25
	BYTE nStacks;						//0x26
	BYTE nReplaceable;					//0x27
	BYTE nUtrans[4];					//0x28
	WORD dwTC[3];						//0x2C
	WORD unk0x32;						//0x32
};
TreasureClassEx.txt - to do

Code: Select all

struct D2TreasureClassExTxt
{
	//to do
};
UniqueAppellation.txt - to do

Code: Select all

struct D2UniqueAppellationTxt
{
	//to do
};
UniqueItems.txt

Code: Select all

struct D2UniqueItemsTxt
{
	WORD unk0x00;						//0x00
	char szName[34];					//0x02
	DWORD dwVersion;					//0x24
	union
	{
		DWORD dwBaseItemCode;			//0x28
		char szBaseItemCode[4];			//0x28
	};
	DWORD dwUniqueItemFlags;			//0x2C
	DWORD dwRarity;						//0x30
	WORD wLvl;							//0x34
	WORD wLvlReq;						//0x36
	BYTE nChrTransform;					//0x38
	BYTE nInvTransform;					//0x39
	char szFlippyFile[32];				//0x3A
	char szInvFile[34];					//0x5A
	DWORD dwCostMult;					//0x7C
	DWORD dwCostAdd;					//0x80
	WORD wDropSound;					//0x84
	WORD wUseSound;						//0x86
	DWORD dwDropSfxFrame;				//0x88	
	DWORD dwProp1;						//0x8C
	DWORD dwPar1;						//0x90
	DWORD dwMin1;						//0x94
	DWORD dwMax1;						//0x98
	DWORD dwProp2;						//0x9C
	DWORD dwPar2;						//0xA0
	DWORD dwMin2;						//0xA4
	DWORD dwMax2;						//0xA8
	DWORD dwProp3;						//0xAC
	DWORD dwPar3;						//0xB0
	DWORD dwMin3;						//0xB4
	DWORD dwMax3;						//0xB8
	DWORD dwProp4;						//0xBC
	DWORD dwPar4;						//0xC0
	DWORD dwMin4;						//0xC4
	DWORD dwMax4;						//0xC8
	DWORD dwProp5;						//0xCC
	DWORD dwPar5;						//0xD0
	DWORD dwMin5;						//0xD4
	DWORD dwMax5;						//0xD8
	DWORD dwProp6;						//0xDC
	DWORD dwPar6;						//0xE0
	DWORD dwMin6;						//0xE4
	DWORD dwMax6;						//0xE8
	DWORD dwProp7;						//0xEC
	DWORD dwPar7;						//0xF0
	DWORD dwMin7;						//0xF4
	DWORD dwMax7;						//0xF8
	DWORD dwProp8;						//0xFC
	DWORD dwPar8;						//0x100
	DWORD dwMin8;						//0x104
	DWORD dwMax8;						//0x10
	DWORD dwProp9;						//0x10C
	DWORD dwPar9;						//0x110
	DWORD dwMin9;						//0x114
	DWORD dwMax9;						//0x118
	DWORD dwProp10;						//0x11C
	DWORD dwPar10;						//0x120
	DWORD dwMin10;						//0x124
	DWORD dwMax10;						//0x128
	DWORD dwProp11;						//0x12C
	DWORD dwPar11;						//0x130
	DWORD dwMin11;						//0x134
	DWORD dwMax11;						//0x138
	DWORD dwProp12;						//0x13C
	DWORD dwPar12;						//0x140
	DWORD dwMin12;						//0x144
	DWORD dwMax12;						//0x148
};
UniquePrefix.txt - to do

Code: Select all

struct D2UniquePrefixTxt
{
	//to do
};
UniqueSuffix.txt - to do

Code: Select all

struct D2UniqueSuffixTxt
{
	//to do
};
UniqueTitle.txt - to do

Code: Select all

struct D2UniqueTitleTxt
{
	//to do
};
WeaponClass.txt

Code: Select all

struct D2WeaponClassTxt
{
	union
	{
		DWORD dwCode;					//0x00
		char szCode[4];					//0x00
	};
};
sgptDataTable - unknown for me

Code: Select all

struct sgptDataTable 
{
	//unknown
};

Thanks to Necrolis, kingpin, kidpaddle94, lolet, Nefarius, ... :)




Feel free to add and correct things! I am sure there are some mistakes ;)




Edit:
-added AutoMagic.txt, MagicSuffix.txt, MagicPrefix.txt (these are all the same)
-added Runes.txt
-changed Sets.txt, SetItems.txt

lolet
Posts: 93
Joined: Sat Sep 04, 2010 8:43 pm

Re: [1.10] D2DataTables - Txt-File structs

Post by lolet » Wed Jun 25, 2014 9:59 pm

This topic should be pinned. Extremely valuable info
Posting MonStats2.txt - almost done

Code: Select all

#pragma pack(push, 1)
struct MonStats2Txt
{
	WORD wId;						//0x00
	WORD _1;						//0x02
	struct {
		BYTE bNoGfxHitTest:1;		//0x4:1
		BYTE bNoMap:1;				//0x4:2
		BYTE bNoOvly:1;				//0x4:3
		BYTE bIsSel:1;				//0x4:4
		BYTE bAlSel:1;				//0x4:5
		BYTE bNoSel:1;				//0x4:6
		BYTE bShiftSel:1;			//0x4:7
		BYTE bCorpseSel:1;			//0x4:8
		BYTE bRevive:1;				//0x4:9
		BYTE bIsAtt:1;				//0x4:10
		BYTE bSmall:1;				//0x4:11
		BYTE bLarge:1;				//0x4:12
		BYTE bSoft:1;				//0x4:13
		BYTE bCritter:1;			//0x4:14
		BYTE bShadow:1;				//0x4:15
		BYTE bNoUniqueShift:1;		//0x4:16
		BYTE bCompositeDeath:1;		//0x4:17
		BYTE bInert:1;				//0x4:18
		BYTE bObjCol:1;				//0x4:19
		BYTE bDeadCol:1;			//0x4:20
		BYTE bUnflatDead:1;			//0x4:21
	} dwFlags;
	BYTE _2;
	BYTE bSizeX;					//0x8
	BYTE bSizeY;					//0x9
	BYTE bSpawnCol;					//0xA
	BYTE bHeight;					//0xB
	BYTE boverlayHeight;			//0xC
	BYTE bpixHeight;				//0xD
	BYTE bMeleeRng;					//0xE
	BYTE _3;						//0xF
	DWORD dwBaseW;					//0x10
	BYTE bHitClass;					//0x14
	DWORD bUnk[52];					//0x15 These bytes are definitely used by game, maybe MonsterNode from MonsterRegion?
	BYTE _4[3];						//0xE5
	struct {
		BYTE bHD:1;					//0xE8:1
		BYTE bTR:1;					//0xE8:2
		BYTE bLG:1;					//0xE8:3
		BYTE bRA:1;					//0xE8:4
		BYTE bLA:1;					//0xE8:5
		BYTE bRH:1;					//0xE8:6
		BYTE bLH:1;					//0xE8:7
		BYTE bSH:1;					//0xE8:8
		BYTE bS1:1;					//0xE8:9
		BYTE bS2:1;					//0xE8:10
		BYTE bS3:1;					//0xE8:11
		BYTE bS4:1;					//0xE8:12
		BYTE bS5:1;					//0xE8:13
		BYTE bS6:1;					//0xE8:14
		BYTE bS7:1;					//0xE8:15
		BYTE bS8:1;					//0xE8:16
	} wComponents;
	WORD _5;
	BYTE bTotalPieces;				//0xEC
	BYTE _6[3];						//0xED
	struct {
		BYTE bmDT:1;				//0xF0:1
		BYTE bmNU:1;				//0xF0:2
		BYTE bmWL:1;				//0xF0:3
		BYTE bmGH:1;				//0xF0:4
		BYTE bmA1:1;				//0xF0:5
		BYTE bmA2:1;				//0xF0:6
		BYTE bmBL:1;				//0xF0:7
		BYTE bmSC:1;				//0xF0:8
		BYTE bmS1:1;				//0xF0:9
		BYTE bmS2:1;				//0xF0:10
		BYTE bmS3:1;				//0xF0:11
		BYTE bmS4:1;				//0xF0:12
		BYTE bmDD:1;				//0xF0:13
		BYTE bmKB:1;				//0xF0:14
		BYTE bmSQ:1;				//0xF0:15
		BYTE bmRN:1;				//0xF0:16
	} wModes;
	WORD _7;						//0xF2
	BYTE bdDT;						//0xF4
	BYTE bdNU;						//0xF5
	BYTE bdWL;						//0xF6
	BYTE bdGH;						//0xF7
	BYTE bdA1;						//0xF8
	BYTE bdA2;						//0xF9
	BYTE bdBL;						//0xFA
	BYTE bdSC;						//0xFB
	BYTE bdS1;						//0xFC
	BYTE bdS2;						//0xFD
	BYTE bdS3;						//0xFE
	BYTE bdS4;						//0xFF
	BYTE bdDD;						//0x100
	BYTE bdKB;						//0x101
	BYTE bdSQ;						//0x102
	BYTE bdRN;						//0x103
	struct {
		BYTE _wMove1:1;				//0x104:1 underscored are not compiled
		BYTE _wMove2:1;				//0x104:2
		BYTE _wMove3:1;				//0x104:3
		BYTE _wMove4:1;				//0x104:4
		BYTE bA1mv:1;				//0x104:5
		BYTE bA2mv:1;				//0x104:6
		BYTE _wMove7:1;				//0x104:7
		BYTE bSCmv:1;				//0x104:8
		BYTE bS1mv:1;				//0x104:9
		BYTE bS2mv:1;				//0x104:10
		BYTE bS3mv:1;				//0x104:11
		BYTE bS4mv:1;				//0x104:12
	} wMoveModes;
	WORD _8;						//0x106					
	BYTE bInfernoLen;				//0x108
	BYTE bInfernoAnim;				//0x109
	BYTE bInfernoRollback;			//0x10A
	BYTE bResurrectMode;			//0x10B
	WORD wResurrectSkill;			//0x10C
	WORD whtTop;					//0x10E
	WORD whtLeft;					//0x110
	WORD whtWidth;					//0x112
	WORD whtHeight;					//0x114
	WORD _9;
	DWORD dwAutomapCel;				//0x118
	BYTE bLocalBlood;				//0x11C
	BYTE bBleed;					//0x11D
	BYTE bLight;					//0x11E
	BYTE bLightR;					//0x11F
	BYTE bLightG;					//0x120
	BYTE bLightB;					//0x121
	BYTE bUtrans;					//0x122
	BYTE bUtransN;					//0x123
	BYTE bUtransH;					//0x124
	BYTE _10[3];					//0x125
	DWORD dwHeart;					//0x128
	DWORD dwBodyPart;				//0x12C
	BYTE bRestore;					//0x130
	BYTE _11[3];					//0x134
};
#pragma pack(pop)

User avatar
kidpaddle94
Forum Legend
Principality
Posts: 2057
Joined: Thu Aug 13, 2009 2:54 pm
Location: localhost
Canada

Re: [1.10] D2DataTables - Txt-File structs

Post by kidpaddle94 » Wed Jun 25, 2014 10:15 pm

The easiest way to get accurate and full structs would be to hook the D2Common function that compiles the txt files and make it output the binfield struct layout. I've been meaning to do this but just haven't gotten to do it yet. There would also be some few exceptions (levels.txt for example has two wide char strings that aren't filled through the original bin compilation...)

Anyways, here are a few I've been laying out by manually looking into the compiled binfield structs (and which are missing here). 1.13c, but as far as I know these haven't changed since 1.10

Code: Select all

struct D2MonEquipTXT
{
	WORD nMonster;			//0x00
	WORD nLevel;			//0x02
	DWORD dwOnInit;			//0x04
	union					//0x08
	{
		DWORD dwItem[3];
		char szItem[3][4];
	};
	BYTE nLoc[3];			//0x14
	BYTE nMod[3];			//0x17
};

Code: Select all

struct D2MonItemPercentTXT
{
	BYTE nHeartPercent;				//0x00
	BYTE nBodyPartPercent;			//0x01
	BYTE nTreasureClassPercent;		//0x02
	BYTE nComponentPercent;			//0x03
};

Code: Select all

struct D2MonLvlTXT
{
	DWORD dwAC[3];		//0x00
	DWORD dwLAC[3];		//0x0C
	DWORD dwTH[3];		//0x18
	DWORD dwLTH[3];		//0x24
	DWORD dwHP[3];		//0x30
	DWORD dwLHP[3];		//0x3C
	DWORD dwDM[3];		//0x48
	DWORD dwLDM[3];		//0x54
	DWORD dwXP[3];		//0x60
	DWORD dwLXP[3];		//0x6C
};

Code: Select all

struct D2MonPlaceTXT
{
	WORD nIndex;	//0x00
};

Code: Select all

struct D2MonPresetTXT
{
	WORD nAct;		//0x00
	WORD nPlace;	//0x02
};

Code: Select all

struct D2MonPropTXT
{
	DWORD dwId;					//0x000
	D2PropertyStrc Prop[3][6];	//0x004
	BYTE nChance[3][6];			//0x124
};

lolet
Posts: 93
Joined: Sat Sep 04, 2010 8:43 pm

Re: [1.10] D2DataTables - Txt-File structs

Post by lolet » Thu Jun 26, 2014 4:29 pm

kidpaddle94" wrote:The easiest way to get accurate and full structs would be to hook the D2Common function that compiles the txt files and make it output the binfield struct layout. I've been meaning to do this but just haven't gotten to do it yet. There would also be some few exceptions (levels.txt for example has two wide char strings that aren't filled through the original bin compilation...)
Hm I took a different way, but as you said may be not 100% accurate. Here's a tutorial if someone wants to define remaining files. Firstly define BinField in Hex-Rays output, so you get quickly output like this

Code: Select all

hField[000].eFieldType = 17;
hField[000].nFieldLength = 0;
hField[000].nFieldOffset = 0;
hField[000].szFieldName = "Id";
hField[001].eFieldType = 4;
hField[001].nFieldLength = 0;
hField[001].nFieldOffset = 11;
hField[001].szFieldName = "Height";
hField[002].eFieldType = 4;
hField[002].nFieldLength = 0;
hField[002].nFieldOffset = 12;
//...
Then used following ruby script to convert this to structure format:

Code: Select all

data = []

class Field
	include Comparable
	
	 def <=>(b)
		if(offset == b.offset) then
			return bit <=> b.bit
		end
		offset <=> b.offset
 	 end

	attr_accessor :type
	attr_accessor :offset
	attr_accessor :bit
	attr_accessor :name
    def initialize(index)
      @index = index
    end


end

def field2name(type)
	case type
		when 10,25,2,8,9,19,11,12,14,16,24,5
			return "DWORD dw"
		when 15,3,22,17,18,20,21
 			return "WORD w"
 		when 13,6,4,26
 			return "BYTE b"
 		when 1
 			return "char sz"
 		when 23
 			return "void* p"
 		else
 			return "[unk type] u"
	end
end


begin
	br = ARGV[0] unless ARGV[0].nil?
	
	contents = File.read(br)
	contents.scan(/^.*\[(\d+)\]\.(\w+).*=\s*(?:(.*));$/) { |t|
	#puts t[0] + ", " + t[1] + ", " + t[2]
	if(data[t[0].to_i] == nil) then
		b = Field.new(t[0].to_i)
		data[t[0].to_i] = b
	end
	b = data[t[0].to_i]

	case t[1]
	when "eFieldType"
	b.type = t[2].to_i
	when "nFieldLength"
	b.bit = t[2].to_i
	when "szFieldName"
	b.name = t[2][1..-2]
	when "nFieldOffset"
	b.offset = t[2].to_i
	end

	}

data.sort!	
data.each { |x| 

	if x.type == 26 then
	puts field2name(x.type) + x.name + ":1" + ";\t\t\t\t//0x" + x.offset.to_s(16).upcase + ":" + (x.bit.to_i+1).to_s
	elsif x.type == 1
	puts field2name(x.type) + x.name + "[" + x.bit.to_s + "]" +";\t\t\t\t//0x" + x.offset.to_s(16).upcase
	elsif x.name != "end"
	puts field2name(x.type) + x.name + ";\t\t\t\t//0x" + x.offset.to_s(16).upcase
	end
}

end

User avatar
Necrolis
Site Admin
Throne
Posts: 9017
Joined: Sat Mar 25, 2006 1:22 pm
Location: The Land of the Dead
Contact:
South Africa

Hand-picked

Re: [1.10] D2DataTables - Txt-File structs

Post by Necrolis » Thu Jun 26, 2014 5:35 pm

kidpaddle94" wrote:The easiest way to get accurate and full structs would be to hook the D2Common function that compiles the txt files and make it output the binfield struct layout. I've been meaning to do this but just haven't gotten to do it yet. There would also be some few exceptions (levels.txt for example has two wide char strings that aren't filled through the original bin compilation...)
this won't catch post processing based stuff (one can't assume everything is padding ;)), especially with monster files or set items.
lolet" wrote:This topic should be pinned. Extremely valuable info
Posting MonStats2.txt - almost done
Will do
Image
Netiquette, Do you USE it?!?! | Nefarius' Fixed TXT Files | Terms Of Service
Blackened | Day of Death | D2GFEx
"What was yours is mine. Your land, your people, and now your life." - Lim-Dul, the Necromancer
Judgement is Final, Death is Eternal

User avatar
kidpaddle94
Forum Legend
Principality
Posts: 2057
Joined: Thu Aug 13, 2009 2:54 pm
Location: localhost
Canada

Re: [1.10] D2DataTables - Txt-File structs

Post by kidpaddle94 » Tue Mar 29, 2016 8:36 am

PetType.txt actually has a size of 0xE0. However I'm not sure what the extra data is used for (it's doesn't come from fields of the txt file, it's post-compilation processing).

Code: Select all

struct D2PetTypeTXT
{
	DWORD dwHcIdx;			//0x00
	DWORD dwPetFlags;		//0x04
	WORD nGroup;			//0x08
	WORD nBaseMax;			//0x0A
	WORD nNameStr;			//0x0C
	BYTE nIconType;			//0x0E
	char szIcon[5][32];		//0x0F
	DWORD __0AF;			//0xAF
	WORD nClass[4];			//0xB2
	BYTE __0BA[37];			//0xBA
};

User avatar
weapon-x
Forum Legend
Arch-Angel
Posts: 1047
Joined: Wed Mar 18, 2009 4:52 am
Location: Mindanao, Philippines
Contact:
Philippines

Re: [1.10] D2DataTables - Txt-File structs

Post by weapon-x » Wed Jun 15, 2016 2:35 am

Code: Select all

D2BeltsTxt
{
     //...
     DWORD dwRowNumber    //0x04
    //...
}
i believe the struct is a little bit off
" It's not the size of the dog in the fight, it's the size of the fight in the dog. "

~Mark Twain

User avatar
misiek1294
Junior Member
Paladin
Posts: 165
Joined: Mon Dec 29, 2014 3:58 pm
Poland

Re: [1.10] D2DataTables - Txt-File structs

Post by misiek1294 » Tue Dec 11, 2018 2:51 pm

Code: Select all

#pragma pack(push, 1)
struct MonSoundsTxT
{
	WORD Id;
	WORD _2;
	DWORD Attack1;
	DWORD Att1Del;
	DWORD Att1Prb;
	DWORD Weapon1;
	DWORD Wea1Del;
	DWORD Wea1Vol;
	DWORD Attack2;
	DWORD Att2Del;
	DWORD Att2Prb;
	DWORD Weapon2;
	DWORD Wea2Del;
	DWORD Wea2Vol;
	DWORD HitSound;
	DWORD HitDelay;
	DWORD DeathSound;
	DWORD DeaDelay;
	DWORD Skill1;
	DWORD Skill2;
	DWORD Skill3;
	DWORD Skill4;
	DWORD Footstep;
	DWORD FootstepLayer;
	DWORD FsCnt;
	DWORD FsOff;
	DWORD FsPrb;
	DWORD Neutral;
	DWORD NeuTime;
	DWORD Init;
	DWORD Taunt;
	DWORD Flee;
	BYTE CvtMo1;
	BYTE CvtTgt1;
	WORD _7E;
	DWORD CvtSk1;
	BYTE CvtMo2;
	BYTE CvtTgt2;
	WORD _86;
	DWORD CvtSk2;
	BYTE CvtMo3;
	BYTE CvtTgt3;
	WORD __8E;
	DWORD CvtSk3;
};//sizeof 0x94
#pragma pack(pop)

Code: Select all

#pragma pack(push, 1)
struct MonUmodTxT
{
	WORD uniquemod;
	WORD _2;
	WORD version;
	BYTE enabled;
	BYTE xfer;
	BYTE champion;
	BYTE fpick;
	WORD exclude1;
	WORD exclude2;
	WORD cpick[3];
	WORD upick[3];
	WORD _1A;
	DWORD constants;
}; //sizeof 0x20
#pragma pack(pop)
fix Mnw version

Code: Select all

struct D2CharTemplateTxt //sizeof 0xF0
{
  char szName[30];					//0x00			
  BYTE nClass;						//0x1E
  BYTE nLevel;						//0x1F
  BYTE nAct;                        //0x20
  BYTE nStr;							//0x21
  BYTE nDex;							//0x22
  BYTE nInt;							//0x23
  BYTE nVit;							//0x24
  BYTE nMana;							//0x25
  BYTE nHitpoints;					//0x26
  BYTE nManaRegenBonus;				//0x27
  BYTE nVelocity;						//0x28
  BYTE nAttackRate;					//0x29
  BYTE nOtherRate;					//0x2A
  BYTE bUnk_2B;						//0x2B
  DWORD nRightSkill;					//0x2C
  DWORD dwSkill[9];					//0x30
  DWORD dwSkillLevel[9];				//0x54
  D2CharItemStrc pItems[15];			//0x78
};

Post Reply

Return to “Code Editing”