           (log/debug (rw/get-cell state target-x target-y))
           (-> state
             (rc/append-log "The door creaks open")
-            (rw/assoc-cell target-x target-y :type :open-door)))
+            (rw/assoc-cell target-x target-y :type :open-door)
+            (rw/assoc-current-state :normal)))
         state))))
 
 (defn open-left

                      num-harvestable (get @harvestable-counts place-id 0)]
                  (if (< (rr/uniform-int 0 10000)
                         (/ (case cell-type
                              :palm-tree 20
                              :tree 25
                              :tall-grass 2
                              :gravel 20

    (let [target-cell (rw/get-cell state target-x target-y)]
      (log/debug "target-cell" target-cell)
      (if (and (not (nil? target-cell)) (= (target-cell :type) :open-door))
        (as-> state state
          (cond
            (seq (get target-cell :items []))
              (rc/append-log state "Cannot close door. There are items in the way.")
            (rw/npc-at-xy state target-x target-y)
              (rc/append-log state "Cannot close door. There is a creature in the way.")
            :else
            (-> state
              (rc/append-log "The door closes")
              (rw/assoc-cell target-x target-y :type :close-door)))
          (rw/assoc-current-state state :normal))
        state))))

(defn close-left
