   (let [[x-velocity y-velocity] (u/get-velocity entities entity)
         x-change (* x-velocity delta-time)
         y-change (* y-velocity delta-time)]
-    (if (and (> health 0)
-             (or (not= 0 x-change) (not= 0 y-change)))
+    (cond
+      (= health 0)
+      (assoc entity :x-velocity 0 :y-velocity 0)
+      (or (not= 0 x-change) (not= 0 y-change))
       (assoc entity
              :x-velocity (u/decelerate x-velocity)
              :y-velocity (u/decelerate y-velocity)

               (merge e
                      {:last-attack 0 :health health}
                      (if (> health 0)
                        (get-in e [:hits last-direction])
                        (get-in e [:deads last-direction]))))
             e)
           :else
           e))

             :y-change y-change
             :x (+ x x-change)
             :y (+ y y-change))
      :else
      entity)))

(defn ^:private recover
