01-31-2018, 03:25 PM
(This post was last modified: 01-31-2018, 03:26 PM by TheKillerVortex.)
Hello.
I suppose I'll start focusing a bit more on how item generation works in Diablo.
Namely: How items are assembled. The structure (object?) size, the modifiers, flags, etc.
This is just the output of the first one I've looked at (minus earlier in this thread).
This is a much better layout, making it far easier to read and work with.
... Although I feel as if I missed some tid-bits regarding the "isMagic" or "isWhite" or "isUnique" flag.
TODO: Rewrite with localized offset per byte segment (easier modifying / comparing with future items).
I suppose I'll start focusing a bit more on how item generation works in Diablo.
Namely: How items are assembled. The structure (object?) size, the modifiers, flags, etc.
Code:
ITEM TYPE EXAMINED: Helm, Magic
08 bytes: ITEM MARKER: Randomized ID
04 bytes: ITEM FLAG: Type // FF FF FF FF = No item
04 bytes: ITEM MARKER: Picked up at X
04 bytes: ITEM MARKER: Picked up at Y
04 bytes: ???? (00 00 00 00)
04 bytes: ???? (rewrites self) dungeon ID it spawned on?
04 bytes: ???? (rewrites self) 0D 00 00 00
04 bytes: ???? (rewrites self) 0D 00 00 00
04 bytes: ???? (rewrites self) 60 00 00 00
04 bytes: ???? (rewrites self) 10 00 00 00
04 bytes: ???? 00 00 00 00
04 bytes: ???? (rewrites self) 01 00 00 00
04 bytes: ???? 00 00 00 00
04 bytes: ITEM FLAG: Identification 01 00 00 00
64 bytes: ITEM STRING: Item name (unidentified)
64 bytes: ITEM STRING: Item name (identified)
04 bytes: ITEM FLAG / MODIFIER: Item slot / Modifier 00 04 02 00
04 bytes: ITEM FLAG: Graphics index (5F 00 00 00)
04 bytes: ???? (does not rewrite self) 19 00 00 00
04 bytes: ITEM MODIFIER: Selling price FF FF FF FF
04 bytes: ???? 00 00 00 00
04 bytes: ???? 00 00 00 00
04 bytes: ???? 00 00 00 00
04 bytes: ITEM ATTRIBUTE: Armor FF 00 00 00
20 bytes: ???? 00 00 00 00
04 bytes: ITEM ATTRIBUTE: Durability FF 00 00 00
04 bytes: ITEM ATTRIBUTE: Max durability FF 00 00 00 // NOTE: If both the durability and maximum durability of an item are listed as "0xFF": The item is "Indestructible"
12 bytes: ???? 00 00 00 00
04 bytes: ITEM ATTRIBUTE MODIFIER: +Strength FF 00 00 00
44 bytes: ???? 00 00 00 00
04 bytes: ???? (rewrites self) 00 01 00 00
24 bytes: ???? 00 00 00 00
04 bytes: ITEM ATTRIBUTE MODIFIER: FF 13 00 00
04 bytes: ???? (does not rewrite self) FF FF 00 00
04 bytes: ???? (does not rewrite self) 03 00 00 00
12 bytes: ???? 00 00 00 00
04 bytes: ITEM FLAG: Unusable item 01 00 00 00
04 bytes: ???? (does not rewrite self) FF 00 00 00
04 bytes: ???? 00 00 00 00
This is just the output of the first one I've looked at (minus earlier in this thread).
This is a much better layout, making it far easier to read and work with.
... Although I feel as if I missed some tid-bits regarding the "isMagic" or "isWhite" or "isUnique" flag.
TODO: Rewrite with localized offset per byte segment (easier modifying / comparing with future items).