Behind the numbers.
This reference uses the published game release identified below. Recruitment paths determine which units appear; the mere presence of a unit file does not.
How damage works
A weapon supplies a damage amount and a damage type. The target’s active armor profile tells the game what percentage of that type it receives. A type is a rules category, not a promise about the weapon’s appearance: inspect the actual weapon profile instead of assuming every sword or arrow behaves alike.
For a simple hit with no other effects:
Damage received = weapon damage × armor percentage ÷ 100.
For example, a 60-damage PIERCE hit against 50% PIERCE armor deals 30 damage before other modifiers. At 150%, that same hit deals 90. Lower percentages protect the target better. DEFAULT covers damage types without a specific entry in that profile.
What the damage types mean
| Game identifier | Typical use | What to check |
|---|---|---|
| SLASH | Sword and other conventional melee attacks | The target’s SLASH percentage; it is not automatically effective against every infantry unit. |
| PIERCE | Arrows and other piercing projectiles | PIERCE armor and any additional damage components on upgraded ammunition. |
| SPECIALIST | Many pike and spear attacks | Often relevant against cavalry and large targets, but the target’s armor and weapon bonuses determine the result. |
| CAVALRY | Many mounted melee attacks | A horseman’s normal attack can use this category; it is separate from trampling. |
| CRUSH | Trampling and collision damage | The target’s CRUSH armor and the attacker’s trample settings. |
| SIEGE | Many siege-engine attacks | Check both the weapon’s target restrictions and the target’s SIEGE armor. |
| HERO / HERO_RANGED | Many hero melee / ranged attacks | Heroes may use different damage types for different weapons and abilities. |
| STRUCTURAL | Many defensive-structure attacks | The target’s STRUCTURAL armor, rather than assuming a tower shot is PIERCE. |
| FLAME / FROST / MAGIC | Fire, frost and magical damage components | Each component uses its own armor entry; an upgraded arrow can deal more than one type. |
These are common uses, not restrictions. The identifiers on the unit’s weapon page are authoritative for that weapon. Other engine types can appear in special effects.
What is trample?
Trample is damage caused by a moving unit running over an eligible target. For cavalry, it is distinct from stopping to fight with a sword or spear. The game uses dedicated crush settings, including minimum speed and slowdown when passing through targets; the ordinary weapon’s range and damage do not describe the whole charge.
Pikes can also have crush retaliation: a separate weapon that hurts an attacker trying to run them over. Surviving a charge, knocking a target down and dealing damage are different parts of the interaction. A CRUSH armor percentage alone does not tell you whether a unit can be trampled or how safely cavalry can pass through it.
Why a battle can differ from this calculation
- Stances, leadership, abilities, upgrades, levels and other modifiers can change damage or armor.
- One attack may contain multiple damage components. Resolve each against its own armor type; do not add mutually exclusive upgrade variants together.
- Splash radius determines which nearby targets can be hit. Damage per hit is not damage per battalion or damage per second.
- Animation timing, reloads, movement, formation and target selection affect how many hits actually land.
- Conditional profiles are alternatives. Comparing an upgraded profile does not automatically apply every other upgrade or buff.
Use the wiki to understand a matchup and form a testable expectation. It is not a full combat simulator. The current unit tables do not yet provide a complete trample model or automatically resolve all temporary modifiers.
Published: 2026-10-18. Game inputs verified against the launcher release manifest. Local experimental changes are excluded.
Release manifest: 36b9b8740bf0b8d6b3b4c8852a3740b2974486967ec0e17bd11c4f39ac5138cb
Snapshot fingerprint: 398ffad3c6c08ae2
How the roster is traced
Playable faction → starting builder (including faction-specific replacements) → human construction menu → building → upgraded recruitment menus → unit. Fortress layouts and player hero lists provide additional entry points. AI menus and incompatible faction upgrades are filtered out.
Hordes are resolved to their soldier payloads. Health, weapons and armor come from those soldier definitions. Every included unit retains its recruitment path and source locations.
Numbers shown as Unknown were not resolved. They do not mean zero. Range is measured in engine units; weapon damage is before armor. The guide does not infer reliable DPS from raw weapon delays alone.
Current coverage
| Faction / era | Units & heroes | Structures |
|---|---|---|
| Arthedain | 21 | 13 |
| Arnor | 18 | 13 |
| Gondor | 23 | 16 |
| Ithilien | 16 | 5 |
| Dol Amroth | 22 | 11 |
| Edoras | 24 | 13 |
| Hornburg | 24 | 9 |
| Erebor · War of the Ring | 36 | 13 |
| Erebor · Thrór's reign | 33 | 13 |
| Ered Luin | 29 | 12 |
| Lothlórien | 20 | 13 |
| Lórinand | 20 | 13 |
| Rivendell | 29 | 15 |
| Lindon | 32 | 14 |
| The Shire | 26 | 15 |
| Woodland Realm | 25 | 14 |
| Dorwinion | 23 | 11 |
| Mordor | 29 | 7 |
| Minas Morgul | 34 | 10 |
| Annatar | 24 | 7 |
| Isengard | 30 | 8 |
| White Hand | 32 | 7 |
| Misty Mountains | 26 | 13 |
| Gundabad | 28 | 12 |
| Moria | 16 | 11 |
| Dol Guldur | 19 | 18 |
| Angmar | 24 | 14 |
| Carn Dûm | 24 | 10 |
| Haradwaith | 32 | 10 |
| Rhûn | 22 | 7 |
Known boundaries
- This dataset comes from the published Realms 0.9.3 beta release; it excludes local Nightly edits.
- Statistics are baseline values; conditional weapons and armor profiles are listed separately.
- Tooltips may be stale; raw behavior properties are supplied for verification.
- Hero template eligibility may have additional era or fortress-button restrictions.
- Map-specific recruitment, spells and scripted unlocks need separate coverage review.
- The released Rivendell bow-only recruitment button refers to absent ArnorRangerHordeBows. This stale entry is excluded; the normal Rangers remain listed.
331 faction/AI-incompatible recruitment paths were rejected. 12736 object definitions are outside the indexed roster, including structures, props, effects and unused units.
Extraction issues to review (0)
These are visible so incomplete paths cannot be mistaken for a verified complete roster.
Missing statistics and custom hero exclusions
[
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionarthedain",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionnumenor",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionmen",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionithilien",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factiondolamroth",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionrohan",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionhornburg",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factiondwarves-upgrade-lotrerebor",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factiondwarves-upgrade-throrerebor",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factioneredluin",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionelves",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionlorinand",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionarnor",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionlindon",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionshire",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionmirkwood",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factiondorwinion",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionmordor",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionmorgul",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionannatar",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionisengard",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionwhitehand",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionwild",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factiongundabad",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionmoria",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionguldur",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionrhudaur",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factioncarndum",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionangmar",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"detail": "Custom hero statistics vary by player design.",
"faction": "factionrhun",
"kind": "custom-hero",
"object": "CreateAHero"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "AngmarNecromancerClassicHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "AngmarShadePorter"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "DolAmrothPorter"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "DwarvenArcah"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "DwarvenCarc"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "DwarvenEredLuinRangerHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "DwarvenEredLuinRangerHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "DwarvenPorter"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "DwarvenRoac"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "ElvenAxeElfHorde_Recruited"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "ElvenAxeElfHorde_Recruited"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "ElvenGaladrielLorien"
},
{
"field": "cost",
"kind": "unknown-stat",
"object": "ElvenGaladrielLorien"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "ElvenPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "ElvenRivendellArcherHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "ElvenRivendellArcherHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "ElvenRivendellKnightHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "ElvenYoungGaladrielLorien"
},
{
"field": "cost",
"kind": "unknown-stat",
"object": "ElvenYoungGaladrielLorien"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "GuldurBrokenRabbleHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "GuldurBrokenRabbleHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "GuldurGreatSpider"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "GuldurPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "HaradMahudHeadhunterHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "HaradPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "IsengardOrcFighterHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "IsengardOrcFighterHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "IsengardPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "IsengardUrukCrossbowHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "LamedonClansmenHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "LamedonClansmenHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "LindonKnightHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MenPorter_FS"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "MirkwoodOutriderHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MirkwoodOutriderHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MirkwoodPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "MirkwoodRangerHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MirkwoodRangerHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "MirkwoodSpearHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MirkwoodSpearHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "MirkwoodWardenHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MirkwoodWardenHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MordorAnnatar"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "MordorFighterHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MordorFighterHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MordorPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "MordorSauron_RingHero"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "MorgulSorcererHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "MoriaDurinsBane_FS"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RhovanionPorter"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RivendellPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "RohanGenericEnt"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RohanGenericEnt"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "RohanPeasantHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RohanPeasantHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RohanPorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "RohanRohirrimArcherHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RohanRohirrimArcherHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RohanRohirrimHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "RohanRoyalGuardMountedHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "ShireBucklandBraveHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "ShireBucklandBraveHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "ShirePorter"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "ShireTookArcherHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "ShireTookArcherHorde"
},
{
"field": "health",
"kind": "unknown-stat",
"object": "TookArcherHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "TookArcherHorde"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "WildPorter"
},
{
"field": "range",
"kind": "unknown-stat",
"object": "WildSmaug"
}
]