
Each hop has its own number, which picks the one lane a car is in. You get across when your lane is not that one.
We choose our server seed before you bet and show its fingerprint. This commits us to that seed.
Your seeds choose the lane containing a car for each hop. Your chicken crosses safely when you choose another lane.
Rotate your seed to reveal ours. Use both seeds and the bet number to recheck any past result.
export function advanceChicken(state: ChickenState, pick: number, float: number): { state: ChickenState; won: boolean } {
if (state.status !== 'active') throw new InvalidBetConfigError('Chicken game is not active');
if (!Number.isInteger(pick) || pick < 0 || pick >= state.lanes) throw new InvalidBetConfigError('Chicken pick is out of range');
if (state.stepsCompleted >= state.maxSteps) throw new InvalidBetConfigError('Chicken maximum step count reached');
const failPosition = Math.floor(float * state.lanes);
| Steps survived | Chance to get there | Pays | RTP |
|---|---|---|---|
| 1 | 80.00% | 1.23× | 98% |
| 2 | 64.00% | 1.5× | 96.04% |
| 3 | 51.20% | 1.84× | 94.12% |
| 4 | 40.96% | 2.25× | 92.23% |
| 5 | 32.77% | 2.76× | 90.38% |
| 6 | 26.21% | 3.38× | 88.58% |
| 7 | 20.97% | 4.14× | 86.8% |
| 8 | 16.78% | 5.07× | 85.07% |
| 9 | 13.42% | 6.21× | 83.36% |
| 10 | 10.74% | 7.61× | 81.7% |
| 11 | 8.59% | 9.32× | 80.06% |
| 12 | 6.87% | 11.42× | 78.46% |
| 13 | 5.50% | 13.99× | 76.89% |
| 14 | 4.40% | 17.13× | 75.35% |
| 15 | 3.52% | 20.99× | 73.85% |
| 16 | 2.81% | 25.71× | 72.37% |
| 17 | 2.25% | 31.5× | 70.92% |
| 18 | 1.80% | 38.58× | 69.5% |
| 19 | 1.44% | 47.26× | 68.11% |
| 20 | 1.15% | 57.9× | 66.75% |
Theoretical RTP: 98%.
Each hop pays its fair multiplier × 0.98.
multiplier = 0.98 × lanes ÷ (lanes − 1)Your chance of getting through a step is exactly 1 ÷ its fair multiplier, so each hop returns 98% of its stake on average.
Reproduce these results with the inputs below.