Free spins (OBSERVED, one forced 3-scatter round)

IMPORTANT: this round was produced with the game's built-in Bonus Cheat panel ("3 Scatter"), so outcomes are forced, not RNG. Use it for payload structure, not for probabilities. See ../analysis/cheat-panel.md.

Flow (all OBSERVED)

  1. POST /gamebe/games/spin with an extra combination field -> 3 scatters. Response has closed: false, nextFeature: "freespins", and featureResults[0] describing the award (totalCount: 10, currentCount: 0, spinResults: []). Base totalWin 0. Balance debited by the $1 bet. Files: 01-trigger-3-scatter.*.
  2. The UI shows "You have won 10 Free Spins." After OK, the client calls POST /gamebe/games/feature once per free spin, automatically, about 3 s apart (10 calls, timestamps 10:53:40 to 10:54:20 UTC). Request shape: 02-feature-call.request.json (identical for all 10 calls).
  3. Each feature response returns the same top-level reelView (the trigger grid) and a growing featureResults[0], with the new spin inside featureResults[0].spinResults[0] (an array with exactly one entry per call, not cumulative; spinNumber 1..10).
  4. Call 10 returns closed: true, nextFeature: null, featureResults[0].closed: true, playerInfo.endTime present, and the balance credited with the total win. Files: 02, 03, 04.
  5. UI then shows "You have won $14.00 from Free Spins." with an OK button.

Per-call summary (derived by me from the 10 captured responses; only calls 1, 2, 10 are saved in full)

CallcurrentCounttotalWin (data.result)featureResults[0].wildCollectionMeterbalance in response
110015207701.6768
222115207701.6768
332115207701.6768
442115207701.6768
552115207701.6768
662115207701.6768
772115207701.6768
882115207701.6768
9914215207701.6768
101014215207715.6768 (closed, +14)

Observed: closed false until call 10; balance changes only on the closing call (win paid at the end, not per spin). retriggerCount stayed 0 and retrigger false in all 10; dynamiteTriggered false in all 10 (checked on the top-level field only). Retrigger, dynamite, and multiplier changes were NOT observed.

Field notes

  • data.result.totalWin is the running feature total. featureResults[0].totalWin equals it.
  • spinResults[0] fields: reelView, winLines, spinNumber, totalWin (running), spinWin, wildCount, totalRewardValue, wildCollectionWin, wildCollectionMeter, rewardValues[], rewardPaid, wildCollectedPositions, dynamiteSymbolsAdded, dynamiteTriggered, dynamiteRewardPositions, currentMultiplier, multipliedCollection, lineWin.
  • featureTriggerPositions: [0,1,7] with scatters at reelView[0][1], [1][0], [2][1]. The indexing scheme is UNRESOLVED (reel*3+row would give 1, 3, 7).
  • Top-level rewardValues carries a stale [{position:[4,2],value:2,...}] in every response, including the trigger. Its purpose is UNKNOWN.
  • Feature responses add betType: "bet" and use message "Feature completed successfully". Feature playerInfo has maxPayout and, on non-closing calls, no endTime.
  • Win in call 2: a WD (wild) at reelView[4][2] gave wildCollectedPositions: [[4,2]], wildCollectionMeter: 1, wildCollectionWin: 2, rewardPaid: true. The one Money value present was 2 (position [2,0]).
  • Call 10 grid showed reward values 2, 2 and 15 (totalRewardValue: 19) with no Wild, so rewardPaid: false. The running total went 2 to 14 at call 9, so how reward values convert to wins is UNRESOLVED.

Not observed

Retrigger (every 4th Wild), multiplier tiers 2x/3x/10x, Dynamite, Money symbols visible as codes in reelView (Money symbols appeared on screen but reelView shows ordinary codes at those cells; the Money cells are only in rewardValues).

Built with LogoFlowershow