         (update-ice-in-server state side (card->server state ice))))
     (swap! state update-in [:run :position] dec)
     (swap! state assoc-in [:run :no-action] false)
-    (swap! state assoc-in [:runner :rig :program]
-           (for [p (get-in @state [:runner :rig :program])]
-             (if (or (not (:current-strength p)) (:all-run p))
-               p (assoc p :current-strength nil))))
+    (doseq [p (get-in @state [:runner :rig :program])]
+      (when (:current-strength p)
+        (do (update! state side (update-in (get-card state p) [:pump] dissoc :encounter))
+            (update-breaker-strength state side p))))
     (system-msg state side "continues the run")
     (let [pos (get-in @state [:run :position])]
       (when (> (count (get-in @state [:run :ices])) 0)

            (system-msg state side (str "installs " title
                                        (when host-card (str " on " (:title host-card)))
                                        (when no-cost " at no cost")))
            (trigger-event state side :runner-install installed-card)))))))

(defn server-list [state card]
  (let [remotes (cons "New remote" (for [i (range (count (get-in @state [:corp :servers :remote])))]

  (let [username (get-in @state [side :user :username])]
    (say state side {:user "__system__" :text (str username " " text ".")})))

(declare prompt! forfeit trigger-event handle-end-run trash update-advancement-cost update-all-advancement-costs
         update-ice-strength update-breaker-strength)

(defn pay [state side card & args]
  (let [costs (merge-costs (remove #(or (nil? %) (= % [:forfeit])) args))
