Wesnoth Damage and Unit Efficiency Calculator
Simulate any Battle for Wesnoth attack: exact chance to hit, damage per strike, full HP outcome distribution and chance to kill for both sides, with terrain defense, time of day, resistances and weapon specials. Then see what the exchange costs in gold — cost per HP, damage per gold and the gold-for-gold trade ratio. Mainline 1.18, Default era.
Part of this link referred to a unit that is not in the current dataset (Wesnoth 1.18.7). Everything else was kept.
Pick two units, a terrain and a time of day. Get the exact chance to hit, damage per strike and chance to kill for both sides.
Attacker
Attacking unit
Orcish Grunt
Northerners · Level 1
Rebels · Level 1
Loyalists · Level 1
Knalgan Alliance · Level 1
Undead · Level 1
Drakes · Level 1
Loyalists · Level 2
Loyalists · Level 3
Loyalists · Level 4
Rebels · Level 2
Rebels · Level 3
Rebels · Level 4
Northerners · Level 0
Northerners · Level 2
Northerners · Level 3
Undead · Level 0
Undead · Level 2
Undead · Level 3
Knalgan Alliance · Level 2
Knalgan Alliance · Level 3
Drakes · Level 2
Drakes · Level 3
Dunefolk · Level 1
Dunefolk · Level 2
Dunefolk · Level 3
Your own numbers
No mainline Default-era unit matches that.
Type to search. Accents and capitals are ignored.
Choosing a ranged attack forces the defender to answer at range, or not at all.
Only affects how likely the defender is to hit back. Your own terrain never changes your chance to hit.
Common matchups
Custom unit
Weapon specials
Player-facing defense: higher is harder to hit.
Resistances
Advanced
Player-facing defense: higher is harder to hit. Use it for terrains or mods outside the fourteen above.
Halves this unit's damage from the first strike.
No effect inside the exchange; it shows up in the post-combat note.
Doubles this attack's damage while an unincapacitated enemy of the target stands directly opposite.
Used to work out whether this fight advances the unit.
Clamped to this unit's maximum of 38 HP.
0% damage
Leadership only helps units of a lower level, so this adds nothing.
Defender
Defending unit
Elvish Fighter
Northerners · Level 1
Rebels · Level 1
Loyalists · Level 1
Knalgan Alliance · Level 1
Undead · Level 1
Drakes · Level 1
Loyalists · Level 2
Loyalists · Level 3
Loyalists · Level 4
Rebels · Level 2
Rebels · Level 3
Rebels · Level 4
Northerners · Level 0
Northerners · Level 2
Northerners · Level 3
Undead · Level 0
Undead · Level 2
Undead · Level 3
Knalgan Alliance · Level 2
Knalgan Alliance · Level 3
Drakes · Level 2
Drakes · Level 3
Dunefolk · Level 1
Dunefolk · Level 2
Dunefolk · Level 3
Your own numbers
No mainline Default-era unit matches that.
Type to search. Accents and capitals are ignored.
Picked automatically as the defender's best answer at the attacker's range until you change it.
This is the one that drives your chance to hit.
Most attack decisions are about finishing a wounded unit. Set it to max for a fresh one.
Common matchups
Custom unit
Weapon specials
Player-facing defense: higher is harder to hit.
Resistances
Advanced
Player-facing defense: higher is harder to hit. Use it for terrains or mods outside the fourteen above.
Halves this unit's damage from the first strike.
No effect inside the exchange; it shows up in the post-combat note.
Used to work out whether this fight advances the unit.
Clamped to this unit's maximum of 33 HP.
0% damage
Leadership only helps units of a lower level, so this adds nothing.
Battlefield
Makes the hex behave one step brighter, never brighter than full day.
Midday is not in the default six-phase cycle; it appears in campaigns and custom schedules.
Lawful bonus in play: -25%
Multiplayer scales the XP a unit needs down to 70%. This unit advances at 29 XP.
This kill advances Orcish Grunt — 29 XP under Multiplayer (70%) rules, and it heals fully on advancing.
Chance to kill
36.0%
Expected damage 12.5 against 20 HP.
Chance the attacker dies
Cannot die
4 strikes × 5 max = 20 damage, against 38 HP.
HP outcome distribution
At 8 HP remaining: attacker 29.2%, defender 36.0%.
Point at a bar to read its exact probability.
The average is not the outcome. This is every result the exchange can end on, and how likely each is.
Orcish Grunt attacking
Chance to hit
60%
Damage per strike
11
Strikes
2
Expected damage
12.5
Expected HP after
29.2 / 38
Expected HP drained back
0.0
XP for the kill
8
XP for surviving
1
Elvish Fighter defending
Chance to hit
60%
Damage per strike
5
Strikes
4
Expected damage
8.8
Expected HP after
7.5 / 33
XP for the kill
8
XP for surviving
1
Chance neither dies
64.0%
Chance the attacker takes nothing
16.0%
Gold trade ratio
1.91
Favourable
Chance the defender ends up poisoned
0%
Chance the defender ends up slowed
0%
Every point of HP you remove is worth the target's cost per HP; every point you lose is worth yours. Above 1.00, the exchange makes you money.
Drain has no effect on undead, mechanical or elemental units.
Poison has no effect on undead, mechanical or elemental units.
Plague has no effect on undead, mechanical or elemental units.
A kill with this weapon raises a Walking Corpse on the killer's side.
This weapon turns the target to stone: it can neither move nor attack.
Berserk: the fight continues until one side dies, up to 30 rounds.
Swarm: 0 of 0 strikes at 38/38 HP, fixed when the fight starts.
Swarm: 0 of 0 strikes at 20/33 HP, fixed when the fight starts.
The engine never reduces a hit below 1 damage, however high the resistance.
A 0-damage weapon deals nothing; the minimum-1 rule does not apply to it.
Poison costs 8 HP next turn and never takes a unit below 1 HP.
Strike order: A D A D D D
How Orcish Grunt's damage is worked out
| Step | Value |
|---|---|
| Base damage | 9 (sword, blade) |
| Time of day | chaotic at First Watch → +25% |
| Resistance | Elvish Fighter takes 100% → ×100 |
| Combined multiplier | bonus = 12,500 / 10,000 |
| Rounding | ties round toward the base damage → 4,999 |
| Final damage per strike | 11 |
| Strikes | 2 |
| Chance to hit | 60% (Elvish Fighter on Flat, 40% defense) |
How Elvish Fighter's damage is worked out
| Step | Value |
|---|---|
| Base damage | 5 (sword, blade) |
| Time of day | neutral → no change |
| Resistance | Orcish Grunt takes 100% → ×100 |
| Combined multiplier | bonus = 10,000 / 10,000 |
| Rounding | ties round toward the base damage → 4,999 |
| Final damage per strike | 5 |
| Strikes | 4 |
| Chance to hit | 60% (Orcish Grunt on Flat, 40% defense) |
Terrain defense — where each unit would rather stand
| Terrain | Attacker defense | Defender defense | Your chance to hit there |
|---|---|---|---|
| 0% | 0% | 100% | |
| 20% | 20% | 80% | |
| 30% | 30% | 70% | |
| 30% | 30% | 70% | |
| Current | 40% | 40% | 60% |
| 30% | 30% | 70% | |
| 50% | 60% | 40% | |
| 50% | 50% | 50% | |
| 60% | 60% | 40% | |
| 60% | 60% | 40% | |
| 60% | 60% | 40% | |
| 40% | 30% | 70% | |
| 20% | 30% | 70% | |
| 40% | 50% | 50% |
Resistances
| Damage type | Attacker | Defender |
|---|---|---|
| blade In use | 0% (takes 100%) | 0% (takes 100%) |
| pierce | 0% (takes 100%) | 0% (takes 100%) |
| impact | 0% (takes 100%) | 0% (takes 100%) |
| fire | 0% (takes 100%) | 0% (takes 100%) |
| cold | 0% (takes 100%) | 0% (takes 100%) |
| arcane | 0% (takes 100%) | -10% (takes 110%) |
Level 1 is the recruitable tier, which is what the gold argument is usually about.
Measured against
Orcish Grunt
Northerners · Level 1
Rebels · Level 1
Loyalists · Level 1
Knalgan Alliance · Level 1
Undead · Level 1
Drakes · Level 1
Loyalists · Level 2
Loyalists · Level 3
Loyalists · Level 4
Rebels · Level 2
Rebels · Level 3
Rebels · Level 4
Northerners · Level 0
Northerners · Level 2
Northerners · Level 3
Undead · Level 0
Undead · Level 2
Undead · Level 3
Knalgan Alliance · Level 2
Knalgan Alliance · Level 3
Drakes · Level 2
Drakes · Level 3
Dunefolk · Level 1
Dunefolk · Level 2
Dunefolk · Level 3
Your own numbers
No mainline Default-era unit matches that.
Type to search. Accents and capitals are ignored.
Dusk on purpose: the lawful bonus is 0, so lawful and chaotic units get neither a bonus nor a penalty. Liminal units are the exception — twilight is exactly when they gain +25 %.
Units to compare
4 of 6 — the full ranking is below.
Advanced
Feeds the true cost: what you paid plus one gold per level per turn of upkeep.
Custom unit
Weapon specials
Player-facing defense: higher is harder to hit.
Resistances
Units to compare
| Unit | Gold trade ratio | HP per gold | Expected damage taken back | Strikes to kill the target | Attacks to kill the target |
|---|---|---|---|---|---|
| Northerners · level 1 · 12 gold · 38 HP | 1.00 | 3.17 | 10.8 | 5 | 4 |
| Rebels · level 1 · 14 gold · 33 HP | 0.83 | 2.36 | 10.8 | 8 | 4 |
| Loyalists · level 1 · 14 gold · 36 HP | 0.95 | 2.57 | 10.8 | 6 | 4 |
| Knalgan Alliance · level 1 · 16 gold · 38 HP | 0.96 | 2.38 | 9.8 | 6 | 4 |
Press a row to open that unit in the Attack tab
Units ranked by gold efficiency
| Undead | 1 | 23 | 27 | 0.852 | fangs | 9.0 | 0.39 | 27 | 1.17 | 0.46 | 1 | 33 | |
| Loyalists | 1 | 14 | 33 | 0.424 | bow | 10.8 | 0.77 | 33 | 2.36 | No counterattack | 1 | 24 | |
| Loyalists | 1 | 17 | 34 | 0.500 | sword | 10.8 | 0.64 | 43 | 2.53 | 0.81 | 1 | 27 | |
| Undead | 1 | 16 | 28 | 0.571 | chill wave | 14.0 | 0.88 | 28 | 1.75 | No counterattack | 1 | 26 | |
| Drakes | 1 | 21 | 42 | 0.500 | fire breath | 14.4 | 0.69 | 42 | 2.00 | No counterattack | 1 | 31 | |
| Drakes | 1 | 19 | 43 | 0.442 | spear | 14.4 | 0.76 | 54 | 2.84 | 1.05 | 1 | 29 | |
| Drakes | 1 | 17 | 39 | 0.436 | war blade | 12.6 | 0.74 | 43 | 2.53 | 0.82 | 1 | 27 | |
| Drakes | 1 | 16 | 32 | 0.500 | slam | 7.2 | 0.45 | 36 | 2.25 | 0.47 | 1 | 26 | |
| Dunefolk | 1 | 17 | 35 | 0.486 | tar bomb | 12.6 | 0.74 | 35 | 2.06 | No counterattack | 1 | 27 | |
| Dunefolk | 1 | 13 | 32 | 0.406 | mace | 9.0 | 0.69 | 29 | 2.23 | 0.58 | 1 | 23 | |
| Dunefolk | 1 | 18 | 33 | 0.545 | composite bow | 10.8 | 0.60 | 33 | 1.83 | No counterattack | 1 | 28 | |
| Dunefolk | 1 | 14 | 33 | 0.424 | composite bow | 10.8 | 0.77 | 33 | 2.36 | No counterattack | 1 | 24 | |
| Dunefolk | 1 | 16 | 29 | 0.552 | spear | 9.6 | 0.60 | 26 | 1.63 | 0.55 | 1 | 26 | |
| Dunefolk | 1 | 17 | 41 | 0.415 | scimitar | 13.2 | 0.78 | 51 | 3.00 | 1.20 | 1 | 27 | |
| Knalgan Alliance | 1 | 16 | 38 | 0.421 | axe | 12.6 | 0.79 | 48 | 3.00 | 0.96 | 1 | 26 | |
| Knalgan Alliance | 1 | 19 | 42 | 0.452 | spear | 9.0 | 0.47 | 53 | 2.79 | 0.64 | 1 | 29 | |
| Knalgan Alliance | 1 | 17 | 34 | 0.500 | thunderstick | 10.8 | 0.64 | 34 | 2.00 | No counterattack | 1 | 27 | |
| Knalgan Alliance | 1 | 19 | 34 | 0.559 | berserker frenzy | 9.6 | 0.51 | 43 | 2.26 | 0.55 | 1 | 29 | |
| Rebels | 1 | 17 | 29 | 0.586 | bow | 12.0 | 0.71 | 29 | 1.71 | No counterattack | 1 | 27 | |
| Rebels | 1 | 14 | 33 | 0.424 | sword | 12.0 | 0.86 | 33 | 2.36 | 0.83 | 1 | 24 | |
| Rebels | 1 | 18 | 32 | 0.563 | sword | 7.2 | 0.40 | 32 | 1.78 | 0.37 | 1 | 28 | |
| Rebels | 1 | 15 | 26 | 0.577 | entangle | 4.8 | 0.32 | 26 | 1.73 | No counterattack | 1 | 25 | |
| Loyalists | 1 | 16 | 28 | 0.571 | saber | 9.6 | 0.60 | 22 | 1.38 | 0.55 | 1 | 26 | |
| Knalgan Alliance | 1 | 14 | 30 | 0.467 | sling | 6.0 | 0.43 | 30 | 2.14 | No counterattack | 1 | 24 | |
| Undead | 1 | 19 | 18 | 1.056 | touch | 7.2 | 0.38 | 36 | 1.89 | 0.43 | 1 | 29 | |
| Undead | 1 | 16 | 33 | 0.485 | claws | 7.2 | 0.45 | 37 | 2.31 | 0.49 | 1 | 26 | |
| Northerners | 1 | 13 | 26 | 0.500 | spear | 14.4 | 1.11 | 26 | 2.00 | 0.84 | 1 | 23 | |
| Northerners | 1 | 13 | 31 | 0.419 | spear | 12.6 | 0.97 | 31 | 2.38 | 0.88 | 1 | 23 | |
| Knalgan Alliance | 1 | 23 | 34 | 0.676 | claws | 14.4 | 0.63 | 34 | 1.48 | 0.75 | 1 | 33 | |
| Loyalists | 1 | 19 | 38 | 0.500 | mace | 13.2 | 0.69 | 76 | 4.00 | 1.19 | 1 | 29 | |
| Loyalists | 1 | 24 | 38 | 0.632 | spear | 21.6 | 0.90 | 48 | 2.00 | 0.64 | 1 | 34 | |
| Loyalists | 1 | 20 | 24 | 0.833 | missile | 14.7 | 0.74 | 24 | 1.20 | No counterattack | 1 | 30 | |
| Loyalists | 1 | 14 | 36 | 0.389 | trident | 10.8 | 0.77 | 36 | 2.57 | 0.70 | 1 | 24 | |
| Rebels | 1 | 15 | 33 | 0.455 | spear | 9.0 | 0.60 | 33 | 2.20 | No counterattack | 1 | 25 | |
| Dunefolk | 1 | 15 | 31 | 0.484 | chakri | 8.4 | 0.56 | 31 | 2.07 | No counterattack | 1 | 25 | |
| Northerners | 1 | 14 | 33 | 0.424 | sword | 9.6 | 0.69 | 33 | 2.36 | 0.57 | 1 | 24 | |
| Northerners | 1 | 14 | 32 | 0.438 | bow | 10.8 | 0.77 | 32 | 2.29 | No counterattack | 1 | 24 | |
| Northerners | 1 | 17 | 26 | 0.654 | throwing knives | 5.4 | 0.32 | 26 | 1.53 | No counterattack | 1 | 27 | |
| Northerners | 1 | 12 | 38 | 0.316 | sword | 10.8 | 0.90 | 38 | 3.17 | 1.00 | 1 | 22 | |
| Knalgan Alliance | 1 | 14 | 33 | 0.424 | bow | 9.6 | 0.69 | 33 | 2.36 | No counterattack | 1 | 24 | |
| Drakes | 1 | 16 | 22 | 0.727 | curse | 10.5 | 0.66 | 22 | 1.38 | No counterattack | 1 | 26 | |
| Drakes | 1 | 15 | 26 | 0.577 | spear | 9.6 | 0.64 | 24 | 1.60 | 0.44 | 1 | 25 | |
| Undead | 1 | 15 | 34 | 0.441 | axe | 12.6 | 0.84 | 57 | 3.80 | 1.50 | 1 | 25 | |
| Undead | 1 | 14 | 31 | 0.452 | bow | 10.8 | 0.77 | 31 | 2.21 | No counterattack | 1 | 24 | |
| Undead | 1 | 13 | 28 | 0.464 | touch | 12.6 | 0.97 | 28 | 2.15 | 0.79 | 1 | 23 | |
| Loyalists | 1 | 14 | 36 | 0.389 | spear | 12.6 | 0.90 | 36 | 2.57 | 0.95 | 1 | 24 | |
| Knalgan Alliance | 1 | 13 | 24 | 0.542 | dagger | 7.2 | 0.55 | 18 | 1.38 | 0.44 | 1 | 23 | |
| Northerners | 1 | 13 | 42 | 0.310 | fist | 8.4 | 0.65 | 53 | 4.08 | 0.87 | 1 | 23 | |
| Northerners | 1 | 17 | 32 | 0.531 | fangs | 9.0 | 0.53 | 32 | 1.88 | 0.50 | 1 | 27 | |
| Rebels | 1 | 20 | 52 | 0.385 | crush | 15.6 | 0.78 | 52 | 2.60 | 0.89 | 1 | 30 |
Every point of HP you remove is worth the target's cost divided by its HP; every point you lose is worth yours divided by yours. Above 1.00, the exchange makes you money.
The seven Default-era factions at a glance
| Faction | Recruits | Cheapest recruit | Priciest recruit | Alignments | Notable resistances |
|---|---|---|---|---|---|
| Loyalists | 8 | Spearman (14 gold) | Horseman (24 gold) | lawful | The most even spread in the game; the exceptions are the Heavy Infantryman's 50% blade armour and the Spearman's firststrike. |
| Rebels | 7 | Elvish Fighter (14 gold) | Wose (20 gold) | lawful, neutral | Elves take 10% extra arcane damage but sit at 60–70% defense in forest. |
| Northerners | 7 | Goblin Spearman (9 gold) | Orcish Assassin (17 gold) | neutral, chaotic | Orcs resist nothing at all — 100% across the board; trolls regenerate instead. |
| Undead | 7 | Walking Corpse (8 gold) | Ghost (19 gold) | chaotic | Skeletons resist blade and pierce and are shredded by impact, fire and arcane. Only the undead among them are immune to poison and drain: the Dark Adept and the Vampire Bat are not. |
| Knalgan Alliance | 8 | Thief (13 gold) | Gryphon Rider (23 gold) | neutral, chaotic | Dwarves are uniformly tough; their outlaws are not — a Thief takes 130% blade. |
| Drakes | 6 | Saurian Skirmisher (15 gold) | Drake Burner (21 gold) | lawful, chaotic | Fireproof at 50% and badly hurt by cold; the saurians in the same recruit list invert it, at 120% fire. |
| Dunefolk | 7 | Dune Herbalist (13 gold) | Dune Rider (18 gold) | lawful, neutral, liminal | Mixed, with impact attacks on three recruits and a healer in the list. |
Every point of HP you remove is worth the target's cost divided by its HP; every point you lose is worth yours divided by yours. Above 1.00, the exchange makes you money.
Income
Each village pays the upkeep of this many unit levels for free.
Army
Loyal units pay no upkeep at all, whatever their level.
Defaults to 20 gold, the cost of recalling a veteran.
Net income
5 gold/turn
8 gold in, 3 out.
Gross income
8
Upkeep
3
Total unit levels paying upkeep
9
Levels supported free by villages
6
More levels you can field for free
0
Unit levels you can sustain at zero net income
14
Turns until you can afford it
0
Wesnoth 1.18.7 · mainline · Default era
Unit stats, resistances and terrain defenses are extracted from the game's own data files at the tag below, not typed by hand.
Wesnoth damage calculator. Chance to hit, chance to kill, and the gold value of the trade.
What this Wesnoth calculator answers that the attack dialog does not
How Wesnoth resolves one attack, step by step
The damage formula, and how round_damage breaks a tie
- = Base damage per strike from the weapon, plus 1 if a trait applies — strong on a melee attack, dextrous on a ranged one. Undead, mechanical and elemental units take no traits at all.
- = Time-of-day modifier in percentage points: the lawful bonus for a lawful unit, its negative for a chaotic one, 0 for a neutral one, and 25 − abs(lawful bonus) for a liminal one, which peaks at +25 in twilight and bottoms out at −5 deep underground
- = Leadership bonus: 25 times the level difference to the highest adjacent friendly leader, counted only when positive
- = The target's resistance value — the percentage of damage it TAKES. 100 is normal, 60 is resistant, 120 is vulnerable
- = Weapon-special multiplier — 2 for charge (which doubles what both sides deal), 2 for backstab, otherwise 1. It lands on the BASE damage and is truncated there, before the bonus is assembled; folding it into the bonus instead gives the same product and a different integer, because the rounding term flips once the bonus reaches the divisor
- = Divisor: 10000 normally, 20000 when the striking unit is slowed
- = The rounding term. It is half the divisor, minus 1 once the bonus reaches the divisor — which is what makes a tie fall toward the base damage instead of away from it
- = Gold trade ratio. c and h are cost in gold and maximum HP, for the target (t) and for your own unit (o). Above 1.00 the exchange makes you gold
How to use the three modes
Worked examples on the calculator's own numbers
The default matchup — Orcish Grunt into a wounded Elvish Fighter at first watch
Move the defender one hex into forest
Time of day, same matchup — when a fight stops being possible
| Time of day | Lawful bonus | Grunt damage | Chance to kill |
|---|---|---|---|
| Dawn | 0 | 9 × 2 | 0.0 % |
| Morning | +25 | 7 × 2 | 0.0 % |
| Dusk | 0 | 9 × 2 | 0.0 % |
| First watch | −25 | 11 × 2 | 36.0 % |
| Deep underground | −30 | 12 × 2 | 36.0 % |
Why the Skeleton wins the level-1 gold ranking, and why that is about the target
Effective HP — why a Dwarvish Fighter's 38 HP is worth 48
| Unit | Gold trade ratio | Effective HP | Effective HP per gold | True cost, 10 turns |
|---|---|---|---|---|
| Orcish Grunt | 1.00 | 38 | 3.17 | 22 |
| Elvish Fighter | 0.83 | 33 | 2.36 | 24 |
| Spearman | 0.95 | 36 | 2.57 | 24 |
| Dwarvish Fighter | 0.96 | 48 | 3.00 | 26 |
Slow — the modifier that does not do what its description says
Income and upkeep — what the army costs before you swing at anything
Terrain defense in the default matchup — Orcish Grunt against Elvish Fighter
| Terrain | Grunt defense | Elvish Fighter defense | Grunt's chance to hit |
|---|---|---|---|
| Deep water | 0 % | 0 % | 100 % |
| Shallow water | 20 % | 20 % | 80 % |
| Reef | 30 % | 30 % | 70 % |
| Swamp | 30 % | 30 % | 70 % |
| Flat | 40 % | 40 % | 60 % |
| Sand | 30 % | 30 % | 70 % |
| Forest | 50 % | 60 % | 40 % |
| Hills | 50 % | 50 % | 50 % |
| Mountains | 60 % | 60 % | 40 % |
| Village | 60 % | 60 % | 40 % |
| Castle | 60 % | 60 % | 40 % |
| Cave | 40 % | 30 % | 70 % |
| Frozen | 20 % | 30 % | 70 % |
| Mushroom Grove | 40 % | 50 % | 50 % |
Eight places the data and the screen disagree
- Reading a WML defense value as a defense. The data file stores the chance to be hit, and the game shows you `100 − value`. An Elvish Fighter's `forest=40` is 60 % defense on screen, not 40 %. Flip the polarity once and every terrain conclusion you draw after it is inverted.
- Giving the Elvish Fighter 70 % in forest. The 70 % belongs to the `woodland` movement type, which the Elvish Archer and the Elvish Shaman carry. The Fighter and the Scout are overridden down to 60 %, and the official How to play Rebels page reflects that carefully — it gives 70 % to the Archer and the Shaman by name and says only "good defense in forest" for the Fighter and the Scout. The conflation survives because all four share a faction, a race and the same movement-type name, and on the Fighter only the forest row is overridden at all. Rebels sit at 60–70 % in forest depending on the unit, never a flat 70.
- Expecting 1 XP for surviving a fight with a level-0 unit. You get 0. `kill_xp` has a level-0 special case worth 4 XP; `combat_xp` has none, so it is one XP per level of a surviving opponent and a level-0 opponent is worth nothing. Farming XP off Walking Corpses only works if you finish them.
- Halving the displayed damage for slow. Slow re-rounds against a divisor of 20000; it does not divide the integer you can see. A base 9 that shows 11 becomes 6 when slowed, not 5. The audit table prints the divisor so you can tell which path ran.
- Applying the modifiers one at a time, or putting the wrong ones together. The engine assembles `(100 + time of day + leadership) × resistance` and rounds once. Two ways to get this wrong: rounding after each step, or folding a weapon special into that bonus. `charge` and `backstab` multiply the base damage instead — a charging Horseman at first watch deals 14 the right way round and 13 the wrong one, from the same product, because the rounding term flips once the bonus reaches the divisor.
- Assuming an Elvish Archer has marksman. It does not. `marksman` arrives at level 2, on the Elvish Marksman. The level-1 Archer hits at whatever the terrain says, which is exactly why an Archer struggles against a unit in the mountains and its promotion does not.
- Treating 0 % defense as an easy target, or assuming water and swamp are 0 %. A 0 % row means the unit cannot be placed on that hex — the raw value is 100 and the row is there for reference. In the default matchup that is deep water alone. Shallow water and swamp are ordinary walkable hexes at 20 % and 30 %, and their rows are clickable like any other; reading them as 0 % turns two real defensive positions into imaginary free hits.
- Assuming everything on an undead recruit list is immune to poison and drain. Only the units of the undead race are. The Dark Adept is human and the Vampire Bat is a bat, and both take poison and both feed a drain attack normally. The official How to play Undead page does not say which recruits are which, and the calculator flags the immunity per unit instead.
Getting an argument settled with the numbers
- Read the ratio, not the damage. A trade that looks bad in HP can be good in gold, and the reverse is just as possible — cheap HP on the far side of a trade pulls every ratio down. The Skeleton's 12.6-for-6.0 damage trade against a Grunt looks like better than 2 to 1 and prices out at 1.50, because Grunt HP costs 0.316 gold a point against the Skeleton's 0.441. The Horseman is the same lesson from the other end: 21.6 damage dealt, the most in the tier, and an 0.64 ratio.
- Above 1.00 you are making gold; below it you are spending gold to make progress. Both can be correct. Spending gold to hold a village, to protect a unit two XP from advancing, or to finish a wounded level-2 that would otherwise heal is a decision the ratio informs and does not make. What it stops is spending gold by accident.
- Check the time of day before you check the positioning. A chaotic attacker swings 7 in the morning and 11 at first watch on the same weapon against the same target — and against a 20-HP defender that is the difference between 0.0 % and 36.0 % to kill. Waiting a phase is free; walking into a bad hex is not.
- One terrain step moves the odds further than it looks like it should. Moving the same Elvish Fighter from flat to forest cuts the Grunt's kill chance from 36.0 % to 16.0 % without changing a single point of damage. When you are deciding between finishing a kill this turn and standing somewhere better, run both hexes through the terrain table.
- Use effective HP when you are choosing who to put in front. A Dwarvish Fighter's 38 HP is worth 48 against blade because dwarves take 80 %. That column tells you which unit survives this attacker, which is a different question from which unit has the biggest number on its card.
- Sort the ranking by damage per gold when you are behind on gold, and by effective HP per gold when you are behind on board position. They are different orderings and they answer different problems. Of the twelve units at the head of the level-1 ranking, the Goblin Impaler leads on damage per gold at 1.11 while sitting eleventh on the trade ratio at 0.84; a Wose costs 20, carries 52 HP and trades at 0.89.
- Set the ranking's target before you trust the ranking. Every number in that mode is measured against one specific defender on one specific hex. Change the target and the order changes, which is the mode working correctly rather than a flaw in it.
- Remember what upkeep does to a plan. Upkeep is the unit's level, every turn, forever, and villages cover one level each. A second level-2 unit on six villages costs two gold a turn out of an eight-gold income — over ten turns that is more than the recruit price of a Spearman. The true-cost column prices exactly that.
- Paste the link, not the claim. The permalink carries every input you changed, and the recipient's saved state for that tab is skipped whenever the URL names one of its fields, so the matchup reopens as yours. A reply that links the exact exchange under discussion ends the argument; a reply that asserts a number restarts it.
What this calculator deliberately does not model
Wesnoth damage calculator — frequently asked questions
How is damage calculated in Battle for Wesnoth?
What determines the chance to hit in Wesnoth?
Does an Elvish Fighter get 70 % defense in forest?
How much XP do I get for surviving a fight?
What is the gold trade ratio?
Does slow just halve a unit's damage?
Does charge double the damage the defender deals back?
Which level-1 unit is the most gold-efficient?
My ratio came out at 0.85. Should I still attack?
Is this calculator free to use?
How accurate is it compared with the game?
Can I link a specific matchup in a forum reply?
Does it cover add-on eras, UMC campaigns or modded units?
Why do some terrains show 0 % defense?
How does upkeep work, and how many units can I hold?
Sources & References
- Wesnoth 1.18.7, src/actions/attack.cpp — the single-shot damage multiplier chain, the strike alternation and the firststrike precedence this calculator reproduces.
- Wesnoth 1.18.7, src/utils/math.hpp — round_damage, whose tie rule rounds toward the base damage and whose floor never lets a hit fall below 1.
- Wesnoth 1.18.7, data/core/macros/weapon_specials.cfg — the values behind backstab and charge (×2), drain (50%), poison (8 HP), berserk (30 rounds), magical (70%) and marksman (at least 60%).
- Wesnoth 1.18.7, data/core/units.cfg — the movement types whose resistance and terrain-defense rows every unit inherits.
- Wesnoth wiki, UnitsWML — the reference stating that a [defense] value is the chance to be hit and a [resistance] value is the percentage of damage taken, which is why this page shows 100 − value for both.