Free spins (OBSERVED, one forced 3-scatter round)
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)
POST /gamebe/games/spinwith an extracombinationfield -> 3 scatters. Response hasclosed: false,nextFeature: "freespins", andfeatureResults[0]describing the award (totalCount: 10,currentCount: 0,spinResults: []). BasetotalWin0. Balance debited by the $1 bet. Files:01-trigger-3-scatter.*.- The UI shows "You have won 10 Free Spins." After OK, the client calls
POST /gamebe/games/featureonce 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). - Each feature response returns the same top-level
reelView(the trigger grid) and a growingfeatureResults[0], with the new spin insidefeatureResults[0].spinResults[0](an array with exactly one entry per call, not cumulative;spinNumber1..10). - Call 10 returns
closed: true,nextFeature: null,featureResults[0].closed: true,playerInfo.endTimepresent, and the balance credited with the total win. Files:02,03,04. - 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)
| Call | currentCount | totalWin (data.result) | featureResults[0].wildCollectionMeter | balance in response |
|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 15207701.6768 |
| 2 | 2 | 2 | 1 | 15207701.6768 |
| 3 | 3 | 2 | 1 | 15207701.6768 |
| 4 | 4 | 2 | 1 | 15207701.6768 |
| 5 | 5 | 2 | 1 | 15207701.6768 |
| 6 | 6 | 2 | 1 | 15207701.6768 |
| 7 | 7 | 2 | 1 | 15207701.6768 |
| 8 | 8 | 2 | 1 | 15207701.6768 |
| 9 | 9 | 14 | 2 | 15207701.6768 |
| 10 | 10 | 14 | 2 | 15207715.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.totalWinis the running feature total.featureResults[0].totalWinequals 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
rewardValuescarries 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". FeatureplayerInfohasmaxPayoutand, on non-closing calls, noendTime. - Win in call 2: a
WD(wild) at reelView[4][2] gavewildCollectedPositions: [[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, sorewardPaid: 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).