# Cairn 2e — damage after armour

**R21 · Intermediate · Scoped component**

## Question and scope

Cairn 2e subtracts armour from damage. For a d8 hit against armour 2, how often does no damage get through? Predict what should happen when the raw roll is 1.

Source sections are linked under Rules below; primary-source review is recorded in the release dossier. Independent human and browser/usability review are separate gates.

## Inputs and model limits

Fixed d8 raw damage; integer armour 0–3, default 2. No HP, STR, scars, recovery, or special attack modifiers.

## Complete runnable model

Subtract armour first. `.clamp(0, 8)` floors negative values at zero and puts a ceiling of 8 on the result. The ceiling here is deliberately at the original die maximum, so it cannot reduce any legitimate post-armour result. Probabilities of all floored results collect at zero.

```dice
armour = 2
raw = d(8)
damage = (raw - armour).clamp(0, 8)
output("Damage after armour", damage)
output("No damage gets through", damage.pmf(0))
```

## Reading the report and independent checks

Raw 1 and 2 both become zero: probability 2/8 = 1/4. The remaining values 1–6 each have probability 1/8. The mean is (1+2+3+4+5+6)/8 = 21/8, not raw mean 4.5 minus 2: flooring changes the calculation.

## Safe changes

Use armour 3, within Cairn’s cap. No damage becomes 3/8 and mean damage 15/8.

## Composition and boundary checks

Apply armour 2 to the mixed-weapon maximum from L16. Answer: join dice, select maximum, subtract, then clamp. Chance of no damage is (2/6)(2/8) = 1/12. Do not armour each weapon and add the results.

Do not combine separate marginal reports and assume they preserve the same
rolled faces. When an event depends on several properties of one roll, keep
those properties together inside a single classifier or pool callback.

## Rules

[Cairn second edition, core rules](https://cairnrpg.com/second-edition/players-guide/core-rules/), Armor and Attack Modifiers. Only this damage component; no HP, STR, scars, impairment, or enhancement unless explicitly stated. Armour inputs here are integers 0–3.

## Related learning

[Lesson L19](../tutorial/19-armour-floor.html) explains the modelling idea step by step.
[Cookbook index](index.html) offers both game and mechanic views of these same recipes.
