@open-rgs/big-symbols
One symbol across a block of cells.
Repeated cells, no overlay
A big symbol is written as the same symbol across every cell it covers. No marker, no parallel geometry. That is what makes it work with every evaluator for free - and it matches what players are paid.
=4
import { placeBig } from "@open-rgs/big-symbols";
const g = placeBig(grid, { pos: { col: 1, row: 1 }, width: 2, height: 2 }, "WILD"); Fit is not obvious
A 2x2 needs two adjacent columns that are both tall enough at those rows. On a multiways board where one reel drew a height of two, a block that fits everywhere else does not fit there.
import { fits, placements } from "@open-rgs/big-symbols";
fits(RAGGED, { col: 1, row: 2 }, 2, 2);
placements(RAGGED, 2, 2); Refuse rather than clip
A clipped 2x2 is a 2x1 pretending to be one: it pays less than the game promised, and by then it is just symbols, so nothing downstream can tell. Random placement returns the board unchanged when nothing fits, because a feature that cannot place is an outcome to price rather than a crash.
import { placeRandomBig, blocksOf } from "@open-rgs/big-symbols";
placeRandomBig(grid, "WILD", 3, 3, host.rng_next);
blocksOf(g, "WILD", [[2, 2], [3, 3]]);