DiabloSight Version 1.07.09 for v1.07, v1.05 and v1.04
Instructions and Information Key, 01/15/99

Produced and Updated by
moe SAINT EverGreen, AlterNative LABs Games Archive
http://come.to/moesteg
http://home1.gte.net/moesteg/diablo.htm
Check often for the latest version.
Email moe ( moesteg@ij.net ), to receive email about latest updates.


DiabloSight's Purpose and Abilities :

1) View player attributes and equipped items
   Check for cheating players with hacks and dupes.
   DiabloSight shows the Unique Item Number of all equipped items.
   DiabloSight assumes multiplayer mode when detecting hacks.


Installing DiabloSight :

1) Extract DiabloSight.exe into any directory.
   I make a subfolder in my Diablo folder for this.

2) Run it at any time.

3) Load a Diablo Game to use DiabloSight.


Operating DiabloSight : 

1) View any characters in the current game :
   Alt-Tab to DiabloSight, 
   Hit Refresh to update the game data, 
   Choose View, and the character name.
   Alt-Tab to Return to Diablo.
   If you View your own character, all of your items will display.
   
2) Log your character or other characters to text files.
   Log will place your character in a printable file, "CharacterName.txt".
   It will list the items of other characters in a file, "DiabloSight.log".
  

How DiabloSight Works :

DiabloSight for v1.07 reads Diablo's memory to read the character.

DiabloSight for v1.04 actually places a hack into Diablo code,
very similar to what Raymond's trainer does,
in order to temporarily freeze the Diablo Memory.


