# Monster row indices the 1.13c engine hardcodes `dwTxtFileNo` (UnitAny+0x04) is a **monstats.txt row index**. The engine compares it against literal constants in 328 places across three modules. Those 132 rows carry behaviour that is not in any .txt file — repurposing one silently inherits it. ## How this was produced Linear disassembly of `.text` in D2Client / D2Game / D2Common (capstone, resyncing past undecodable bytes). A `cmp , imm32` counts only when that register was loaded from `[ + 4]` within the preceding 12 instructions, or when it continues a compare-chain whose root was. Values outside `0..743` are discarded. Preferred bases: D2Client `0x6FAB0000`, D2Game `0x6FC20000`, D2Common `0x6FD50000`. **D2Game relocates at runtime** (Storm occupies its preferred range) — its addresses here are file coordinates. D2Client and D2Common load at their preferred bases. Row ids are read from Doug's live `monstats.txt` (744 rows). Rows 0..734 are in vanilla 1.13c order, verified id-for-id against `Original 1.13c Excel`. ## Collision check — the nine custom rows Rows **735-743** (`dark_pupil`, `s_widow`, `nbutcher`, `mtorment`, `aruin`, `bknight`, `kingleo`, `hiddenmon`, `blankmon`) appear in **none** of the 328 sites. Appending past vanilla's end took no inherited behaviour with it. ## The table | Row | Hex | Id | NameStr | Sites | |----:|----:|----|---------|-------| | 1 | 0x001 | `skeleton2` | Returned | `D2Client:6FACE415`, `D2Client:6FB0D2B0`, `D2Client:6FB27746`, `D2Game:6FC2F5CB`, `D2Game:6FC52FDD`, `D2Game:6FC53EE2`, `D2Game:6FC68528`, `D2Game:6FC68607`, `D2Game:6FC81624`, `D2Game:6FC83EFD`, `D2Game:6FC8E19F`, `D2Game:6FCE2150`, `D2Game:6FD05504`, `D2Game:6FD10F84`, `D2Common:6FD8D2DC`, `D2Common:6FD937C4`, `D2Common:6FD968CF` | | 2 | 0x002 | `skeleton3` | BoneWarrior | `D2Client:6FAC3CC3`, `D2Client:6FAC9F07`, `D2Client:6FAF9173`, `D2Client:6FB1474E`, `D2Game:6FC6348B`, `D2Game:6FC68703`, `D2Game:6FCB3755`, `D2Game:6FD014C4`, `D2Common:6FD937C9`, `D2Common:6FDA43CF` | | 3 | 0x003 | `skeleton4` | BurningDead | `D2Client:6FAF915B`, `D2Client:6FAFEECF`, `D2Game:6FCC3BF1`, `D2Common:6FD5E4A3`, `D2Common:6FD6B50E`, `D2Common:6FD8D615`, `D2Common:6FD937CE`, `D2Common:6FD9487D`, `D2Common:6FD973B0` | | 4 | 0x004 | `skeleton5` | Horror | `D2Client:6FAC01D7`, `D2Client:6FACADC4`, `D2Client:6FACAEEC`, `D2Client:6FAEC305`, `D2Client:6FB36ADA`, `D2Client:6FB36DC4`, `D2Client:6FB3F55C`, `D2Client:6FB554F4`, `D2Game:6FCD2D77`, `D2Game:6FCDBFC2`, `D2Common:6FD6A364`, `D2Common:6FD6FA88`, `D2Common:6FD74108`, `D2Common:6FD750E8`, `D2Common:6FD76B08`, `D2Common:6FD937D3`, `D2Common:6FDAF1C4` | | 5 | 0x005 | `zombie1` | Zombie | `D2Client:6FB554FE`, `D2Game:6FD051FA`, `D2Common:6FD8B1E4`, `D2Common:6FDA2E40` | | 6 | 0x006 | `zombie2` | HungryDead | `D2Client:6FAD3B7B`, `D2Client:6FB554F9`, `D2Game:6FD051F5`, `D2Game:6FD10F89`, `D2Common:6FD6FA8D`, `D2Common:6FD72226`, `D2Common:6FD72276`, `D2Common:6FD7A421`, `D2Common:6FD7A4D1`, `D2Common:6FD96890` | | 7 | 0x007 | `zombie3` | Ghoul | `D2Client:6FAD320F`, `D2Client:6FB15E70`, `D2Client:6FB31DA0`, `D2Game:6FC750DB`, `D2Game:6FC99294`, `D2Game:6FCFABA2`, `D2Game:6FD0D022`, `D2Common:6FD9E528`, `D2Common:6FD9E558`, `D2Common:6FDAE7E8`, `D2Common:6FDAE818`, `D2Common:6FDB08D8`, `D2Common:6FDB08EB` | | 8 | 0x008 | `zombie4` | DrownedCarcass | `D2Client:6FAB8DCA`, `D2Client:6FB1F1D2`, `D2Game:6FC268D8`, `D2Game:6FC59321`, `D2Game:6FC594C3`, `D2Game:6FC796EA`, `D2Game:6FC855D5`, `D2Game:6FC8999D`, `D2Common:6FD55B88`, `D2Common:6FD8E2D9`, `D2Common:6FD93721`, `D2Common:6FD937D8`, `D2Common:6FD9DE20` | | 9 | 0x009 | `zombie5` | PlagueBearer | `D2Client:6FB4CAE9`, `D2Common:6FD937DD` | | 10 | 0x00A | `bighead1` | Afflicted | `D2Client:6FB2B249`, `D2Client:6FB2C041` | | 11 | 0x00B | `bighead2` | Tainted | `D2Game:6FCFABA7`, `D2Common:6FD6E654` | | 12 | 0x00C | `bighead3` | Misshapen | `D2Client:6FAD57F8`, `D2Client:6FB47598`, `D2Game:6FC59270`, `D2Game:6FC59390`, `D2Game:6FC59413`, `D2Game:6FC5A299` | | 14 | 0x00E | `bighead5` | Damned | `D2Client:6FB47589` | | 15 | 0x00F | `foulcrow1` | FoulCrow | `D2Client:6FB0D2B5`, `D2Game:6FCCC9B6`, `D2Common:6FD66683`, `D2Common:6FD6686F` | | 16 | 0x010 | `foulcrow2` | BloodHawk | `D2Client:6FABF9CD`, `D2Common:6FD93714`, `D2Common:6FD9DE06` | | 17 | 0x011 | `foulcrow3` | BlackRaptor | `D2Client:6FB6B9C2` | | 18 | 0x012 | `foulcrow4` | CloudStalker | `D2Client:6FB475A7`, `D2Common:6FD70C65` | | 20 | 0x014 | `fallen2` | Carver | `D2Client:6FAB55C3`, `D2Client:6FAB5615`, `D2Game:6FC24C8C`, `D2Game:6FC24CDE`, `D2Common:6FD54231`, `D2Common:6FD54283` | | 22 | 0x016 | `fallen4` | DarkOne | `D2Client:6FB6B9CB` | | 25 | 0x019 | `brute3` | Yeti | `D2Game:6FCEBD65`, `D2Common:6FD74663` | | 26 | 0x01A | `brute4` | Crusher | `D2Game:6FD0149D` | | 32 | 0x020 | `sandraider4` | Infidel | `D2Game:6FCEBD6A` | | 36 | 0x024 | `gorgon3` | unused | `D2Game:6FCFB408` | | 37 | 0x025 | `gorgon4` | unused | `D2Game:6FCFB40D` | | 38 | 0x026 | `wraith1` | Ghost | `D2Client:6FAD55B7` | | 40 | 0x028 | `wraith3` | Specter | `D2Common:6FD7466E` | | 43 | 0x02B | `corruptrogue1` | DarkHunter | `D2Game:6FC41934` | | 47 | 0x02F | `corruptrogue5` | FleshHunter | `D2Client:6FB4F144`, `D2Client:6FB4F2DC` | | 52 | 0x034 | `baboon5` | TempleGuard | `D2Client:6FB0D2A6` | | 54 | 0x036 | `goatman2` | NightClan | `D2Game:6FCE9A1A` | | 55 | 0x037 | `goatman3` | BloodClan | `D2Client:6FB3F53B` | | 59 | 0x03B | `fallenshaman2` | CarverShaman | `D2Client:6FAD47FE`, `D2Game:6FC406E2`, `D2Game:6FC8CC57` | | 60 | 0x03C | `fallenshaman3` | DevilkinShaman | `D2Client:6FAD4803`, `D2Game:6FC406E7` | | 62 | 0x03E | `fallenshaman5` | WarpedShaman | `D2Game:6FCC84F7` | | 71 | 0x047 | `sandmaggot4` | GiantLamprey | `D2Client:6FB0D2AB` | | 73 | 0x049 | `clawviper1` | TombViper | `D2Game:6FC3371B`, `D2Game:6FCBA12A` | | 74 | 0x04A | `clawviper2` | ClawViper | `D2Client:6FB2C2CD` | | 91 | 0x05B | `scarab1` | DungSoldier | `D2Client:6FB5C581`, `D2Game:6FC7317F`, `D2Game:6FC7410A`, `D2Game:6FD0D2C4` | | 96 | 0x060 | `mummy1` | DriedCorpse | `D2Game:6FC2B7BB`, `D2Game:6FC4F1A2`, `D2Game:6FC5286F`, `D2Game:6FD0D2CD` | | 100 | 0x064 | `mummy5` | Cadaver | `D2Client:6FB7B348`, `D2Game:6FC406EC`, `D2Game:6FC45E96`, `D2Game:6FC8BBBB`, `D2Game:6FD1621F`, `D2Common:6FDD72AD` | | 105 | 0x069 | `unraveler5` | Baal Subject Mummy | `D2Game:6FCC84FC` | | 106 | 0x06A | `chaoshorde1` | unused | `D2Client:6FB4123F` | | 112 | 0x070 | `vulture3` | HellBuzzard | `D2Client:6FB4FBF8` | | 116 | 0x074 | `mosquito3` | BloodHook | `D2Common:6FD816A2` | | 125 | 0x07D | `arach4` | FlameSpider | `D2Common:6FD6FA50` | | 130 | 0x082 | `thornhulk4` | Spikefist | `D2Client:6FAB8156`, `D2Game:6FC2509D` | | 141 | 0x08D | `fetish1` | RatMan | `D2Game:6FCD3AAD` | | 145 | 0x091 | `fetish5` | StygianDoll | `D2Game:6FCD3AB4` | | 148 | 0x094 | `akara` | Akara | `D2Game:6FCDD829` | | 149 | 0x095 | `chicken` | dummy | `D2Client:6FAC6E6B` | | 150 | 0x096 | `kashya` | Kashya | `D2Game:6FCDD346`, `D2Game:6FCDF85C` | | 152 | 0x098 | `rogue1` | Dummy | `D2Game:6FC8E794` | | 154 | 0x09A | `charsi` | Charsi | `D2Game:6FCDDEEF` | | 155 | 0x09B | `warriv1` | Warriv | `D2Game:6FC36D3E`, `D2Game:6FC82420` | | 168 | 0x0A8 | `cr_lancer4` | BlackLancer | `D2Common:6FD5B3C8` | | 175 | 0x0AF | `warriv2` | Warriv | `D2Client:6FB4CADB` | | 176 | 0x0B0 | `atma` | Atma | `D2Game:6FCDD839` | | 178 | 0x0B2 | `fara` | Fara | `D2Game:6FC36D53`, `D2Game:6FCDD841`, `D2Game:6FCDDEF6` | | 189 | 0x0BD | `blunderbore4` | Urdar | `D2Game:6FC56C7E` | | 198 | 0x0C6 | `greiz` | Greiz | `D2Client:6FAD0FD3`, `D2Game:6FCDD34D`, `D2Game:6FCDF86A` | | 201 | 0x0C9 | `jerhyn` | Jerhyn | `D2Game:6FCE4592` | | 207 | 0x0CF | `crownest2` | BloodHawkNest | `D2Client:6FAD5B90` | | 211 | 0x0D3 | `duriel` | Duriel | `D2Client:6FADC0A2`, `D2Game:6FCB9796`, `D2Game:6FCBA12F` | | 223 | 0x0DF | `bloodmage2` | unused | `D2Client:6FAEA3E4` | | 242 | 0x0F2 | `mephisto` | Mephisto | `D2Client:6FAFD96E`, `D2Game:6FC55FE2` | | 243 | 0x0F3 | `diablo` | Diablo | `D2Client:6FAFC00C`, `D2Client:6FAFD967`, `D2Game:6FC55FE9`, `D2Game:6FCFD0B1` | | 244 | 0x0F4 | `cain2` | DeckardCain | `D2Client:6FAFB55F`, `D2Game:6FCDDBAA`, `D2Game:6FCE5359` | | 245 | 0x0F5 | `cain3` | DeckardCain | `D2Game:6FD040BA`, `D2Game:6FD04CC2` | | 246 | 0x0F6 | `cain4` | DeckardCain | `D2Client:6FAFB566`, `D2Game:6FCDDBB6` | | 250 | 0x0FA | `summoner` | Summoner | `D2Game:6FCBCAA9` | | 251 | 0x0FB | `tyrael1` | tyrael | `D2Game:6FC3996B`, `D2Game:6FCE2B2F` | | 252 | 0x0FC | `asheara` | asheara | `D2Client:6FAF628D`, `D2Client:6FAFA606`, `D2Client:6FB3F52D`, `D2Game:6FCDD35B`, `D2Game:6FCE0E41` | | 253 | 0x0FD | `hratli` | hratli | `D2Client:6FAF7D8A`, `D2Game:6FCDDF04`, `D2Game:6FD054D0` | | 255 | 0x0FF | `ormus` | ormus | `D2Client:6FB41231`, `D2Game:6FC3DB67`, `D2Game:6FCDD851`, `D2Common:6FD82605` | | 256 | 0x100 | `izual` | izual | `D2Client:6FAB7085`, `D2Client:6FAD0FBE` | | 257 | 0x101 | `halbu` | halbu | `D2Client:6FAF7DA2`, `D2Game:6FCDDEE8` | | 258 | 0x102 | `tentacle1` | WaterWatcherLimb | `D2Client:6FB5AD58` | | 260 | 0x104 | `tentacle3` | StygianWatcherLimb | `D2Client:6FB5AD69` | | 265 | 0x109 | `cain5` | DeckardCain | `D2Client:6FAF62B8`, `D2Client:6FAFB556`, `D2Game:6FCDDBA0` | | 266 | 0x10A | `navi` | navi | `D2Game:6FC824E4` | | 267 | 0x10B | `bloodraven` | Bloodraven | `D2Game:6FC45E88` | | 268 | 0x10C | `bug` | Dummy | `D2Game:6FD01496` | | 269 | 0x10D | `scorpion` | Dummy | `D2Game:6FD014A2` | | 290 | 0x122 | `bloodgolem` | BloodGolem | `D2Game:6FC6EAE7` | | 291 | 0x123 | `irongolem` | IronGolem | `D2Game:6FC9B478` | | 331 | 0x14B | `act2guard2` | Kaelan | `D2Game:6FCE4EEA` | | 333 | 0x14D | `diabloclone` | Diablo | `D2Game:6FCFD0B8` | | 337 | 0x151 | `suckernest4` | BloodWingNest | `D2Game:6FC8A6F7`, `D2Game:6FD00C1E` | | 351 | 0x15F | `hydra1` | Hydra | `D2Game:6FD0049B` | | 352 | 0x160 | `hydra2` | Hydra | `D2Game:6FD004A2` | | 353 | 0x161 | `hydra3` | Hydra | `D2Game:6FD004A9` | | 354 | 0x162 | `trap-melee` | a trap | `D2Client:6FAD574C`, `D2Client:6FAD5A36` | | 355 | 0x163 | `seventombs` | Dummy | `D2Client:6FAD5753`, `D2Client:6FAD5A3D` | | 356 | 0x164 | `dopplezon` | Dopplezon | `D2Client:6FAD5776`, `D2Client:6FAD5A60`, `D2Client:6FB70EEB` | | 359 | 0x167 | `act3hire` | Iron Wolf | `D2Game:6FCF0682`, `D2Common:6FD6A2E2` | | 363 | 0x16B | `necroskeleton` | NecroSkeleton | `D2Client:6FB03A7B`, `D2Game:6FC40865` | | 364 | 0x16C | `necromage` | NecroMage | `D2Client:6FB03A83`, `D2Game:6FC4086C` | | 367 | 0x16F | `tyrael2` | tyrael | `D2Game:6FC56C6A`, `D2Game:6FCE0E58` | | 377 | 0x179 | `act2guard4` | Dummy | `D2Game:6FC8BBC0`, `D2Game:6FCE4914` | | 378 | 0x17A | `act2guard5` | Dummy | `D2Game:6FCE26A3` | | 391 | 0x187 | `hellbovine` | Hell Bovine | `D2Game:6FC55FD9` | | 396 | 0x18C | `fetishblow1` | RatMan | `D2Game:6FCD3AA6` | | 397 | 0x18D | `fetishblow2` | Fetish | `D2Client:6FAD575A`, `D2Client:6FAD5A44`, `D2Client:6FAD5B82` | | 400 | 0x190 | `fetishblow5` | StygianDoll | `D2Game:6FCD3A9F` | | 404 | 0x194 | `trappedsoul2` | TrappedSoul | `D2Client:6FADACCC` | | 405 | 0x195 | `jamella` | Jamella | `D2Client:6FAD5761`, `D2Client:6FAD5A4B`, `D2Client:6FAFDF6E`, `D2Client:6FB3F54E`, `D2Game:6FCDD849` | | 406 | 0x196 | `izualghost` | Izual | `D2Client:6FAD576F`, `D2Client:6FAD5A59`, `D2Game:6FCD95DD` | | 407 | 0x197 | `fetish11` | RatMan | `D2Client:6FAD5768`, `D2Client:6FAD5A52` | | 408 | 0x198 | `malachai` | Malachai | `D2Game:6FCD8C14` | | 417 | 0x1A1 | `deathsentry` | Death Sentry | `D2Client:6FB70EBF`, `D2Game:6FC9B47F`, `D2Common:6FD80560` | | 418 | 0x1A2 | `shadowwarrior` | Shadow Warrior | `D2Client:6FB70ECA`, `D2Game:6FC9B486`, `D2Common:6FD80568` | | 432 | 0x1B0 | `bear` | Bear | `D2Game:6FCFF031` | | 433 | 0x1B1 | `barricadedoor1` | Barricade Door | `D2Game:6FCFF04C` | | 436 | 0x1B4 | `barricadetower` | Barricade Tower | `D2Game:6FCBA136` | | 468 | 0x1D4 | `suicideminion7` | InsaneHellSpawn | `D2Client:6FB742A1` | | 511 | 0x1FF | `bloodlord5` | Blood Lord5 | `D2Client:6FAF7DAA`, `D2Client:6FB3F568`, `D2Game:6FC36D93`, `D2Game:6FCDDEFD` | | 513 | 0x201 | `drehya` | Drehya | `D2Client:6FB3F571`, `D2Game:6FCDD831` | | 515 | 0x203 | `nihlathak` | Nihlathak Town | `D2Game:6FCDD354`, `D2Game:6FCDF863`, `D2Game:6FCE0E60` | | 520 | 0x208 | `catapultspotter4` | Catapult Spotter W | `D2Client:6FAFB572`, `D2Game:6FCDDBC7` | | 527 | 0x20F | `nihlathakboss` | Nihlathak | `D2Client:6FAFBA6B` | | 537 | 0x219 | `act5barb4` | Act 5 Townguard | `D2Client:6FAFBA53`, `D2Client:6FB11592`, `D2Game:6FC7702B` | | 538 | 0x21A | `ancientstatue1` | Ancient Statue 1 | `D2Client:6FAFBA5B`, `D2Client:6FB1159E` | | 539 | 0x21B | `ancientstatue2` | Ancient Statue 2 | `D2Client:6FAFBA63`, `D2Client:6FB115AA`, `D2Game:6FC77036` | | 544 | 0x220 | `baalthrone` | Baal Throne | `D2Game:6FC56002` | | 556 | 0x22C | `painworm5` | Pain Worm5 | `D2Client:6FAC6E72` | | 560 | 0x230 | `baalcrabstairs` | Baal Crab to Stairs | `D2Common:6FD7704D` | | 561 | 0x231 | `act5hire1` | Act 5 Hireling 1hs | `D2Common:6FD77054` | | 573 | 0x23D | `baalminion2` | Baals Minion | `D2Common:6FD5C59C`, `D2Common:6FD69FEA` | | 704 | 0x2C0 | `mummy6` | Cadaver | `D2Client:6FACFEDE`, `D2Client:6FB6FCB1`, `D2Game:6FCD0C6D`, `D2Game:6FCFCEA4` | | 705 | 0x2C1 | `ubermephisto` | Mephisto | `D2Game:6FCD0C7B`, `D2Game:6FCFD0BF` | | 709 | 0x2C5 | `uberduriel` | Duriel | `D2Client:6FACFEE5`, `D2Client:6FB6FCB8`, `D2Game:6FCD0C8A`, `D2Game:6FCD814D`, `D2Game:6FCFCEAB` | | 711 | 0x2C7 | `demonspawner` | Evil hut | `D2Game:6FCD0C99` | ## Note on the hover-text path `D2Client:6FB70EBF` tests `0x1A1` then `0x1A2` (deathsentry, shadowwarrior) and on a match jumps to `6FB70F7C`, which resolves the unit's owner and returns **before** the hover-name block. It is a short-circuit, not an alternate placement routine. A second site, `D2Client:6FB571BC`, range-tests the same pair.