Beginning Offset in Diablo is 7AAF8 (79AA8). In Hellfire, it's 8A820.
Each prefix/suffix is 48 bytes in length, which is 3 lines in the
hex editor. Place your cursor on the starting point of a prefix/suffix
and drag it along until you see this at the very bottom... "Sel
0x30". Everything you have highlighted is the data for one
prefix/suffix.
**Note** The first byte in each string will be referenced as Byte
0, not Byte 1.
| Bytes | Effect |
| 0-3 | Name Pointer The pointers are written in reverse byte order, which means they are read from right to left. For example, Tin's pointer is '400649' (Diablo). In reverse order, this is '490640'. To find out where the pointer points to, you must subtract a hex value to get the offset to go to. In Diablo, this is '402200'. In Hellfire, it's '401600'. Subtracting '402200' from '490640' will give you '8E440'. That's the location of the name 'Tin'. Simple, eh? =) |
| 4-7 | Effects 00 : +% ToHit 01 : -% ToHit 02 : +% damage done 03 : -% damage done 04 : +% ToHit, +% damage done 05 : -% ToHit, -% damage done 06 : +% armor class 07 : -% armor class 08 : +% resist fire 09 : +% resist lightning 0A : +% resist magic 0B : +% resist all 0E : +/- spell levels 0F : + charges 10 : + fire damage 11 : + lightning damage 13 : + strength 14 : - strength 15 : + magic 16 : - magic 17 : + dexterity 18 : - dexterity 19 : + vitality 1A : - vitality 1B : + all attributes 1C : + all attributes 1D : + damage taken 1E : - damage taken 1F : + life 20 : - life 21 : + mana 22 : - mana 23 +% durability (high durability) 24 -% durability (decreased durability) 25 indestructable 26 +% light 27 -% light 28 unknown or n/a 29 multiple arrows 2A + fire arrows damage 2B + lightning arrows damage 2C unique picture 2D attacker take 1-3 damage 2E -all mana 2F player can't heal 30 unknown or n/a 31 unknown or n/a 32 unknown or n/a 33 unknown or n/a 34 absorb half trap damage 35 knocks target back 36 monster can't heal 37 % steal mana 38 % steal life 39 damage/penetrate armor 3A attack speed (1=readiness, 4=haste) 3B hit recovery (1=balance, 3=harmony 3C fast block 3D + damage done 3E random speed arrows 3F x-y damage done (unusual item damage) 40 altered durability 41 no strength requirements 42 spell- 43 attack speed (1=readiness, 4=haste) 44 one handed 45 +200% damage versus demons 46 all resistances equal 0% 47 unknown or n/a 48 constantly lose life 49 0-12.5% steal life 4A infravision 4B specified armor class 4C armor class added to life 4D 10% of mana added to armor class 4E +30-clvl% resist fire 4F - armor class Hellfire Only Effects 50 -% resist fire 51 -% resist lightning 52 -% resist magic 53 -random% resist all 54 5% chance of doing *3 damage 55 +% damage done (decreases 5% each hit) 56 *2 damage to monster *1 damage to user 57 *0-6 damage, average is *2 58 +% damage, -% durability 59 +% ToHit, +% damage done, 5% duplicate 5A +40 armor class versus demons 5B +20 armor class versus undead 5C move mana to life 5D move life to mana |
| 8-11 | Minimum effect value |
| 12-15 | Maximum effect value |
| 16-19 | Quality level |
| 20-22 | Occurance
probability (bit encoded) Byte 20= Bows and jewelry Byte 21= Weapons and staves Byte 22= Armor and shields For the prefix/suffix to appear on a specific item type, a value of "1" must be given at the specific location. For instance, you want a prefix/suffix to appear on weapons only. You would give byte 21 a value of "10", which gives the prefix/suffix to weapons, but not staves. A value of "11" at byte 21 will give the prefix/suffix to both weapons and staves. Same goes for the other 2 bytes. A full row of ones (111111) will make that prefix/suffix available to all item types. |
| 23 | Always zero |
| 24-31 | I explain this stuff later :) |
| 32-35 | Cursed Flag A value of "00000000" signifies the prefix/suffix as cursed. "01000000" signifies it as not. If the item is cursed, it will not be sold at the shops (my best guess) |
| 36-39 | Minimum gold value |
| 40-43 | Maximum gold value |
| 44-47 | Multiplier Deals with how the game calculates the prefix/suffix's item value. |