                   (rdesc/search state)
                   state))))
           (inc-time state))
+      ;; Swap places with party members
       (= (get (rw/npc-at-xy state target-x target-y) :in-party?) true)
         (-> state
           (assoc-in [:world :player :pos :x] target-x)

                                     (assoc-in [:pos :x] player-x)
                                     (assoc-in [:pos :y] player-y))
                                 npc))))
      (and (not (rw/collide-in-water? state target-x target-y))
           (rw/player-mounted-on-raft? state))
        (as-> state state

  {:pre  [(not (nil? state))]
   :post [(not (nil? %))]}
  (log/info "move-outside-safe-zone")
  (let [[player-cell x y]    (rw/player-cellxy state)
        [target-x
         target-y]           (rw/player-adjacent-xy state direction)
        target-place         (rv/xy->place-id state target-x target-y)
        rv/visible-place-ids (rv/visible-place-ids state target-x target-y)
        _ (log/info "target-x" target-x "target-y" target-y)
        _ (log/info "target-place" target-place)
       vp-pos                (apply rc/xy->pos
                               (rv/+xy (rc/pos->xy (get-in state [:world :viewport :pos]))
                                    (rv/-xy [target-x target-y] [x y])))
       {width :width
        height :height}  (get-in state [:world :viewport])]
      (log/debug "viewport-pos" vp-pos)
      (-> state
        (assoc-in [:world :viewport :pos] vp-pos)
        (rworldgen/load-unload-places))))

(defn move
  "Move the player one space provided her/she is able. Else do combat. Else swap positions
