anchor.diff:        (upgrade-bullet (incf firepower))
         (upgrade-missile (incf missiles)))
       (when (and parent (<= health 0))
  -      (let* ((random-choice (mt19937:random 3))
  -             (drop-class (ecase random-choice
  +      (let ((i (if (typep enemy 'enemy-boss) 25 1)))
  +        (loop repeat i 
  +          do (let* ((random-choice (mt19937:random 3))
  +               (drop-class (ecase random-choice
                              ((0) 'upgrade-bullet)
                              ((1) 'upgrade-missile)
                              ((2) 'health-pack)))
  -             (drop-image
  -              (make-instance 'image :name (ecase drop-class
  +               (drop-image
  +                (make-instance 'image :name (ecase drop-class
                                               ((upgrade-bullet) :upgrade-bullet)
                                               ((upgrade-missile) :upgrade-missile)
                                               ((health-pack) :health))))
  -             (image (make-instance 'anim :name :explosion)))
  -        (make-instance 'explosion :parent parent
  -                       :offset (+ offset (/ size 2) (- (/ (size image) 2)))
  -                       :depth depth :veloc (/ veloc 2)
  +               (image (make-instance 'anim :name :explosion)))
  +          (make-instance 'explosion :parent parent
  +                       :offset (+ offset (complex (mt19937:random (x size))
  +                                                  (mt19937:random (y size))))
  +                       :depth depth 
  +                       :veloc (+ (/ veloc 2) 
  +                             (complex (mt19937:random (+ 0.01 (abs (x veloc))))
  +				     (mt19937:random (+ 0.01 (abs (y veloc))))))
  +		                     ; add 0.01 to avoid error when veloc is 0
                          :image image
                          :timer 10
  -                       :drop-class drop-class :drop-image drop-image)
  -        (detach parent enemy)))))
  +                       :drop-class drop-class :drop-image drop-image)))
  +          (detach parent enemy)))))
   
   (defmethod alarm ((explosion explosion) event)
     (with-slots (parent offset size depth veloc drop-class drop-image) explosion
  
positive.code:              (not (timer (game-wave game))))
      (setf (timer (game-wave game)) 120)))
  
  (defun spawn-wave (wave count health firepower enemy-type)
    (let* ((root (game-root *game*))
           (root-size (size root))
           (center (/ root-size 2)))
  
negative.code: 
  (defmethod collide ((missile enemy-missile) event)
    (with-slots (parent offset size depth veloc) missile
      (when (and parent     (and (typep missile 'enemy-missile)
                                 (typep (event-hit event) 'thopter)))
        (let ((explosion (make-instance 'anim :name :explosion)))
          (make-instance 'explosion :parent parent
                         :offset (+ offset (/ size 2) (/ (size explosion) -2))
  