diablo 2 1.05 test case https://wellwishingorange.neocities.org/105b/save-edit quick start acts - 25 - increased once by finishing an act - 12 location - 88 - 00000011 is act and 00110000 difficulty - 35 quests - 140-236, 236-332 and 332-428 - 2 bytes per activation (1, 0) or quest (1, 16) with gaps - 1, 0, 1, 144, 29, 144, 77, 144, 13, 144, 85, 16, 29, 16, 1, 0, 1, 0, 29, 144, 121, 28, 13, 144, 129, 145, 5, 144, 229, 31, 1, 0, 1, 0, 5, 16, 253, 16, 249, 19, 1, 144, 13, 16, 133, 19, 1, 0, 1, 0, 1, 144, 1, 16, 1, 144, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 waypoints - 438-442, 462-466 and 486-490 - 1 bit per waypoint - 255, 255, 255, 63 introductions - 512-516, 520-524 and 528-532 - 1 bit per npc with gaps - 174, 190, 165, 25 stats - ~565 - 4 bytes per integral stat and 2 bytes per derivative stat with gaps skills - ~631 - 1 byte per skill (20) items - ~665 - 13, 24 or 29 bytes per item corpse - ~669 - 12 bytes items - ~685 - 13, 24 or 29 bytes per item (all marked as inventory) mercenary - ~687 - 6 bytes general summary data is aligned or not, booleans are either bit flags or bit masks, integers are unsigned 16 or 32 bit little endian byte order and strings are fixed length filled with 0 or 32 absolute offsets signature - 0-4 (4 bytes) - 85, 170, 85, 170 version - 4-8 (4 bytes) - 71, 0, 0, 0 name - 8-24 (15 bytes) - 2 to 15 bytes (/^(?:[A-Za-z]+|[A-Za-z]+[-_][A-Za-z]+)$/) hardcore - 24-25 (1 byte) - hardcore and died before flags - (00000100 - hardcore, 00001000 - died before) acts - 25-26 (1 bytes) - number of completed acts unknown - 26-34 (8 bytes) - 0, 0, 221, 0, 16, 0, 130, 0 class - 34-36 (2 bytes) - amazon, sorceress, necromancer, paladin, barbarian menu level - 36-38 (2 bytes) - level shown in the menu menu look - 38-70 (32 bytes) - look shown in the menu, filled with 255 for default (hd, tr, lg, ra, la, rh, lh, sh, s1, s2, s3, s4, s5, s6, s7, s8) shortcuts - 70-86 (16 bytes) - ingame shortcuts, filled with 255 for default (skill id) left skill - 86-87 (1 byte) - primary skill (skill id) right skill - 87-88 (1 byte) - secondary skill (skill id) location - 88-89 (1 bytes) - spawn location (00000011 - act, 00110000 - difficulty) unknown - 89-126 (37 bytes) seed - 126-130 (4 bytes) quests - 130-428 (298 bytes) waypoints - 428-508 (80 bytes) introductions - 508-536 (28 bytes) unknown - 536-560 (24 bytes) stats - ~560-629 (5-69 bytes) skills - ~629-661 (32 bytes) items - ~661-665 (4+ bytes) - character items corpse - ~665-681 (4-16 bytes) items - ~681-685 (0-4+ bytes) - corpse items (only if there is corpse) mercenary - ~685-693 (8+ bytes) quests summary act 1, 2 and 3 end with two bytes that are always 1, 0, marking traveling east with warriv, sailing east with meshif and going through the infernal gate each act start with two bytes that are always 1, 0 too, marking introductions by warriv, jerhyn, hratli or tyrael each quest is made of two bytes as well that are bitmasks with left to right byte order and right to left bit order that can be set to 125, 28 for completion or 127, 28 for award before completion order of quests of act 1 is 1, 2, 5, 3, 4, 6, act 2 is 1, 2, 3, 4, 5, 6, act 3 is 4, 3, 2, 1, 5, 6 and act 4 is 1, 3, 2 the game does not save all states to bits, clear other later on or after reloading, if you skip a trigger you can miss bits too and there is bugs quest first byte 00000001 - finished 00000010 - reward awaiting (for example - cleared den of evil or killed blood raven) 00000100 - received (for example - received new quest from talking to akara or reading moldy tome) 00001000 - continued (for example - left rogue encampment or picked scroll of inifuss) 00010000 - continued (for example - entered den of evil or last level of catacombs) 00100000 - continued (for example - shown shaft of horadric staff to cain or entered arcane sanctuary) 01000000 - continued (for example - picked horadric malus or entered forgotten tower) 10000000 - continued (for example - blocked from the palace by kaelan, obtained khalim will or received iron wolf mercenary from asheara) quest second byte 00000001 - continued (for example - welcomed to the palace by kaelan or received magic ring from ormus) 00000010 - continued (for example - picked gidbinn) 00000100 - continued (for example - shown horadric staff to cain) 00001000 - continued (for example - obtained horadric staff) 00010000 - vanished (vanish the quest only if 00000001 of previous byte is set) 00100000 - finished last game (for single player? - reloading clears it and if 00000001 or 00000010 of previous byte is set than sets 10000000, for example - cleared den of evil) 01000000 - finished current game (for multi player? - reloading clears it and if 00000001 or 00000010 of previous byte is set than sets 10000000, for example - ?) 10000000 - to be vanished (set only if 00000010 of previous byte is used, if 00000001 of previous byte is not set quest logs you cannot complete this quest in this game for single and multi player) absolute offsets mark - 130-140 (10 bytes) - 87, 111, 111, 33, 6, 0, 0, 0, 42, 1 normal - 140-236 (96 bytes) act 1 - 140-156 (16 bytes) act 2 - 156-172 (16 bytes) act 3 - 172-188 (16 bytes) + 204 (1 byte) act 4 - 188-196 (8 bytes) nightmare - 236-332 (96 bytes) act 1 - 236-252 (16 bytes) act 2 - 252-268 (16 bytes) act 3 - 268-284 (16 bytes) + 300 (1 byte) act 4 - 284-292 (8 bytes) hell - 332-428 (96 bytes) act 1 - 332-348 (16 bytes) act 2 - 348-364 (16 bytes) act 3 - 364-380 (16 bytes) + 396 (1 byte) act 4 - 380-388 (8 bytes) relative offsets act 1 - 0-16 (16 bytes) introduction (warriv in rogue encampment) - 0-2 (2 bytes) - 1, 0 0 00000001 - introduced to rogue encampment by warriv quest 1 (den of evil) - 2-4 (2 bytes) - 1, 144 (finished), 30, 128 (skill point) or 3, 144 (finished and skill point) 2 00000100 - received new quest from talking to akara - "Look for the Den in the wilderness outside the Rogues' Camp." 2 00001000 - left rogue encampment - shows previous quest text (requires 2 00000100) 2 00010000 - entered den of evil - "Kill all the monsters in the Den." 2 00000010 - cleared den of evil - "Return to Akara for a reward." 2 00000001 - received skill point from akara and opening quest log will cause vanishing (requires 2 00000010 and unsets 2 11111110) 3 00100000 - cleared den of evil last game 3 01000000 - den of evil was already cleared? 3 10000000 - reloaded after clearing den of evil (unsets 3 01100000) 3 00010000 - quest vanished (requires 2 00000001) quest 2 (sisters' burial grounds) - 4-6 (2 bytes) - 29, 144 (finished), 30, 128 (rogue hireling) or 31, 144 (finished and rogue hireling) 4 00000100 - received new quest from talking to kashya after clearing den of evil - "Look for Blood Raven in the Burial Grounds next to the Cold Plains." (requires 2 00000010 or 2 00000001) 4 00001000 - left rogue encampment - shows previous quest text (requires 4 00000100) 4 00010000 - entered burial grounds - "Kill Blood Raven." 4 00000010 - killed blood raven - "Return to Kashya for a reward." 4 00000001 - received rogue hireling from kashya and opening quest log will cause vanishing (requires and unsets 4 00000010) 5 00100000 - killed blood raven last game 5 01000000 - blood raven was already killed? 5 10000000 - reloaded after killing blood raven (unsets 5 01100000) 5 00010000 - quest vanished (requires 4 00000001) quest 5 (tools of the trade) - 6-8 (2 bytes) - 77, 144 (finished), 78, 128 (imbue offer) or 79, 144 (finished and imbue offer) 6 00000100 - received new quest from talking to charsi after clearing den of evil, killing blood raven and saving cain from tristram - "Look for the Horadric Malus in the Monastery Barracks. Beware of the Smith that guards it." (requires 2 00000001 or 2 00000010, 4 00000010 or 4 00000001 and 8 00000010 or 8 00000001) 6 00001000 - left rogue encampment - shows previous quest text (requires 6 00000100) 6 01000000 - picked horadric malus - "Return the Horadric Malus to Charsi." 6 00000010 - returned horadric malus to charsi and received imbue offer from charsi - "Charsi will imbue an item with magical power." 6 00000001 - received imbued item from charsi and opening quest log will cause vanishing (requires and unsets 6 00000010) 7 00100000 - returned horadric malus to charsi last game 7 01000000 - horadric malus was already returned to charsi? 7 10000000 - reloaded after returning horadric malus to charsi (unsets 7 01100000) 7 00010000 - quest vanished (requires 6 00000001) quest 3 (the search for cain) - 8-10 (2 bytes) - 13, 144 (finished), 14, 128 (magic ring) or 15, 144 (finished and magic ring) 8 00000100 - received new quest from akara after clearing den of evil and killing blood raven - "Go through the Underground Passage to the Dark Wood, search for the Tree of Inifuss, and recover the Scroll." (requires 2 00000001 or 2 00000010 and 4 00000010 or 4 00000001) 8 00001000 - picked scroll of inifuss from tree of inifuss or received key to the cairn stones from akara - "Take the Scroll of Inifuss to Akara." or "Go to the Cairn Stones in the Stony Field. Touch the Stones in the order found on the Scroll of Inifuss. Enter the portal to Tristram, but beware the danger that lies ahead." 8 00010000 - opened the red portal to tristram - "Find and rescue Deckard Cain." (not saved) 8 00000010 - saved cain from tristram - "Talk to Akara for a reward." 8 00000001 - received magic ring from akara and opening quest log will cause vanishing (requires and unsets 8 00000010) 9 00100000 - saved cain from tristram last game 9 01000000 - cain was already saved from tristram after going to next acts and identifying cost gold (unsets 9 01000000 when you return to act 1) 9 10000000 - reloaded after saving cain from tristram (unsets 9 01100000) 9 00010000 - quest vanished (requires 8 00000001) 9 00000100 - killed cow king (does it require 8 00000010 or 8 00000001 or you can use 8 00010000 and cheat the system?) quest 4 (the forgotten tower) - 10-12 (2 bytes) - 85, 16 (finished) 10 00000100 - received new quest from reading moldy tome - "Look for the Tower in the Black Marsh beyond the Dark Wood." 10 01000000 - entered forgotten tower - "Explore the cellar dungeons beneath the Tower ruins." (requires 10 00000100 to be saved, otherwise sets 10 00000100) 10 00010000 - entered last level of tower cellar - "Dispose of the evil Countess." (requires 10 01000000 to be saved, otherwise unsets 10 01000000) 10 00000001 - killed countess and opening quest log will cause vanishing 11 00100000 - killed countess last game 11 01000000 - countess was already killed? 11 00000000 - reloaded after killing countess (no sets and unsets 11 01100000) 11 00010000 - quest vanished (requires 10 00000001) quest 6 (sisters to the slaughter) - 12-14 (2 bytes) - 29, 16 (finished with quest bug) or 29, 144 (finished) 12 00000100 - received new quest from talking to cain after clearing den of evil, killing blood raven, saving cain from tristram, returning horadric malus to charsi and some time next to him as a trigger - "Find Andariel's Lair in the depths of the Monastery Catacombs." (requires 2 00000001 or 2 00000010, 4 00000010 or 4 00000001, 6 00000010 or 6 00000001 and 8 00000010 or 8 00000001) 12 00001000 - entered catacombs - shows previous quest text 12 00010000 - entered last level of catacombs - "Kill Andariel." 12 00000010 - killed andariel - "Return to Warriv to take the Caravan East." (increases acts by 1 - absolute byte offset 25 for 1.05) 12 00000001 - received travel east offer from warriv and opening quest log will cause vanishing (requires and unsets 12 00000010) 13 00100000 - killed andariel last game 13 01000000 - andariel was already killed? 13 10000000 - reloaded after killing andariel (unsets 13 01100000) 13 00000000 - reloaded after killing andariel and traveled east (quest bug - quest drops every andariel kill, no sets and unsets 01100000) 13 00010000 - quest vanished (requires 12 00000001) activation (warriv's travel east) - 14-16 (2 bytes) - 1, 0 14 00000001 - traveled east (sets 9 01000000, changes act location - 00000011 of absolute byte offset 88 for 1.05 and activates lut gholein waypoint - 00000010 of absolute byte offset 439, 463 or 487 for normal, nightmare or hell) 15 00100000 - traveled east last game 15 01000000 - ? 15 00000000 - reloaded after traveling east (no sets and unsets 01100000) act 2 - 16-32 (16 bytes) introduction (jerhyn in lut gholein) - 16-18 (2 bytes) - 1, 0 16 00000001 - introduced to lut gholein by jerhyn quest 1 (radament's lair) - 18-20 (2 bytes) - 29, 144 (finished) or 61, 16 (finished with vanish bug) 18 00000100 - received new quest from talking to atma - "Find Radament's Lair in the Lut Gholein sewers." 18 00001000 - left lut gholein - shows previous quest text (requires 18 00000100) 18 00010000 - reached radament - "Kill Radament." 18 00000010 - killed radament - "Return to Atma for a reward." (no reward and vanishing bug as if you did not picked and returned horadric scroll to cain) 18 00100000 - reloaded after killing radament, but did not used book of skill (vanish bug - book of skill drop from radament, reloading and opening quest log will unset 18 00100001, using book of skill will unset 18 00100000 and requires and unsets 18 00000010) 18 00000001 - talked to atma and opening quest log will cause vanishing (requires and unsets 18 00000010) 19 00100000 - killed radament last game 19 01000000 - radament was already killed? 19 00000000 - reloaded after killing radament, but did not picked book of skill (vanish bug - book of skill drop from radament, reloading and opening quest log will unset 19 11100000, no sets and unsets 19 01100000) 19 10000000 - reloaded after killing radament (unsets 19 01100000) 19 00010000 - quest vanished (requires 18 00000001) quest 2 (the horadric staff) - 20-22 (2 bytes) - 121, 28 (finished) 20 00000100 - received new quest from picking horadric scroll - "Show the scroll to Cain in Lut Gholein." (not saved) 20 00001000 - returned horadric scroll to cain - "Search the Halls of the Dead under the Dry Hills for the Cube. Search the Maggot Lair under the Far Oasis for the Shaft. Search the Claw Viper Temple for the Headpiece." (unsets 20 01110000 for the missing artifacts) 20 01000000 - shown horadric cube to cain - shows previous quest text, "Take the artifacts to Cain in Lut Gholein." or "Use the Horadric Cube to restore the Staff." (if 20 00001000 is not set or 20 01111000 is set will have another quest text) 20 00100000 - shown staff of kings (shaft of horadric staff) to cain - shows previous quest text, "Take the artifacts to Cain in Lut Gholein." or "Use the Horadric Cube to restore the Staff." (if 20 00001000 is not set or 20 01111000 is set will have another quest text) 20 00010000 - shown viper amulet (top of horadric staff) to cain - shows previous quest text, "Take the artifacts to Cain in Lut Gholein." or "Use the Horadric Cube to restore the Staff." (if 20 00001000 is not set or 20 01111000 is set will have another quest text) 20 00000001 - placed horadric staff into the orifice and opening quest log will cause vanishing 21 00001000 - obtained horadric staff by transmuting its shaft and top in the cube - "Take the Staff into Tal Rasha's Tomb." 21 00000100 - shown horadric staff to cain - shows previous quest text 21 00100000 - placed horadric staff into the orifice last game 21 01000000 - horadric staff was already placed into the orifice? 21 00000000 - reloaded after placing horadric staff into the orifice (no sets and unsets 21 01100000) 21 00010000 - quest vanished (requires 20 00000001) quest 3 (tainted sun) - 22-24 (2 bytes) - 13, 144 (finished) 22 00000100 - received new quest from entering lost city - "Ask Drognan about the strange darkness." 22 00001000 - talked to drognan - "Destroy the Serpent Altar in the Claw Viper Temple beneath the Valley of Snakes." (requires 22 00000100) 22 00000010 - destroyed serpent altar - "Speak with the townsfolk in Lut Gholein." 22 00000001 - talked to anyone, can enter the palace and opening quest log will cause vanishing (requires and unsets 22 00000010) 23 00100000 - destroyed serpent altar last game 23 01000000 - serpent altar was already destroyed? 23 10000000 - reloaded after destroying serpent altar (unsets 23 01100000) 23 00010000 - quest vanished (requires 22 00000001) quest 4 (arcane sanctuary) - 24-26 (2 bytes) - 129, 145 (finished) 24 10000000 - blocked from the palace by kaelan - "Halt." or "You may not pass." 24 00000100 - received new quest from talking to drognan after obtaining horadric staff - "Talk to Drognan." and "Look for the Arcane Sanctuary within the Palace." (requires 21 00001000) 24 00001000 - talked to jerhyn - shows previous quest text (requires 24 00000100) 24 00010000 - entered the palace - shows previous quest text (requires 24 00001000) 24 00100000 - entered arcane sanctuary - "Find Horazon's Journal." 24 00000010 - not congratulated by anyone in lut gholein after finding horazon journal - "Continue the search for the Seventh Tomb." (unsets 24 00000010 and is set only with 24 00000001) 24 00000001 - found horazon journal, red portal to canyon of the magi opens and opening quest log will cause vanishing (requires 24 00000010 and unsets 24 00111100) 25 00000001 - welcomed to the palace by kaelan - "Welcome to the palace.", "You may enter the palace." or "Stay out of trouble." 25 00100000 - found horazon journal last game 25 01000000 - horazon journal was already found? 25 10000000 - reloaded after finding horazon journal 25 00010000 - quest vanished (requires 24 00000001) quest 5 (the summoner) - 26-28 (2 bytes) - 5, 144 (finished) 26 00000100 - received new quest from reaching summoner - "Kill the Summoner." 26 00000010 - killed summoner - "Return to town for more information." 26 00000001 - talked to anyone and opening quest log will cause vanishing (requires and unsets 26 00000010) 27 00100000 - killed summoner last game 27 01000000 - summoner was already killed? 27 10000000 - reloaded after killing the summoner (unsets 27 01100000) 27 00010000 - quest vanished (requires 26 00000001) quest 6 (the seven tombs) - 28-30 (2 bytes) - 229, 31 (finished) 28 00000100 - received new quest from talking to jerhyn - "Find Tal Rasha's Tomb." or "The Symbol of the True Tomb of Tal Rasha." (requires 18 00000010 or 18 00000001, if 24 00000001 is set will have another quest text and not saved if is result of entering canyon of the magi) 28 00100000 - killed duriel - "Explore Tal Rasha'a Chamber." 28 00001000 - talked to tyrael and blue portal to lut gholein opens - "Talk to Jerhyn." (requires 28 00100000 and increases acts by 1 - absolute byte offset 25 for 1.05) 28 00010000 - talked to jerhyn - "Talk to Meshif." (requires and unsets 28 00001000) 28 00000001 - received sail east offer from meshif and opening and opening quest log will cause vanishing (requires and unsets 28 00010000 and you might need to open act 3 waypoint before saving) 28 01000000 - congratulated by atma after talking to tyrael in the same game (requires 28 00001000) 28 10000000 - congratulated by warriv after talking to tyrael in the same game (requires 28 00001000) 29 00000001 - congratulated by drognan after talking to tyrael in the same game (requires 28 00001000) 29 00000010 - congratulated by lysander after talking to tyrael in the same game (requires 28 00001000) 29 00000100 - congratulated by cain after talking to tyrael in the same game (requires 28 00001000) 29 00001000 - congratulated by fara after talking to tyrael in the same game (requires 28 00001000) 29 00100000 - talked to tyrael last game 29 01000000 - tyrael already talked? 29 00000000 - reloaded after talking to tyrael (no sets and unsets 29 01100000) 29 00010000 - quest vanished (requires 28 00000001) activation (meshif's sail east) - 30-32 (2 bytes) - 1, 0 30 00000001 - sailed east (changes act location - 00000011 of absolute byte offset 88 for 1.05 and activates kurast docks waypoint - 00000100 of absolute byte offset 440, 464 or 488 for normal, nightmare or hell) 30 00100000 - sailed east last game 30 01000000 - ? 30 00000000 - reloaded after traveling east (no sets and unsets 01100000) act 3 - 32-48 (16 bytes) + 64 (1 byte) introduction (hratli in kurast docks) - 32-34 (2 bytes) - 1, 0 32 00000001 - introduced to kurast docks by hratli quest 4 (lam esen's tome) - 34-36 (2 bytes) - 5, 16 (finished) 34 00000100 - received new quest from talking to alkor after enterin lower kurast, toching or picking lam esen tome - "Search the six temples in the Bazaar, Upper Kurast, and the Causeway for Lam Esen's Tome." or "Talk to Alkor." 34 00000001 - returned lam esen tome to alkor, received five stat points from alkor and opening quest log will cause vanishing (requires 34 00000100) 35 00100000 - returned lam esen tome last game 35 01000000 - lam esen tome was already returned? 35 00000000 - reloaded after returning lam esen tome (no sets and unsets 35 01100000) 35 00010000 - quest vanished (requires 34 00000001) quest 3 (khalim's will) - 36-38 (2 bytes) - 253, 16 (finished) 36 00000100 - received new quest from talking to cain after returning golden bird to alkor - "Find Khalim's relics. Search for his Eye in the Spider Cavern." (requires 40 00000010 or 40 00000001) 36 00001000 - shown khalim eye to cain - "Search for Khalim's Brain in the Flayer Dungeon." 36 00010000 - shown khalim brain to cain - "Search for Khalim's Heart in the Sewers under the Kurast Bazaar." 36 01000000 - shown khalim heart to cain - "Search for Khalim's Flail in Travincal. Beware the High Council." 36 00100000 - shown khalim flail to cain - "Transmute Khalim's relics - the Flail, Eye, Heart, and Brain - with the Horadric Cube." 36 10000000 - obtained khalim will by transmuting khalim eye, brain, heart and flail in the cube and shown khalim will to cain - "Use Khalim's Will to smash the Compelling Orb." 36 00000001 - smashed compelling orb and opening quest log will cause vanishing 37 00100000 - smashed compelling orb last game 37 01000000 - compelling orb was already smashed? 37 00000000 - reloaded after smashing compelling orb (no sets and unsets 37 01100000) 37 00010000 - quest vanished (requires 36 00000001) quest 2 (blade of the old religion) - 38-40 (2 bytes) - 249, 19 (finished), 120, 2 (iron wolf mercenary and magic ring), 120, 3 (iron wolf mercenary) or 248, 2 (magic ring) 38 00001000 - received new quest from talking to hratli after returning golden bird to alkor - "Look for the Gidbinn in the Flayer Jungle." (requires 40 00000010 or 40 00000001) 38 00000100 - killed the champion or unique rat men holding the gidbinn before talking to hratli - "Ask around the Docks about the Gidbinn." (quest text does not shows and bit is not set if you talked to hratli first) 38 00010000 - saw gidbinn - "Pick up the Gidbinn." 38 00100000 - picked gidbinn - "Return the Gidbinn to Ormus." 38 01000000 - returned gidbinn to ormus - "Talk to Asheara." 38 10000000 - received iron wolf mercenary from asheara - "Talk to Ormus." 38 00000001 - received iron wolf mercenary from asheara, received magic ring from ormus and opening quest log will cause vanishing (requires 38 11000000 and 39 00000011) 39 00000010 - picked gidbinn 39 00000001 - received magic ring from ormus 39 00100000 - received magic ring from ormus last game 39 01000000 - magic ring was already received ormus? 39 00000000 - reloaded after receiving magic ring from ormus and iron wolf mercenary from asheara (no sets and unsets 39 01100000) 39 00010000 - quest vanished (requires 39 00000001) quest 1 (the golden bird) - 40-42 (2 bytes) - 1, 144 (finished) or 86, 0 (potion of life) 40 01000000 - received new quest from picking jade figurine - "Ask Cain about the Jade Figurine." 40 00000100 - talked to cain or returned jade figurine to meshif and received golden bird from meshif - "Show Meshif the Figurine." or "Ask Cain about the Golden Bird." 40 00010000 - talked to cain - "Give the Golden Bird to Alkor." 40 00000010 - returned golden bird to alkor - "Return to Alkor for reward." 40 00100000 - received potion of life from alkor (unsets 40 00100000 if you drink potion of life) 40 00000001 - received potion of life from alkor and opening quest log will cause vanishing (close bug - quest does not show, requires 40 00000010 and unsets 40 11011110) 41 00100000 - received potion of life from alkor last game 41 01000000 - potion of life was already received from alkor? 41 00000000 - reloaded before drinking potion of life (unsets 41 01100000) 41 10000000 - reloaded after receiving potion of life (unsets 41 01100000) 41 00010000 - quest vanished (requires 39 00000001) quest 5 (the blackened temple) - 42-44 (2 bytes) - 13, 16 (finished) 42 00000100 - received new quest from talking to ormus after entering kurast causeway - "Find the Blackened Temple within Travincal." 42 00001000 - entered travincal - "Kill the High Council." 42 00010000 - killed high councils - "Ask Cain for help." (if 36 00000001 will be skipped) 42 00000001 - talked to cain (requires and unsets 42 00010000) 43 00100000 - killed high councils last game 43 01000000 - high councils were already killed? 43 00000000 - reloaded after killing high councils (no sets or unsets 42 01100000 if 36 00000001 is not set) 43 00010000 - quest vanished (requires 43 00000001) quest 6 (the guardian) - 44-46 (2 bytes) - 133, 19 (finished) 44 00000100 - received new quest from talking to ormus after killing the three high councils and talking to cain - "Smash the Compelling Orb with Khalim's Will to open the way to Mephisto's Durance." (requires 42 00000001) 44 10000000 - entered durance of hate - "Search for Mephisto in his Durance." 44 00000001 - killed mephisto and opening quest log will cause vanishing (increases acts by 1 - absolute byte offset 25 for 1.05) 45 00000001 - entered first level of durance of hate - shows previous quest text 45 00000010 - entered last level of durance of hate - "Kill Mephisto." 45 00001000 - not congratulated by anyone in kurast docks after killing mephisto (unsets 45 00001000) 45 00100000 - killed mephisto last game 45 01000000 - mephisto was already killed? 45 00000000 - reloaded after killing mephisto (no sets or unsets 45 01100000) 45 00010000 - quest vanished (requires 44 00000001) activation (durance of hate's infernal gate) - 46-48 (2 bytes) - 1, 0 46 00000001 - entered infernal gate (changes act location - 00000011 of absolute byte offset 88 for 1.05 and activates pandemonium fortress waypoint - 00001000 of absolute byte offset 441, 465 or 489 for normal, nightmare or hell) 47 00100000 - entered infernal gate last game 47 01000000 - ? 47 00000000 - reloaded after entering infernal gate (no sets and unsets 01100000) act 4 - 48-56 (10 bytes) introduction (tyrael in pandemonium fortress) - 48-50 (2 bytes) - 1, 0 48 00000001 - introduced to pandemonium fortress by tyrael quest 1 (the fallen angel) - 50-52 (2 bytes) - 1, 144 (finished), 34, 128 (two skill points) or 3, 144 (finished and two skill points) 50 00000100 - received new quest by talking to tyrael - "Look for Izual in the Plains of Despair." 50 00001000 - left pandemonium fortress - shows previous quest text (requires 50 00000100) 50 00010000 - reached izual - "Destroy the demon that holds Izual's soul." (not saved) 50 00000010 - killed izual - "Talk to Izual's Spirit." (unsets 50 00011100) 50 00100000 - talked to izual spirit - "See Tyrael for reward." 50 00000001 - received two skill points from tyrael (requires and unsets 50 11111110) 51 00100000 - killed izual last game 51 01000000 - izual was already killed? 51 10000000 - reloaded after killing izual (unsets 51 01100000) 51 00010000 - quest vanished (requires 50 00000001) quest 3 (terror's end) - 52-54 (2 bytes) - 1, 16 (finished) 52 00000100 - received new quest from talking to tyrael after killing izual and destroying soulstone on hellforge - "Find Diablo in his Sanctuary." (requires 50 00000010 or 50 00000001 and 54 00000010 or 54 00000001) 52 00001000 - left pandemonium or entered chaos sanctuary - shows previous quest text (requires 52 00000100) 52 00010000 - opened all seals - "Kill Diablo." (not enabled) 52 00000001 - killed diablo and opening quest log will cause vanishing (unsets 52 11111100 and increases acts by 1 - absolute byte offset 25 for 1.05) 52 01000000 - not congratulated by cain in pandemonium fortress after killing diablo (unsets 52 01000000) 52 10000000 - not congratulated by tyrael in pandemonium fortress after killing diablo (unsets 52 10000000) 53 00100000 - killed diablo last game 53 01000000 - diablo was already killed? 53 00000000 - reloaded after killing diablo (no sets and unsets 53 01100000) 53 00010000 - quest vanished (requires 52 00000001) quest 2 (hell's forge) - 54-56 (2 bytes) - 1, 144 (finished) 54 00000100 - received new quest from cain after killing izual - "Take Mephisto's Soulstone to the Hellforge." (requires 50 00000010 or 50 00000001) 54 00001000 - left pandemonium fortress - shows previous quest text 54 00100000 - received soulstone from cain - shows previous quest text 54 00000010 - destroyed soulstone on hellforge and opening quest log will cause vanishing - "Consult with Cain." (unsets 54 11111100) 54 00000001 - talked to cain (requires 54 00000010 and unsets 54 11111110) 55 00100000 - destroyed soulstone on hellforge last game 55 01000000 - soulstone was already destroyed on hellforge? 55 10000000 - reloaded after destroying soulstone on hellforge (unsets 54 01100000 and if 54 00000001 is not set than 55 10000000 will get unset) 55 00010000 - quest vanished (requires 54 00000010) young diablo (dark wanderer leaving kurast docks) - 64 (1 byte) - 1, 0 64 00000001 - dark wanderer transforming into flesh beast (introduction to act 5) selecting next different (nightmare or hell) - 96-192 or 192-288 (96 bytes, changes act location - 00110000 of absolute byte offset 88 for 1.05 and rogue encampment waypoint is already activated - 00000001 of absolute byte offset 438, 462 or 486 for normal, nightmare or hell) waypoints summary waypoints are saved as bitmask rogue encampment waypoint is always enabled for all difficulty absolute offsets mark - 428-436 (8 bytes) - 87, 83, 1, 0, 0, 0, 80, 0 mark - 436-438 (2 bytes) - 2, 1 normal - 438-442 (4 bytes) + 442-460 (18 bytes) mark - 460-462 (2 bytes) - 2, 1 nightmare - 462-466 (4 bytes) + 466-484 (18 bytes) mark - 484-486 (2 bytes) - 2, 1 hell - 486-490 (4 bytes) + 490-508 (18 bytes) introductions summary second 4 bytes are reserved and are always 0 absolute offsets mark - 508-512 (4 bytes) - 1, 119, 52, 0 normal - 512-516 (4 bytes) + 516-520 (4 bytes) nightmare - 520-524 (4 bytes) + 524-528 (4 bytes) hell - 528-532 (4 bytes) + 532-536 (4 bytes) relative offsets 0 00000001 - ? (first talk to warriv in act 1) 0 00000010 - first talk to gheed 0 00000100 - first talk to akara 0 00001000 - first talk to kashya 0 00010000 - ? 0 00100000 - first talk to charsi 0 01000000 - ? (first talk to jerhyn) 0 10000000 - first talk to warriv in act 2 1 00000001 - ? 1 00000010 - first talk to drognan 1 00000100 - first talk to fara 1 00001000 - frist talk to lysander 1 00010000 - first talk to geglash 1 00100000 - first talk to meshif in act 2 1 01000000 - ? 1 10000000 - first talk to greiz 2 00000001 - first talk to elzix 2 00000010 - ? (first talk to hratli) 2 00000100 - first talk to cain in act 3 2 00001000 - ? 2 00010000 - ? 2 00100000 - first talk to asheara 2 01000000 - ? 2 10000000 - first talk to alkor 3 00000001 - first talk to ormus 3 00000010 - ? 3 00000100 - ? 3 00001000 - first talk to meshif in act 3 3 00010000 - first talk to natalya 3 00100000 - ? (first talk to tyrael in act 4) 3 01000000 - ? (first talk to jamella) 3 10000000 - ? (first talk to halbu) stats summary variable length information about the character that might exist or not depending on bitmask life, mana and stamina are calculated by adding respective max values and bonus values absolute offsets mark (2 bytes) - 103, 102 flags (2 bytes) + unknown (1 byte) 0 00000001 - strength (4 bytes) 0 00000010 - energy (4 bytes) 0 00000100 - dexterity (4 bytes) 0 00001000 - vitality (4 bytes) 0 00010000 - stat points (4 bytes) 0 00100000 - skill points (4 bytes) 0 01000000 - life (2 bytes) 0 10000000 - max life (2 bytes) 1 00000001 - mana (2 bytes) 1 00000010 - max mana (2 bytes) 1 00000100 - stamina (2 bytes) 1 00001000 - max stamina (2 bytes) 1 00010000 - level (4 bytes) 1 00100000 - experience (4 bytes) 1 01000000 - gold (4 bytes) 1 10000000 - stash gold (4 bytes) data (0-64 bytes) relative offsets 0-4 - strength 4-8 - energy 8-12 - dexterity 12-16 - vitality 16-20 - stat points 20-24 - skill points 25-27 - life 29-31 - max life 33-35 - mana 37-39 - max mana 41-43 - stamina 45-47 - max stamina 48-52 - level 52-56 - experience 56-60 - gold 60-64 - stash gold skills summary skills are ordered by required level bottom to top skill tree max skill level is 20 absolute offsets mark (2 bytes) - 105, 102 data (30 bytes) items + corpse summary items can be found after the character or corpse items mark (2 bytes - 74, 77) and item count (2 bytes - 0, 0 for no items) and every item is also preceded by individual item mark (2 bytes - 74, 77) corpse items are designated as inventory items and are preceded by corpse data, that contains stats that can be filled with 0, found after corpse mark (2 bytes - 74, 77) there are three types of items by size - compact (13 bytes), ear (24 bytes) and normal (29 bytes) and the first two are set as compact by the compactsave column absolute offsets character items mark (2 bytes) - 74, 77 count (2 bytes) item mark (2 bytes) - 74, 77 data (13, 24 or 29 bytes) corpse (16 bytes) mark (2 bytes) - 74, 77 count (2 bytes) - 1, 0 data (12 bytes) corpse items mark (2 bytes) - 74, 77 count (2 bytes) item mark (2 bytes) - 74, 77 data (13, 24 or 29 bytes) relative offsets compact - 0-13 (13 bytes) 0 00010000 - identified 0 11101110 - ? 1 11111111 - ^ 2 00000001 - ear 2 00000010 - starting 2 00111000 - compact save type - 26 bytes if is ear or 15 bytes otherwise 2 00011000 - normal save type - 31 bytes 2 11000100 - ? 3 11111111 - ^ 4 11111111 - ^ 5 01000011 - ^ 5 00111100 - equipment - 0 - not equipped, 1 - helm, 2 - amulet, 3 - body armor, 4 - primary weapon, 5 - secondary weapon, 6 - primary ring, 7 - secondary ring, 8 - belt, 9 - boots, 10 - gloves 5 10000000 - place - 0 - not placed, 1 - equipment, 2 - belt, 4 - hand, 6 - socket 6 00000011 - ^ 6 00001100 - x if place is belt - 0-3 6 00110000 - y if place is belt - 0-3 (y is inverted) 6 11000000 - ? if place is belt 6 11111100 - ? if place is hand or socket 6 01111100 - x if place is not placed - 0-31 6 10000000 - y if place is not placed - 0-7 7 00000011 - ^ 7 00000011 - ? if place is belt, hand or socket 7 11111100 - store - 0 - inventory, 3 - cube, 4 - stash, 255 - belt, hand or socket (hand is saved last) 8 00000011 - ^ 8 11111100 - code - 1-4 8 bit characters right radded with spaces that match /^[a-z ]+$/ 9 11111111 - ^ 10 11111111 - ^ 11 11111111 - ^ 12 00000011 - ^ 12 11111100 - ? ear - 0-24 (24 bytes) 0 00010000 - identified 0 11101110 - ? 1 11111111 - ^ 2 00000001 - ear 2 00000010 - starting 2 00111000 - compact save type - 26 bytes if is ear or 15 bytes otherwise 2 00011000 - normal save type - 31 bytes 2 11000100 - ? 3 11111111 - ^ 4 11111111 - ^ 5 01000011 - ^ 5 00111100 - equipment - 0 - not equipped, 1 - helm, 2 - amulet, 3 - body armor, 4 - primary weapon, 5 - secondary weapon, 6 - primary ring, 7 - secondary ring, 8 - belt, 9 - boots, 10 - gloves 5 10000000 - place - 0 - not placed, 1 - equipment, 2 - belt, 4 - hand, 6 - socket 6 00000011 - ^ 6 00001100 - x if place is belt - 0-3 6 00110000 - y if place is belt - 0-3 (y is inverted) 6 11000000 - ? if place is belt 6 11111100 - ? if place is hand or socket 6 01111100 - x if place is not placed - 0-31 6 10000000 - y if place is not placed - 0-7 7 00000011 - ^ 7 00000011 - ? if place is belt, hand or socket 7 11111100 - store - 0 - inventory, 3 - cube, 4 - stash, 255 - belt, hand or socket (hand is saved last) 8 00000011 - ^ 8 00011100 - class - 0 - amazon, 1 - sorceress, 2 - necromancer, 3 - paladin, 4 - barbarian 8 11100000 - level - 0-255 9 00011111 - ^ 9 11100000 - name - 2-15 7 bit characters right radded with nulls that match /^(?:[A-Za-z]+|[A-Za-z]+[-_][A-Za-z]+)$/ 10 11111111 - ^ 11 11111111 - ^ 12 11111111 - ^ 13 11111111 - ^ 14 11111111 - ^ 15 11111111 - ^ 16 11111111 - ^ 17 11111111 - ^ 18 11111111 - ^ 19 11111111 - ^ 20 11111111 - ^ 21 11111111 - ^ 22 00111111 - ^ 22 11000000 - ? 23 11111111 - ^ normal - 0-29 (29 bytes) 0 00010000 - identified 0 11101110 - ? 1 00001000 - socketed - followed by socketables count of compact 15 byte items (test if compact items and ears can be used as socketables or have sockets) 1 00100000 - imbued 1 11010111 - ? 2 00000001 - ear (test if ear can be normal size or remove and make 2 00111001 be the item type) 2 00000010 - starting 2 00111000 - compact save type - 26 bytes if is ear or 15 bytes otherwise 2 00011000 - normal save type - 31 bytes 2 11000100 - ? 3 11111111 - ^ 4 11111111 - ^ 5 00000011 - ^ 5 11111100 - code - 1-4 8 bit characters right radded with spaces that match /^[a-z ]+$/ 6 11111111 - ^ 7 11111111 - ^ 8 11111111 - ^ 9 00000011 - ^ 9 00111100 - equipment - 0 - not equipped, 1 - helm, 2 - amulet, 3 - body armor, 4 - primary weapon, 5 - secondary weapon, 6 - primary ring, 7 - secondary ring, 8 - belt, 9 - boots, 10 - gloves 9 01000000 - ? 9 10000000 - socketables count - 0-7 (only up to 6 are not glitched) 10 00000011 - ^ 10 11111100 - item or magic level - 0-255 11 00000011 - ^ 11 00111100 - ? 11 11000000 - place - 0 - not placed, 1 - equipment, 2 - belt, 4 - hand (test if 6 is socket) 12 00000001 - ^ 12 00001110 - quality - 1 - low, 2 - normal, 3 - superior, 4 - magic, 5 - set, 6 - rare, 7 - unique 12 00010000 - ? 12 11100000 - quantity - 0-524287 13 11111111 - ^ 14 11111111 - ^ 15 00000001 - ? 15 11111110 - durability - 0-255 16 00000001 - ^ 16 11111110 - max durability - 0-255 17 00000001 - ^ 17 00000110 - x if place is belt - 0-3 17 00011000 - y if place is belt - 0-3 (y is inverted) 17 11111110 - ? if place is equipment or hand 17 11100000 - ? if place is belt 17 00111110 - x if is inventory, cube or stash - 0-31 17 11000000 - y if is inventory, cube or stash - 0-7 18 00000001 - ^ 18 00000001 - ? if place is equipment, belt or hand 18 11111110 - monster id if organ or set or unique id if not organ - 0-511 19 00000011 - ^ 19 00000100 - ? 19 11111000 - attribute0 - 0-4294967295 (seed for pseudo random generation of amulet and ring images and armor defense) 20 11111111 - ^ 21 11111111 - ^ 22 11111111 - ^ 23 00000111 - ^ 23 11111000 - attribute1 - 0-4294967295 (seed for pseudo random generation of staff mods, magic and rare prefixes, suffixes, set and unique mod or stat values and set visual, but not functional match) 24 11111111 - ^ 25 11111111 - ^ 26 11111111 - ^ 27 00000111 - ^ 27 11111000 - store - 0 - inventory, 3 - cube, 4 - stash, 255 - belt, hand or equipment (hand is saved last and cannot be socketed) 28 00000111 - ^ 28 11111000 - ? mercenary summary mercenary data can be filled with 0 absolute offsets mercenary mark (2 bytes) - 74, 77 mercenary data (6+ bytes)