Skip to main content

F049 — Win Level System

Business Rule

When a player wins, the duration of the win-screen sound (ramp_loop) and the title label shown on the win panel are determined by the win-to-total-bet multiplier. Small wins play a short sound and show “YOU WON”. Large wins play progressively longer sounds and escalate through “BIG WIN”, “SUPER WIN”, “GIGANTIC WIN”, and “EPIC WIN”. The win label and sound duration are determined at river resolution and cannot be changed once set.

Win Level Table

Coin emission and auto-hide timer both scale to the same collectTime — the win screen stays visible for soundMs + 3 000 ms after the sound ends.

V5 Source References

V6 Implementation

Files

Key Locations in GameScene.ts

Progressive Label Animation

Mirrors v5 collectPlate._onShowEnd() / _updatePlate() / _bonuce(). The win screen always opens with “YOU WON”, then escalates through the label tiers at evenly-spaced intervals. Formula (matches v5 exactly):
Label step-up sequence per level: Each step-up fires a bounce tween on the label text: scale 1.0 → 1.3 → 1.0, 150 ms, Back.easeOut — mirrors v5 _bonuce().

Sound Fix (also in this commit)

Prior to this feature, ramp_loop was started via this.sound.play() which returns boolean and discards the sound reference. This meant ramp_loop kept playing after ramp_loop_end fired. Fixed by storing the reference via this.sound.add('ramp_loop').play() and calling .stop() in the delayed callback.

Timing (example: 25× win → BIG WIN)

Acceptance Criteria

Version Parity