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.

Pairs with the stunt-economy pillar for the full math walkthrough — including the symmetry argument that explains why TN=11 is the independence-equivalence sweet spot.