Skip to main content

Reel Stop Watcher

Rebuilds the all-reels-stopped event for reel columns that are spun directly rather than by a Pixi Reel Controller, with a watchdog for columns that never report. Browser only; it never reaches the RGS.

A Pixi Reel Controller fires On All Stopped only for a spin it started itself: it counts its own columns and stays silent when Column Spin Router or your own logic fires Spin and Stop on individual Reel Column nodes. This node listens to the columns instead. Each column fires On Stopped once its landing animation has finished, so All Stopped here marks the visual end of the round.

Wire each column's On Stopped into Stopped 0 to Stopped 11 (stopped0 to stopped11), in the controller's column order. Fire Arm (arm) before the spins go out; an Expected Columns or Column Count value set in the same update is honoured. All Stopped fires once every expected column has reported, and the watcher disarms. Column stops that arrive while not armed are ignored, and a column that reports twice counts once.

Expected Columns (blank = all) (expected) is a comma list of column indices to wait for, such as 1,3 for the free columns of a hold-and-win respin; a wired array parses too. Leave it blank to wait for every column below Column Count (columnCount, default 5, at most 12). Stopped Count and Stopped Columns update as columns report, in stop order, and Armed is true while watching.

A column that never reports (a locked column left in the expected list, a missing wire) trips the watchdog after Timeout (ms, 0 = off) (timeoutMs, default 8000): Timed Out fires and the watcher disarms without All Stopped. Set it above your longest spin plus anticipation. Disarm (disarm) cancels a watch silently. Every Arm clears the seen set, so the signals fire again each round; arming with nothing to wait for (Column Count 0 and a blank list) fires All Stopped at once. The timer is cleared on completion, disarm and when the node is deleted.

Inputs​

The compiled node inventory does not list these ports, because the node builds them in a loop; they are real and appear in the editor.

Actions​

SignalDescription
ArmStarts watching: clears the seen set and the timer, and reads Expected Columns and Column Count as they stand.
DisarmCancels the watch silently; neither All Stopped nor Timed Out fires.

Settings​

DataDescription
Expected Columns (blank = all) (string)Comma list of column indices to wait for, such as 1,3; a wired array parses too. Blank = every column below Column Count. Default blank.
Column Count (number)Columns to wait for when the list is blank, 0..12. Default 5.
Timeout (ms, 0 = off) (number)Watchdog: Timed Out fires if a column has not reported by then. Default 8000; 0 disables it.

Columns​

SignalDescription
Stopped 0 to Stopped 11One per reel column, in the controller's column order; wire each Reel Column On Stopped here. A column that reports twice counts once.

Outputs​

Signals​

SignalDescription
All StoppedFires once per Arm, when every expected column has reported On Stopped; the watcher then disarms.
Timed OutFires instead of All Stopped when a column has not reported within timeoutMs; the watcher disarms.

State​

DataDescription
Stopped Count (number)How many distinct columns have reported since the last Arm.
Stopped Columns (array)Indices of the columns that have reported, in the order they stopped.
Armed (boolean)True from Arm until All Stopped, Timed Out or Disarm.

Usage​

  1. Wire every Reel Column On Stopped into the matching Stopped N input.
  2. Set Column Count to the grid width, or list the columns to wait for in Expected Columns; for a respin give it the same free-column list you give Column Spin Router.
  3. Fire Arm from the same signal that fires the spins.
  4. Wire All Stopped where the controller's On All Stopped used to go: win evaluation, Win Rollup Start, Autoplay Round Complete.
  5. Wire Timed Out to a recovery path (stop the columns, log the round) so the game never hangs on a missing wire.
caution

A locked column never fires On Stopped. A respin with Expected Columns left blank waits for it and ends in Timed Out, so list only the columns that actually spin.