Scatter class evaluates wins for games where symbols do not need to be adjacent or on specific paylines. Instead, the total count of each symbol type anywhere on the board determines whether a win occurs.
How scatter wins work
For each non-wild symbol, the engine counts its total appearances on the board. Wild symbols are appended to every symbol’s position list before lookup. If(total_count, symbol) exists in config.paytable, a win is recorded.
A minimum of 8 like-symbols is typical to trigger a win, but the minimum is determined entirely by the lowest kind entry for that symbol in config.paytable.
Configuration
Because the count can range from the minimum up to the full board size, range-based paytables are common. Useconvert_range_table() on Config to generate config.paytable from a compact pay_group:
dict
required
Maps Range bounds are inclusive.
(count, symbol) tuples to payout multipliers. Generated via config.convert_range_table(pay_group).Scatter.get_scatterpay_wins()
Config
required
Game configuration with
config.paytable and config.special_symbols populated.list[list[Symbol]]
required
Active game board indexed as
board[reel][row].str
default:"wild"
Symbol attribute key identifying wild symbols. Wilds are added to every symbol’s count.
str
default:"multiplier"
Symbol attribute key for reading per-symbol multiplier values.
int
default:"1"
Scalar multiplier applied to all wins.
Return value
float
Sum of all scatter wins for this board state.
list
One entry per paying symbol type.
Exploding symbols and tumble integration
All winning symbol positions (and wild positions included in wins) haveexplode = True set during get_scatterpay_wins(). This enables the Tumble class to remove them and cascade new symbols. The typical tumble loop:
Additional methods
Scatter.record_scatter_wins(gamestate)
Writes force-file entries for each scatter win, keyed by kind (total symbol count), symbol, combined totalMult, and gametype.
Wild symbols are shared across all symbol counts — a wild contributes to the win count of every non-wild symbol simultaneously. This is the key behavioral difference from cluster pays, where wilds contribute to only the adjacent cluster.
