
Each floor has its own number, which places the safe tiles on that floor; every placement is equally likely. You climb when the tile you pick is one of them.
We choose our server seed before you bet and show its fingerprint. This commits us to that seed.
Your seeds place the safe tiles on each floor. You climb when your chosen tile is one of them.
Rotate your seed to reveal ours. Use both seeds and the bet number to recheck any past result.
export function generateTowerRow(float: number, columns: number, safeTileCount: number): { safeTiles: number[]; failTiles: number[] } {
// Uniformly choose which columns are safe. Every C(columns, safeTileCount)
// layout is equally likely, so each column is safe with probability
// safeTileCount / columns exactly (the v1 LCG shuffle was biased).
const safeTiles = uniformCombinationFromFloat(float, columns, safeTileCount);
const safeSet = new Set(safeTiles);
| Floors cleared | Chance to get there | Pays | RTP |
|---|---|---|---|
| 1 | 75.00% | 1.31× | 97.99% |
| 2 | 56.25% | 1.71× | 96.03% |
| 3 | 42.19% | 2.23× | 94.11% |
| 4 | 31.64% | 2.91× | 92.22% |
| 5 | 23.73% | 3.81× | 90.38% |
| 6 | 17.80% | 4.98× | 88.57% |
| 7 | 13.35% | 6.5× | 86.8% |
| 8 | 10.01% | 8.5× | 85.06% |
| 9 | 7.51% | 11.1× | 83.36% |
Theoretical RTP: 98%.
Each floor pays its fair multiplier × 0.98.
multiplier = 0.98 × tiles ÷ safe tilesYour chance of getting through a step is exactly 1 ÷ its fair multiplier, so each floor returns 98% of its stake on average.
Reproduce these results with the inputs below.