     (log/info "not collide?" (not (rw/collide? state target-x target-y {:include-npcs? false})))
     (log/info "not mounted-on-raft?" (not (rw/player-mounted-on-raft? state)))
     (cond
+      ;; Don't move paralyzed player
       (rp/player-paralyzed? state)
         (-> state
           (rc/append-log "You can not move (paralyzed).")
           inc-time)
+      ;; Open space (may include npc) and not on raft?
       (and (not (rw/collide? state target-x target-y {:include-npcs? false}))
            (not (rw/player-mounted-on-raft? state)))
         (as-> state state
-          (if (and (not (rv/xy-in-safe-zone? state target-x target-y))
-                   (not= :fixed (get-in state [:world :places (rw/current-place-id state) :movement])))
-            (move-outside-safe-zone state direction)
-            state)
           (if (rw/npc-at-xy state target-x target-y)
             ;; collided with npc. Engage in combat.
             (let [npc (rw/npc-at-xy state target-x target-y)]
               (log/info "npc" npc)
               (rcombat/attack state [:world :player] (rnpc/npc->keys state npc)))
             (as-> state state
+              (if (and (not (rv/xy-in-safe-zone? state target-x target-y))
+                       (not= :fixed (get-in state [:world :places (rw/current-place-id state) :movement])))
+                (move-outside-safe-zone state direction)
+                state)
               (assoc-in state [:world :player :pos :x] target-x)
               (assoc-in state [:world :player :pos :y] target-y)
               (let [cell  (rw/get-cell state target-x target-y)

                  (rdesc/search state)
                  state))))
          (inc-time state))
      (= (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))))
      ;; Passable water terrain and on raft?
      (and (not (rw/collide-in-water? state target-x target-y))
           (rw/player-mounted-on-raft? state))
        (as-> state state
