anchor.diff:            (setf accel 0)))))
   
   (defmethod collide ((thopter thopter) event)
  -  (with-slots (parent offset depth veloc health ammo missiles) thopter
  +  (with-slots (parent offset depth veloc health ammo ammo-refill-rate 
  +                      missiles) thopter
       (typecase (event-hit event)
         (enemy-bullet  (decf health))
         (enemy-missile (decf health))
         (enemy         (decf health 8))
         (explosion     (decf health))
         (health-pack   (incf health 2))
  -      (upgrade-bullet (incf ammo 100))
  +      (upgrade-bullet (incf ammo ammo-refill-rate))
         (upgrade-missile (incf missiles))
         (upgrade-speed (progn
                         (when (<= (speed-boost thopter) 0)
  
positive.code:   (shoot thopter event)
    (setf (timer thopter) 4))
  
  (defmethod shoot ((shooter shooter) event)
    (with-slots (parent offset size veloc ammo bullet-class bullet-image
                 bullet-n-directions bullet-veloc bullet-timer) shooter
      (when (> ammo 0)
        (let* ((firepower (max 1 (floor ammo 100)))
             (increment (if (< (* (floor firepower 2) 0.15d0) 1) (* 0.15d0 pi)
                             (/ pi (/ firepower 2)))))
          (iter (for i from (+ (ceiling firepower -2) 
  
negative.code:   (with-slots (level) wave
      (incf level)
      (if (zerop (mod level 10))
          (spawn-wave level (truncate level 10) (* level 20) (* level 4)
                      (truncate level 2) (min 1d0 (* level 0.024)) 'enemy-boss)
        (spawn-wave level (+ 2 level) 4 (max 1 (ceiling level 3)) 0
                      (min 1d0 (* level 0.11)) 'enemy-ship))))
  
  (defmethod (setf players-left) :after (value (left players-left-controller))
  