Diceplots → Games → Dragon Age (AGE system)
Dragon Age (AGE system) probability math — exact rationals over 3d6 + stunt die
Green Ronin's AGE system resolves every test with
3d6 + ability + focus vs. TN and a stunt die that
fires Stunt Points on a successful test where any two of the
three dice match. The engine answers the canonical AGE
question — "what's my actual chance of triggering a stunt at
TN N with ability mod A and focus F?" — with exact rationals,
computed over the 216-outcome 3d6 sample space.
The recurring AGE questions, in one click each
The two questions every AGE GM and player asks. Each links to a worked-out concept pillar.
-
When does P(stunt) ≠ P(success) × P(doubles)?
The naive estimate is exactly right at TN=11 with no modifiers and wrong everywhere else, because doubles cluster on the modal sums of 3d6. TN=10 sits 1/72 below independence, TN=12 sits 1/72 above. Worked out with exact rationals.
-
What's E[SP | stunt]?
The answer isn't the unconditional stunt-die mean (3.5). It's
217/48 ≈ 4.52— the doubles condition biases the stunt die toward higher faces. Combat manoeuvre economy (which usually requires 2-4 SP) plays out very differently than the back-of-envelope assumption.
The 3d6 + stunt-die mechanic
Every AGE test rolls three d6s — one designated as the stunt die (a different colour) — and adds the character's ability mod plus, when relevant, a focus modifier (typically +2 for trained skills):
roll = d6_1 + d6_2 + d6_stunt + ability_mod + focus_mod
Success: roll ≥ TN.
Stunt trigger: success
and
any two of the three dice show the same face. On a stunt, the
stunt die's face value becomes Stunt Points to spend on combat
manoeuvres (Lightning Attack, Knock Prone, Defensive Stance,
etc.) — each costs 1-6 SP and applies its effect.
The two-event conditional means
P(stunt) isn't separable into
P(success) × P(doubles) at most TN values. Doubles
configurations like (5, 5, b) have a different mean than
(1, 1, b), so the doubles distribution is centred tightly on
the modal sum (10-11). Picking a TN above 11 over-counts the
high-doubles families inside the success half; picking a TN
below 11 under-counts them.
Engine grammar
The 3d6 stunt analyzer is exposed as a direct API call rather than a strike URL — the inputs are integers (ability mod, focus mod, TN) rather than dice expressions:
{:ok, r} = Diceplots.Engine.analyze_3d6_test(ability_mod, focus_mod, tn)
# r.p_success → P(roll ≥ TN)
# r.p_doubles → P(any two of 3d6 match), unconditional
# r.p_stunt → P(success ∧ doubles)
# r.expected_sp_given_stunt → E[stunt die value | stunt fired]
# r.sum_pmf → per-sum probability mass over the 216 outcomes
The trigger rule defaults to
:success_and_doubles (the published AGE rule).
The optional fourth argument
:any_doubles models the house-rule variant that
fires SP on doubles regardless of success — useful for
tables that want stunts to be more common.
Worked examples
| Test context | Inputs | P(success) | P(stunt) |
|---|---|---|---|
| Routine task, untrained, TN 11 | (0, 0, 11) |
56/108 ≈ 51.9% | 56/216 ≈ 25.9% |
| Trained, ability +2, TN 13 | (2, 2, 13) |
~73% | ~32% |
| Hard task, untrained, TN 15 | (0, 0, 15) |
20/216 ≈ 9.3% | ~5% |
The success rates compound surprisingly fast with focus and ability mods because 3d6 has a much tighter distribution than d20 — the central sum range 9-12 carries ~50% of the mass. Modifiers shift the band; once you're above the modal range, P(success) climbs fast.
Damage rolls — the standard dice grammar
Combat damage in AGE is a standard dice expression
(weapon_dice + STR_mod, e.g.
2d6+3 for a longsword with +3 STR). The engine's
regular damage analyzer handles AGE damage rolls without any
special grammar:
- /strike/2d6+3 — longsword + STR damage distribution and per-HP-target kill probabilities.
- /strike/3d6+5 — heavier weapon with higher STR.
The Lightning Attack stunt (1 SP per extra attack) just adds
another instance of the weapon damage expression — composable
via the standard
+ operator in the comparison tool.
What the engine doesn't model yet
- Stunt-point spending economics: each manoeuvre's effect (extra damage, push, prone, defensive bonus) is qualitative game value rather than damage math. The engine reports the SP distribution; what to spend SP on is the player's call.
- Opposed tests: AGE contests where both sides roll 3d6 + ability and compare. The engine analyzes single tests against a fixed TN; opposed-test math composition is a future ship.
- Conviction / Threat dice: setting-specific narrative-resource mechanics that modify rolls. Out of scope for v1.