Skip to content

Pass the Jay ​

A session-based pick-and-cash-out game. Ten party guests, one undercover cop. The player stakes once and passes the joint guest by guest: every safe pass raises the multiplier, the cop ends the round, and cashing out pays the current rung.

The outcome is decided by the RNG when the round starts: the cop's seat is drawn before the first pass and never changes. Passing only reveals it.

PropertyValue
Game IDpass-the-jay
Engine version1.1.0
Typesession_based
VolatilityMedium — the player sets it by where they stop
Max Win9.7× bet (rtp-97; 9.2× / 9.4× / 9.6× in the other variants)
RTP variants92.00% / 94.00% / 96.00% / 97.00% — returned however the player plays
Minimum stake100 minor units (1.00 in 2-decimal currencies), over any lower operator setting

How a round works ​

PhaseDescriptionPlayer input
StakeThe stake is debited and the cop's seat is drawnPress Let's Party
PassThe joint goes to one guest; safe → next rung, cop → bustTap a guest
Cash outPays stake × ladder[passes]Press Cash Out (after ≥ 1 pass)
Clean sweepNine safe passes — every other guest has had a turnNone (auto-paid on the top rung)

The ladder (rtp-96) ​

Safe passes123456789
Cash out1.0666×1.20×1.3714×1.60×1.92×2.40×3.20×4.80×9.60×
Chance to get there90%80%70%60%50%40%30%20%10%

Each rung is RTP × 10 / (10 − k) rounded down to four decimals and paid exactly. The game shows multipliers to two decimals, also rounded down (1.0666× reads 1.06×), so the screen never shows more than is paid; the cash-out amount it shows is always the exact one.

RTP is the same whatever the player does ​

Surviving k passes has probability (10 − k)/10 whatever order guests are picked in, so leaving after k passes returns (10 − k)/10 × ladder[k]: the variant's RTP, never more and never more than 0.007 of a point less (rtp-96: 95.994–96.000%). Any strategy is a mix of stopping points, so every way of playing returns the RTP the operator selected. The full per-rung table is in the game's math model (games/pass-the-jay/docs/math-model.md).

Payouts are rounded down to the currency's smallest unit — exact for USDC/USDT at any whole-cent stake and for BTC from 10,000 sats. In a 2-decimal currency small stakes lose up to a cent per win (a 1.00 stake's first rung pays 1.06), which is why the game's minimum stake is 1.00 there.

Unfinished rounds ​

SituationSettlement
Player reopens the game within 5 minutes (tab closed, connection lost, phone locked)The round is resumed where it was left — guests passed, rung, cash-out button
Player idle for 5 minutes mid-roundCashed out automatically at the rung reached
Player starts a new round while one is openThe open round is cashed out at the rung reached
Round abandoned before the first passPays the k = 0 rung (0.96× at rtp-96)

The client finds an open round with GET /games/pass-the-jay/rounds/active?currency=… (the session's player; null when there is none). It returns the same view a pass response carries — never the cop's seat — and only for a round in the currency and money mode asked about.

Provably fair ​

For tenants with provably fair enabled, the cop's seat is derived from the committed server seed at sub-nonce 0. The seed is held while the round is open and revealed when it ends; the verifier reproduces the seat and replays the passes stored on the round record to the multiplier that was paid.

Integration notes ​

  • Bet field: betAmount (minor units of the session currency), like Fox'n Flock and Katapuuult.
  • Action: { "type": "pass", "seat": 0–9 }.
  • Cash out: the standard POST /games/pass-the-jay/rounds/:roundId/cashout; its response includes animationData.copSeat so the client can reveal the cop.
  • Client assets are versioned (/games/pass-the-jay/assets/v1/) and served with a one-year immutable cache.