Concepts → XCOM 2 outcome model
·
The XCOM 2 outcome model — hit / crit / graze / miss
XCOM 2 splits each shot into four explicit outcomes. The displayed hit-chance is one of three probability buckets, not a binary hit/miss split. Once graze is on the table, the variance of low-percentage shots looks materially different from what the tooltip suggests.
The 4-way split
Edition / mod note: the four-bucket model
most cleanly applies under Long War 2, which
ships an explicit graze band that eats from the miss side.
Vanilla XCOM 2 rolls hit / crit / miss; graze
only appears as a dodge-mediated demotion — when a hit lands
on a target with a non-zero Dodge stat (Vipers etc.), the hit
can be demoted to a graze. The engine's
graze N% postfix supports both readings; pick
the value that matches your scenario.
Each shot rolls against four buckets:
-
Crit — full damage plus the weapon's flat
crit-damage bonus. Conditional on a hit:
P(crit) = P(hit) · crit_chance. Cannot fire on a graze (RAW). -
Hit (non-crit) — full damage in the
weapon's range.
P(hit non-crit) = P(hit) - P(crit). - Graze — half damage (floor). Under LW2, eats into the miss probability; under vanilla, it's a post-hit dodge demotion against targets with Dodge.
-
Miss — zero damage.
P(miss) = 1 - P(hit) - P(graze).
Engine syntax: 1d3+4 @ hit 65 crit 10 graze 15
writes a 5-7 damage assault rifle shot at 65% hit, 10%
crit-on-hit, 15% graze. The engine computes the exact-rational
mean and full PMF.
Crit damage convention: the engine defaults
to 5e dice-doubling on crit (the d20 tabletop convention).
XCOM 2's actual rule is a flat per-weapon crit-damage bonus
(typically +2-3 depending on weapon, plus modifiers like
Talon Rounds and the Biggest Booms perk) — not a multiplier.
For approximate cross-build comparisons, cscale 150
forces the crit branch to ~1.5× base damage,
which lines up with typical-weapon crit-damage shape but
isn't the in-game formula. Use this page's panels to compare
relative DPR shapes; absolute numbers will differ from
in-game.
Where graze actually shows up in the math
A 65% hit / 15% graze build looks like "you hit 65% of the time" in the tooltip but actually splits as:
- P(crit) = 0.65 · 0.10 =
9.75%(= 39/400) - P(non-crit hit) = 0.65 - 0.0975 =
55.25%(= 221/400) - P(graze) =
15%(= 60/400) - P(true miss) = 1 - 0.65 - 0.15 =
20%(= 80/400)
So the chance you deal some damage is 80%, not 65%. That's the graze contribution — soaking the bottom of the miss bucket into a half-damage outcome.
Side-by-side, same Assault Rifle shot without and with the graze model:
1d3+4 @ hit 65 crit 10
- 0 35.00%
- 1 0.00%
- 2 0.00%
- 3 0.00%
- 4 0.00%
- 5 19.50%
- 6 20.22%
- 7 20.94%
- 8 2.17%
- 9 1.44%
- 10 0.72%
1d3+4 @ hit 65 crit 10 graze 15
- 0 20.00%
- 1 0.00%
- 2 5.00%
- 3 10.00%
- 4 0.00%
- 5 19.50%
- 6 20.22%
- 7 20.94%
- 8 2.17%
- 9 1.44%
- 10 0.72%
The mean shifts up modestly (graze contributes 0.15 ·
E[floor(dmg/2)]), but the bigger story is the 0-bar
shrinking from 35% to 20%. For chained shots and per-mission
momentum, "do I deal any damage at all" matters more than
mean DPR.
The crit picture differs from D&D
In D&D 5e, crit is a face-range on the same d20 — nat 20 (or 19-20 with Champion) auto-hits and doubles dice. The same roll decides hit, miss, and crit.
In XCOM 2, crit is a separate post-hit roll. So:
- You can't crit a graze (different bucket entirely).
- You can't crit a miss (the hit roll has to succeed first).
- P(crit) is genuinely conditional — increasing hit chance also increases the crit rate, not just the hit rate.
Comparing a clean Squadsight Sniper Sharpshooter shot vs. a low-percentage flank attempt:
1d3+7 @ hit 35 crit 15
- 0 65.00%
- 1 0.00%
- 2 0.00%
- 3 0.00%
- 4 0.00%
- 5 0.00%
- 6 0.00%
- 7 0.00%
- 8 9.92%
- 9 10.50%
- 10 11.08%
- 11 1.75%
- 12 1.17%
- 13 0.58%
1d3+4 @ hit 95 crit 25
- 0 5.00%
- 1 0.00%
- 2 0.00%
- 3 0.00%
- 4 0.00%
- 5 23.75%
- 6 26.39%
- 7 29.03%
- 8 7.92%
- 9 5.28%
- 10 2.64%
The 95%-hit Squadsight shot has a much tighter distribution with a real damage floor; the 35%-hit flank is a long-tail Hail Mary with most of its mass at zero. Mean comparisons miss this entirely — the per-mission variance picture is what decides whether the shot is worth taking, and the same reliable-vs-nuke tradeoff that picks 5e weapons applies here at the per-shot level.
Composes with
The four-way outcome model is the per-shot substrate. Layer these on top:
-
Miss-streak protection. XCOM 2 modulates
per-shot hit chance by recent misses; the
streak / Luck-pool
pillar covers the state-carrying Markov walk that the
engine ships for this exact mechanic. The
attacks N streakpostfix composes with the per-shothit / crit / grazegrammar. -
Damage-roll variance per bullet. XCOM 2's
damage range comes from a uniform integer roll (5-7 = pick
one of
{5, 6, 7}uniformly), modeled here as1d3+4— exact across the displayed range. Bonus-dice weapon perks compose via the standard+ NdMgrammar.
Build your own shot
The grammar for percentage attacks:
NdM[+K] @ hit <p>[%] [crit <p>[%]] [graze <p>[%]] [rider <expr>]
Trailing % sign is optional. Hit + graze must be
≤ 100. Examples:
-
1d3+4 @ hit 65 crit 10— vanilla XCOM 2 assault rifle, no graze model. -
1d4+5 @ hit 50 crit 10 graze 30— shotgun through half cover. -
1d3+7 @ hit 95 crit 25— Squadsight Sniper with full overwatch chain.
See the XCOM 2 weapons page for pre-baked panels covering common loadouts. Full grammar reference at /syntax.
Where this matters in practice
The four-way outcome model and the variance picture it produces are the right substrate for a lot of tactical games beyond XCOM 2.
Phoenix Point / Xenonauts / Jagged Alliance. Same substrate — percentage to-hit, possibly with crit and graze buckets. The grammar transfers directly; only the number ranges shift. Per-shot damage distributions are exact rationals in the same form.
Sharpshooter aim-arc decisions. The 35% flank vs 95% Squadsight question is the per-shot version of the reliable-vs-nuke pillar. High-aim wins below the kill threshold; high-variance wins above. Mean comparisons miss the picture entirely.
BG3 magic missile vs scorching ray, transposed. The auto-hit-vs-roll-to-hit decision in 5e casters is the same shape as XCOM's "guaranteed-graze vs higher-variance shot" — the variance picture transfers, just with different numbers.
Common questions
- Why is graze worth half-damage instead of a partial miss?
- XCOM 2's design intent is to soften the variance of low-percentage shots without rewarding them as much as a clean hit. Mechanically, P(graze) eats into the miss probability — so a 65% hit / 15% graze build has 80% chance of dealing some damage, vs. 65% if graze didn't exist. The variance picture: graze adds a low-damage mass that smooths the per-shot distribution, particularly valuable when chaining shots where a 0-damage round breaks momentum.
- How does P(crit) interact with hit chance?
- Crit is a separate roll conditional on a full hit. So `P(crit) = P(hit) × crit_chance` — never independent of hit. A 65% hit / 15% crit-on-hit build has P(crit) = 0.65 · 0.15 = 9.75% of all shots, P(non-crit hit) = 0.65 - 0.0975 = 55.25%, P(graze) = whatever you set, and P(true miss) = the rest. Crit cannot fire on a graze (RAW).
- What's different from D&D's d20 attack model?
- Two things. First, hit chance is a single percentage — no d20 enumeration. Second, crit is its own conditional roll on hit, not a d20-face range. The 5e crit rule (nat 20 always crits regardless of AC) doesn't apply: in XCOM, missing the hit roll means no crit, full stop. The graze bucket has no D&D analogue — D&D has a 3-way outcome (hit / crit / miss); XCOM 2 has 4-way.
- Does the engine model XCOM's miss-streak protection or Hard West's Luck pool?
- Yes. Both ship as postfix keywords on percentage-attack chains: `attacks N streak` for XCOM 2-style streak protection (no boost on first attempt; +10/20/30/40% per consecutive miss) and `attacks N luck` for Hard West-style Luck pool (pool of 5, +5% per pool unit, depletes on hits, refills on misses). Both are evaluated as state-carrying Markov walks over the per-attempt distribution — exact rationals, no Monte Carlo. The math substrate and worked examples are in the /concepts/luck-and-streak-protection pillar.