All extensions

@open-rgs/pay-anywhere

Total count, position irrelevant.

Counted anywhere

The simplest evaluator and the one with the largest effect on a game's shape, because it is almost always what starts the feature - and feature frequency is usually the biggest single term in RTP.

Counted anywhere on the board, in any arrangement.
import { evalScatters, countAnywhere } from "@open-rgs/pay-anywhere";

const wins = evalScatters(grid, PAY, { roles });

countAnywhere(grid, "SC");

A wild never counts

Scatter substitution would manufacture triggers, and the trigger rate you balanced would not be the one you shipped. Only literal matches count here.

=2
A wild never counts. Substitution here would manufacture triggers.
countAnywhere(grid, "SC");

Triggering is not paying

Plenty of games trigger on three scatters while paying nothing for them, and plenty pay for two without triggering. The two questions stay separate.

3
Triggering is a separate question from paying.
import { triggersOn, shortOfTrigger } from "@open-rgs/pay-anywhere";

triggersOn(grid, "SC", 3);
shortOfTrigger(grid, "SC", 3);