// Structure of Diablo character

typedef struct_diablo_equip
{
	long Id1;
	long Id2; 
	long Id3;
// Id3 : 0 => Books, Potions, Elixirs, Scrolls
//	 1 => Daggers, Swords, Falchions, Scimitars
//	 2 => Axes
//	 3 => Bows
//	 4 => Clubs, Flails, Maces
//	 5 => Shields
//	 6 => Cloaks, Capes, Armors
//	 7 => Caps, Skull Caps, Helms, Crowns
//	 8 => Mails
//	 9 => Plates
//	 A => Staves
//	 B => 
//	 C => Rings
//	 D => Amulets
//	 E => 
//	 F => 
	long Unknown0C [11];
	long Flag_Identified;	// 0 => Not Identified/Normal Item, 1 => Identified
	unsigned char Item_Type;// 0 => Normal, 1 => Special (blue), 2 => Unique (Yellow)
	char Description[64];// Normal Name / Not Identified Name
	char Name[64];// Identified Name
	unsigned char Placement;
	//	1 => One Handed Weapon
	//	2 => Two Handed Weapon
	//	3 => Armor
	//	4 => Head Gear
	//	5 => Ring
	//	6 => Amulet
	//	7 => None
	unsigned char Classifies;
	//	1 => Damage (Weapons)
	//	1 => Armor Class (Armors)
	//	1 => None
	unsigned char UnknownBF;
	unsigned char Graphic;// see crymson list
	unsigned char UnknownC1;
	unsigned char UnknownC2;
	unsigned char UnknownC3;
	long UnknownPrice;
	long KnownPrice;
	long MinDamage;
	long MaxDamage;
	long ArmorClass;
	unsigned char UnknownD8;
	unsigned char MagigSpecialAbility;
	unsigned char CombatSpecialAbility;
	unsigned char AdditionalDamage;
	long MagicType;
	long SpellType;
	long StaffChargesNow;
	long StaffChargesMax;
	long DurabilityNow;	//255
	long DurabilityMax;	//255 => Indestructible
	long DamageBonus;	// * 100 => 0xC4 give 1% etc...
	long ToHitBonus;	//%
	long ArmorBonus;
	long StrengthBonus;
	long MagicBonus;
	long DexterityBonus;
	long VitalityBonus;
	long ResistFire;	//% 75% => Max
	long ResistLightning;	//%
	long ResistMagic;	//%
	long ManaBonus;		// * 64 => 0x40 give 1 point etc...
	long LifeBonus;		// * 64
	long DamageBonus2;	// No Blue HighLight
	long Abs_AngelBonus;	// 1 => Spell Level + 1
				// 2 => Spell Level + 2 etc...
				// 0xFFFFFFFF => -1 damage from ennemis
				// 0xFFFFFFFE => -2 damage from ennemis etc...
	long RadianceBonus;	//10% => 1 give 10% radiance
	long Unknown130;
	long UniqueItemNumber;
		//0x00 => for Normal item or Butcher's Cleaver for special item
		// to 0x59
	long Unknown138;
	long MinAddDamage;
	long MaxAddDamage;
	long Unknown144;
	long Unknown148;
	unsigned char ItemPrefix;
	unsigned char ItemSuffix;
	unsigned char Unknown14E;
	unsigned char Unknown14F;
	long Unknown150; 
	long Unknown154; 
	long Unknown158; 
	long Unknown15C; 
	char MinStrengthReq;
	char MinMagicReq;
	char MinDexterityReq;
	char MinVitalityReq;
	long ItemUseAllowed;	// 0 => Use Not Allowed, 1 => Use Allowed
	long Unknown168; 
	long Unknown16C; 
} DIABLO_EQUIPMENT;		// 368 bytes (0x170)