DiabloSight.ini
   DiabloSight will read a text file called DiabloSight.ini
   for various command options, one command per line :
      single : never show anybody else's characters 
               (default show all)
      allitems : show all of other people's items 
               (default show only other's hacked items)
      text : log other people's characters to charname.txt files 
             (default, only log your own character to .txt file)
      info : always show the special item info used to determine hacks.
             (default, only show this info on hacked items)

DiabloDupes.ini
   This file lists all item id's you want to check as common dupes.
   Remember that even common dupes can come from legit sources.
   No need to list obvious hacked uniques in this file.
   The format is xx:xxXXxxXXxx:xx for Weapons/Armor,
             and xx:xxXXxxXXxx:Ux for all others.
    representing 05:0403020100:(168 / U8),
    and directly matches the DiabloSight.log and CharName.txt id values.

DiabloSight's Key for Showing Character Attributes :

~ = Hacked Character Attribute, too high or in invalid range.
? = Seeming Hack or Dupe in an area of memory that may not be reliable.
+999 = Hacked Attribute with numeric value too large to display on screen.
*** Ears! = count of ears in inventory (other than their own ears).

Slot = Game Slot Number from 0 to 3.
Gold () = count of gold in inventory (as opposed to game's hackable count).
Base = Base Attribute before any modifications (except elixers/shrines).
Now = Life/Mana Attributes with losses from attack, spell use.
Modified = Base and Now Life/Mana Attributes modified by Equipped Items.
Mods = Difference between Base Life/Mana and Expected Values
   (Mods should only show a negative value for mana due to shrines,
   a negative value for life due to shrines and black death,
   and sometimes a positive value for life due to the imposing shrine).
Mods () = Expected Values for Base Life/Mana used to determine Mods.
Mods Total, adding the life and mana mods together displayed under Mods.
   Since the Imposing shrine subtracts mana to add to life,
   a positive value usually indicates hacked or corrupted character data.
Spell Key : Spells Show with Base Spell Level and Spell Name.
   ~~ = Spells Left Out of Game (they have no game effect).
   [] = Character Skills Not Available as Spells
   {} = Scrolls/Staffs Not Available as Spells
Town/S/E/N/W = Absolute Character Position in Game
Relative = Relative Character Position to Your Character


DiabloSight's Key for Showing Item Attributes :

The Unique Item ID Number : 

   Where DiabloSight shows the items,
   it also shows the internal Unique ID#
   used by Diablo to determine Item attributes
   and used to detect duplicates in the game.
   
   You will never see this ID # in Diablo
   (From a character's point of view, such a thing wouldn't exist.)
   but it does affect game play (per the duplicate item destruction),
   and per the commonality of exploiting duplicated items.

   This ID is also checked against a list of commonly duplicated items,
   in a file named, DiabloDupes.ini

   (These Numbers represent Hexadecimal Values).

   On Weapons and Armor, 
   05 : 04 03 02 01 00 : 168
   
   On All other Items
   05 : 04 03 02 01 00 :U 8
   
   Where the number represents the relative memory location
   of the item data, as Diablo stores it in the character memory.
   
   My hex reference at the end of this file gives more information.
   
   '~' indicates any detected hacked items,
     (Incorrect Indestructability, Too many Charges, or Invalid Uniques)
   
   When (05 04 03 02 01 00 168/8) all match exactly to another item:
     
   '?', indicates any duplicates to pack data (unreliable data)
   '#', indicates any duplicates to equip data (more reliable)
     
   '>', indicates any commonly duplicated items (per DiabloDupes.ini)
   '+', '*', for dupes to pack/equip data AND a common duplicate

   Diablo detects duplicates if any character in the same game
   has two (or more) of exactly the same item (dupe)
   on their person as any character in the same game,
   Those dupes with '?', '#', '+', or '*'.

   Bugs in diablo may incorrectly store dupes in memory
   when people replace their equipment,
   and when people change levels and enter game,
   or due to lag and UDP packet loss.
   

The Item Attributes:

2H = 2 Handed Sword

For Weapons,
m<x_d(n) shows hits, m to x, durability, d, 
         and normal maximum durability of item type (n).
m<x_I represents an Indestructable Item.
m<x_I(n) represents an Item with Hacked Indestructability.

For Armor,
a_d(n) shows armor class, a, durability, d, 
       and normal durability of item type (n).

For Staffs (Staves),
 Cm(X) = Magic Charges, m, and maximum charges (X) based on Spell.
         If m > X or m = 255, then the Staff has Hacked Charges

+/- %th = +/- % to hit (+25% to hit)
+/-  %h = +/- % hits (damage) (+25% damage)
+/-   h = +/- hits (damage) (+6 damage)
+/- %ac = +/- % armor class (+10% AC)

    +ac = Non-Armor that Adds to Armor (Engagement Ring)
  +#<#h = Additional Range of Hits (damage) (thorns)
+200%hD = + 200% Hits (Damage) to Demons  
  #<#Lh = Additional Lightning Hits (damage)
  #<#Fh = Additional Fire Hits (damage)
    +Fh = Burning Item
 -/+ eh = -/+ enemy hits (-6eh = absorbs 6 hits)

   -L = Constricting
+/- L = +/- Life (+20 hit point)
+/- a = +/- all attributes (+10 all)
+/- s = +/- strength
+/- m = +/- magic
+/- d = +/- dexterity
+/- v = +/- vitality

   0bm = 0 Base Mana (No Mana while equiped)
+/- bm = +/- Base Mana   

+/- %ra = +/- % resist all
+/- %rm = +/- % resist magic
+/- %rf = +/- % resist fire
+/- %rl = +/- % resist lightning

+/- sp = +/- spell level (archangel shows +2sp)
   
  +sh = Random Steal Hits (Steal Life Like Undead Crown)
+3%sh = Steal 3% Hits (Life)
+5%sh = Steal 5% Hits (Life)
  KT  = Knocks Target back
  QA  = Quick Attack
  FA  = Fast Attack
  FA2 = Faster Attack
  FA3 = Fastest Attack (Haste)
  FR3 = Fastest Recover (Harmony)
  FB  = Fast Block
  AT  = Absorb Traps (half damage)
+3%sm = Steal 3% Mana
+5%sm = Steal 5% Mana

+/- %Lr = +/- % Light Radiation

 R#m#d#s = Requirements, magic, dexterity, strength
 
 (#g) = Gold Pieces
 
No codes exist for Puncturing/Piercing.


Hacked Item Attributes:

   Hacked Items will have a list of values in parens (),
   to help show hidden hacked item attributes.

   c = hacked magical spell charges
   d = hacked durability
   sp = single player unique
   ? = unable to identify unique
   L = Level of Hacked Item
   u = usage type of hacked item
       Items with high level codes, default to showing their usage.
       0 Consumables, Elixer/Book/Scroll/Potion
       1 Sword   
       2 Axe     
       3 Bow     
       4 Blunt Weapons, Club/Mace/Flail/Hammer
       5 Shield  
       6 Armor, Leather
       7 Helm    
       8 Armor, Mail
       9 Armor, Plate
      10 Staff   
      11 Gold    
      12 Ring    
      13 Amulet  
   g = hacked due to impossible item cost in gold
   e = equip type
   k = class type
   m = magic type (1 = staff)
   
   
DiabloSight Log Key (for DiabloSight.log) :
 i = indestructable
 * = indestructable hack
 ~ = hack
 (Also see above for the the Hacked Item Attributes)


Checking for Dupes and Hacks with DiabloSight :

In Diablo, only a few unique rings, amulets or helmets exist.
Most hacked Uniques have an ID similar to the ones below:
03 : xx 00 00 00 xx : xx  or  02 : xx 00 00 00 xx : xx 

When using DiabloSight to check other characters
in games labeled Legit, you will see many people enter
that have Gnarled Root Helmets or Lightforge rings,
or they will have exactly the same obsidian zodiac ring on both hands.

In testing,
I have dared people with the same ID # on two obsidian zodiac rings
(who also claimed they found them legit)
to drop their rings on the ground and pick them back up.
Twice people have actually fallen for this
to prove their legitimacy,
only to see one of their rings destroyed,
"duplicate item detected."
(Some people will drop different rings to trick you.)

Note that Diablo can actually produce Duplicate Items
even in the same game (most often I have seen duplicated potions),
Hence the Question Marks, ?? .. we don't really know..
However, more than 2 trillion possible items exist,
and that means a trillion unique high level items.
I do not recommend equiping two rings that Diablo
created as duplicates, because they will destroy
each other when a monster kills you, anyway.


Checking for Cheated Attributes with DiabloSight :

DiabloSight has several values that help you check for cheats:
Shrines and Mods are two, the others show with '~' or '+'.

Shrines tells you the number of shrines a character would
have had to visit to get their raise their stats.
(2 Elixers = 1 Shrine value). 
If a level 20 character shows 150 shrines,
they most likely cheated to raise their attributes.
After Shrines a number in parentheses ()
shows the total elixers needed to raise their stats.
Note : At level 26 and above characters can buy elixers,
and many players will max their attributes quickly.

Mods shows the difference of the expected
Life and Mana Total from the actual Base Total.
A small negative number may indicate loss of base life
due to Black Death Zombie. A higher negative number may 
indicate loss of mana due to a shrine. But a very high positive 
number will usually indicate a cheater who has raised their
life or mana attributes. Note that the Imposing shrine moves
a percentage of mana to life, giving a positive life value
that should correspond to a negative mana value.


More Information about the Unique Item Number :

As Extracted from ItemHex.txt.
Note that I subtracted the 20h ITM header length from these values.

Bytes 00 - 04 : Unique Item Number (Cazasombras: 'Item Generator Seed') 
XX XX XX XX XX
Diablo Uses this Number to Send to a Pseudo Random Item Generator.
The Same Code usually generates the same item and same stats,
But some exceptions exist, depending on locations 05 and 168.
If a non-unique item does not match codes with its originator,
and then it will get re-generated when it re-enters the game world.
Somebody could use this with a Non-Legit-Checking program 
to search in other player's inventories for hacks, duplicates,
and commonly duplicated items, such as the King's Sword of Haste.

Byte 04 : (CazaSombras: 'Control Code, 2nd Byte')
This byte appears to affect the Grade of Items Generated.
01 - 1E Level 1 to Level 30 Item Drops/Offers
1F - 32 Level 31 to 50 Offers from Wirt
     3F Unattainable godly items
Items dropped by Unique Monsters also have the upper two bits set,
C1 - DE Level 1 to Level 30 Items dropped by Unique monsters

Byte 05 : Item Origin Code (CazaSombras: 'Control Code, 1st Byte')
00 Monster Treasure Items (Amulet, Ring, Gold).
     Note : Item Type Generated by 20-24 depends on Byte 168.
01 Chest Treasure Items (Amulet, Ring, Armor, Weapons).
     Note : Item Type Generated by 20-24 may depend on Byte 168.
02 Unique Dropped by Unique (Grandfather, Royal Circlet)
03 Unique Dropped by NonUnique or Quest (Optic Amulet, most Hacked Uniques)
04 Smith Shop Normal Items (Non Magical Sabre)
08 Smith Shop Item (Any Weapon/Armor, Not Amulets nor Rings)
10 Wirt Shop Item (Powerful Flail, Godly Shields)
20 Witch Shop Magic Item (Book, Staff, Scroll, Mana)
40 Healer Shop Magic Item (Rejuvenation, Elixer)

Byte 08: Encoded Item Type
00 Elixer (Book, Scroll, Potion), 01 Sword, 02 Axe, 03 Bow (Arrows)
04 Mace (Flail, Hammer), 05 Shield, 07 Helm, 0A Staff
06 Leather Armor, 08 Mail Armor, 09 Plate Armor
0B Gold, 0C Ring, 0D Amulet

Byte 168 : Equipment Name Type
Some Normal Equipment
30  Cap                   48  Small Shield          84  Morning Star
31  Skull Cap             49  Large Shield          85  War Hammer
32  Helm                  4A  Kite Shield           86  Spiked Club
33  Full Helm             4B  Tower Shield          87  Club
34  Crown                 4C  Gothic Shield         88  Flail
35  Great Helm            71  Dagger                89  Maul
36  Cape                  72  Short Sword           8A  Short Bow
37  Rags                  73  Falchion              8B  Hunter's Bow
38  Cloak                 74  Scimitar              8C  Long Bow
39  Robe                  75  Claymore              8D  Composite Bow
3A  Quilted Armor         76  Blade                 8E  Short Battle Bow
3B  Leather Armor         77  Sabre                 8F  Long Battle Bow
3C  Hard Leather Armor    78  Long Sword            90  Short War Bow
3D  Studded Leather Armor 79  Broad Sword           91  Long War Bow
3E  Ring Mail             7A  Bastard Sword         92  Short Staff
3F  Chain Mail            7B  Two-Handed Sword      93  Long Staff
40  Scale Mail            7C  Great Sword           94  Composite Staff
41  Breast Plate          7D  Small Axe             95  Quarter Staff
42  Splint Mail           7E  Axe                   96  War Staff
43  Plate Mail            7F  Large Axe             97  Ring
44  Field Plate           80  Broad Axe             98  Ring
45  Gothic Plate          81  Battle Axe            99  Ring
46  Full Plate Mail       82  Great Axe             9A  Amulet
47  Buckler               83  Mace                  9B  Amulet

Some Unique Items
06  Cleaver               0B  Ring of Truth         1F  Griswold's Edge
07  The Undead Crown      0D  Harlequin Crest       20  Lightforge
08  Empyrean Band         0E  Veil of Steel
0A  Optic Amulet          1C  Arkaine's Valor

Some Novelty Items
09  Magic Rock            11  Black Mushroom        15  Blood Stone
0C  Tavern Sign           12  Brain                 16  Map of the Stars
0F  Golden Elixir         13  Fungal Tome           17  Heart / Ear
10  Anvil of Fury         14  Spectral Elixir       21  Staff of Lazarus

