       (reduce #(%2 %1) game-state [(clear-space player-coords)
                                    (player-occupy-space desired-coords player-id)])
       (reduce #(%2 %1) game-state [(apply-collision-damage player-id
+                                                           player-coords
                                                            desired-space-contents
                                                            desired-coords)]))))
 

            collision-item-now-open? (= (:type updated-collision-item) "open")]
        (if collision-item-now-open?
          (merge game-state {:players updated-players
                             :dirty-arena (au/update-cell dirty-arena
                                                          collision-coords
                                                          updated-player)})
          (merge game-state {:players updated-players
                             :dirty-arena (au/update-cell dirty-arena
                                                          collision-coords

  Bots that run into item spaces that cannot be occupied will receive damage. If the item that is
  collided with has energy, it to will receive damage. If the item collided with has an energy level
  of 0 or less after the collision, that item will disappear and the bot will occupy its space."
  [player-id player-coords collision-item collision-coords]
  (fn [{:keys [players dirty-arena] :as game-state}]
    (if (is-player? collision-item)
      (let []
        ;; TODO https://github.com/willowtreeapps/battlebots/issues/57
        game-state)
      (let [player (get-player player-id players)
            updated-player (apply-damage player collision-damage-amount false)
            updated-players (update-player-with player-id players updated-player)
