Diceplots → Games → Hard West
Hard West damage math — Luck pool variance reduction as exact rationals
Hard West's signature mechanic is the Luck Bar: a per-character pool that depletes when shots hit and refills when shots miss. Mechanically, full pool = boost to the next attempt's hit chance; empty pool = no boost. The pool breaks the per-shot independence assumption — variance shrinks without the long-run mean changing. The engine models this as a state-carrying Markov walk over the per-attempt distribution.
The mechanic
Each character has a Luck pool that interacts with their shooting:
- On hit: the Luck pool depletes by 1.
- On miss: the Luck pool refills by 1 (capped at the pool's max capacity).
- Per-attempt boost: each unit of Luck adds a small bonus to the next attempt's effective hit chance. Higher current pool = bigger boost. Empty pool = no boost.
The user-visible outcome: catastrophic miss streaks rarely happen. After 1-2 misses the pool refills, the next attempt's hit chance climbs, and the run-of-misses self-corrects. The mean stays close to the unmodified hit chance; the variance (especially the "all-miss" tail) shrinks.
Companion concept pillar with the math substrate: Luck pools and streak protection.
Engine grammar
Postfix luck keyword on a percentage attack chain:
<attack> @ hit P% attacks N luck
Adds Hard West-style Luck pool — pool of 5 capacity, +5% per pool unit (full pool = +25% boost on next attempt), each hit consumes 1 luck, each miss refunds 1. Approximate Hard West shape; exact game formula isn't officially documented.
The luck keyword composes with the standard
attacks N chain primitive. It does not currently
compose with sneak, oncrit,
bonus, or cascade — see the
concept pillar
for the composition gaps.
Worked examples
| Scenario | Expression | Strike URL |
|---|---|---|
| 5-shot chain at 50% hit, no luck | 1d10 @ hit 50% attacks 5 |
/strike/1d10~hit50attacks5 |
| 5-shot chain at 50% hit, with Luck pool | 1d10 @ hit 50% attacks 5 luck |
/strike/1d10~hit50attacks5luck |
| 3-shot chain at 70% hit, with Luck pool | 1d8+2 @ hit 70% attacks 3 luck |
/strike/1d8p2~hit70attacks3luck |
| 4-shot chain at 35% hit, low-hit-chance Luck rescue | 1d6+3 @ hit 35% attacks 4 luck |
/strike/1d6p3~hit35attacks4luck |
Each strike URL renders the full damage distribution. Compare the no-luck and with-luck rows: the Luck-pool variant has a higher mean (the pool starts full, so the first attempt sees max boost) and a much smaller "all-miss" tail.
Why the parameters are "approximate"
Hard West's exact Luck consumption and refund formulas aren't published in any official source we've verified. The preset here (pool of 5, +5% per unit, 1-for-1 hit/miss exchange) captures the structural shape of the mechanic without claiming exact game constants. The math substrate (state-carrying Markov walk over a bounded state space) is exact. The specific parameters are documented approximations and can be refined with verified sources or per-game preset additions.
What the engine doesn't model yet
The Luck pool ships as a chain expression. Composition with other engine features is partial:
- Composition with sneak / oncrit / bonus chains: not yet. Each chain layer would need its own state-walk extension.
- Composition with cascade chain: not yet. Cascade and Luck need a joint state space (target_idx, luck_pool). Tracked work.
- Composition with rounds_to_kill: not yet. Multi-round HP-vs-luck-pool joint Markov chain is the same substrate as cascade composition.
- Cross-encounter Luck persistence: each chain expression starts fresh. Hard West's actual game carries Luck pool across rounds within a mission. Our model is per-encounter (per chain expression).
- Hit / crit / graze split with Luck: the current preset modulates only hit chance. Layering Luck on top of the four-way XCOM 2-style outcome model is a future extension.