typedef struct _diablo_char
{
  char          iddumpfile[21];
  unsigned char SpellLevels[70];	//0 to 35 only		(offset 0)
  unsigned char SpellFlags[8];		//			(offset 0x46)
  unsigned char Unknown4E[48];		//			(offset 0x4E)
  char          HeroName[32];		//16 bytes + NULL	(offset 0x7E)
  char          CharacterType;		//0: Warrior		(offset 0x7E + 0x20)
					//1: Rogue
					//2: Sorcerer
//***** in reverse byte order ie High/xx/xx/Low ***********************
//***** High order byte is don't care (0x03 if win against Diablo)
  long          Strength[2];		// [0]: Now		(offset 0x7E + 0x21)
					// [1]: Base		(offset 0x7E + 0x25)
  long		Magic[2];		// [0]: Now		(offset 0x7E + 0x29)
					// [1]: Base		(offset 0x7E + 0x2D)
  long		Dexterity[2];		// [0]: Now		(offset 0x7E + 0x31)
					// [1]: Base		(offset 0x7E + 0x35)
  long		Vitality[2];		// [0]: Now		(offset 0x7E + 0x39)
					// [1]: Base		(offset 0x7E + 0x3D)
//*********************************************************************
  long          LevelUp;		//Points to Distribute	(offset 0x7E + 0x44)
  long		BaseDamage;		//			(offset 0x7E + 0x48)
  long          Unknown4C;		//			(offset 0x7E + 0x4C)
  long          BaseLifeNow;		//Hit Points * 64	(offset 0x7E + 0x50)
  long          BaseLifeMax;		//			(offset 0x7E + 0x54)
  long          ModifiedLife[2];	//Hit Points * 64
					// [0]: Now		(offset 0x7E + 0x58)
					// [1]: Max		(offset 0x7E + 0x5C)
  long          Unknown60;		//			(offset 0x7E + 0x60)
  long          BaseManaNow;		//Mana * 64		(offset 0x7E + 0x64)
  long          BaseManaMax;		//			(offset 0x7E + 0x68)
  long          ModifiedMana[2];	//Mana * 64
					// [0]: Now		(offset 0x7E + 0x6C)
					// [1]: Max		(offset 0x7E + 0x70)
  long          Unknown74;		//			(offset 0x7E + 0x74)
  long          CharacterLevel;		//High order byte is don't care (!= 0 if win against Diablo)
					//			(offset 0x7E + 0x78)
  long          Experience;		//			(offset 0x7E + 0x7C)
  long          Unknown80;		//			(offset 0x7E + 0x80)
  long          NextLevelExpPoints;	//			(offset 0x7E + 0x84)
  char          Unknown88;		//			(offset 0x7E + 0x88)
  char          ResistMagic;		//			(offset 0x7E + 0x89)
  char          ResistFire;		//			(offset 0x7E + 0x8A)
  char          ResistLightning;	//			(offset 0x7E + 0x8B)
  long          TotalGold;		//			(offset 0x7E + 0x8C)

  long		Unknown90[107];		//			(offset 0x7E + 0x90)
  EQUIPMENT     Head;			//			(offset 0x7E + 0x23C)
  EQUIPMENT     RightRing;		//			(offset 0x7E + 0x3AC)
  EQUIPMENT     LeftRing;		//			(offset 0x7E + 0x51C)
  EQUIPMENT     Neck;			//			(offset 0x7E + 0x68C)
  EQUIPMENT     RightHand;		//			(offset 0x7E + 0x7FC)
  EQUIPMENT     LeftHand;		//			(offset 0x7E + 0x96C)
  EQUIPMENT     Body;			//			(offset 0x7E + 0xADC)
  EQUIPMENT     Inventory[40];		//			(offset 0x7E + 0xC4C)
  long          InventoryCount;		//			(offset 0x7E + 0x45CC)
  unsigned char Location[40];		//			(offset 0x7E + 0x45D0)
  EQUIPMENT     Belt[8];		//			(offset 0x7E + 0x45F8)
  char          eos[1];			//			(offset 0x7E + 0x5178)
} DIABLO_CHAR;
