pixi-reels
All recipes

Collector symbol

On a HoldAndWinBuilder board, the collector orb absorbs its neighbours — walk board.lockedCoins, sum the adjacent coins, fly their values into the orb and release() those cells. No pins, no hand-rolled grid.

Loading recipe…

A collector coin built on HoldAndWinBuilder. The board opens holding four value coins; the collector orb lands between them and pulls in the coins it touches.

Neighbours from the ledger, cleared with release()

The board tracks where every coin is, so “absorb the adjacent coins” is a walk over board.lockedCoins. Each neighbour’s value flies into the orb, then release() clears that cell:

const neighbours = [ /* the 4 orthogonal cells around the orb */ ];
let sum = 0;
for (const n of neighbours) {
  const coin = board.lockedCoins.find((c) => c.id === 'coin' && key(c.cell) === key(n));
  if (!coin) continue;
  board.release([coin.cell]);                     // the cell clears (frees it for a respin)
  await bezierFly(clone, abs(coin.cell), orbPos); // the value flies in
  sum += coin.data.value;
  board.symbolAt(orbCell).playWin();               // the orb reacts to each arrival
}

release() is the board’s collect primitive: it removes the coin from the ledger and frees the cell. The flight itself is game-layer (bezierFly); the board only hands out cellCenter() geometry and the coin payloads.

Like the value-coin recipe, this used to hand-roll a 15-reel grid and coordinate with reelSet.pin() / unpin(). On HoldAndWinBuilder the locking is native and the collector logic is just a lockedCoins walk + release() — no pins.