Skip to content

Enemies (DARKLAND.ENM)

All enemy and creature definitions: stats, equipment, sprite references, palette indices, and individual named enemy instances.

Extension
DARKLAND.ENM
Location
Game root
Byte order
Little-endian (16-bit)
Size
16,452 B — 71 × 204-byte enemy_type + 82 × 24-byte enemy records
Compression
None
Magic
None — first record begins immediately at 0x00
Status
Partial
Source
Wendigo — darkland.enm.xml; partially correlated against combat runtime
Partial. Two large blocks in each enemy_type record are unresolved: +0x32 (66 bytes — likely potion-carrying odds/quality, possibly 22 triplets) and +0x74 (30 bytes — possibly component-carry probabilities). Several individual fields are also unknown: +0x10, +0x12, +0x2E, +0x30, +0x31, +0x97, +0x9A–+0xA5, +0xAD–+0xCC.

Canonical source: darkland.enm.xml (Wendigo’s Darklands repo)

File Layout

Offset 0x00:    enemy_type[71]  — 71 enemy type definitions (204 bytes each)
Offset 0x3894:  enemy[82]       — 82 individual named enemy instances (24 bytes each)

enemy_type struct (204 bytes)

OffsetSizeFieldDescription
+0x004enemy_imageImage group code (e.g. E00, M03); E?? = human, M?? = monster
+0x0410type_nameInternal name (e.g. Sergeant1); variants use number suffix
+0x0e1num_variantsFirst instance: variant count. Subsequent variants: 0xff
+0x0f1palette_countNumber of usable palettes in ENEMYPAL.DAT
+0x101(unknown)Usually 1–3
+0x111palette_startStarting palette index in ENEMYPAL.DAT
+0x122(unknown)Small range, usually 0–2
+0x147attrsAttributes (attribute_set)
+0x1a19skillsSkills (skill_set); non-weapon skills always = 0x14
+0x2e1(unknown)Usually 0x080x14
+0x2f1(constant)Always 0x00
+0x301(unknown)Notable non-zero values on skeletons, gnomes, vulcan, hellhound, and dragons
+0x311(unknown)Usually 0–2; gargoyle is the only known 2
+0x3266(unknown)Strongly resembles 22 triplets tied to potion-carrying odds / quality
+0x7430(unknown)May be component-carry probabilities or related tactical content tables
+0x922(unknown)Usually increases with stronger foes
+0x941vital_typeItem type of vital armor (0xff = no armor)
+0x951limb_typeItem type of leg armor (0xff = no armor)
+0x961armor_qArmor quality; if no armor: effective armor class
+0x971(unknown)Usually 0x5f, 0x60, 0x61, or 0xff
+0x981shield_typeItem type of shield
+0x991shield_qShield quality
+0x9a6(unknown)Undocumented block
+0xa06(unknown)Similar-looking block preceding weapon types
+0xa66weapon_types[6]Possible weapon types that might be carried
+0xac1weapon_qWeapon quality; if no weapon: effective weapon quality
+0xad11(unknown)Mostly 0xff
+0xb919(unknown)Low values and occasional 0xffff; likely mixed table data

Notes:

  • enemy_image is a 3-character image group plus null terminator
  • melee weapon skills tend to be equal within one enemy definition; non-weapon skills are usually 0x14
  • the large unknown blocks at +0x32 and +0x74 are still unresolved but likely encode carried consumables/components and their odds

enemy struct (24 bytes)

OffsetSizeFieldDescription
+0x002enemy_typeIndex into enemy_types array
+0x0212nameName string
+0x0e8(constant)Zero-filled block
+0x162(unknown)Per-type constant with values like 0, 1, 3, 7, 0x3f, 0x4f, 0x81

Notes

  • DARKLAND.ENM contains 71 type records and 82 named enemy instances
  • the KB still treats several interior tables as partially decoded rather than fully named fields

Confidence

Medium-high. Confirmed by darkland.enm.xml; partially correlated against combat runtime.