anchor.diff:      (let ((thopter (make-instance
                       'thopter :parent root
                       :offset (complex (/ (x size) 2) (* (y size) 3/4))
  -                    :image (make-instance 'image :name :thopter))))
  +                    :image (make-instance 'image :name :thopter)
  +                    :health 4)))
         (subscribe (game-keys game) thopter))
       (loop for i from -128 to 128 by 64
          do (let* ((xy (complex (+ (/ (x size) 2) i) (/ (y size) 4)))
  
positive.code: 
  (defclass thopter-game (game) ())
  
  (defclass thopter (sprite mobile collidable) ())
  (defclass bullet (sprite mobile collidable) ())
  (defclass enemy (sprite mobile collidable)
    ((health
  
negative.code: 
  (defmethod update ((enemy enemy) event)
    (with-slots (parent (xy offset) (v veloc) accel) enemy
      (labels
          ((circular (r)
             (+ ;; circular motion
              (* (unit (- r)) (min 4 (/ (dot v v) (abs r))))
              ;; correction for radius
              (* (unit (- r)) (- (abs r) 250) 0.01d0)
              ;; correction for parallel veloc
              (* (- (proj v r)) 0.1d0)
              ;; correction for tangential veloc
              (* (unit (norm v r)) (- 2 (abs (norm v r))) 0.1d0)))
           (away (xy2 v2)
             (/ (rot v2 (* pi 0.25d0 (signum (cross v2 (- xy xy2))))) 30d0))
           (toward (xy2 v2)
             (unit (- xy2 xy))))
        (let ((nearest (iter (for x in-vector (children parent))
                             (when (or (typep x 'bullet) (typep x 'thopter))
                               (finding x minimizing (dist xy (offset x))))))
              (r (- xy (/ (size (game-root *game*)) 2))))
          (setf accel
                (if nearest
                    (with-slots ((xy2 offset) (v2 veloc)) nearest
                      (cond ((and (typep nearest 'bullet) (< (dist xy xy2) 120))
                             (away xy2 v2))
                            ((and (typep nearest 'thopter) (< (dist xy xy2) 200))
                             (toward xy2 v2))
                            (t (circular r))))
                    (circular r)))))))
  
  (defmethod collide ((enemy enemy) event)
    (with-slots (parent offset depth veloc health) enemy
      (typecase (event-hit event)
        (bullet    (decf health))
        (thopter   (decf health 4))
        (explosion (decf health)))
      (when (and parent (<= health 0))
        (make-instance 'explosion :parent parent
                       :offset offset :depth depth :veloc veloc
                       :image (make-instance 'image :name :explosion)
                       :ttl 10)
        (detach parent enemy))))
  
  (defmethod update ((explosion explosion) event)
    (with-slots (ttl) explosion
  