Fixing tests and comments

This commit is contained in:
2026-07-05 23:41:19 -05:00
parent c16b21c603
commit b7063277e7
8 changed files with 214 additions and 174 deletions
+2 -2
View File
@@ -11,8 +11,8 @@ fn tick(me, state, dt) {
// and is a no-op when blocked; the delay pads each step out to ~0.5s (move
// itself costs 0.25s), matching the old global pusher heartbeat.
//
// The direction is read here, at the top level of the hook, because `Me` is a
// per-object scope constant and is not visible inside other script functions.
// The direction is read from `me` (the hook's first parameter); to use it in a
// helper function you would pass `me` down explicitly.
if !me.waiting {
let dir = if me.has_tag("BUILTIN_pusher_north") { North }
else if me.has_tag("BUILTIN_pusher_south") { South }
+7 -10
View File
@@ -1,13 +1,10 @@
// Rotates this object's 8 neighbours one step around a ring every 0.5s, shoving
// each pushable into the next ring slot via a single simultaneous `swap`. The spin
// direction comes from the `BUILTIN_spinner_*` tag the map loader attaches (it
// defaults to clockwise when no tag is present).
//
// A neighbour may only rotate if its destination slot will actually be free: the
// slot is a hole (`passable`), or that slot's own occupant also rotates out. We
// can't decide that with `can_shift` alone — `can_shift(j) == false` is ambiguous
// between "j is empty" and "j is a blocked solid" — so we seed with `can_shift`
// and then cascade-demote using `passable` to spot the genuine holes.
// Rotates this object's 8 neighbours one step around a ring every 0.5s via a single
// `shift()` of the ring coordinates. `shift` moves each pushable to the next slot,
// skips non-pushables, and won't move anything into a cell that isn't vacant (or
// vacated by this same rotation) — so the "is the slot free?" decision lives in the
// engine and the script just hands it the ring. The spin direction comes from the
// `BUILTIN_spinner_*` tag the map loader attaches (it defaults to clockwise when no
// tag is present).
fn tick(me, state, dt) {
// Only start a new rotation when the previous one (and its delay) has drained,
// exactly like the built-in pusher's pacing.