Safe Smash
A multi-step game: the player smashes one safe with a hammer and collects a multiplier on every hit, until the safe cracks, the hammer breaks or they walk away.
| Property | Value |
|---|---|
| Game ID | safe-smash |
| Type | multi_step |
| Volatility | High |
| Max Win | 50× the per-hit stake, per round |
| Engine version | 1.1.0 |
| RTP variants | 91.55% / 93.60% / 95.70% / 96.41% (best play) |
| RTP basis | Best play (optimal-play ceiling): no strategy returns more |
Figures regenerated 2026-10-20
From the shipped engine (v1.1.0): best play by tools/certification/best-play.mjs and the 10-million-round simulations by tools/certification/simulate.mjs (play to the end).
How a round works
- The player picks a per-hit stake. Starting a round costs nothing; each hit is paid for on its own.
- At round start the RNG draws how many damaging hits the safe takes to crack: uniformly 12 to 16. The player is not told the number. The damage bar hints at it.
- Every hit costs one stake and draws a multiplier from the variant's pool. The hit pays stake × multiplier at once (a 0× hit pays nothing).
- A hit with a multiplier of 1× or more is a damaging hit and advances the safe's damage. A lower multiplier does not, except on the final hit, which always counts.
- Every hit except the cracking one also rolls for a hammer break (6%). A break ends the round and claws back the round's winnings (see Hammer break).
- The hit that brings the damage to the threshold cracks the safe. It cannot break the hammer, it pays its own multiplier, and it has a 30% chance of a jackpot on top. The round ends.
- The player can press End Game (cash out) after any hit. It moves no money, because every hit was already paid.
Damage bar
The safe shows 8 damage levels: level = min(8, ⌈8 × damaging hits ÷ threshold⌉). It is the only clue the screen gives to the threshold. The engine never sends the threshold itself to the client.
Multiplier Pool (RTP_96)
Each hit draws from this weighted multiplier pool (weights total 100, so weight and probability are the same number):
| Multiplier | Weight | Probability |
|---|---|---|
| 0.0× | 34 | 34.0% |
| 0.5× | 11 | 11.0% |
| 1.0× | 17 | 17.0% |
| 1.2× | 15 | 15.0% |
| 1.5× | 10 | 10.0% |
| 2.0× | 8 | 8.0% |
| 3.0× | 3 | 3.0% |
| 5.0× | 2 | 2.0% |
The tier values are the same in every variant; RTP_92, RTP_94 and RTP_97 move weight between them.
Hammer break
6% per hit, in every RTP variant, and never on the hit that cracks the safe.
| RTP Variant | Break probability per hit | Multiplier pool (0× weight) |
|---|---|---|
RTP_92 | 6% | 34 |
RTP_94 | 6% | 37 |
RTP_96 | 6% | 34 |
RTP_97 | 6% | 31 |
A break claws back the round's winnings: max(round balance, 0), where the round balance is everything the round has credited minus everything it has staked, the breaking hit's own win and stake included. The breaking hit's win is still credited, and the stake plus the clawback are debited. A player who was ahead ends the round level. A player who was behind loses nothing beyond the stakes already paid.
INFO
The break is a per-hit draw: each hit consumes one range [1,100] value and breaks on a 6-or-under. It is provably fair because the draw sequence is deterministic given the committed seed — the verifier replays the same hits in the same order and gets the same breaks.
Only the crack threshold (12–16 hits) is fixed at round start.
Jackpot
When the safe cracks:
- 30% chance of a jackpot on the cracking hit
- the jackpot pays one of the variant's five jackpot values, drawn with equal weight, credited with the cracking hit's own win
- the 50× cap applies to the jackpot as well
| Jackpot values | RTP_92 | RTP_94 | RTP_96 | RTP_97 |
|---|---|---|---|---|
| Five values, 20% each | 5×, 9×, 13×, 17×, 21× | 5×, 9×, 13×, 17×, 21× | 5×, 9×, 13×, 17×, 21× | 4×, 8×, 12×, 16×, 20× |
Max win
A round can credit at most 50× the per-hit stake (or the operator's lower maxWin). A hit, or a jackpot, is paid up to what the cap has left. If the cap is reached on a hit that did not crack the safe, the round ends there (max_win_reached).
End Game (cash out)
- Available after the first hit, while the round is open
- Moves no money: wins were credited hit by hit, so ending the game only stops play
- Triggers the
round.completedwebhook withendReason: 'cash_out'
End reasons
| Reason | Description |
|---|---|
busted | Hammer broke: the round's winnings (max(round balance, 0)) are clawed back |
jackpot | Safe cracked and the jackpot triggered |
game_over | Safe cracked, no jackpot |
max_win_reached | Credited wins reached the cap on a hit that did not crack the safe |
cash_out | Player pressed End Game; nothing moves |
RTP: the published figure is best play
- Published RTP: the figure the game advertises, which
calculateTheoreticalRTPreturns. It is the return of the best possible End Game strategy, using everything the screen shows (damage count, round balance, damage bar), solved exactly bytools/certification/best-play.mjs, recorded indocs/certification/evidence/best-play.jsonand pinned in each variant's config. Platform policy: at or below the variant's label and no more than one point under it. - Play-to-end RTP: the return of hitting until the round ends without pressing End Game. The engine reports it separately, and it is the strategy the simulation evidence plays.
| RTP_92 | RTP_94 | RTP_96 | RTP_97 | |
|---|---|---|---|---|
| Published RTP (best play) | 91.55% | 93.60% | 95.70% | 96.41% |
| Play-to-end RTP (10M-round simulation) | 90.42% | 92.38% | 94.32% | 94.88% |
Example round
Stake 1.00, multipliers from the RTP_96 pool:
Hit 1 0.5× not damaging −1.00 +0.50 round balance −0.50
Hit 2 2.0× damage 1 −1.00 +2.00 round balance +0.50
Hit 3 1.2× damage 2 −1.00 +1.20 round balance +0.70
Hit 4 0.0× not damaging −1.00 round balance −0.30
Hit 5 3.0× damage 3 −1.00 +3.00 round balance +1.70
End Game → no money moves; the round netted +1.70Had hit 6 drawn 1.5× and broken the hammer instead, the round would have credited 1.50 and then debited the stake plus the clawback of the new balance (+2.20), ending level at 0.00.