 (defn generate-card-actions [game card]
   (let [high-card-action (generate-high-card-action game card)
         targets (u/valid-targets game)]
+    (cons high-card-action
           (case (:face card)
             :guard  (map #(guard-elimination-action game %) (guard-prob-inputs game))
             :priest (map #(priest-assist-action game %) targets)

            :king     (map #(king-assist-action game %) targets)
            :countess [(countess-bluff-action game)]
            :princess [(princess-suicide-action game)]
            :default [])))

(defn generate-actions [game player-id]
  (->> (mapcat #(generate-card-actions game %) (player-hand game player-id))
       (sort-by :strength)
       reverse))

(defn pick-action [actions]
  (let [best-action (first actions)]
    (if (not= :high-card (:type best-action))
      best-action
      (first (drop-while #(or (= (:type %) :high-card)
                              (= (:active-card (:action %)) (:active-card (:action best-action))))
                         actions)))))

#_[{:action {:target nil
             :guard-guess nil
             :active-card nil
             :current-player nil}
    :type :defense
    :strength 100}]



(defn player-hand [game id]
  (get-in game [:players id :hand]))

(defn filter-fresh-deck [card-list]
  (reduce (fn [deck card]
            (u/remove-first card deck)) complete-deck card-list))

(defn high-card [game card]
  (let [{:keys [discard-pile current-player]} game
