Loading recipe…
Some cells carry a multiplier regardless of what lands on them. Any win passing through boosts. Gonzo’s Quest (NetEnt) and Irish Riches (Blueprint Gaming) both use this pattern.
The mechanic
const MULTIPLIER_CELLS = [
{ col: 1, row: 1, mult: 2 },
{ col: 3, row: 0, mult: 3 },
{ col: 2, row: 2, mult: 5 },
];
reelSet.events.on('spin:allLanded', ({ symbols }) => {
for (const cell of MULTIPLIER_CELLS) {
const rolled = symbols[cell.col][cell.row];
reelSet.pin(cell.col, cell.row, rolled, {
turns: 'eval',
payload: { multiplier: cell.mult, positionMultiplier: true },
});
}
});
Unlike a multiplier wild, the symbol at the cell is whatever the strip rolled. The multiplier is pure metadata on the pin’s payload. We use turns: 'eval' because the metadata is per-spin. the next spin will re-pin with a fresh rolled symbol.
Reading at win time
for (const pos of winningPositions) {
const pin = reelSet.getPin(pos.col, pos.row);
if (pin?.payload?.positionMultiplier) {
winAmount *= pin.payload.multiplier;
}
}
Note on CellDecorator
A cleaner future API would be a CellDecorator primitive that lets you attach metadata to a cell without having to pin a symbol. We’re using the symbol-mirroring workaround (pinning the rolled symbol so the pin’s symbolId doesn’t override the display) because it works today without new primitives. If CellDecorator ships, the payload simply moves there.
Related
- Multiplier wild. multiplier tied to a specific symbol, not a position
- Value-carrying coin. payload pattern for Hold & Win