D2S File Format - Version 1.10

type name bits desc cond1 condvar1 condval1 cond2 condvar2 condval2 comment
ASC8 dwMajic 4 File ID              +0
DWRD dwVersion 32 File Version              +4
DWRD dwSize 32 File Size              +8
DWRD dwCRC 32 File CRC              +c
DWRD dwWeaponSet 32 Weapon Set              +10
ASCI Name 16 Character Name              +14 
BYTE charType 8 Character Type              +24 // 0x40 = ladder 0x20 = expansion 0x10 =? 0x08 = HasDied 0x04 = Hardcore 0x02 = ? 0x01 = new character format
BYTE charTitle 8 Character Title              +25
WORD unk1 16 Unknown              +26 // 00 00  
BYTE charClass 8 Character Class              +28
WORD unk2 16 Unknown              +29 // 10 1E
BYTE charLevel 8 Level              +2b
DWRD unk3 32 Unknown              +2c
DWRD dwTime 32 Time Stamp              +30
DWRD unk4 32 Unknown             // FF FF FF FF +34
DWRD dwSkillKey[16] 32 Skill Keys             // No Array support in format !!! +38
DWRD dwLeftSkill1 32 Left Skill Weapon Set 1              +78
DWRD dwRightSkill1 32 Right Skill Weapon Set 1              +7c
DWRD dwLeftSkill2 32 Left Skill Weapon Set 2              +80
DWRD dwRightSkill2 32 Right Skill Weapon Set 2              +84
BYTE outfit[16] 8 Character Load graphics             // No Array support in format !!! +88
BYTE colors[16] 8 Character Load Colors             // No Array support in format !!! +98
BYTE Town1 8 Normal Town             // Only town for last played mode is set
BYTE Town2 8 Nightmare Town              
BYTE Town3 8 Hell Town              
DWRD dwMapSeed 32 Map Random Seed              
WORD unk5 16 Unknown             // 00 00
BYTE bMercDead 8 Merc Dead Flag              
BYTE unk6 8 Unknown              
DWRD dwMercControl 32 Merc Control seed              
WORD wMercName 16 Merc Name Index              
WORD wMercType 16 Merc Type              
DWRD dwMercExp 32 Merc Experience              
BYTE unk7[0x90] 8 Unknown             // No Array support in format !!!
                     
FILE d2Woo.txt 0 Questinfo Header             // Act/Quest info header
                     
FILE d2Ws.txt 0 Waypoints             // waypoints
                     
FILE d2W4.txt 0 Greetings             // NPC greeting control
                     
PROP Stats 0 Player Stats             // stats read like properties
                     
FILE d2if.txt 0 Player Skills             // skills
                     
FILE itemlist.txt 0 Player Item List              
                     
WORD iCorpses 16 Number of Corpses              
FILE corpse.txt iCorpses Corpse List             // need to add support for variable 'bits'
                     
ASC8 d2jf 2 Merc List majic             // jf 
FILE itemlist.txt 0 Merc Item List 0 bHasMerc 1        
                     
ASC8 d2kf 2 Iron Golem majic             // kf 
BYTE bHasGolem 8 Iron Golem Flag
FILE fields.txt 0 Golem Item 0 bHasGolem 1        
                     
                     
                     
//========== corpse.txt // dead body info
                     
BYTE bodyInfo[12] 8 Corpse Info              
FILE itemlist.txt 0 Corpse Item List              
                     
                     
//========== itemlist.txt // Item record list
                     
ASC8 dwMajic 2 Item List majic             // JM
WORD nItems 16 Number of Items              
FILE fields.txt nItems Item Records              
                     
                     
                     
                     
  //========== d2Woo.txt // Act/Quest info header
                     
ASC8 dwMajic 4 Record ID             // Woo! 
DWRD dwActs 32 Numer of acts              
WORD wSize 16 Size in bytes              
                     
FILE d2Act.txt 3*wActs Quest/Act states              
                     
//========== d2Acts.txt // Act status flags
                     
WORD wActStart 16 Act Start info              
WORD wQuestStatus[6] 16 Quest Status              
WORD wActEnd 16 Act End flags              
                     
//========== d2Ws.txt // waypoints
                     
ASC8 wMajic 2 Record ID             // ws 
BYTE unk[6] 8 Unknown              
DWRD wp[3*6] 32 Waypoint Data              
                     
  //========== d2W4.txt  // NPC state control
                     
ASC8 wMajic 2 Record ID (0x7701)              
WORD wSize 16 size of struct              
DWRD normal[2] 32 Normal              
DWRD nightmare[2] 32 Nightmare              
DWRD hell[2] 32 Hell              
DWRD normal1[2] 32 Normal1              
DWRD nightmare1[2] 32 Nightmare1              
DWRD hell1[2] 32 Hell1              
                     
                     
  //========== d2if.txt // skills
                     
ASC8 wMajic 2 Record ID             // if 
BYTE skill_lvls[30] 8 Skill Levels