                (swap! state assoc-in [side :register :spent-click] true))
              (swap! state update-in [side (first c)] #(- % (last c)))))
       false)))
+
+(defn gain [state side & args]
+  (doseq [r (partition 2 args)]
+    (swap! state update-in [side (first r)] #(+ % (last r)))))
 
 (defn desactivate [state side card]
   (let [c (dissoc card :counter :advance-counter :current-strength :abilities)

        (when msg
          (let [desc (if (string? msg) msg (msg state side card targets))]
            (system-msg state side (str "uses " title (when desc (str " to " desc))))))
        (when effect (effect state side c targets)))
      (when once (swap! state assoc-in [once (or once-key cid)] true)))))

(defn prompt! [state side card msg choices ability]

  (swap! state assoc-in [side :keep] true)
  (system-msg state side "keeps his or her hand"))

(defn lose [state side & args]
  (doseq [r (partition 2 args)]
    (if (= (last r) :all)
