Really cool idea. The Jester README is a fun read.
I tried making this change, and now it lets me stack above the second row:
(for chip in (qm (fn [e] (and (= "chip" e.tag) (= "fall" e.state))))
(def others (qm (fn [e] (and (= "chip" e.tag)
(= chip.x e.x) (< e.y chip.y)))))
- (def stack (others.sort (fn [a b] (< a.y b.y))))
- (def top (+ 1 (? (emptyq stack) -1 (ref (ref stack 0) "y"))))
+ (def top others.length)
(if (> chip.y top)
(set chip.y (+ chip.y -0.2))
(do