Characters, Armies & Creatures
Every mobile or fightable thing in War in Middle Earth — named heroes,
troop armies, monsters — is one record in a single 196-entry entity
table, embedded in the executable’s DATA hunk (offset 0x1DE8, 38 bytes
per record). There is no separate “character class”; a lone hero and a
2,000-strong orc horde are the same record shape, just with different field
values. Full byte-level layout: docs/wime/amiga/exe-gameplay-data.md
§ “Entity Table” in the main repo (not part of this site).
The 196 entities
Section titled “The 196 entities”- 42 heroes — named characters (Gandalf, Aragorn, Frodo, Théoden…)
- 126 armies — troop units with strength counts (2,000 orcs, 120 cavalry, and so on)
- 28 creatures — monsters and encounters (balrogs, spiders, wolves)
What a record actually tracks
Section titled “What a record actually tracks”The important confirmed fields, after two rounds of corrected field-naming (see the doc’s correction notes for the full disproof of earlier guesses):
| Field | What it is |
|---|---|
strength / maxStrength |
Current and starting troop count. Casualties subtract from strength; maxStrength is read-only and never changes. |
hitPoints / hitPointsMax |
Current and maximum health for single figures. Confirmed by the game’s own status text (see below) — not a max/current pair split across two bytes as earlier notes assumed. |
combat |
Individual combat power (0–244). The main driver of fight outcomes. |
combatFlags |
A 2-bit flag, not a magic-level number: bit 0 = this unit’s attacks count as magical, bit 1 = this unit can only be harmed by magical power (“warded”). Earlier docs guessed the warding gate was armor == 255 — it isn’t; the two rosters barely overlap (13 vs. 41 entities). |
staminaMax / stamina |
A movement-fatigue counter, unrelated to combat. 255 means “never tires” — the tireless roster is exactly the Nazgûl, Glorfindel, Gandalf the White, ents, and huorns. |
obedience |
The percent chance a force accepts a player move order — see below. |
race |
Selects which battle-sprite set (FRML) the entity uses; see Characters & Mobs for how that art is recolored per race. |
spriteClass |
Selects the strategic-map icon; see the Icon Gallery for the full 30-icon atlas and its confirmed cell-selection formula. |
“Morale” isn’t a stored field
Section titled ““Morale” isn’t a stored field”The status screen and the Palantir both compute morale on the fly rather
than storing it: an army’s morale word (poor/fair/good/excellent) comes from
strength * 4 / maxStrength indexing a 4-band lookup table; a lone figure’s
condition word (near death / gravely wounded / wounded / slightly wounded /
hale and hardy) comes from hitPoints * 4 / hitPointsMax. That second table
is itself confirmation that hitPoints/hitPointsMax really is health —
the game only ever describes health in those terms.
Obedience: not a faction flag
Section titled “Obedience: not a faction flag”obedience was originally guessed to be a faction/loyalty enum, with value
70 glossed as “conflicted, might betray.” That’s wrong: it’s a straight
percentage chance the currently-selected force accepts a move order,
computed once at the mouse-command handler as
P(obey) = (obedience - 2) / 96, rand-tested every time you give an order.
| Value | P(obey) | Who |
|---|---|---|
| 0 | 0% | Every evil force — Nazgûl, orcs, trolls, Sauron, Saruman, balrogs |
| 1 | 0% | Generic good armies and unrecruited leaders (Dáin, Théoden, Denethor, etc. before you recruit them) |
| 3 | 1% | Elrond, Círdan, Tom Bombadil, Bilbo, Galadriel, Treebeard, Radagast |
| 4 | 2% | Glorfindel |
| 40 | 40% | Gollum |
| 70 | 71% | Boromir |
| 99 | 100% | The Fellowship and every recruited leader |
Boromir is the one member of the Fellowship who isn’t fully reliable —
about three orders in ten are refused, permanently, for the entire game. This
value is hard-coded and immutable: nothing in the executable ever writes
70 to his record, and the game’s normal recruitment promotion (which
snaps any 1 up to 99) explicitly skips anyone whose value is already 4
or higher, so his 70 survives untouched no matter what else happens to
his record. It isn’t a script event or a hidden betrayal mechanic —
it’s simply how reliably Boromir, specifically, follows orders, for the
whole game.
Combat stat examples
Section titled “Combat stat examples”A sample across the roster, showing how the confirmed fields play out for familiar names:
| Entity | Combat | Warded? | Hit points | Tireless? | Obedience |
|---|---|---|---|---|---|
| Sauron | 244 | Yes | 9 / 9 | No (55) | 0% |
| The Nazgûl Lord | 30 | Yes | 5 / 5 | Yes | 0% |
| Gandalf the White | 50 | Yes | 9 / 9 | Yes | 100% |
| Gandalf (Grey) | 20 | Yes | 6 / 6 | No (56) | 100% |
| Elrond | 99 | Yes | 9 / 9 | No (40) | 1% |
| Aragorn | 9 | No | 6 / 6 | No (44) | 100% |
| Boromir | 7 | No | 5 / 5 | No (44) | 71% |
| Frodo | 4 | No | 7 / 7 | No (40) | 100% |
| Sam | 3 | No | 5 / 5 | No (32) | 100% |
| Tom Bombadil | 99 | Yes | 9 / 9 | Never moves | 1% |
For how these stats resolve into an actual battle, see Combat & Events.