Skip to main content
0_0_ways is the ways win type reference implementation. The key mechanical difference from the Lines game is that Wild multipliers multiply together rather than add, and Wilds cannot appear on reel 1.

Game overview

How to run

Or directly:

Mechanics

Basegame

  • Ways evaluation — all symbol combinations across adjacent reels left-to-right pay.
  • Scatter (S) appears on all reels, maximum 1 per reel. Minimum 3 Scatters trigger freespins.
  • Freespin awards: 3S → 10 spins, 4S → 15 spins, 5S → 20 spins.
  • Wild (W) does not appear on reel 1.

Freegame

  • Wild multipliers range from 1× to 5×, drawn from a weighted distribution.
  • Multipliers compound multiplicatively across all Wilds involved in a win. Two 3× Wilds on the same way produce a 9× multiplier.
  • Retrigger: 2+ Scatters award extra spins (2S → 4, 3S → 6, 4S → 8, 5S → 10).
Wild multipliers in this game are multiplicative. This is the opposite of the Lines game where multipliers add. A way with three 2× Wilds produces an 8× multiplier applied to the base way win.

Configuration

Paytable (game_config.py)

Special symbols

Note that multiplier is empty — Wild multipliers are assigned dynamically via mult_values in each distribution’s conditions dict rather than being attached to a dedicated multiplier symbol.

Reelsets

  • BR0 — basegame reelset (no Wilds on reel 1).
  • FR0 — standard freegame reelset.
  • FRWCAP — wincap freegame reelset (higher multiplier-value Wild density).

Wild multiplier distribution (freegame)

Multiplier values are specified per-distribution in the conditions dict:
Keys are multiplier values; values are their relative weights.

Freespin triggers

Bet modes

Two bet modes:
  • base (cost 1×, is_feature=True) — scatter-triggered freegame with four distributions: wincap, freegame, zero-win, and basegame.
  • bonus (cost 100×, is_buybonus=True) — direct freegame entry, single freegame distribution.

Game flow (gamestate.py)

evaluate_ways_board() handles Wild substitution, multiplicative multiplier compounding, and event emission. The check_freespin_entry() guard prevents false freegame triggers when the simulation criteria require a basegame-only result.

Comparison with lines game

To see the multiplicative multiplier in action, set compression = False and inspect the meta field inside winInfo events. It includes globalMult and per-symbol multiplier values.