GBBOPEN-USER> (define-unit-class bunny () (x y)) # GBBOPEN-USER> (defvar *bunny-class* *) *BUNNY-CLASS* GBBOPEN-USER> (ensure-finalized-class *bunny-class*) # GBBOPEN-USER> (defvar *slot1* (car (last (class-slots *bunny-class*)))) *SLOT1* GBBOPEN-USER> (define-ks bunny-alert-ks :rating 100 :trigger-events ((nonlink-slot-updated-event bunny)) :execution-function 'bunny-alert-ks-function) # GBBOPEN-USER> (eq *slot1* (car (last (class-slots *bunny-class*)))) NIL GBBOPEN-USER> (car (last (class-slots *bunny-class*))) # GBBOPEN-USER> (defun bunny-alert-ks-function (ksa) (let ((bunny (sole-trigger-instance-of ksa))) (when (and (slot-boundp bunny 'y) (> (y-of bunny) 10)) (format t "Bunny ~S went too high~%" bunny)))) BUNNY-ALERT-KS-FUNCTION GBBOPEN-USER> (spawn-control-shell-thread) # ;; Control shell 1 started GBBOPEN-USER> (make-instance 'bunny :x 5 :y 8) # GBBOPEN-USER> (incf (y-of (find-instance-by-name 1 'bunny))) 9 GBBOPEN-USER> (incf (y-of (find-instance-by-name 1 'bunny))) 10 GBBOPEN-USER> (incf (y-of (find-instance-by-name 1 'bunny))) 11 Bunny # went too high GBBOPEN-USER>