 (ns clojure-club.rpg-spec.mgrimm
   (:require 
-    [clojure.pprint :as pp]
-    [clojure.string :as string]
     [clojure.core.reducers :as r]
     [clojure.spec.alpha :as s]
     [clojure.spec.gen.alpha :as g]))

(defn create-character []
  (first (g/sample (s/gen ::character) 100)))

#_(pp/pprint (create-character))


(s/def ::gender #{:male :female})
(s/def ::race #{:dwarf :elf :gnome :half-elf :half-orc :halfling :human})
(s/def ::class (s/coll-of #{:barbarian :bard :cleric :druid :fighter :monk :paladin :ranger :rogue :sorcerer :wizard} 
                          :min-count 1 :max-count 2 :distinct true :into #{}))
(s/def ::level (s/with-gen (s/int-in 1 21) #(s/gen #{1})))

(s/def ::character (s/keys :req [::name ::gender ::race ::class ::level ::traits]))
