From d0a94980c870e3e19ad155a6446070c79e330c60 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Thu, 2 Jul 2026 02:53:35 -0400 Subject: [PATCH 01/11] Add opt-in :wsl lein profile for 0.0.0.0 dev host binding WSL2 can't reliably reach a loopback-bound dev server from the Windows browser, so bind 0.0.0.0. Keep the default loopback for everyone else and make it opt-in via `lein with-profile +wsl fig:dev`, which sets :orcpub-http-host through environ. Document the ORCPUB_HTTP_HOST env var (Docker/script launches) alongside it in .env.example. --- .env.example | 7 +++++++ project.clj | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/.env.example b/.env.example index 9516f341e..3460c54df 100644 --- a/.env.example +++ b/.env.example @@ -12,6 +12,13 @@ PORT=8890 TZ=America/Chicago +# Dev HTTP bind host. Defaults to loopback (localhost) so the dev server isn't +# exposed to the LAN. On WSL2 the Windows browser can't reliably reach loopback +# inside the VM, so bind 0.0.0.0. For Docker/script launches (which read .env), +# set ORCPUB_HTTP_HOST here; for `lein fig:*` use the +wsl profile instead +# (fig:* does not read .env): lein with-profile +wsl fig:dev +# ORCPUB_HTTP_HOST=0.0.0.0 + # Docker image names. Set these if you tag your own builds # (e.g., docker build -t dmv:2.6.0.0 .) so compose/swarm finds them. # Defaults: orcpub-app, orcpub-datomic diff --git a/project.clj b/project.clj index f60454c33..ce926ef96 100644 --- a/project.clj +++ b/project.clj @@ -260,6 +260,13 @@ ;; Composite: includes cljsbuild-config (build definitions) + dev-config ;; (deps, devtools overlays). No inline maps — lein warns against those. :dev [:cljsbuild-config :dev-config] + ;; Opt-in for WSL2 (and any host reaching the dev server by IP): binds + ;; ::http/host to 0.0.0.0 via environ so a Windows browser can reach the + ;; WSL VM (localhost forwarding is flaky over WSL2). The default stays + ;; loopback for everyone else. Activate per-command, e.g. + ;; lein with-profile +wsl fig:dev + ;; lein with-profile +wsl fig:build + :wsl {:env {:orcpub-http-host "0.0.0.0"}} ;; NOTE: :native-dev was for React Native builds (legacy, may be unused) :native-dev {:dependencies [[cider/piggieback "0.5.3"]] :source-paths ["src/cljs" "native/cljs" "src/cljc" "env/dev"] From ca977e0ad6d5bba9551be462d0c318b621d2a3e1 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 15:24:11 -0400 Subject: [PATCH 02/11] Add content-type->spec registry for homebrew save/load MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Save and load previously named their specs independently, so the two sides could drift: if the load floor ever grew stricter than a save spec, content that saved fine would be quarantined on the next boot. content_specs.cljc makes the mapping explicit — save-spec-for gives the strict per-type save spec, valid-for-load? the loose load floor (an :option-pack string plus a letter-leading key) that never falsely quarantines real content — with a generative test proving save specs are a subset of the load floor. --- src/cljc/orcpub/dnd/e5/content_specs.cljc | 65 +++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/cljc/orcpub/dnd/e5/content_specs.cljc diff --git a/src/cljc/orcpub/dnd/e5/content_specs.cljc b/src/cljc/orcpub/dnd/e5/content_specs.cljc new file mode 100644 index 000000000..a196bb55a --- /dev/null +++ b/src/cljc/orcpub/dnd/e5/content_specs.cljc @@ -0,0 +1,65 @@ +(ns orcpub.dnd.e5.content-specs + "Single source of truth tying SAVE and LOAD validation together: each homebrew + content-type keyword → its STRICT per-type save spec, plus the LOOSE floor + every saved item must still satisfy on load. + + Save and load used to name their specs independently, so they could DRIFT: if + load ever grew stricter than save, already-saved content would be quarantined + on the next boot. One generative test (`content_specs_test`) proves the + invariant `save ⊆ load` — anything a save spec accepts, the load floor accepts. + + LOAD stays deliberately loose (`:option-pack` string + letter-leading key, see + `::e5/homebrew-item`) for backward compat: never reject real saved content just + because a builder's save spec later tightened." + (:require #?(:clj [clojure.spec.alpha :as spec] + :cljs [cljs.spec.alpha :as spec]) + [orcpub.dnd.e5 :as e5] + [orcpub.dnd.e5.spells :as spells] + [orcpub.dnd.e5.races :as races] + [orcpub.dnd.e5.classes :as classes] + [orcpub.dnd.e5.backgrounds :as backgrounds] + [orcpub.dnd.e5.feats :as feats] + [orcpub.dnd.e5.languages :as languages] + [orcpub.dnd.e5.monsters :as monsters] + [orcpub.dnd.e5.encounters :as encounters] + [orcpub.dnd.e5.selections :as selections])) + +(def save-specs + "content-type keyword → the strict spec used to validate an item on SAVE. + The single source consumed by `reg-save-homebrew` (events.cljs) and the + `save ⊆ load` drift test. Keep in lockstep with the save handlers: every + content type that has a builder/save handler appears here exactly once." + {::e5/spells ::spells/homebrew-spell + ::e5/monsters ::monsters/homebrew-monster + ::e5/encounters ::encounters/encounter + ::e5/backgrounds ::backgrounds/homebrew-background + ::e5/languages ::languages/homebrew-language + ::e5/invocations ::classes/homebrew-invocation + ::e5/boons ::classes/homebrew-boon + ::e5/selections ::selections/homebrew-selection + ::e5/feats ::feats/homebrew-feat + ::e5/races ::races/homebrew-race + ::e5/subraces ::races/homebrew-subrace + ::e5/subclasses ::classes/homebrew-subclass + ::e5/classes ::classes/homebrew-class}) + +(def load-item-spec + "The loose floor a saved item must still satisfy to be KEPT (not quarantined) + on load. Intentionally minimal — an `:option-pack` string — so real content is + never falsely quarantined. The drift test proves every `save-specs` value is a + subset of this." + ::e5/homebrew-item) + +(defn save-spec-for + "The strict save spec for a content-type keyword, or nil if the type has no + builder (e.g. a type that only ever arrives via import)." + [content-type] + (get save-specs content-type)) + +(defn valid-for-load? + "The load acceptance predicate — a source is KEPT iff it satisfies the loose + `::e5/plugin` shape (every item meets `load-item-spec`, keys are letter-leading + content keywords). This is the single predicate the resilient loader injects + into `e5/salvage-plugins`, so 'what counts as loadable' lives in one place." + [plugin] + (spec/valid? ::e5/plugin plugin)) From eedffc08eab556a88123efb75a8e38528393730e Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 15:24:11 -0400 Subject: [PATCH 03/11] Preserve homebrew on load: salvage, quarantine, quota safety Make plugin loading fault-tolerant instead of all-or-nothing. salvage-plugins keeps every source that satisfies the load floor and routes the rest to a name-keyed, self-clearing plugins:rejected quarantine, surfaced in My Content for rename/rekey repair, rather than silently dropping them. Unreadable localStorage slots are moved to a :corrupt slot for recovery instead of being deleted, and a quota-exceeded write now surfaces a warning with a backup offer instead of losing data on the next refresh. --- src/cljs/orcpub/dnd/e5.cljc | 96 +++++++++++++++ src/cljs/orcpub/dnd/e5/db.cljs | 161 +++++++++++++++++++++++-- src/cljs/orcpub/dnd/e5/events.cljs | 66 ++++++++++ src/cljs/orcpub/dnd/e5/spell_subs.cljs | 7 ++ src/cljs/orcpub/dnd/e5/views.cljs | 68 +++++++++++ 5 files changed, 389 insertions(+), 9 deletions(-) diff --git a/src/cljs/orcpub/dnd/e5.cljc b/src/cljs/orcpub/dnd/e5.cljc index 1e250c02f..cad1935ff 100644 --- a/src/cljs/orcpub/dnd/e5.cljc +++ b/src/cljs/orcpub/dnd/e5.cljc @@ -27,6 +27,102 @@ (spec/def ::plugins (spec/map-of string? ::plugin)) +(defn salvage-plugins + "Partition a loaded multi-plugin map into `{:kept … :rejected …}` so one corrupt + source can't make the loader discard the whole homebrew library. + + `valid-plugin?` is injected (db.cljs passes `#(spec/valid? ::plugin %)`) to keep + this pure and JVM-testable without spec machinery. A non-map input yields two + empty maps; the caller preserves the raw string in that case." + [valid-plugin? plugins] + (if (map? plugins) + (reduce-kv (fn [acc plugin-name plugin] + (update acc + (if (valid-plugin? plugin) :kept :rejected) + assoc plugin-name plugin)) + {:kept {} :rejected {}} + plugins) + {:kept {} :rejected {}})) + + +(defn reconcile-rejected + "Maintain the name-keyed quarantine map (`plugins:rejected`) across loads: merge + this load's rejected sources into the already-quarantined ones (latest-wins per + name, so nothing accumulates), then drop any whose name reappears in `kept` — a + repaired source clears itself. Returns the cleaned `{name → bad-source}` map + (caller removes the storage key when empty). + + Pure/dependency-free for JVM tests. Non-map `old-rejected` is treated as empty." + [old-rejected new-rejected kept] + (let [old (if (map? old-rejected) old-rejected {}) + incoming (if (map? new-rejected) new-rejected {}) + merged (merge old incoming)] + (apply dissoc merged (keys kept)))) + + +(defn- distinct-key + "Pick `base` if free in `taken` (a map/set of used keys), else append -2, -3, … + until free — so repair never drops an item when two names derive the same key." + [taken base] + (if-not (contains? taken base) + base + (loop [n 2] + (let [candidate (keyword (str (name base) "-" n))] + (if (contains? taken candidate) (recur (inc n)) candidate))))) + +(defn rekey-content-group + "Re-key only items whose CURRENT key is invalid (the keyword trap — a key not + starting with a letter, e.g. `:9-lives`): move to the key derived from the + corrected `:name` and sync `:key`. Already-valid keys are left untouched (don't + disturb existing references); collisions get a numeric suffix; an item with no + usable `:name` keeps its original key (validation still flags it). + + Pure so the JVM suite can cover re-key/collision/no-name." + [items] + ;; Reserve the already-valid keys. distinct-key is seeded with these plus the + ;; keys emitted so far, so a re-keyed item can't collide with — and be clobbered + ;; by — a valid sibling processed later. + (let [reserved (into #{} (comp (map key) + (filter common/keyword-starts-with-letter?)) + items)] + (reduce (fn [acc [k item]] + (if-let [derived (and (not (common/keyword-starts-with-letter? k)) + (string? (:name item)) + (common/name-to-kw (:name item)))] + ;; invalid key + a usable name → move to the name-derived key + (let [new-key (distinct-key (into reserved (keys acc)) derived)] + (assoc acc new-key (assoc item :key new-key))) + ;; valid key, or no name to derive from → leave the item untouched + (assoc acc k item))) + {} + items))) + +(defn rekey-plugin + "Apply `rekey-content-group` to every content group in a source map + (`{content-type {item-key item}}`); non-content-group entries (e.g. `:disabled?`) + pass through. The re-key half of a quarantine repair: after the user fixes a + trapped item's name, sync its map key so the source can pass `::plugin`." + [plugin] + (reduce-kv (fn [acc k v] + (assoc acc k (if (and (qualified-keyword? k) (map? v)) + (rekey-content-group v) + v))) + {} + plugin)) + + +(defn invalid-keyed-items + "For a source map (`{content-type {item-key item}}`), return a seq of + `{:content-type :item-key :name}` for items whose KEY is invalid — the + keyword-trap cases that a rename can repair. Drives the quarantine repair UI." + [plugin] + (for [[ct items] plugin + :when (and (qualified-keyword? ct) (map? items)) + [k item] items + :when (not (common/keyword-starts-with-letter? k))] + {:content-type ct :item-key k :name (:name item)})) + + (defn merge-plugins [plugin-1 plugin-2] (merge-with merge diff --git a/src/cljs/orcpub/dnd/e5/db.cljs b/src/cljs/orcpub/dnd/e5/db.cljs index aa3be4a37..b7fdb4e84 100644 --- a/src/cljs/orcpub/dnd/e5/db.cljs +++ b/src/cljs/orcpub/dnd/e5/db.cljs @@ -2,6 +2,7 @@ (:require [orcpub.route-map :as route-map] [orcpub.user-agent :as user-agent] [orcpub.dnd.e5 :as e5] + [orcpub.dnd.e5.content-specs :as content-specs] [orcpub.dnd.e5.template :as t5e] [orcpub.dnd.e5.character :as char5e] [orcpub.dnd.e5.backgrounds :as bg5e] @@ -47,6 +48,9 @@ (def local-storage-subclass-key "subclass") (def local-storage-class-key "class") (def local-storage-plugins-key "plugins") +;; Resilient-loader companion to `plugins`: sources that failed validation on load +;; are preserved for repair here instead of being silently discarded. +(def local-storage-plugins-rejected-key "plugins:rejected") (def default-route route-map/dnd-e5-char-builder-route) @@ -159,10 +163,18 @@ ::char5e/newb-char-data {:answers {} :tags #{}}}) -(defn set-item [key value] +(defn set-item + "Write to localStorage. Returns true on success, false if the write failed + (e.g. a QuotaExceededError when storage is full). Callers that persist user + content should check this — a silent quota failure used to drop the just-saved + data on the next refresh with no warning." + [key value] (try (.setItem js/window.localStorage key value) - (catch js/Object e (prn "FAILED SETTING LOCALSTORAGE ITEM")))) + true + (catch js/Object e + (prn "FAILED SETTING LOCALSTORAGE ITEM" key) + false))) (defn character->local-store [character] (when js/window.localStorage @@ -235,19 +247,54 @@ (when js/window.localStorage (set-item local-storage-class-key (str class)))) +(defn corrupt-slot-key + "Companion slot that holds the raw, unparseable contents of `k` for recovery." + [k] + (str k ":corrupt")) + (defn plugins->local-store [plugins] (when js/window.localStorage - (set-item local-storage-plugins-key (str plugins)))) + (let [ok? (set-item local-storage-plugins-key (str plugins))] + (when-not ok? + ;; A quota-exceeded write would silently drop the just-saved homebrew on + ;; the next refresh. Warn and offer a raw backup so in-memory content can + ;; be rescued. (No reclaim-and-retry: the only reclaimable slots are the + ;; `:corrupt` ones, which hold the ONLY copy of unreadable content.) + (re-frame/dispatch [::e5/plugins-save-failed])) + ok?))) (def tab-path [:builder :character :tab]) +(def ^:private preserve-on-unreadable-keys + "Storage slots that must NEVER be destroyed on a parse failure — the homebrew + library and its quarantine companion. A corrupt blob here (e.g. a quota-cut + write) is moved to a ':corrupt' slot and cleared from the active slot, so + it survives for recovery instead of being deleted. Other slots (character, + builder drafts) keep the old remove-on-unreadable behavior." + #{local-storage-plugins-key + local-storage-plugins-rejected-key}) + (defn get-local-storage-item [local-storage-key] (when-let [stored-str (when js/window.localStorage (.getItem js/window.localStorage local-storage-key))] (try (reader/read-string stored-str) - (catch js/Object e (prn "E" e) - (js/console.warn "UNREADABLE ITEM FOUND, REMOVING.." local-storage-key stored-str) - (.removeItem js/window.localStorage local-storage-key))))) + (catch js/Object e + (if (contains? preserve-on-unreadable-keys local-storage-key) + ;; Preserve unparseable homebrew: copy raw bytes to the :corrupt slot, + ;; then clear the active slot so a poison value can't brick boot. Recoverable. + (do + (js/console.warn + "UNREADABLE homebrew storage; preserved raw copy for recovery in" + (corrupt-slot-key local-storage-key) "and cleared the active slot." + local-storage-key) + (set-item (corrupt-slot-key local-storage-key) stored-str) + (.removeItem js/window.localStorage local-storage-key) + nil) + (do + (prn "E" e) + (js/console.warn "UNREADABLE ITEM FOUND, REMOVING.." local-storage-key stored-str) + (.removeItem js/window.localStorage local-storage-key) + nil)))))) (defn reg-local-store-cofx [key local-storage-key item-spec & [item-fn]] (re-frame/reg-cofx @@ -299,15 +346,111 @@ local-storage-magic-item-key ::mi5e/internal-magic-item) +;; Refresh safety: restore every homebrew builder's in-progress item on boot (the +;; persist side is already wired per-builder via ->local-store interceptors; this +;; table + one cofx drive the restore side from one place). Validated only as +;; `map?`, not the strict per-type spec — the point is to preserve incomplete drafts. +(def builder-wip-stores + "localStorage key -> the app-db key that builder's in-progress item lives under." + {local-storage-class-key ::class5e/builder-item + local-storage-subclass-key ::class5e/subclass-builder-item + local-storage-invocation-key ::class5e/invocation-builder-item + local-storage-boon-key ::class5e/boon-builder-item + local-storage-race-key ::race5e/builder-item + local-storage-subrace-key ::race5e/subrace-builder-item + local-storage-spell-key ::spells5e/builder-item + local-storage-monster-key ::monsters5e/builder-item + local-storage-encounter-key ::encounters5e/builder-item + local-storage-background-key ::bg5e/builder-item + local-storage-language-key ::langs5e/builder-item + local-storage-selection-key ::selections5e/builder-item + local-storage-feat-key ::feats5e/builder-item}) + +(re-frame/reg-cofx + :local-store-builder-items + (fn [cofx _] + (assoc cofx :local-store-builder-items + (reduce-kv + (fn [acc store-key item-key] + (let [v (get-local-storage-item store-key)] + (if (map? v) (assoc acc item-key v) acc))) + {} + builder-wip-stores)))) + ;; dead — duplicate of classes.cljc def, never referenced from .cljs code #_(def musical-instrument-choice-cfg {:name "Musical Instrument" :options (zipmap (map :key equip5e/musical-instruments) (repeat 1))}) -(reg-local-store-cofx +(defn get-rejected-plugins + "Read the name-keyed quarantine map (`plugins:rejected`), or {} if absent or + not a map. Canonical source for quarantined sources." + [] + (let [r (get-local-storage-item local-storage-plugins-rejected-key)] + (if (map? r) r {}))) + +(defn set-rejected-plugins + "Persist the name-keyed quarantine map. Removes the key entirely when the map + is empty, so a fully-repaired library leaves no stale quarantine entry." + [rejected] + (when js/window.localStorage + (if (seq rejected) + (set-item local-storage-plugins-rejected-key (str rejected)) + (.removeItem js/window.localStorage local-storage-plugins-rejected-key)))) + +;; Resilient plugins loader. The old all-or-nothing version returned nil — dropping +;; the ENTIRE library — if any single source failed the ::e5/plugins spec. Instead, +;; keep the valid sources and quarantine the invalid ones in `plugins:rejected` +;; (preserved for repair). Registered directly, not via reg-local-store-cofx, +;; because the salvage/quarantine behavior is plugins-specific. +(re-frame/reg-cofx ::e5/plugins - local-storage-plugins-key - ::e5/plugins) + (fn [cofx _] + (assoc cofx + ::e5/plugins + (when-let [stored (get-local-storage-item local-storage-plugins-key)] + (if (not (map? stored)) + ;; Parsed but not a map: preserve raw in the :corrupt slot — NOT + ;; :rejected, a clean name-keyed map we must not clobber. Load nothing. + (do + (set-item (corrupt-slot-key local-storage-plugins-key) (str stored)) + (js/console.warn + (str "Stored plugins were not a map; preserved raw copy in '" + (corrupt-slot-key local-storage-plugins-key) + "'. Loaded no homebrew.")) + nil) + + ;; It's a map: salvage per source — keep the valid sources and + ;; reconcile the name-keyed quarantine map (see reconcile-rejected). + (let [{:keys [kept rejected]} + ;; Load acceptance predicate comes from the shared content-specs + ;; registry (the source save & load agree on), not inline — so + ;; the load floor can't drift from what save guarantees. + (e5/salvage-plugins content-specs/valid-for-load? stored) + reconciled (e5/reconcile-rejected + (get-local-storage-item local-storage-plugins-rejected-key) + rejected + kept)] + (if (seq reconciled) + (set-item local-storage-plugins-rejected-key (str reconciled)) + ;; self-clearing: no quarantined sources left → drop the key + (when js/window.localStorage + (.removeItem js/window.localStorage local-storage-plugins-rejected-key))) + (when (seq rejected) + (js/console.warn + (str "Quarantined " (count rejected) " invalid homebrew " + "source(s) (kept the other " (count kept) "). Preserved " + "for repair in '" local-storage-plugins-rejected-key + "': " (pr-str (vec (keys rejected)))))) + kept)))))) + +;; Load the name-keyed quarantine map into app-db so the repair UI can +;; render reactively. Injected AFTER ::e5/plugins in :initialize-db, since that +;; cofx is what writes/reconciles plugins:rejected during boot. +(re-frame/reg-cofx + ::e5/rejected-plugins + (fn [cofx _] + (assoc cofx ::e5/rejected-plugins (get-rejected-plugins)))) (reg-local-store-cofx ::combat5e/tracker-item diff --git a/src/cljs/orcpub/dnd/e5/events.cljs b/src/cljs/orcpub/dnd/e5/events.cljs index 8edb2a3f9..dc6311fb8 100644 --- a/src/cljs/orcpub/dnd/e5/events.cljs +++ b/src/cljs/orcpub/dnd/e5/events.cljs @@ -49,6 +49,8 @@ subclass->local-store class->local-store plugins->local-store + get-rejected-plugins + set-rejected-plugins default-character default-spell default-monster @@ -209,22 +211,33 @@ [(inject-cofx :local-store-character) (inject-cofx :local-store-user) (inject-cofx :local-store-magic-item) + ;; Restore every homebrew builder's in-progress item (one cofx, driven by + ;; db/builder-wip-stores) so WIP survives a refresh in ALL builders, not just class. + (inject-cofx :local-store-builder-items) (inject-cofx ::e5/plugins) + ;; AFTER ::e5/plugins — that cofx reconciles/writes plugins:rejected, and + ;; this reads the result into app-db for the reactive repair panel. + (inject-cofx ::e5/rejected-plugins) (inject-cofx ::combat/tracker-item) check-spec-interceptor] (fn [{:keys [db local-store-character local-store-user local-store-magic-item + local-store-builder-items ::e5/plugins + ::e5/rejected-plugins ::combat/tracker-item]} _] {:db (if (seq db) db (cond-> default-value plugins (assoc :plugins plugins) + (seq rejected-plugins) (assoc :quarantined-plugins rejected-plugins) local-store-character (assoc :character local-store-character) local-store-user (update :user-data merge local-store-user) local-store-magic-item (assoc ::mi/builder-item local-store-magic-item) + ;; Restore in-progress builder WIP (all builders) across refresh. + (seq local-store-builder-items) (merge local-store-builder-items) tracker-item (assoc ::combat/tracker-item tracker-item)))})) (defn reset-character [_ _] @@ -3736,6 +3749,59 @@ (fn [_ [_ plugins]] plugins)) +;; `plugins->local-store` dispatches this when the localStorage write +;; fails (typically a full quota). The save lives in memory but would vanish on +;; refresh, so surface it loudly and offer the unvalidated full backup +;; (`::e5/emergency-export-raw` with nil = whole library) as an immediate out. +(reg-event-fx + ::e5/plugins-save-failed + (fn [_ _] + {:dispatch [:show-error-message + [:div + [:div.f-w-b "Couldn't save to browser storage — it may be full."] + [:div.m-t-5 + "Your latest change is in memory but will be lost on refresh."] + [:div.m-t-10 + [:span.pointer.underline.f-w-b + {:on-click #(dispatch [::e5/emergency-export-raw nil])} + "Download a full backup now"]]] + builder-error-ttl]})) + +;; Repair a quarantined source and merge it back into the live library. +;; rekey-plugin re-derives the map key from the fixed name (the keyword-trap case). +;; Atomic and PERSISTED (unlike the export auto-fix, which only rewrote the file): +;; the source lands in :plugins and leaves plugins:rejected together, or — if still +;; invalid — nothing changes and the user is told why. +(reg-event-fx + ::e5/repair-quarantined-source + (fn [{:keys [db]} [_ source-name edits]] + (let [rejected (get-rejected-plugins) + bad (get rejected source-name)] + (cond + (nil? bad) + {:dispatch [:show-error-message + (str "No quarantined source named \"" source-name "\" to repair.")]} + + :else + (let [fixed (-> (orcbrew-val/apply-user-edits-to-plugin bad source-name (or edits {})) + (e5/rekey-plugin))] + (if (spec/valid? ::e5/plugin fixed) + (let [new-plugins (assoc (:plugins db) source-name fixed)] + ;; Update both stores together (persist + drop from quarantine) so they + ;; never disagree and the change shows immediately, not on the next boot. + (plugins->local-store new-plugins) + (set-rejected-plugins (dissoc rejected source-name)) + {:db (-> db + (assoc :plugins new-plugins) + ;; keep the reactive panel in sync with localStorage + (update :quarantined-plugins dissoc source-name)) + :dispatch [:show-warning-message + (str "\"" source-name "\" repaired and restored to My Content.")]}) + {:dispatch [:show-error-message + (str "\"" source-name "\" still has problems after the fix — " + "each name must start with a letter and every item needs " + "an option source. Adjust and try again.")]})))))) + ;; ============================================================================ ;; Export Validation + File Save ;; ============================================================================ diff --git a/src/cljs/orcpub/dnd/e5/spell_subs.cljs b/src/cljs/orcpub/dnd/e5/spell_subs.cljs index bc3d391c8..a8739489a 100644 --- a/src/cljs/orcpub/dnd/e5/spell_subs.cljs +++ b/src/cljs/orcpub/dnd/e5/spell_subs.cljs @@ -40,6 +40,13 @@ (fn [db _] (get db :plugins))) +;; The name-keyed quarantine map ({source-name → bad-source}) loaded at +;; boot, kept in sync by the repair event. Drives the quarantine repair panel. +(reg-sub + ::e5/quarantined-plugins + (fn [db _] + (get db :quarantined-plugins))) + (reg-sub ::e5/plugin-vals :<- [::e5/plugins] diff --git a/src/cljs/orcpub/dnd/e5/views.cljs b/src/cljs/orcpub/dnd/e5/views.cljs index 971f93720..2638a505b 100644 --- a/src/cljs/orcpub/dnd/e5/views.cljs +++ b/src/cljs/orcpub/dnd/e5/views.cljs @@ -8240,11 +8240,79 @@ [my-content-item name plugin]) plugins)))]]) +(defn quarantine-source-repair + "Repair UI for ONE quarantined source. Shows live-validated name inputs for the + keyword-trap items (names that derived an invalid key) and a 'Repair & Restore' + action that fixes + re-keys + persists via ::e5/repair-quarantined-source. A + raw-export hatch is always offered so broken data can be fixed externally too." + [src-name plugin] + (let [trapped (e5/invalid-keyed-items plugin) + edits (r/atom (into {} (map (fn [{:keys [content-type item-key name]}] + [[content-type item-key] (or name "")]) + trapped)))] + (fn [src-name plugin] + (let [current @edits + invalid? (fn [v] (not (common/starts-with-letter? (or v "")))) + blocked? (or (empty? current) (boolean (some invalid? (vals current))))] + [:div.p-10.m-t-10.bg-lighter.b-rad-5 + [:div.f-w-b.f-s-18.orange src-name] + (if (seq trapped) + [:div + [:div.f-s-12.m-t-5.m-b-5 + "Couldn't load: a name starts with a number or symbol (names become " + "keys, which can't). Fix the name(s) below, then restore:"] + (doall + (for [{:keys [content-type item-key]} trapped + :let [k [content-type item-key] + v (get current k "")]] + ^{:key (str k)} + [:div.m-t-5.flex.align-items-c + [:input.input {:type "text" :value v + :on-change #(swap! edits assoc k (.. % -target -value))}] + (when (invalid? v) + [:span.red.m-l-5.f-s-12 "must start with a letter"])]))] + [:div.f-s-12.m-t-5 + "Couldn't load and can't be auto-repaired here — export it to fix manually."]) + [:div.m-t-10 + (when (seq trapped) + [:button.form-button.m-r-5 + {:disabled blocked? + :class (when blocked? "disabled") + :on-click #(when-not blocked? + (dispatch [::e5/repair-quarantined-source src-name + (into {} (map (fn [[[ct ik] nm]] + [[src-name ct ik :name] nm]) + @edits))]))} + "Repair & Restore"]) + [:button.form-button + {:on-click #(dispatch [::e5/export-quarantined-raw src-name])} + "Export raw"]]])))) + +(defn quarantine-panel + "Surfaces sources the loader quarantined. Preserved, not discarded — + the user can repair them back into the library or export the raw data." + [] + (let [quarantined @(subscribe [::e5/quarantined-plugins])] + (when (seq quarantined) + [:div.p-20.main-text-color.m-b-10.m-l-10.m-r-10.b-rad-5 + {:style {:border "2px solid #d94b20"}} + [:div.f-w-b.f-s-24.m-b-5 + [:i.fa.fa-exclamation-triangle.m-r-5] + (str (count quarantined) " quarantined source" + (when (not= 1 (count quarantined)) "s") " — couldn't load")] + [:div.f-s-12 + "These were preserved (not discarded) so you can repair or export them."] + (doall + (for [[src-name plugin] quarantined] + ^{:key src-name} + [quarantine-source-repair src-name plugin]))]))) + (defn my-content-page [] [content-page "My Content" [] [:div + [quarantine-panel] [:div.p-20.bg-lighter.main-text-color.m-b-10.m-l-10.m-r-10.b-rad-5 [:div.f-w-b.f-s-24.m-b-5 "Import Option Source"] [:input {:type "file" From 1e9f27ec22b48bf30952418a6aba7194b13759e2 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 15:24:11 -0400 Subject: [PATCH 04/11] Stop boolean toggles from corrupting saved homebrew Toggling a flag could collapse a whole list to a bare true/false/nil and persist that, quietly wiping the list. Route toggles through common/toggle-in, which guards the write and self-heals a legacy collapse instead of crashing, and strip-export-blanks drops meaningless false/nil/empty entries on export so they stop accumulating in saved and exported content. --- src/cljc/orcpub/common.cljc | 22 ++++++ src/cljs/orcpub/dnd/e5/events.cljs | 67 +++++++++---------- .../orcpub/dnd/e5/orcbrew_validation.cljs | 40 +++++++++++ 3 files changed, 94 insertions(+), 35 deletions(-) diff --git a/src/cljc/orcpub/common.cljc b/src/cljc/orcpub/common.cljc index d4f73bdc3..130cae8b1 100644 --- a/src/cljc/orcpub/common.cljc +++ b/src/cljc/orcpub/common.cljc @@ -161,6 +161,28 @@ (and (keyword? kw) (-> kw name starts-with-letter?))) +(defn toggle-flag + "Flip a boolean flag, but leave a collection untouched instead of collapsing it. + Use in place of bare `not` for builder toggles whose path could land on a MAP: + `(not {…})` is `false`, which DESTROYS the map so every child read returns nil + (the 'true/false/nil from clicking a lot' corruption)." + [v] + (if (coll? v) v (not v))) + +(defn toggle-in + "Toggle a boolean flag at path `ks` in `m` (like `update-in` with `not`), with + two safeguards: the LEAF uses `toggle-flag` so it never collapses a map; a + non-associative INTERMEDIATE (a stray `false` from the old collapse bug, or an + absent slot) is healed to a fresh map instead of crashing on `(assoc false …)`, + so a click on a previously-corrupted spot self-heals." + [m ks] + (let [[k & more] ks] + (if (seq more) + (let [child (get m k) + child (if (associative? child) child {})] ; heal a collapsed node + (assoc m k (toggle-in child more))) + (assoc m k (toggle-flag (get m k)))))) + (defn remove-at-index [v index] (vec (keep-indexed diff --git a/src/cljs/orcpub/dnd/e5/events.cljs b/src/cljs/orcpub/dnd/e5/events.cljs index dc6311fb8..3cf126696 100644 --- a/src/cljs/orcpub/dnd/e5/events.cljs +++ b/src/cljs/orcpub/dnd/e5/events.cljs @@ -1507,10 +1507,9 @@ (event-handlers/add-inventory-item character selection-key item-key))) (defn toggle-inventory-item-equipped [character [_ selection-key item-index]] - (update-in + (common/toggle-in character - [::entity/options selection-key item-index ::entity/value ::char-equip5e/equipped?] - not)) + [::entity/options selection-key item-index ::entity/value ::char-equip5e/equipped?])) (reg-event-db :toggle-inventory-item-equipped @@ -1518,10 +1517,9 @@ toggle-inventory-item-equipped) (defn toggle-custom-inventory-item-equipped [character [_ custom-equipment-key item-index]] - (update-in + (common/toggle-in character - [::entity/values custom-equipment-key item-index ::char-equip5e/equipped?] - not)) + [::entity/values custom-equipment-key item-index ::char-equip5e/equipped?])) (reg-event-db :toggle-custom-inventory-item-equipped @@ -3261,7 +3259,9 @@ ::feats5e/toggle-feat-prop feat-interceptors (fn [feat [_ key]] - (update-in feat [:props key] not))) + ;; toggle-in, not update-in/not: [:props key] may hold a MAP (a sibling skill/ + ;; save grid) that bare `not` would collapse to false and destroy. + (common/toggle-in feat [:props key]))) #_ ;; never dispatched from UI — feat builder uses toggle-feat-prop instead (reg-event-db @@ -3283,7 +3283,7 @@ ::race5e/toggle-race-prop race-interceptors (fn [race [_ key]] - (update-in race [:props key] not))) + (common/toggle-in race [:props key]))) (reg-event-db ::race5e/toggle-subrace-value-prop @@ -3318,25 +3318,27 @@ ::feats5e/toggle-feat-map-prop feat-interceptors (fn [feat [_ key value]] - (update-in feat [:props key value] not))) + (common/toggle-in feat [:props key value]))) (reg-event-db ::race5e/toggle-subrace-map-prop subrace-interceptors (fn [subrace [_ key value]] - (update-in subrace [:props key value] not))) + (common/toggle-in subrace [:props key value]))) (reg-event-db ::monsters/toggle-monster-map-prop monster-interceptors (fn [monster [_ key value]] - (update-in monster [:props key value] not))) + (common/toggle-in monster [:props key value]))) (reg-event-db ::class5e/toggle-class-path-prop class-interceptors (fn [class [_ prop-path prop-value]] - (update-in class prop-path not))) + ;; toggle-in guards against prop-path landing on a map + self-heals a stray + ;; false intermediate (corruption). + (common/toggle-in class prop-path))) #_ ;; never dispatched — class builder UI not wired for prof toggles (reg-event-db @@ -3354,25 +3356,25 @@ ::class5e/toggle-subclass-path-prop subclass-interceptors (fn [subclass [_ prop-path prop-value]] - (update-in subclass prop-path not))) + (common/toggle-in subclass prop-path))) (reg-event-db ::race5e/toggle-race-path-prop race-interceptors (fn [race [_ prop-path prop-value]] - (update-in race prop-path not))) + (common/toggle-in race prop-path))) (reg-event-db ::race5e/toggle-subrace-path-prop subrace-interceptors (fn [subrace [_ prop-path prop-value]] - (update-in subrace prop-path not))) + (common/toggle-in subrace prop-path))) (reg-event-db ::race5e/toggle-race-map-prop race-interceptors (fn [race [_ key value]] - (update-in race [:props key value] not))) + (common/toggle-in race [:props key value]))) #_ ;; never dispatched — class builder UI not wired for subclass map-prop toggles (reg-event-db @@ -3419,7 +3421,7 @@ ::feats5e/toggle-path-prereq feat-interceptors (fn [feat [_ path]] - (update-in feat (cons :path-prereqs path) not))) + (common/toggle-in feat (cons :path-prereqs path)))) (reg-event-db ::feats5e/toggle-spellcasting-prereq @@ -3477,7 +3479,7 @@ ::spells/toggle-component spell-interceptors (fn [spell [_ component]] - (update-in spell [:components component] not))) + (common/toggle-in spell [:components component]))) (reg-event-db ::bg5e/toggle-skill-prof @@ -3548,7 +3550,7 @@ ::spells/toggle-spell-list spell-interceptors (fn [spell [_ class-key]] - (update-in spell [:spell-lists class-key] not))) + (common/toggle-in spell [:spell-lists class-key]))) (reg-event-db ::spells/set-material-component @@ -3858,7 +3860,9 @@ (:valid validation) (do (log-export-warnings plugin-name validation) - (save-orcbrew-blob! (str plugin-name ".orcbrew") plugin + ;; Strip meaningless blanks (false/nil/empty) on normal export. + (save-orcbrew-blob! (str plugin-name ".orcbrew") + (orcbrew-val/strip-export-blanks plugin) :pretty-print? pretty-print?) (if (seq (:warnings validation)) {:dispatch [:show-warning-message @@ -4030,7 +4034,9 @@ ;; Everything is clean :else (do - (save-orcbrew-blob! "all-content.orcbrew" all-plugins) + ;; Strip meaningless blanks (false/nil/empty) on normal export. + (save-orcbrew-blob! "all-content.orcbrew" + (orcbrew-val/strip-export-blanks all-plugins)) {}))))) @@ -4070,24 +4076,15 @@ (reg-event-fx ::e5/toggle-plugin (fn [{:keys [db]} [_ name]] - {:dispatch [::e5/set-plugins (-> db :plugins (update-in [name :disabled?] not))]})) + {:dispatch [::e5/set-plugins (-> db :plugins (common/toggle-in [name :disabled?]))]})) (reg-event-fx ::e5/toggle-plugin-item (fn [{:keys [db]} [_ plugin-name type-key key]] - {:dispatch [::e5/set-plugins (-> db :plugins (update-in [plugin-name type-key key :disabled?] not))]})) - -(defn clean-plugin-errors - "DEPRECATED: Use orcbrew-validation/validate-import instead. - Kept for backward compatibility only." - [plugin-text] - (-> plugin-text - (clojure.string/replace #"disabled\?\s+nil" "disabled? false") ; disabled? nil - replace w/disabled? false - (clojure.string/replace #"(?m)nil nil, " "") ; nil nil, - find+remove - (clojure.string/replace #":\w+\snil" "") ; :[a-0] nil - find+remove - (clojure.string/replace #"\{\"\"\s*\{:orcpub\.dnd\.e5" "{\"Default Option Source\" {:orcpub.dnd.e5") - (clojure.string/replace #":option-pack\s*\"\s*\"\s*," ":option-pack \"Default Option Source\",") ;:option-pack "", - )) + {:dispatch [::e5/set-plugins (-> db :plugins (common/toggle-in [plugin-name type-key key :disabled?]))]})) + +;; (Removed dead `clean-plugin-errors` — a raw-EDN string-replace hack with zero +;; callers, superseded by `orcbrew-validation/validate-import` (structured cleaning).) ;; ============================================================================ ;; Import Log Events diff --git a/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs b/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs index e99e2be98..5dddfaebf 100644 --- a/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs +++ b/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs @@ -1263,6 +1263,46 @@ (defn clean-data [data] (:data (clean-data-with-log data))) +;; ============================================================================ +;; Export blank-stripping — don't ship meaningless nils/falses/empties. +;; ============================================================================ + +(def export-keep-nil-keys + "Keys where a nil VALUE is meaningful and must survive export (mirrors the + import-side nil-preserve-fields)." + #{:spell-list-kw :ability :class-key}) + +(defn- blank-for-export? + "A map entry is a meaningless blank to drop on export when its (already-cleaned) + value is nil (and the key isn't keep-nil), false, or an empty collection." + [k v] + (and (not (contains? export-keep-nil-keys k)) + (or (nil? v) + (false? v) + (and (coll? v) (empty? v))))) + +(defn strip-export-blanks + "Recursively drop meaningless blank MAP VALUES for export (nil, false, empty + collection), except keys where nil is meaningful (export-keep-nil-keys). + Vector/set elements are cleaned but never dropped positionally, so pairs like + `[prof-kw first-class?]` survive. Only removes blanks, never alters a real value + (round-trip safe — see export-strip tests). NORMAL exports only; raw/draft stay + byte-for-byte untouched." + [data] + (cond + (map? data) + (reduce-kv (fn [m k v] + (let [v' (strip-export-blanks v)] + (if (blank-for-export? k v') + m + (assoc m k v')))) + {} + data) + (vector? data) (mapv strip-export-blanks data) + (set? data) (into #{} (map strip-export-blanks) data) + (seq? data) (doall (map strip-export-blanks data)) + :else data)) + ;; ============================================================================ ;; Duplicate Key Detection ;; ============================================================================ From e3c9a9ee4165cda4d7d3e926ff6773e428c03caf Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 15:24:11 -0400 Subject: [PATCH 05/11] Harden the homebrew save path: registry, Save-anyway, export fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Derive each builder's save spec from the registry instead of a per-call argument, so save and load can't drift. Add a Save-anyway path that force-fills the fields blocking a save (option source, name, key) with placeholders and lands imperfect work in My Content instead of trapping it in the builder, with specific located field-error messages. Fix the post-save export link, which passed the plugin map wrapped in str — a string that failed validate-before-export's map? check with a munged predicate error. --- src/cljs/orcpub/dnd/e5/events.cljs | 254 ++++++++++++++++++++--------- 1 file changed, 178 insertions(+), 76 deletions(-) diff --git a/src/cljs/orcpub/dnd/e5/events.cljs b/src/cljs/orcpub/dnd/e5/events.cljs index 3cf126696..846f29a89 100644 --- a/src/cljs/orcpub/dnd/e5/events.cljs +++ b/src/cljs/orcpub/dnd/e5/events.cljs @@ -6,6 +6,7 @@ [orcpub.dice :as dice] [orcpub.modifiers :as mod] [orcpub.dnd.e5 :as e5] + [orcpub.dnd.e5.content-specs :as content-specs] [orcpub.dnd.e5.template :as t5e] [orcpub.dnd.e5.common :as common5e] [orcpub.dnd.e5.orcbrew-validation :as orcbrew-val] @@ -454,7 +455,10 @@ ;; Since built-template is a no-op (plugin merging commented out), ;; we use the cached template directly with entity/build. cached-template (get db ::autosave-fx/cached-template)] - (if-not cached-template + ;; Skip when the template isn't ready — nil OR empty {}. An empty template + ;; crashes entity/build (null fn `.call`); `seq` covers both cases. + ;; (Guarded by events-test save-character-rejects-missing-abilities.) + (if-not (seq cached-template) {} ;; template not cached yet — skip this cycle, next autosave will retry (let [{:keys [:db/id] :as strict} (char5e/to-strict character) built-character (entity/build character cached-template) @@ -557,6 +561,23 @@ (or (some (fn [[re msg]] (when (re-find re s) msg)) builder-invalid-reason-rules) "is not valid"))) +(defn- singularize + "Crude singular for a humanized collection name: \"Options\" -> \"Option\"." + [s] + (if (s/ends-with? s "s") (subs s 0 (dec (count s))) s)) + +(defn- problem-location + "Turn a spec problem's `:in` path into a 1-based human location like \"Option 2\" + when it lives inside an indexed collection (e.g. a selection's :options), so the + banner can name WHICH nested element failed. nil for a top-level field." + [in] + (->> (partition 2 1 in) + (keep (fn [[a b]] + (when (and (keyword? a) (int? b)) + (str (singularize (field-label a)) " " (inc b))))) + (s/join " ") + (#(when (seq %) %)))) + (defn spec-field-problems "Classify each failing required field from a spec explanation against the original (pre-fill) item. Returns one entry per field: @@ -564,16 +585,27 @@ {:field k :status :invalid :reason \"...\"} — present but rejected A missing :req-un key is a nested `(fn [%] (contains? % :k))` (found via tree-seq); an invalid value is reported with the field at the end of :in. - :key maps to :name, since :key is derived from the name." + :key maps to :name, since :key is derived from the name. + + A problem inside an indexed collection also carries :location (\"Option 2\") so + the message names the nested element instead of a bare \"Name\"." [explanation item] (when-let [problems (::spec/problems explanation)] (->> problems (keep (fn [{:keys [pred in]}] (let [missing-key (orcbrew-val/missing-required-key pred) field (let [f (or missing-key (last (filter keyword? in)))] - (when f (if (= f :key) :name f)))] + (when f (if (= f :key) :name f))) + location (problem-location in)] (when field - (let [v (get item field) + ;; resolve the actual offending value via :in so a nested + ;; option's blank-check looks at the option, not the parent. + (let [container (if missing-key + (get-in item (vec in)) + (get-in item (vec (butlast in)))) + v (if (and (not missing-key) (map? container)) + (get container field) + (get item field)) blank? (or (nil? v) (and (string? v) (s/blank? v)) ;; a checkbox-group map with nothing checked @@ -581,15 +613,18 @@ (and (map? v) (seq v) (every? boolean? (vals v)) (not (some true? (vals v)))))] - (if (or missing-key blank?) - {:field field :status :missing} - {:field field :status :invalid - :reason (builder-invalid-reason pred)})))))) - ;; one entry per field; prefer an :invalid report over a :missing one - (reduce (fn [acc {:keys [field status] :as p}] - (if (or (not (contains? acc field)) (= status :invalid)) - (assoc acc field p) - acc)) + (cond-> (if (or missing-key blank?) + {:field field :status :missing} + {:field field :status :invalid + :reason (builder-invalid-reason pred)}) + location (assoc :location location))))))) + ;; one entry per (location, field); prefer an :invalid report over a + ;; :missing one for the same target. + (reduce (fn [acc {:keys [field location status] :as p}] + (let [k [location field]] + (if (or (not (contains? acc k)) (= status :invalid)) + (assoc acc k p) + acc))) {}) vals vec))) @@ -607,21 +642,38 @@ (defn builder-error-hiccup "A clear, multi-line save-validation message: the empty fields on one line (bold, 'and'-joined) and each invalid field with its reason on its own line, - so even a hurried reader sees the distinct problems." - [type-name problems] - (let [missing (filter #(= :missing (:status %)) problems) - invalid (filter #(= :invalid (:status %)) problems) - missing-line (when (seq missing) + so even a hurried reader sees the distinct problems. When `save-anyway-event` + is given, also offers a remediating escape hatch so imperfect work isn't trapped." + [type-name problems & [save-anyway-event]] + (let [located? :location + ;; bold field label, prefixed with its nested location when known + ;; ("Option 2 Name") so the reader knows which element to fix. + labelled (fn [{:keys [field location]}] + (let [lbl (field-label field)] + [:span.f-w-b (if location (str location " " lbl) lbl)])) + ;; top-level missing fields batch onto one "Please fill in ..." line; + ;; located ones each get their own line so the location is unambiguous. + missing (filter #(= :missing (:status %)) problems) + flat-missing (remove located? missing) + located-missing (filter located? missing) + invalid (filter #(= :invalid (:status %)) problems) + missing-line (when (seq flat-missing) (into [:div.m-t-5 "Please fill in "] - (conj (and-join (mapv #(vector :span.f-w-b (field-label (:field %))) - missing)) - "."))) - invalid-lines (for [{:keys [field reason]} invalid] - [:div.m-t-5 [:span.f-w-b (field-label field)] " " reason "."])] + (conj (and-join (mapv labelled flat-missing)) "."))) + located-missing-lines (for [p located-missing] + [:div.m-t-5 "Please fill in " (labelled p) "."]) + invalid-lines (for [p invalid] + [:div.m-t-5 (labelled p) " " (:reason p) "."])] (into [:div [:span.f-w-b (str type-name ":")]] (cond-> [] missing-line (conj missing-line) - true (into invalid-lines))))) + true (into located-missing-lines) + true (into invalid-lines) + save-anyway-event + (conj [:div.m-t-10 + [:span.pointer.underline.f-w-b + {:on-click #(dispatch [save-anyway-event])} + "Save anyway with placeholders"]]))))) (def ^:private builder-error-ttl "How long the homebrew save-validation banner stays up (ms). Long enough to @@ -647,52 +699,78 @@ "Effects for a failed homebrew save: flag the offending fields and show a targeted, long-lived banner. Falls back to the static message when no specific field can be identified." - [type-name explanation item fallback-message] + [type-name explanation item fallback-message & [save-anyway-event]] (let [problems (spec-field-problems explanation item)] (if (seq problems) {:dispatch-n [[:set-builder-field-errors (into {} (map (juxt :field :status) problems))] - [:show-error-message (builder-error-hiccup type-name problems) builder-error-ttl]]} + [:show-error-message + (builder-error-hiccup type-name problems save-anyway-event) + builder-error-ttl]]} {:dispatch-n [[:set-builder-field-errors {}] [:show-error-message fallback-message builder-error-ttl]]}))) (defn reg-save-homebrew [type-name event-key item-key - spec-key plugin-key error-message] - (reg-event-fx - event-key - (fn [{:keys [db]} _] - (let [{:keys [name option-pack] :as item} (item-key db) - key (common/name-to-kw name) - ;; Normalize text then auto-fill missing required fields - normalized-item (orcbrew-val/normalize-text-in-data item) - {filled-item :item} (orcbrew-val/fill-all-missing-fields normalized-item plugin-key) - item-with-key (assoc filled-item :key key) - plugins (:plugins db) - explanation (spec/explain-data spec-key item-with-key)] - (if (nil? explanation) - (let [new-plugins (assoc-in plugins - [option-pack plugin-key key] - item-with-key)] - {:dispatch-n [[::e5/set-plugins new-plugins] - [:set-builder-field-errors {}] - [:show-warning-message - [:div [:span.f-w-b.f-s-18.red "IMPORTANT!: "] - [:span.text-shadow - (str type-name " saved to your browser which could be lost if you clear your browser history or your browser storage fill up, you MUST export and save the content source by clicking ")] - [:span.pointer.underline.black - {:on-click #(dispatch [::e5/export-plugin option-pack (str (new-plugins option-pack))])} - "here"]] - 60000]]}) - (builder-field-error-fx type-name explanation item error-message)))))) + (let [;; Save spec is derived from the content type via the shared registry, not + ;; passed per-call, so save and load can't name different specs and drift. + spec-key (content-specs/save-spec-for plugin-key) + ;; Companion "save anyway" event, offered from the failure banner. + anyway-event-key (keyword (namespace event-key) + (str (name event-key) "-anyway"))] + (reg-event-fx + event-key + (fn [{:keys [db]} _] + (let [{:keys [name option-pack] :as item} (item-key db) + key (common/name-to-kw name) + ;; Normalize text then auto-fill missing required fields + normalized-item (orcbrew-val/normalize-text-in-data item) + {filled-item :item} (orcbrew-val/fill-all-missing-fields normalized-item plugin-key) + item-with-key (assoc filled-item :key key) + plugins (:plugins db) + explanation (spec/explain-data spec-key item-with-key)] + (if (nil? explanation) + (let [new-plugins (assoc-in plugins + [option-pack plugin-key key] + item-with-key)] + {:dispatch-n [[::e5/set-plugins new-plugins] + [:set-builder-field-errors {}] + [:show-warning-message + [:div [:span.f-w-b.f-s-18.red "IMPORTANT!: "] + [:span.text-shadow + (str type-name " saved to your browser which could be lost if you clear your browser history or your browser storage fill up, you MUST export and save the content source by clicking ")] + [:span.pointer.underline.black + {:on-click #(dispatch [::e5/export-plugin option-pack (new-plugins option-pack)])} + "here"]] + 60000]]}) + (builder-field-error-fx type-name explanation item error-message anyway-event-key))))) + + ;; Save-anyway: placeholder-fill the blocking fields (option source, name, + ;; key) and land the flagged item in My Content. Reuses fill-all-missing-fields; + ;; adds only a placeholder option source. + (reg-event-fx + anyway-event-key + (fn [{:keys [db]} _] + (let [{:keys [name option-pack] :as item} (item-key db) + normalized-item (orcbrew-val/normalize-text-in-data item) + {filled-item :item} (orcbrew-val/fill-all-missing-fields normalized-item plugin-key) + src (if (s/blank? option-pack) "Unsorted Homebrew" option-pack) + key (common/name-to-kw (:name filled-item)) + item-with-key (assoc filled-item :key key :option-pack src) + new-plugins (assoc-in (:plugins db) [src plugin-key key] item-with-key)] + {:dispatch-n [[::e5/set-plugins new-plugins] + [:set-builder-field-errors {}] + [:show-warning-message + (str type-name " saved to My Content under \"" src + "\" with placeholders for missing fields. Review it " + "and re-export before sharing.")]]}))))) (reg-save-homebrew "Spell" ::spells/save-spell ::spells/builder-item - ::spells/homebrew-spell ::e5/spells "You must specify 'Name', 'Option Source Name', and at select at least one class in 'Class Spell Lists'") @@ -700,7 +778,6 @@ "Monster" ::monsters/save-monster ::monsters/builder-item - ::monsters/homebrew-monster ::e5/monsters "You must specify 'Name', 'Option Source Name', 'Hit Points Die Count', and 'Hit Points Die'") @@ -708,7 +785,6 @@ "Encounter" ::encounters/save-encounter ::encounters/builder-item - ::encounters/encounter ::e5/encounters "You must specify 'Name', 'Option Source Name'") @@ -716,7 +792,6 @@ "Background" ::bg5e/save-background ::bg5e/builder-item - ::bg5e/homebrew-background ::e5/backgrounds "You must specify 'Name', 'Option Source Name'") @@ -724,7 +799,6 @@ "Language" ::langs5e/save-language ::langs5e/builder-item - ::langs5e/homebrew-language ::e5/languages "You must specify 'Name', 'Option Source Name'") @@ -732,7 +806,6 @@ "Invocation" ::class5e/save-invocation ::class5e/invocation-builder-item - ::class5e/homebrew-invocation ::e5/invocations "You must specify 'Name', 'Option Source Name'") @@ -740,7 +813,6 @@ "Boon" ::class5e/save-boon ::class5e/boon-builder-item - ::class5e/homebrew-boon ::e5/boons "You must specify 'Name', 'Option Source Name'") @@ -756,7 +828,7 @@ {filled-item :item} (orcbrew-val/fill-all-missing-fields normalized-item ::e5/selections) item-with-key (assoc filled-item :key key) plugins (:plugins db) - explanation (spec/explain-data ::selections5e/homebrew-selection item-with-key) + explanation (spec/explain-data (content-specs/save-spec-for ::e5/selections) item-with-key) ;; Check for empty option names option-names (map :name (:options item)) empty-names? (some s/blank? option-names) @@ -784,10 +856,13 @@ (s/join ", " dupe-names) ". Each option must have a unique name.") builder-error-ttl]} - ;; Spec validation + ;; Spec validation — offer "Save anyway" (empty/duplicate option names + ;; were already ruled out above, so the only thing left to remediate is the + ;; missing name/option-source that fill-all-missing-fields can placeholder). (some? explanation) (builder-field-error-fx "Selection" explanation item - "You must specify 'Name', 'Option Source Name'") + "You must specify 'Name', 'Option Source Name'" + ::selections5e/save-selection-anyway) ;; All good — save :else (let [new-plugins (assoc-in plugins @@ -800,15 +875,34 @@ [:span.text-shadow "Selection saved to your browser which could be lost if you clear your browser history or your browser storage fill up, you MUST export and save the content source by clicking "] [:span.pointer.underline.black - {:on-click #(dispatch [::e5/export-plugin option-pack (str (new-plugins option-pack))])} + {:on-click #(dispatch [::e5/export-plugin option-pack (new-plugins option-pack)])} "here"]] 60000]]}))))) +;; Selection is a standalone handler (for its option-name checks), so it doesn't +;; get reg-save-homebrew's auto-generated -anyway event and needs its own: +;; placeholder-fill the missing fields and land the flagged selection in My Content. +(reg-event-fx + ::selections5e/save-selection-anyway + (fn [{:keys [db]} _] + (let [{:keys [option-pack] :as item} (::selections5e/builder-item db) + normalized-item (orcbrew-val/normalize-text-in-data item) + {filled-item :item} (orcbrew-val/fill-all-missing-fields normalized-item ::e5/selections) + src (if (s/blank? option-pack) "Unsorted Homebrew" option-pack) + key (common/name-to-kw (:name filled-item)) + item-with-key (assoc filled-item :key key :option-pack src) + new-plugins (assoc-in (:plugins db) [src ::e5/selections key] item-with-key)] + {:dispatch-n [[::e5/set-plugins new-plugins] + [:set-builder-field-errors {}] + [:show-warning-message + (str "Selection saved to My Content under \"" src + "\" with placeholders for missing fields. Review it " + "and re-export before sharing.")]]}))) + (reg-save-homebrew "Feat" ::feats5e/save-feat ::feats5e/builder-item - ::feats5e/homebrew-feat ::e5/feats "You must specify 'Name', 'Option Source Name'") @@ -816,7 +910,6 @@ "Race" ::race5e/save-race ::race5e/builder-item - ::race5e/homebrew-race ::e5/races "You must specify 'Name', 'Option Source Name'") @@ -824,7 +917,6 @@ "Subrace" ::race5e/save-subrace ::race5e/subrace-builder-item - ::race5e/homebrew-subrace ::e5/subraces "You must specify 'Name', 'Option Source Name', and 'Race'") @@ -832,7 +924,6 @@ "Subclass" ::class5e/save-subclass ::class5e/subclass-builder-item - ::class5e/homebrew-subclass ::e5/subclasses "You must specify 'Name', 'Option Source Name', and 'Class'") @@ -840,7 +931,6 @@ "Class" ::class5e/save-class ::class5e/builder-item - ::class5e/homebrew-class ::e5/classes "You must specify 'Name', 'Option Source Name'") @@ -3928,27 +4018,37 @@ :export-with-auto-fix (fn [{:keys [db]} _] (let [{:keys [mode plugins edits pretty-print?]} (:export-warning db) + ;; Auto-fix = user edits + dummy-fill for blanks. The same fixed data goes + ;; to the file AND back to the library, so My Content matches the export. + ;; Placeholders like "[Missing Name]" are self-labeling and flagged in the log. fixed-plugins (mapv (fn [{:keys [name plugin]}] {:name name :plugin (orcbrew-val/apply-user-edits-to-plugin plugin name edits)}) plugins) - ;; For multi mode, merge fixed plugins back with all plugins all-plugins (:plugins db) + ;; For multi mode, merge the fixed sources back over all plugins. final-data (if (= mode :multi) - (reduce (fn [acc {:keys [name plugin]}] - (assoc acc name plugin)) - all-plugins - fixed-plugins) + (reduce (fn [acc {:keys [name plugin]}] (assoc acc name plugin)) + all-plugins fixed-plugins) (:plugin (first fixed-plugins))) + ;; Library gets the same fixed data as the file (multi: the merged map; + ;; single: the fixed plugin under its source name). + new-plugins (if (= mode :multi) + final-data + (assoc all-plugins (:name (first fixed-plugins)) final-data)) filename (if (= mode :multi) "all-content.orcbrew" (str (:name (first fixed-plugins)) ".orcbrew")) log-entries (build-export-log-entries plugins "Auto-filled missing fields on export")] - (save-orcbrew-blob! filename final-data :pretty-print? pretty-print?) + ;; Strip meaningless blanks (false/nil/empty) on normal export. + (save-orcbrew-blob! filename (orcbrew-val/strip-export-blanks final-data) + :pretty-print? pretty-print?) + (plugins->local-store new-plugins) {:db (-> db + (assoc :plugins new-plugins) (assoc :export-warning {:active? false}) (assoc :import-log {:panel-shown? true :import-name (if (= mode :multi) @@ -3958,7 +4058,9 @@ :errors [] :skipped-items []})) :dispatch [:show-warning-message - (str "Exported with auto-fixed fields. See log for details.")]}))) + (str "Exported and saved to My Content. Placeholders were filled " + "in for any fields left blank — review them (see the log) and " + "replace before sharing.")]}))) (reg-event-fx :export-cancel-with-log From d9b2302166b595f9b8f39f5369cc3e5c970a371a Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 15:24:11 -0400 Subject: [PATCH 06/11] Surface and repair keyword-trap homebrew on import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A source whose item name derives an invalid key (e.g. "9 Lives" -> :9-lives) used to import successfully and then silently never appear in the builder — no error, no explanation. Route only those sources to the same quarantine the loader uses, so the existing rename/rekey repair UI surfaces them, while other imperfections still auto-clean and land (the export-draft escape hatch keeps working). Also report import de-duplication readably and flag non-ASCII names that break key derivation. --- src/cljs/orcpub/dnd/e5/events.cljs | 73 ++++++++++++----- .../orcpub/dnd/e5/orcbrew_validation.cljs | 78 +++++++++++-------- src/cljs/orcpub/dnd/e5/views/import_log.cljs | 33 +++++++- 3 files changed, 131 insertions(+), 53 deletions(-) diff --git a/src/cljs/orcpub/dnd/e5/events.cljs b/src/cljs/orcpub/dnd/e5/events.cljs index 846f29a89..2806be278 100644 --- a/src/cljs/orcpub/dnd/e5/events.cljs +++ b/src/cljs/orcpub/dnd/e5/events.cljs @@ -4293,7 +4293,25 @@ (:success result) (let [plugin (:data result) is-multi-plugin (and (spec/valid? ::e5/plugins plugin) - (not (spec/valid? ::e5/plugin plugin)))] + (not (spec/valid? ::e5/plugin plugin))) + ;; Normalize to the {source-name source-plugin} shape the boot loader + ;; sees. A source with a KEYWORD-TRAP item (name deriving a key not + ;; starting with a letter — "9 Lives" -> :9-lives) passes the progressive + ;; item check (only needs :option-pack) but its homebrew classes then + ;; SILENTLY never appear in the builder. Route only THOSE to the loader's + ;; quarantine so the rename/rekey repair UI surfaces them. Other + ;; imperfections (missing option-pack, incomplete WIP) are deliberately + ;; NOT quarantined — progressive import auto-cleans them and they must + ;; still land, keeping the export-draft / re-import hatch working. + incoming (if is-multi-plugin plugin {plugin-name plugin}) + rejected (into {} (filter (fn [[_ p]] (seq (e5/invalid-keyed-items p))) incoming)) + kept (into {} (remove (fn [[k _]] (contains? rejected k)) incoming)) + import-log [:set-import-log {:name plugin-name + :changes (:changes result) + :errors [] + :skipped-items (:skipped-items result) + :key-conflicts (:key-conflicts result) + :key-warnings (:key-warnings result)}]] ;; Log skipped items if any (when (:had-errors result) @@ -4305,25 +4323,40 @@ (errors->str (:errors item)))) (:skipped-items result)))))) - {:dispatch-n (cond-> [] - ;; Set the plugins - true - (conj (if is-multi-plugin - [::e5/set-plugins (e5/merge-all-plugins (:plugins db) plugin)] - [::e5/set-plugins (assoc (:plugins db) plugin-name plugin)])) - - ;; Show appropriate message - true - (conj [:show-warning-message user-message]) - - ;; Store import log for UI panel - true - (conj [:set-import-log {:name plugin-name - :changes (:changes result) - :errors [] - :skipped-items (:skipped-items result) - :key-conflicts (:key-conflicts result) - :key-warnings (:key-warnings result)}]))}) + (if (seq rejected) + ;; Keyword-trap (or other ::plugin invalidity) — quarantine the bad + ;; source(s) via the SAME name-keyed store + reactive panel the loader + ;; uses, so the repair UI (rename -> rekey -> restore) surfaces them. + ;; Clean sources still land in :plugins. + (let [reconciled (e5/reconcile-rejected (get-rejected-plugins) rejected kept) + n (count rejected)] + (set-rejected-plugins reconciled) + (js/console.warn + (str "Quarantined " n " imported source(s) with an invalid item key " + "(name doesn't start with a letter): " (pr-str (vec (keys rejected))))) + {:db (update db :quarantined-plugins merge rejected) + :dispatch-n (cond-> [] + (seq kept) + (conj [::e5/set-plugins (e5/merge-all-plugins (:plugins db) kept)]) + true + (conj [:show-error-message + (str "Imported, but " n " source" (when (> n 1) "s") + " couldn't be used yet: an item's name starts with a " + "number or symbol (names become internal keys, which " + "must start with a letter). It's saved under " + "“Quarantined” in My Content — rename " + (if (> n 1) "them" "it") " there to restore " + (if (> n 1) "them." "it."))]) + true (conj import-log))}) + + ;; All sources clean — store normally. + {:dispatch-n (cond-> [] + true + (conj (if is-multi-plugin + [::e5/set-plugins (e5/merge-all-plugins (:plugins db) plugin)] + [::e5/set-plugins (assoc (:plugins db) plugin-name plugin)])) + true (conj [:show-warning-message user-message]) + true (conj import-log))})) ;; Unknown state :else diff --git a/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs b/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs index 5dddfaebf..7405b2225 100644 --- a/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs +++ b/src/cljs/orcpub/dnd/e5/orcbrew_validation.cljs @@ -9,10 +9,6 @@ [orcpub.dnd.e5 :as e5] [orcpub.common :as common])) -;; ============================================================================= -;; Version: 0.11 - Fix forward reference for is-multi-plugin? -;; ============================================================================= - ;; Forward declarations for functions used before definition (declare is-multi-plugin?) @@ -81,11 +77,18 @@ s)) (defn count-non-ascii - "Count remaining non-ASCII characters after normalization. - Returns a map of {:count N :chars #{...}} or nil if all ASCII." + "Count non-ASCII chars left after normalization so the importer can WARN about + content `normalize-text` deliberately keeps (e.g. accented letters — the + `unicode-to-ascii` map normalizes typographic punctuation but NOT letters). + Returns {:count N :chars #{...}} or nil if all ASCII. No callers yet; kept + correct for a future warn-don't-strip wire-up. + + NOTE: cljs has no char type — seq'ing a string yields 1-char STRINGS, and + `(int \"é\")` is 0, NOT the code point, so `(> (int %) 127)` silently never + fires. Use `.charCodeAt`." [s] (when (string? s) - (let [non-ascii (filter #(> (int %) 127) s)] + (let [non-ascii (filter #(> (.charCodeAt % 0) 127) s)] (when (seq non-ascii) {:count (count non-ascii) :chars (set non-ascii)})))) @@ -411,25 +414,37 @@ @changes]))) (defn dedup-options-in-item - "Dedup options within all selections of a content item. - Returns [updated-item changes]." + "Dedup options for a content item, handling BOTH shapes → [updated-item changes]: + - a top-level homebrew selection whose `:options` live on the item, and + - a content item (class/race/…) with a nested `:selections` map, each carrying + its own `:options`. + + The first branch closed a gap: dedup used to walk only nested `:selections`, so + duplicate options on an actual homebrew Selection went undeduped on import + (guarded by test-dedup-options-in-import-full-pipeline)." [item] - (if-let [selections (:selections item)] - (if (map? selections) - (let [result (reduce-kv - (fn [acc sel-key sel-data] - (if-let [options (:options sel-data)] - (let [[deduped changes] (dedup-options-in-selection options)] - {:selections (assoc (:selections acc) sel-key - (assoc sel-data :options deduped)) - :changes (into (:changes acc) changes)}) - {:selections (assoc (:selections acc) sel-key sel-data) - :changes (:changes acc)})) - {:selections {} :changes []} - selections)] - [(assoc item :selections (:selections result)) (:changes result)]) - [item []]) - [item []])) + (cond + ;; Top-level selection item — dedup its own :options. + (sequential? (:options item)) + (let [[deduped changes] (dedup-options-in-selection (:options item))] + [(assoc item :options deduped) changes]) + + ;; Item with a nested :selections map — dedup each selection's options. + (map? (:selections item)) + (let [result (reduce-kv + (fn [acc sel-key sel-data] + (if-let [options (:options sel-data)] + (let [[deduped changes] (dedup-options-in-selection options)] + {:selections (assoc (:selections acc) sel-key + (assoc sel-data :options deduped)) + :changes (into (:changes acc) changes)}) + {:selections (assoc (:selections acc) sel-key sel-data) + :changes (:changes acc)})) + {:selections {} :changes []} + (:selections item))] + [(assoc item :selections (:selections result)) (:changes result)]) + + :else [item []])) (defn dedup-options-in-plugin "Dedup options in all selections across all content types in a plugin. @@ -947,17 +962,19 @@ plugins)) (defn apply-user-edits-to-plugin - "Apply user-entered values from the export warning modal to a plugin, - then fill any remaining gaps with dummy data. + "Apply the user's export-modal edits to a plugin, then dummy-fill remaining gaps + into complete/valid content. Used wherever auto-fixed data is needed: the export + FILE, the write-back to My Content (so library matches file; placeholders are + self-labeling and flagged), and quarantine repair (re-validates first). edits is a map of vector-path → value, e.g.: [\"My Pack\" :orcpub.dnd.e5/spells :fireball :level] → 3 [\"My Pack\" :orcpub.dnd.e5/spells :fireball :trait 0 :name] → \"Fire Aura\" - Only edits whose first element matches plugin-name are applied." + Only edits whose first element matches plugin-name are applied; blank/NaN + values are ignored." [plugin plugin-name edits] - (let [;; Apply user edits to the plugin data - edited-plugin + (let [edited-plugin (reduce-kv (fn [p edit-path value] (let [[pname content-type item-key & field-path] edit-path] @@ -977,7 +994,6 @@ p))) plugin edits)] - ;; Fill any remaining gaps with dummy data (fill-missing-for-export edited-plugin))) ;; ============================================================================ diff --git a/src/cljs/orcpub/dnd/e5/views/import_log.cljs b/src/cljs/orcpub/dnd/e5/views/import_log.cljs index 2deacb18c..3a0437826 100644 --- a/src/cljs/orcpub/dnd/e5/views/import_log.cljs +++ b/src/cljs/orcpub/dnd/e5/views/import_log.cljs @@ -114,6 +114,33 @@ (when (seq parts) [:span " \u2014 " (str/join "; " parts)]))])])]) + :dedup-selection-options + ;; Duplicate options within one Selection's choice list. An option's key is + ;; derived from its name, so same-named options collide (the second silently + ;; overrides the first downstream). Report the fix \u2014 identical copies dropped, + ;; same-name-different-content renamed \u2014 so the user can rename more clearly. + (let [details (:details change)] + [:div + [:span [:i.fa.fa-clone.m-r-5 {:style {:color "#47eaf8"}}] + (or description "Resolved duplicate selection options")] + (when (seq details) + [:div {:style {:margin-top "4px" :padding-left "20px"}} + (for [[idx {:keys [type item-key content-type plugin] d-desc :description}] + (map-indexed vector details)] + ^{:key idx} + [:div {:style {:padding "2px 0" :font-size "11px" + :color "rgba(255,255,255,0.6)"}} + [:i {:class (str "fa m-r-5 " + (if (= type :dedup-renamed) "fa-pencil" "fa-minus-circle")) + :style {:color "rgba(255,255,255,0.45)"}}] + d-desc + (when content-type + [:span " (" (-> (name content-type) (.replace "orcpub.dnd.e5/" "")) ")"]) + (when item-key + [:code {:style code-style-sm} (name item-key)]) + (when plugin + [:span {:style {:color "rgba(255,255,255,0.35)"}} (str " in " plugin)])])])]) + ;; Default [:span (pr-str change)])]) @@ -204,7 +231,8 @@ ;; Grouped change sections (let [changes (:changes log) user-types #{:key-renamed :filled-required-fields :export-missing-fields - :string-fix :text-normalization :renamed-plugin-key} + :string-fix :text-normalization :renamed-plugin-key + :dedup-selection-options} sections [{:types #{:key-renamed} :title-fn #(str "Key Renames (" (count %) ")") :icon "fa-tag" :icon-color "#47eaf8" @@ -225,7 +253,8 @@ (str "Export Issues (" (count items) ")")))) :icon "fa-exclamation-triangle" :icon-color "#f0a100" :bg-color "rgba(240, 161, 0, 0.1)" :border-color "#f0a100"} - {:types #{:string-fix :text-normalization :renamed-plugin-key} + {:types #{:string-fix :text-normalization :renamed-plugin-key + :dedup-selection-options} :title-fn #(str "Data Cleanup (" (count %) ")") :icon "fa-wrench" :icon-color "#47eaf8" :bg-color "rgba(71, 234, 248, 0.08)" :border-color "#47eaf8"}] From eac350d001728f1d378497d47b6e880827be7045 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 15:24:11 -0400 Subject: [PATCH 07/11] Add an emergency raw-export escape hatch to every builder Split the pure serialize step from the saveAs side effect and wire a raw-export fallback into every homebrew builder, so when normal export fails validation the user can still download a raw backup of their content instead of losing it. Includes an export-draft path for unsaved work in progress. --- src/cljs/orcpub/dnd/e5/events.cljs | 106 +++++++++++++++++++++++++++-- src/cljs/orcpub/dnd/e5/views.cljs | 26 ++++--- 2 files changed, 118 insertions(+), 14 deletions(-) diff --git a/src/cljs/orcpub/dnd/e5/events.cljs b/src/cljs/orcpub/dnd/e5/events.cljs index 2806be278..d1d0a77e3 100644 --- a/src/cljs/orcpub/dnd/e5/events.cljs +++ b/src/cljs/orcpub/dnd/e5/events.cljs @@ -3910,17 +3910,75 @@ (sequential? errors) (s/join "\n\n" (map str errors)) :else (str errors))) +(defn serialize-orcbrew + "Pure serialize of homebrew content to .orcbrew text — no side effects, so it's + unit-testable and shared by every export path. pretty-print? is opt-in: pprint + inflates 3–5MB files to ~10–20MB and can freeze the UI." + [data & {:keys [pretty-print?]}] + (if pretty-print? + (with-out-str (pprint/pprint data)) + (str data))) + (defn- save-orcbrew-blob! - "Serialize plugin data to a .orcbrew file and trigger download." + "Serialize plugin data to a .orcbrew file and trigger download. The only side + effect; serialization lives in the pure `serialize-orcbrew`." [filename data & {:keys [pretty-print?]}] - (let [content (if pretty-print? - (with-out-str (pprint/pprint data)) - (str data)) + (let [content (serialize-orcbrew data :pretty-print? pretty-print?) blob (js/Blob. (clj->js [content]) (clj->js {:type "text/plain;charset=utf-8"}))] (js/saveAs blob filename))) +(defn reg-export-draft + "Register a builder-level 'export draft' event: dump the in-progress builder-item + to a .orcbrew with NO validation, so WIP that won't save/export the normal + (validated) way can always be rescued. Serialized as a normal single-source + plugin {source {content-type {key item}}}, so the draft re-imports like any + orcbrew (import then surfaces/fills whatever still needs fixing)." + [event-key item-key plugin-key] + (reg-event-fx + event-key + (fn [{:keys [db]} _] + (let [{:keys [name option-pack] :as item} (item-key db)] + (if (nil? item) + {:dispatch [:show-error-message "Nothing in the builder to export yet."]} + (let [src (if (s/blank? option-pack) "Draft Export" option-pack) + item-kw (if (s/blank? name) :draft-item (common/name-to-kw name)) + plugin {src {plugin-key {item-kw (assoc item :key item-kw)}}} + filename (str (if (s/blank? name) "draft" name) "-draft.orcbrew")] + (save-orcbrew-blob! filename plugin) + {:dispatch [:show-warning-message + (str "Draft exported to '" filename + "' (unvalidated WIP). Keep it safe; re-import to continue.")]})))))) + +(defn draft-event-for + "The 'Export draft' event key for a builder's save event (save-event name + a + \"-draft\" suffix). Derived, not hand-assigned, so builder-page can wire the + button from the save event it already has." + [save-event] + (keyword (namespace save-event) (str (name save-event) "-draft"))) + +(def builder-drafts + "Every homebrew builder's Export-draft hatch: save event -> [builder-item sub + key, content-type it exports under]. The loop below registers a draft event for + each; views/builder-page derives the same event via draft-event-for." + {::spells/save-spell [::spells/builder-item ::e5/spells] + ::monsters/save-monster [::monsters/builder-item ::e5/monsters] + ::encounters/save-encounter [::encounters/builder-item ::e5/encounters] + ::bg5e/save-background [::bg5e/builder-item ::e5/backgrounds] + ::langs5e/save-language [::langs5e/builder-item ::e5/languages] + ::class5e/save-invocation [::class5e/invocation-builder-item ::e5/invocations] + ::class5e/save-boon [::class5e/boon-builder-item ::e5/boons] + ::selections5e/save-selection [::selections5e/builder-item ::e5/selections] + ::feats5e/save-feat [::feats5e/builder-item ::e5/feats] + ::race5e/save-race [::race5e/builder-item ::e5/races] + ::race5e/save-subrace [::race5e/subrace-builder-item ::e5/subraces] + ::class5e/save-subclass [::class5e/subclass-builder-item ::e5/subclasses] + ::class5e/save-class [::class5e/builder-item ::e5/classes]}) + +(doseq [[save-event [item-key content-type]] builder-drafts] + (reg-export-draft (draft-event-for save-event) item-key content-type)) + (defn- log-export-warnings [plugin-name validation] (when (seq (:warnings validation)) (js/console.warn @@ -3960,17 +4018,55 @@ {})) :else + ;; Hard spec check failed. Surface a raw, unvalidated escape hatch alongside + ;; the error so the user can always get their content out. (do (js/console.error (str "Export validation failed for \"" plugin-name "\":\n" (orcbrew-val/format-export-validation-for-log validation))) {:dispatch [:show-error-message - (str "Cannot export '" plugin-name "' - contains invalid data. Check console for details.")]})))) + [:div + [:div (str "Cannot export '" plugin-name + "' - contains invalid data. Check console for details.")] + [:div.m-t-5 + [:span.pointer.underline.f-w-b + {:on-click #(dispatch [::e5/emergency-export-raw plugin-name])} + "Download raw backup instead"]]]]})))) (reg-event-fx ::e5/export-plugin (fn [_ [_ name plugin]] (validate-and-show-modal-or-export name plugin {}))) +(defn select-emergency-export + "Pick the filename + data for an emergency raw export: just the named source if + it exists in `plugins`, else the whole library. Pure — unit-testable without + the DOM/file system." + [plugins plugin-name] + (if (and plugin-name (contains? plugins plugin-name)) + [(str plugin-name ".orcbrew") (get plugins plugin-name)] + ["orcpub-EMERGENCY-backup.orcbrew" plugins])) + +(reg-event-fx + ::e5/emergency-export-raw + (fn [{:keys [db]} [_ plugin-name]] + ;; Raw, unvalidated dump. save-orcbrew-blob! serializes via str/pprint, which + ;; can't fail on bad data — the guaranteed escape hatch when validated export refuses. + (let [[filename data] (select-emergency-export (:plugins db) plugin-name)] + (save-orcbrew-blob! filename data) + {:dispatch [:show-warning-message + (str "Raw backup '" filename "' downloaded (unvalidated). " + "Keep it safe.")]}))) + +;; Raw export of a QUARANTINED source (in :quarantined-plugins, not :plugins, so +;; ::e5/emergency-export-raw can't reach it). Unvalidated, so the broken data can +;; always get out to fix externally. +(reg-event-fx + ::e5/export-quarantined-raw + (fn [{:keys [db]} [_ source-name]] + (when-let [data (get-in db [:quarantined-plugins source-name])] + (save-orcbrew-blob! (str source-name ".orcbrew") data)) + {})) + ;; ============================================================================ ;; Export Warning Modal Events ;; ============================================================================ diff --git a/src/cljs/orcpub/dnd/e5/views.cljs b/src/cljs/orcpub/dnd/e5/views.cljs index 2638a505b..39d03cbac 100644 --- a/src/cljs/orcpub/dnd/e5/views.cljs +++ b/src/cljs/orcpub/dnd/e5/views.cljs @@ -8475,15 +8475,23 @@ ;; events are set and passed by the individual pages defined below this (defn builder-page [item-title reset-event save-event builder & [title]] - [content-page - (or title (str item-title " Builder")) - [{:title (str "New " item-title) - :icon "plus" - :on-click #(dispatch [reset-event])} - {:title "Save to Browser Storage" - :icon "save" - :on-click #(dispatch [save-event])}] - [builder]]) + ;; Draft event is derived from save-event (events/draft-event-for) and registered + ;; from events/builder-drafts, so the Export-draft hatch needs no per-builder wiring. + (let [export-draft-event (events/draft-event-for save-event)] + [content-page + (or title (str item-title " Builder")) + [{:title (str "New " item-title) + :icon "plus" + :on-click #(dispatch [reset-event])} + {:title "Save to Browser Storage" + :icon "save" + :on-click #(dispatch [save-event])} + ;; Escape hatch: export the in-progress builder-item as a draft .orcbrew with + ;; no validation, so imperfect WIP is never trapped. + {:title "Export draft" + :icon "download" + :on-click #(dispatch [export-draft-event])}] + [builder]])) (defn combat-tracker-page [] [content-page From 5277f19a88a1f0030e4b28fea105d94dfddc8a3c Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 15:24:30 -0400 Subject: [PATCH 08/11] Add unit tests and fixtures for homebrew data-preservation JVM and cljs coverage for the resilient loader (salvage/quarantine, no false quarantine on real content), the spec-registry save-subset-of-load drift guard, keyword-trap rekey, quota-failure reporting, toggle self-healing, and import/export validation. Tests mirror source namespaces: the loader/audit guards fold into e5-test, the toggle re-frame integration into events-test, and the event-handler toggle nil-hygiene into event-handlers-test. Fixtures are original QA content; test-pak is a large multi-source pak with all human-readable text replaced by public-domain filler (no copyrighted content). --- test/clj/orcpub/dnd/e5/content_specs_test.clj | 110 +++++ test/clj/orcpub/dnd/e5_test.clj | 457 +++++++++++++++++- test/cljc/orcpub/common_test.cljc | 24 + .../orcpub/dnd/e5/event_handlers_test.clj | 65 +++ test/cljs/orcpub/dnd/e5/db_test.cljs | 81 ++++ test/cljs/orcpub/dnd/e5/events_test.cljs | 257 +++++++++- .../dnd/e5/orcbrew_validation_test.cljs | 154 +++++- test/cljs/orcpub/dnd/e5/subs_test.cljs | 20 +- test/cljs/orcpub/test_runner.cljs | 6 +- test/fixtures/broken-content.orcbrew | 80 +++ test/fixtures/broken-parse.orcbrew | 1 + test/fixtures/broken-spec.orcbrew | 1 + test/fixtures/cruft-shapes.orcbrew | 34 ++ test/fixtures/keyword-trap.orcbrew | 20 + test/fixtures/sourced-classes.orcbrew | 44 ++ test/fixtures/test-pak.orcbrew | 7 + 16 files changed, 1308 insertions(+), 53 deletions(-) create mode 100644 test/clj/orcpub/dnd/e5/content_specs_test.clj create mode 100644 test/cljs/orcpub/dnd/e5/db_test.cljs create mode 100644 test/fixtures/broken-content.orcbrew create mode 100644 test/fixtures/broken-parse.orcbrew create mode 100644 test/fixtures/broken-spec.orcbrew create mode 100644 test/fixtures/cruft-shapes.orcbrew create mode 100644 test/fixtures/keyword-trap.orcbrew create mode 100644 test/fixtures/sourced-classes.orcbrew create mode 100644 test/fixtures/test-pak.orcbrew diff --git a/test/clj/orcpub/dnd/e5/content_specs_test.clj b/test/clj/orcpub/dnd/e5/content_specs_test.clj new file mode 100644 index 000000000..1265602d0 --- /dev/null +++ b/test/clj/orcpub/dnd/e5/content_specs_test.clj @@ -0,0 +1,110 @@ +(ns orcpub.dnd.e5.content-specs-test + "B4 drift guard: prove the invariant `save ⊆ load` for every homebrew content + type — anything a SAVE spec accepts, the LOOSE LOAD floor must also accept. + + Why it matters: save and load validate independently. If the load floor ever + grows stricter than a save spec (someone 'tightens validation on import'), then + content that saved fine would be QUARANTINED on the next boot — a data-loss- + adjacent surprise. This test goes red the moment that subset relation breaks, + so the loose-load backward-compat guarantee can't silently erode. + + It also pins the registry itself: every content type with a save handler is in + `content-specs/save-specs` exactly once, and each entry names a real spec." + (:require [clojure.test :refer [deftest is testing]] + [clojure.spec.alpha :as spec] + [clojure.test.check :as tc] + [clojure.test.check.generators :as gen] + [clojure.test.check.properties :as prop] + [orcpub.dnd.e5 :as e5] + [orcpub.dnd.e5.content-specs :as cs] + ;; loaded for their side-effecting spec/defs (referenced via cs/save-specs) + [orcpub.dnd.e5.classes] + [orcpub.dnd.e5.races] + [orcpub.dnd.e5.feats] + [orcpub.dnd.e5.backgrounds] + [orcpub.dnd.e5.languages] + [orcpub.dnd.e5.monsters] + [orcpub.dnd.e5.encounters] + [orcpub.dnd.e5.selections] + [orcpub.dnd.e5.spells] + [orcpub.common :as common])) + +;; A valid, save-passing item per content type (name/key filled in below). The +;; extra fields are the type-specific requirements (monster hit-points, spell +;; level/school/spell-lists, subrace :race, subclass :class, …). Keyed by the +;; content-type keyword so we can pair each base with its save spec from the +;; registry — no second copy of the type→spec list. +(def valid-bases + {::e5/spells {:option-pack "Pack" :school "evocation" :level 1 + :spell-lists {:wizard true}} + ::e5/monsters {:option-pack "Pack" :hit-points {:die 8 :die-count 1}} + ::e5/encounters {:option-pack "Pack"} + ::e5/backgrounds {:option-pack "Pack"} + ::e5/languages {:option-pack "Pack"} + ::e5/invocations {:option-pack "Pack"} + ::e5/boons {:option-pack "Pack"} + ::e5/selections {:option-pack "Pack"} + ::e5/feats {:option-pack "Pack"} + ::e5/races {:option-pack "Pack"} + ::e5/subraces {:option-pack "Pack" :race :elf} + ::e5/subclasses {:option-pack "Pack" :class :wizard} + ::e5/classes {:option-pack "Pack"}}) + +(defn- named [base] + (assoc base :name "Valid Name" :key (common/name-to-kw "Valid Name"))) + +;; --- registry integrity ---------------------------------------------------- + +(deftest registry-covers-every-base-with-a-real-spec + (testing "every content type has a base sample and a registered spec, 1:1" + (is (= (set (keys cs/save-specs)) (set (keys valid-bases))) + "save-specs and the test's valid-bases must describe the same content types") + (doseq [[ct spec-kw] cs/save-specs] + (is (some? (spec/get-spec spec-kw)) + (str ct " → " spec-kw " is not a registered spec"))))) + +(deftest bases-are-save-valid-and-load-valid + (testing "each canonical base passes BOTH its strict save spec and the loose + load floor — the subset relation, proven on a concrete sample" + (doseq [[ct spec-kw] cs/save-specs] + (let [item (named (valid-bases ct))] + (is (spec/valid? spec-kw item) + (str ct " base should be save-valid. explain: " + (spec/explain-str spec-kw item))) + (is (spec/valid? cs/load-item-spec item) + (str ct " base should also satisfy the load floor " + cs/load-item-spec)))))) + +;; --- generative save ⊆ load ------------------------------------------------- + +;; :option-pack takes mostly strings (save-valid) but sometimes a non-string, so +;; the property exercises the case where save and load MUST agree to reject. +(def gen-option-pack + (gen/frequency [[6 gen/string-alphanumeric] + [1 gen/small-integer] + [1 (gen/return nil)] + [1 (gen/return :not-a-string)]])) + +;; Unrelated extra keys — noise that must not affect the subset relation. Base +;; wins on any collision (merge order below), so type-required fields stay intact. +(def gen-extra + (gen/map gen/keyword gen/small-integer {:max-elements 4})) + +(defn- save-subset-of-load? + "For one content type: over many generated perturbations of its valid base, + assert that anything the save spec accepts, the load floor also accepts." + [spec-kw base] + (let [prop (prop/for-all [op gen-option-pack + extra gen-extra] + (let [item (merge extra (named base) {:option-pack op})] + (or (not (spec/valid? spec-kw item)) ; not save-valid → nothing to prove + (spec/valid? cs/load-item-spec item))))] ; save-valid ⇒ must be load-valid + (tc/quick-check 300 prop))) + +(deftest generative-save-implies-load + (testing "save ⊆ load holds under generated perturbation for every content type" + (doseq [[ct spec-kw] cs/save-specs] + (let [result (save-subset-of-load? spec-kw (valid-bases ct))] + (is (:pass? result) + (str ct ": found an item that passes SAVE but fails LOAD (drift!): " + (pr-str (:fail result)))))))) diff --git a/test/clj/orcpub/dnd/e5_test.clj b/test/clj/orcpub/dnd/e5_test.clj index 894ec7c9b..41e1bbe0d 100644 --- a/test/clj/orcpub/dnd/e5_test.clj +++ b/test/clj/orcpub/dnd/e5_test.clj @@ -1,46 +1,451 @@ (ns orcpub.dnd.e5-test ;; explicit :refer to avoid namespace pollution from :refer :all - (:require [clojure.test :refer [deftest is]] + (:require [clojure.test :refer [deftest is testing]] + [clojure.spec.alpha :as spec] + [clojure.edn :as edn] + [clojure.java.io :as io] + [orcpub.common :as common] [orcpub.dnd.e5 :as e5] - [clojure.spec.alpha :as spec])) + [orcpub.dnd.e5.classes :as classes5e] + [orcpub.dnd.e5.races :as races5e] + [orcpub.dnd.e5.feats :as feats5e] + [orcpub.dnd.e5.backgrounds :as backgrounds5e] + [orcpub.dnd.e5.languages :as languages5e] + [orcpub.dnd.e5.monsters :as monsters5e] + [orcpub.dnd.e5.encounters :as encounters5e] + [orcpub.dnd.e5.selections :as selections5e] + [orcpub.dnd.e5.spells :as spells5e] + [orcpub.dnd.e5.content-specs :as content-specs])) -(def plugins-1 {"XGE" {:orcpub.dnd.e5/backgrounds {:bg1 {:x 1 - :option-pack "XGE"} +(def plugins-1 {"Source A" {:orcpub.dnd.e5/backgrounds {:bg1 {:x 1 + :option-pack "Source A"} :bg2 {:x 1 - :option-pack "XGE"}}} - "VOLO" {:orcpub.dnd.e5/classes {:c1 {:x 1 - :option-pack "VOLO"} + :option-pack "Source A"}}} + "Source B" {:orcpub.dnd.e5/classes {:c1 {:x 1 + :option-pack "Source B"} :c2 {:x 1 - :option-pack "VOLO"}}}}) + :option-pack "Source B"}}}}) (deftest test-specs (is (spec/valid? ::e5/plugins plugins-1)) (is (not (spec/valid? ::e5/plugin plugins-1))) - (is (spec/valid? ::e5/plugin (plugins-1 "XGE"))) - (is (not (spec/valid? ::e5/plugins (plugins-1 "XGE"))))) + (is (spec/valid? ::e5/plugin (plugins-1 "Source A"))) + (is (not (spec/valid? ::e5/plugins (plugins-1 "Source A"))))) + +(def valid-plugin? #(spec/valid? ::e5/plugin %)) + +(deftest test-salvage-plugins-all-valid + ;; Every source valid -> all kept, nothing rejected. + (let [{:keys [kept rejected]} (e5/salvage-plugins valid-plugin? plugins-1)] + (is (= plugins-1 kept)) + (is (= {} rejected)))) + +(deftest test-salvage-plugins-mixed + ;; One bad source (item missing required :option-pack) must NOT take the whole + ;; library down: good sources are kept, only the bad one is quarantined. + (let [bad-plugin {:orcpub.dnd.e5/classes {:c1 {:x 1}}} ; no :option-pack -> invalid + mixed (assoc plugins-1 "BAD" bad-plugin) + {:keys [kept rejected]} (e5/salvage-plugins valid-plugin? mixed)] + (is (= plugins-1 kept) "valid sources survive") + (is (= {"BAD" bad-plugin} rejected) "invalid source is quarantined, not lost") + ;; Sanity: the bad plugin really is spec-invalid and the good ones really valid. + (is (not (valid-plugin? bad-plugin))) + (is (every? valid-plugin? (vals kept))))) + +(deftest test-salvage-plugins-all-invalid + (let [bad {"A" {:orcpub.dnd.e5/classes {:c1 {:x 1}}} + "B" {:orcpub.dnd.e5/spells {:s1 {:x 1}}}} + {:keys [kept rejected]} (e5/salvage-plugins valid-plugin? bad)] + (is (= {} kept)) + (is (= bad rejected) "all sources preserved for repair, none discarded"))) + +(deftest test-salvage-plugins-empty-and-non-map + ;; Empty library is a clean no-op; a non-map (corrupt parse) yields empties so + ;; the caller can fall back to preserving the raw string. + (is (= {:kept {} :rejected {}} (e5/salvage-plugins valid-plugin? {}))) + (is (= {:kept {} :rejected {}} (e5/salvage-plugins valid-plugin? "not-a-map"))) + (is (= {:kept {} :rejected {}} (e5/salvage-plugins valid-plugin? nil)))) + +(deftest test-salvage-plugins-no-data-loss + ;; Invariant: kept ∪ rejected == input (every source is accounted for). + (let [mixed (assoc plugins-1 + "BAD" {:orcpub.dnd.e5/classes {:c1 {:x 1}}}) + {:keys [kept rejected]} (e5/salvage-plugins valid-plugin? mixed)] + (is (= mixed (merge kept rejected))) + (is (= (set (keys mixed)) (into (set (keys kept)) (keys rejected)))))) + +(deftest test-resilient-load-vs-old-all-or-nothing + ;; REGRESSION PROOF for the all-or-nothing loader (docs §3A/§6.2). This test + ;; fails if the loader reverts to the old behavior, because it asserts the + ;; exact contrast: old logic dropped the whole library, new logic keeps the + ;; valid sources. + (let [bad {:orcpub.dnd.e5/classes {:c1 {:x 1}}} ; missing :option-pack + mixed (assoc plugins-1 "BAD" bad) + ;; The OLD loader, verbatim: (if (valid? ::plugins all) all nil) + old-result (if (spec/valid? ::e5/plugins mixed) mixed nil) + ;; The NEW loader keeps the valid subset (what db.cljs returns). + {:keys [kept]} (e5/salvage-plugins valid-plugin? mixed)] + (is (nil? old-result) + "PROOF OF BUG: one invalid source makes the whole blob spec-invalid, so the old all-or-nothing loader returned nil — dropping EVERYTHING") + (is (and (seq kept) (= plugins-1 kept)) + "FIX: the resilient loader still loads the valid sources where the old one loaded nothing"))) + +(deftest test-reconcile-rejected-accumulates + ;; A source quarantined on an earlier load survives a later load even + ;; if it's no longer in localStorage["plugins"] (e.g. dropped by a save). The + ;; new load's rejected set is MERGED with the already-quarantined map. + (let [old {"A" {:bad 1}} + incoming {"B" {:bad 2}} + kept {"Good" {:ok 1}}] + (is (= {"A" {:bad 1} "B" {:bad 2}} + (e5/reconcile-rejected old incoming kept)) + "both quarantined sources retained"))) + +(deftest test-reconcile-rejected-latest-wins + ;; A re-broken source updates its record rather than duplicating. + (is (= {"A" {:bad 2}} + (e5/reconcile-rejected {"A" {:bad 1}} {"A" {:bad 2}} {})))) + +(deftest test-reconcile-rejected-drops-repaired + ;; The key behavior: a source that is now present-and-valid (in `kept`) is + ;; dropped from quarantine, so a repaired source doesn't linger as a ghost. + (let [old {"A" {:bad 1} "B" {:bad 2}} + kept {"A" {:fixed 1}}] ; A repaired, now valid+kept + (is (= {"B" {:bad 2}} + (e5/reconcile-rejected old {} kept)) + "repaired A cleared; still-broken B remains"))) + +(deftest test-reconcile-rejected-empty-and-nonmap + ;; Empty result (everything repaired) is returned so the caller can clear the + ;; storage key; a non-map legacy/corrupt `old` is treated as empty, not a throw. + (is (= {} (e5/reconcile-rejected {"A" {:bad 1}} {} {"A" {:ok 1}}))) + (is (= {} (e5/reconcile-rejected nil {} {}))) + (is (= {"B" {:bad 2}} (e5/reconcile-rejected "corrupt-legacy-string" {"B" {:bad 2}} {})) + "a non-map old-rejected (legacy raw write) is ignored, not fatal")) + +(deftest test-rekey-content-group-fixes-trap + ;; An item under an invalid key (the keyword trap) is moved to the key + ;; derived from its now-corrected name, and its :key field is synced. + (let [items {:9-lives {:name "Nine Lives" :key :9-lives :option-pack "P"}} + result (e5/rekey-content-group items)] + (is (= [:nine-lives] (keys result)) "moved to the name-derived key") + (is (= :nine-lives (:key (result :nine-lives))) ":key field synced") + (is (= "Nine Lives" (:name (result :nine-lives))) "content otherwise intact"))) + +(deftest test-rekey-content-group-leaves-valid-keys + ;; A valid key is left untouched even if it doesn't match the name, so existing + ;; references aren't disturbed. + (let [items {:fireball {:name "Fireball Plus" :key :fireball :option-pack "P"}}] + (is (= items (e5/rekey-content-group items))))) + +(deftest test-rekey-content-group-collision-suffixes + ;; Two trapped items deriving the same key must both survive (numeric suffix). + (let [items {:1a {:name "Echo" :option-pack "P"} + :2a {:name "Echo" :option-pack "P"}} + result (e5/rekey-content-group items)] + (is (= 2 (count result)) "no item dropped on key collision") + (is (= #{:echo :echo-2} (set (keys result)))))) + +(deftest test-rekey-content-group-collision-with-valid-sibling + ;; A trapped item whose corrected name derives onto an ALREADY-VALID sibling's + ;; key must get a suffix — not overwrite (and drop) the valid sibling, even when + ;; the valid one would be assoc'd later. Guards the reserved-keys seeding. + (let [items {:9-echo {:name "Echo" :option-pack "P"} ; trapped, derives :echo + :echo {:name "Echo" :option-pack "P"}} ; already valid, key :echo + result (e5/rekey-content-group items)] + (is (= 2 (count result)) "valid sibling not dropped by the re-key") + (is (contains? result :echo) "the already-valid :echo survives untouched") + (is (= #{:echo :echo-2} (set (keys result))) "trapped item got a suffix"))) + +(deftest test-rekey-content-group-no-name-keeps-key + ;; Without a usable name we can't derive a key; keep the original (validation + ;; will still flag it) rather than throwing. + (let [items {:9-x {:option-pack "P"}}] + (is (= items (e5/rekey-content-group items))))) + +(deftest test-rekey-plugin-passes-through-non-content + (let [plugin {:orcpub.dnd.e5/classes {:9-lives {:name "Nine Lives" :option-pack "P"}} + :disabled? true} + result (e5/rekey-plugin plugin)] + (is (= true (:disabled? result)) "non-content entry untouched") + (is (= [:nine-lives] (keys (:orcpub.dnd.e5/classes result))) "content group re-keyed"))) + +(deftest test-export-str-bug-invariant + ;; REGRESSION GUARD for the original banner bug (docs §2). The export path + ;; validates its argument as ::e5/plugin, so it must receive the MAP, not + ;; (str map). Wrapping in str yields a value that fails map? at the root — + ;; exactly the reported "Failed validation: cljs.core/map?" error. This pins + ;; why a `(str ...)` at the call site is a bug. + (let [plugin (plugins-1 "Source A")] + (is (spec/valid? ::e5/plugin plugin) + "the raw map is a valid plugin (what export must receive)") + (is (not (spec/valid? ::e5/plugin (str plugin))) + "PROOF OF BUG: (str plugin) — what the banner used to dispatch — fails ::e5/plugin validation"))) (deftest test-merge-all-plugins - (let [plugins-2 {"XGE" {:orcpub.dnd.e5/backgrounds {:bg2 {:x 2 - :option-pack "XGE"} + (let [plugins-2 {"Source A" {:orcpub.dnd.e5/backgrounds {:bg2 {:x 2 + :option-pack "Source A"} :bg3 {:x 2 - :option-pack "XGE"}}} - "PHB" {:orcpub.dnd.e5/classes {:c1 {:x 2 - :option-pack "PHB"} + :option-pack "Source A"}}} + "Source C" {:orcpub.dnd.e5/classes {:c1 {:x 2 + :option-pack "Source C"} :c2 {:x 2 - :option-pack "PHB"}}}} - expected-result {"XGE" {:orcpub.dnd.e5/backgrounds {:bg1 {:x 1 - :option-pack "XGE"} + :option-pack "Source C"}}}} + expected-result {"Source A" {:orcpub.dnd.e5/backgrounds {:bg1 {:x 1 + :option-pack "Source A"} :bg2 {:x 2 - :option-pack "XGE"} + :option-pack "Source A"} :bg3 {:x 2 - :option-pack "XGE"}}} - "VOLO" {:orcpub.dnd.e5/classes {:c1 {:x 1 - :option-pack "VOLO"} + :option-pack "Source A"}}} + "Source B" {:orcpub.dnd.e5/classes {:c1 {:x 1 + :option-pack "Source B"} :c2 {:x 1 - :option-pack "VOLO"}}} - "PHB" {:orcpub.dnd.e5/classes {:c1 {:x 2 - :option-pack "PHB"} + :option-pack "Source B"}}} + "Source C" {:orcpub.dnd.e5/classes {:c1 {:x 2 + :option-pack "Source C"} :c2 {:x 2 - :option-pack "PHB"}}}}] + :option-pack "Source C"}}}}] (is (= expected-result (e5/merge-all-plugins plugins-1 plugins-2))) (is (= plugins-1 (e5/merge-all-plugins plugins-1 plugins-1))))) + +;; ---- keyword-derivation audit (folded from keyword-audit-test) ---- +;; A user can type a name that LOOKS fine ("5th Edition Sorcerer", "9 Lives") but +;; common/name-to-kw derives an INVALID keyword from it (it doesn't sanitise a +;; leading non-letter), which later fails validation with an error pointing +;; vaguely at "Name". This audit enumerates EVERY homebrew content type with a +;; name->keyword field against a battery of tricky names and asserts: +;; 1. COVERAGE — every such spec rejects a name deriving an invalid keyword. +;; 2. DIAGNOSABILITY — the explanation's :in path names WHICH element failed, +;; which events.cljs/spec-field-problems turns into a human message. +;; It also pins name-to-kw's actual behaviour on each tricky input. + +;; Names a real user might type that derive a keyword NOT starting with a letter. +(def tricky-names + ["5th Edition" ; leading digit — the classic trap + "9 Lives" ; leading digit, with a space + "3.5e Throwback" + "-Foo" ; leading dash + ".Bar" ; leading dot (\W -> -) + " Baz" ; leading whitespace (\W -> -) + "++Plus" ; leading symbols + "9" ; a bare digit + "42" + "#Hashtag" + "Über" ; leading accented letter — not in [a-zA-Z] + "Éclair" + "梦"]) ; leading non-latin letter + +;; A genuinely-fine name that must keep validating, so rejection of the bad ones +;; is meaningful rather than blanket. +(def good-name "Valid Name") + +;; Each entry: a valid base item (sans name/key) + the spec it must satisfy. +;; with-name derives :key via common/name-to-kw the same way the builders do, so +;; the test exercises the real pipeline: user types name -> key derived -> spec runs. +(defn- with-name [base ns-str nm] + (assoc base :name nm :key (common/name-to-kw nm ns-str))) + +(def content-types + [{:label "class" :spec ::classes5e/homebrew-class + :ns "orcpub.dnd.e5.classes" :base {:option-pack "Pack"}} + {:label "subclass" :spec ::classes5e/homebrew-subclass + :ns "orcpub.dnd.e5.classes" :base {:option-pack "Pack" :class :wizard}} + {:label "invocation" :spec ::classes5e/homebrew-invocation + :ns "orcpub.dnd.e5.classes" :base {:option-pack "Pack"}} + {:label "boon" :spec ::classes5e/homebrew-boon + :ns "orcpub.dnd.e5.classes" :base {:option-pack "Pack"}} + {:label "race" :spec ::races5e/homebrew-race + :ns "orcpub.dnd.e5.races" :base {:option-pack "Pack"}} + {:label "subrace" :spec ::races5e/homebrew-subrace + :ns "orcpub.dnd.e5.races" :base {:option-pack "Pack" :race :elf}} + {:label "feat" :spec ::feats5e/homebrew-feat + :ns "orcpub.dnd.e5.feats" :base {:option-pack "Pack"}} + {:label "background" :spec ::backgrounds5e/homebrew-background + :ns "orcpub.dnd.e5.backgrounds" :base {:option-pack "Pack"}} + {:label "language" :spec ::languages5e/homebrew-language + :ns "orcpub.dnd.e5.languages" :base {:option-pack "Pack"}} + {:label "monster" :spec ::monsters5e/homebrew-monster + :ns "orcpub.dnd.e5.monsters" :base {:option-pack "Pack" + :hit-points {:die 8 :die-count 1}}} + {:label "encounter" :spec ::encounters5e/encounter + :ns "orcpub.dnd.e5.encounters" :base {:option-pack "Pack"}} + {:label "selection" :spec ::selections5e/homebrew-selection + :ns "orcpub.dnd.e5.selections" :base {:option-pack "Pack"}} + {:label "spell" :spec ::spells5e/homebrew-spell + :ns "orcpub.dnd.e5.spells" :base {:option-pack "Pack" :school "evocation" + :level 1 :spell-lists {:wizard true}}}]) + +(deftest audit-specs-match-the-registry + (testing "the specs exercised here are exactly the save specs in the shared + content-specs registry — so this audit table and the registry can't + drift apart" + (is (= (set (map :spec content-types)) + (set (vals content-specs/save-specs))) + "keyword-audit content-types and content-specs/save-specs must name the + same set of specs"))) + +(deftest good-name-validates-everywhere + (testing "a clean name validates for every content type (so rejection of the + tricky names below is meaningful, not blanket)" + (doseq [{:keys [label spec ns base]} content-types] + (let [item (with-name base ns good-name)] + (is (spec/valid? spec item) + (str label " should accept a clean name. explain: " + (spec/explain-str spec item))))))) + +(deftest tricky-names-are-rejected-everywhere + (testing "every name->keyword content type rejects a name that derives an + invalid keyword (no silent acceptance)" + (doseq [{:keys [label spec ns base]} content-types + nm tricky-names] + (let [item (with-name base ns nm)] + (is (not (spec/valid? spec item)) + (str label " accepted tricky name " (pr-str nm) + " -> key " (pr-str (:key item)) + " (SILENT BAD-DATA: would later break name-to-kw consumers)")))))) + +(deftest rejection-is-diagnosable + (testing "the spec explanation points at :name or :key (so the banner can say + 'Name must start with a letter', not just 'invalid')" + (doseq [{:keys [spec ns base label]} content-types + nm ["5th Edition" "9 Lives" "-Foo"]] + (let [item (with-name base ns nm) + problems (::spec/problems (spec/explain-data spec item)) + in-fields (mapcat #(filter keyword? (:in %)) problems)] + (is (some #{:name :key} in-fields) + (str label " for name " (pr-str nm) + " did not surface :name/:key in any :in path; banner would be " + "generic. problems: " (pr-str problems))))))) + +(deftest nested-selection-option-name-is-validated-and-located + (testing "a selection with a bad OPTION name is rejected, AND the :in path + carries the option index so the banner can say which option failed" + (let [item (-> (with-name {:option-pack "Pack"} + "orcpub.dnd.e5.selections" good-name) + (assoc :options [{:name "Good Option"} + {:name "9 Lives"}])) ; second option is bad + problems (::spec/problems + (spec/explain-data ::selections5e/homebrew-selection item))] + (is (seq problems) + "a bad nested option name must invalidate the whole selection") + (testing ":in localises the failure to options[1]" + (let [paths (map :in problems)] + (is (some (fn [in] (and (some #{:options} in) + (some #{1} in) + (some #{:name} in))) + paths) + (str ":in path should pinpoint options 1 :name. paths: " + (pr-str paths)))))))) + +(deftest name-to-kw-does-not-sanitise-leading-non-letter + (testing "documents WHY the above fails: name-to-kw keeps a leading non-letter, + so keyword-starts-with-letter? rejects it" + (doseq [nm tricky-names] + (let [kw (common/name-to-kw nm)] + (is (not (common/keyword-starts-with-letter? kw)) + (str (pr-str nm) " -> " (pr-str kw) " unexpectedly starts with a letter"))))) + (testing "and a clean name does derive a letter-leading keyword" + (is (common/keyword-starts-with-letter? (common/name-to-kw good-name))))) + +(deftest name-to-kw-derivations-pinned + (testing "exact derived keywords, so the failure mode per input is explicit" + (is (= :5th-edition (common/name-to-kw "5th Edition"))) + (is (= :9-lives (common/name-to-kw "9 Lives"))) + (is (= :-foo (common/name-to-kw "-Foo"))) + (is (= :-bar (common/name-to-kw ".Bar"))) + (is (= :-baz (common/name-to-kw " Baz"))) + (is (= :-plus (common/name-to-kw "++Plus"))) + ;; accented/non-latin leading letters collapse to a leading dash (ASCII \w), + ;; so the name ALSO fails starts-with-letter? + (is (false? (boolean (common/starts-with-letter? "Über")))) + (is (false? (boolean (common/starts-with-letter? "Éclair")))))) + +;; ---- resilient-loader real-content guard (folded from plugin-load-test) ---- +;; The loader quarantines a source only if it fails ::e5/plugin. The danger is +;; FALSE quarantine — a source real users rely on getting dropped on load. These +;; push actual .orcbrew fixtures (test/fixtures/) through the same salvage +;; decision the loader uses: valid content kept in full, only broken content +;; isolated. Fixtures are asserted to EXIST so a missing one fails loudly. +;; +;; test-pak.orcbrew is a large (~760KB) multi-source pak whose content has been +;; replaced with public-domain filler — no copyrighted names. It's the everyday- +;; content guard: every valid source must be kept, none falsely quarantined. + +;; The exact predicate the resilient loader injects into salvage-plugins — one +;; shared definition of "loadable", not a copy — so this real-content guard proves +;; the loader's actual accept/quarantine decision, not a look-alike. +(def load-valid-plugin? content-specs/valid-for-load?) + +(def bom (char 0xFEFF)) + +(defn- strip-bom [s] + (if (and s (pos? (count s)) (= bom (first s))) (subs s 1) s)) + +(defn read-orcbrew + "Parse an .orcbrew file to data, or nil if it can't be parsed (mirrors the + loader's get-local-storage-item, which returns nil on unreadable input)." + [path] + (try + (edn/read-string (strip-bom (slurp path))) + (catch Exception _ nil))) + +(defn as-multi + "Normalize parsed orcbrew to the loader's {source-name plugin} shape (same rule + as orcbrew-validation/is-multi-plugin?)." + [data] + (if (and (map? data) (seq data) (every? string? (keys data))) + data + {"Imported" data})) + +(def fixtures "test/fixtures") +(defn fix [name] (str fixtures "/" name)) + +(deftest test-pak-no-false-quarantine + (testing "large multi-source pak (public-domain filler): every valid source is kept, none quarantined" + (is (.exists (io/file (fix "test-pak.orcbrew"))) "fixture must be present") + (let [data (read-orcbrew (fix "test-pak.orcbrew")) + multi (as-multi data) + {:keys [kept rejected]} (e5/salvage-plugins load-valid-plugin? multi)] + (println "\n[test-pak] sources:" (count multi) + "| kept:" (count kept) "| rejected:" (count rejected) + (when (seq rejected) (str "-> " (vec (keys rejected))))) + (is (map? data) "parses as EDN") + (is (> (count multi) 1) "is a real multi-source pak") + (is (empty? rejected) + (str "real pak sources must NOT be falsely quarantined; rejected: " + (vec (keys rejected)))) + (is (= multi kept) "the loaded library is identical to the input (no loss)")))) + +(deftest valid-homebrew-kept + (testing "real valid homebrew (sourced-classes, duplicate-external) loads fully" + (doseq [f ["sourced-classes.orcbrew"]] + (is (.exists (io/file (fix f))) (str f " fixture must be present")) + (let [{:keys [kept rejected]} (e5/salvage-plugins load-valid-plugin? + (as-multi (read-orcbrew (fix f))))] + (is (empty? rejected) (str f " should be fully kept")) + (is (seq kept) (str f " should load content")))) + (doseq [f ["test/duplicate-external-a.orcbrew" + "test/duplicate-external-b.orcbrew"]] + (when (.exists (io/file f)) + (let [{:keys [rejected]} (e5/salvage-plugins load-valid-plugin? + (as-multi (read-orcbrew f)))] + (is (empty? rejected) (str f " should be fully kept"))))))) + +(deftest broken-spec-quarantined-not-catastrophic + (testing "a genuinely spec-broken source IS quarantined" + (is (.exists (io/file (fix "broken-spec.orcbrew"))) "fixture must be present") + (let [{:keys [rejected]} (e5/salvage-plugins load-valid-plugin? + (as-multi (read-orcbrew (fix "broken-spec.orcbrew"))))] + (is (seq rejected) "the broken source must be quarantined for repair")))) + +(deftest unparseable-handled + (testing "unparseable content yields nil (loader preserves raw, loads nothing) — no throw" + (is (.exists (io/file (fix "broken-parse.orcbrew"))) "fixture must be present") + (is (nil? (read-orcbrew (fix "broken-parse.orcbrew")))))) + +(deftest loader-edge-inputs-never-throw + (testing "empty / nil / non-map inputs are handled, never throw" + (is (= {:kept {} :rejected {}} (e5/salvage-plugins load-valid-plugin? {}))) + (is (= {:kept {} :rejected {}} (e5/salvage-plugins load-valid-plugin? nil))) + (is (= {:kept {} :rejected {}} (e5/salvage-plugins load-valid-plugin? "corrupt"))) + (is (= {:kept {} :rejected {}} (e5/salvage-plugins load-valid-plugin? 42))))) diff --git a/test/cljc/orcpub/common_test.cljc b/test/cljc/orcpub/common_test.cljc index 5ad3e027a..5a5b01eeb 100644 --- a/test/cljc/orcpub/common_test.cljc +++ b/test/cljc/orcpub/common_test.cljc @@ -108,3 +108,27 @@ (is (= 3 (count result))) ;; The item with no :name has nil->\"\" so sorts first (is (nil? (:name (first result))))))) + +(deftest toggle-flag-flips-booleans-but-never-collapses-collections + (testing "behaves like `not` for flag values" + (is (= true (common/toggle-flag false))) + (is (= true (common/toggle-flag nil))) + (is (= false (common/toggle-flag true)))) + (testing "leaves a map/collection UNTOUCHED (the B6 guard — `not` would nuke it to false)" + (is (= {:athletics true} (common/toggle-flag {:athletics true}))) + (is (= [] (common/toggle-flag []))) + (is (= {} (common/toggle-flag {}))))) + +(deftest toggle-in-toggles-heals-and-protects + (testing "toggles a leaf flag like toggle-flag" + (is (= {:a true} (common/toggle-in {} [:a]))) + (is (= {:a false} (common/toggle-in {:a true} [:a]))) + (is (= {:p {:k true}} (common/toggle-in {} [:p :k])))) + (testing "leaf that holds a MAP is preserved (no collapse)" + (is (= {:p {:skills {:athletics true}}} + (common/toggle-in {:p {:skills {:athletics true}}} [:p :skills])))) + (testing "SELF-HEAL: a stray false/boolean INTERMEDIATE becomes a fresh map" + (is (= {:p {:skills {:stealth true}}} + (common/toggle-in {:p {:skills false}} [:p :skills :stealth]))) + (is (= {:p {:skills {:stealth true}}} + (common/toggle-in {:p {:skills true}} [:p :skills :stealth]))))) diff --git a/test/cljc/orcpub/dnd/e5/event_handlers_test.clj b/test/cljc/orcpub/dnd/e5/event_handlers_test.clj index a334ae55c..58497dd59 100644 --- a/test/cljc/orcpub/dnd/e5/event_handlers_test.clj +++ b/test/cljc/orcpub/dnd/e5/event_handlers_test.clj @@ -1,3 +1,5 @@ +;; JVM (.clj): pure event-handler logic tests, incl. toggle nil-hygiene. The +;; cljs re-frame toggle-corruption integration lives in events-test (toggle-stress). (ns orcpub.dnd.e5.event-handlers-test (:require [clojure.test :refer [deftest is testing]] [clojure.data] @@ -6,6 +8,7 @@ [orcpub.entity.strict :as se] [orcpub.dnd.e5.template :as t5e] [orcpub.dnd.e5.event-handlers :as eh] + [orcpub.dnd.e5.character.equipment :as char-equip5e] [orcpub.dnd.e5.character.random :as char-rand])) (def character @@ -264,3 +267,65 @@ (is (= [nil nil ::char-rand/chondathan] (eh/parse-name-query "chondathan name"))) (is (= [::char-rand/female nil ::char-rand/chondathan] (eh/parse-name-query "female chondathan name"))) (is (= [::char-rand/female ::char-rand/elf nil] (eh/parse-name-query "female elf name"))))) + +;; ---- toggle nil-hygiene: root-level toggle guards (folded from the .cljc) ---- +;; Toggles must produce CLEAN values (true/false, or [] on full deselect) and +;; never leave a stray nil that would serialize into exported EDN (and later trip +;; the import-time nil cleaner). Locked-in finding: the live toggles are already +;; clean — select/deselect is conj/remove-by-key ([] when empty, not nil) and the +;; boolean toggles use (update-in path not) (true/false, never nil). These fail if +;; a future change swaps a toggle for a raw checkbox value (which CAN be nil). + +(defn deep-nil? + "True if any map value, or any collection element, anywhere in `x` is nil — + i.e. a stray nil that would serialize into the exported EDN." + [x] + (cond + (map? x) (boolean (or (some nil? (vals x)) (some deep-nil? (vals x)))) + (coll? x) (boolean (or (some nil? x) (some deep-nil? x))) + :else false)) + +(deftest deep-nil-detector-sanity + (is (not (deep-nil? {:a 1 :b [true false]}))) + (is (deep-nil? {:a nil})) + (is (deep-nil? {:a {:b nil}})) + (is (deep-nil? [1 nil 2])) + (is (not (deep-nil? [])))) + +(deftest multi-select-toggle-stays-clean + (let [k :athletics + opt {::entity/key k} + f (eh/update-multi-select opt k)] + (testing "select from empty adds the option" + (is (= [opt] (f [])))) + (testing "deselect the last option returns [] — NOT nil" + (is (= [] (f [opt]))) + (is (vector? (f [opt])))) + (testing "repeated on/off never leaves a stray nil" + (doseq [s (take 12 (iterate f []))] + (is (not (deep-nil? s)) (str "stray nil after toggling: " (pr-str s))))) + (testing "a nil or corrupt (map) parent recovers to [opt], not nil" + (is (= [opt] (f nil))) + (is (= [opt] (f {:corrupt true})))))) + +(deftest single-select-toggle-stays-clean + (let [opt {::entity/key :foo}] + (testing "multiselect wraps in a vector; single returns the option" + (is (= [opt] ((eh/update-single-select true opt) nil))) + (is (= opt ((eh/update-single-select false opt) nil)))) + (testing "no stray nil either way" + (is (not (deep-nil? ((eh/update-single-select true opt) nil)))) + (is (not (deep-nil? ((eh/update-single-select false opt) nil))))))) + +(deftest not-toggle-pattern-never-nil + ;; The shape used by toggle-inventory-item-equipped / toggle-*-equipped / + ;; toggle-plugin(-item): (update-in m path not). Absent reads as nil, but `not` + ;; turns it into true — never leaves a nil — and it alternates cleanly after. + (let [path [::entity/options :inv 0 ::entity/value ::char-equip5e/equipped?] + states (take 6 (iterate #(update-in % path not) {}))] + (testing "absent -> true, then strictly alternates true/false" + (is (= [nil true false true false true] (map #(get-in % path) states)))) + (testing "the toggled value is never nil after the first toggle" + (doseq [c (rest states)] + (is (boolean? (get-in c path))) + (is (not (deep-nil? (update-in c path identity)))))))) diff --git a/test/cljs/orcpub/dnd/e5/db_test.cljs b/test/cljs/orcpub/dnd/e5/db_test.cljs new file mode 100644 index 000000000..b8ba3226d --- /dev/null +++ b/test/cljs/orcpub/dnd/e5/db_test.cljs @@ -0,0 +1,81 @@ +(ns orcpub.dnd.e5.db-test + "Storage-layer tests for the resilient loader's read path (db.cljs). + + B2.0/F5: `get-local-storage-item` used to DELETE any key whose contents + wouldn't parse. For the homebrew slots (plugins + its quarantine + companion) that destroyed data the loader was supposed to preserve — a + truncated or quota-cut blob was gone before anything could rescue it. These + tests pin the new behavior: unreadable homebrew is moved to a ':corrupt' slot + and the active slot cleared (never destroyed), while non-homebrew slots keep + the old remove-on-unreadable behavior. + + Requires a real localStorage — runs in the headless chromium cljs suite." + (:require [cljs.test :refer-macros [deftest testing is use-fixtures]] + [orcpub.dnd.e5.db :as db])) + +(defn- clear-storage! [] + (.clear js/window.localStorage)) + +(use-fixtures :each {:before clear-storage! :after clear-storage!}) + +(def ^:private unreadable + ;; Truncated EDN — read-string throws on this (unbalanced/incomplete), exactly + ;; like a write cut off by a quota error mid-serialization. + "{\"Pack\" {:orcpub.dnd.e5/classes {:artificer {:name \"Artif") + +(deftest unreadable-plugins-preserved-not-destroyed + (testing "an unreadable plugins blob is moved to :corrupt and the active slot cleared" + (.setItem js/window.localStorage db/local-storage-plugins-key unreadable) + (let [result (db/get-local-storage-item db/local-storage-plugins-key)] + (is (nil? result) "returns nil so the loader simply loads no homebrew") + (is (nil? (.getItem js/window.localStorage db/local-storage-plugins-key)) + "active slot cleared so a poison value can't brick boot") + (is (= unreadable + (.getItem js/window.localStorage + (db/corrupt-slot-key db/local-storage-plugins-key))) + "raw bytes preserved verbatim for recovery — NOT deleted")))) + +(deftest unreadable-quarantine-also-preserved + (testing "the rejected companion is protected the same way as plugins" + (let [k db/local-storage-plugins-rejected-key] + (clear-storage!) + (.setItem js/window.localStorage k unreadable) + (is (nil? (db/get-local-storage-item k))) + (is (nil? (.getItem js/window.localStorage k)) "active slot cleared") + (is (= unreadable (.getItem js/window.localStorage (db/corrupt-slot-key k))) + "preserved for recovery")))) + +(deftest unreadable-non-homebrew-still-removed + (testing "a non-homebrew slot (character) keeps the old remove-on-unreadable behavior" + (.setItem js/window.localStorage "character" unreadable) + (is (nil? (db/get-local-storage-item "character"))) + (is (nil? (.getItem js/window.localStorage "character")) "removed") + (is (nil? (.getItem js/window.localStorage (db/corrupt-slot-key "character"))) + "no :corrupt copy is made for non-homebrew slots"))) + +(deftest set-item-returns-success-boolean + (testing "true on a successful write" + (is (true? (db/set-item "test-key" "value")))) + (testing "false when the write throws (e.g. QuotaExceededError)" + ;; A quota failure must be observable so the caller can warn instead of + ;; silently dropping the user's content. + (let [orig (.-setItem js/window.localStorage)] + (try + (set! (.-setItem js/window.localStorage) + (fn [_ _] (throw (js/Error. "QuotaExceededError")))) + (is (false? (db/set-item "test-key" "value"))) + (finally + (set! (.-setItem js/window.localStorage) orig)))))) + +(deftest readable-plugins-untouched + (testing "a readable plugins blob parses normally and nothing is moved/cleared" + (let [good "{\"Pack\" {:orcpub.dnd.e5/classes {:artificer {:name \"Artificer\" :key :artificer :option-pack \"Pack\"}}}}"] + (.setItem js/window.localStorage db/local-storage-plugins-key good) + (let [result (db/get-local-storage-item db/local-storage-plugins-key)] + (is (map? result) "parsed back to a map") + (is (contains? result "Pack")) + (is (= good (.getItem js/window.localStorage db/local-storage-plugins-key)) + "active slot untouched") + (is (nil? (.getItem js/window.localStorage + (db/corrupt-slot-key db/local-storage-plugins-key))) + "no :corrupt slot created on a clean read"))))) diff --git a/test/cljs/orcpub/dnd/e5/events_test.cljs b/test/cljs/orcpub/dnd/e5/events_test.cljs index 8f979f0ee..1c2a6f965 100644 --- a/test/cljs/orcpub/dnd/e5/events_test.cljs +++ b/test/cljs/orcpub/dnd/e5/events_test.cljs @@ -19,12 +19,18 @@ this by requiring orcpub.dnd.e5.events, which has side effects (reg-event-db, reg-event-fx calls at load time)." (:require [cljs.test :refer-macros [deftest testing is use-fixtures]] + [cljs.reader :as reader] [re-frame.core :as rf] [re-frame.db :refer [app-db]] [orcpub.dnd.e5 :as e5] [orcpub.dnd.e5.character :as char5e] [orcpub.dnd.e5.magic-items :as mi] [orcpub.dnd.e5.spells :as spells] + [orcpub.dnd.e5.selections :as selections5e] + [orcpub.dnd.e5.classes :as classes5e] + [orcpub.dnd.e5.feats :as feats5e] + [orcpub.dnd.e5.db :as db] + [cljs.spec.alpha :as s] [orcpub.dnd.e5.autosave-fx :as autosave-fx] ;; Side effect: registers all event handlers [orcpub.dnd.e5.events :as events])) @@ -138,17 +144,19 @@ (deftest save-character-rejects-missing-abilities (testing "with cached template but no ability scores → error dispatch" - ;; Minimal character with no abilities - (let [template {} ;; empty template → entity/build returns bare character + ;; REGRESSION GUARD that caught a REAL crash (not a stale test): an empty + ;; (non-nil) template reached entity/build and threw a null-fn `.call`. The + ;; autosave guard only skipped a NIL template; it now skips nil OR empty + ;; (both mean "not ready"). The handler must return the no-op {} skip, not + ;; throw. If this errors again, the guard regressed — fix the CODE. + (let [template {} ;; degenerate/not-yet-ready template character {:orcpub.entity/options {}}] (reset! app-db {::char5e/character-map {42 character} ::autosave-fx/cached-template template}) - ;; This will try to build the character and check abilities. - ;; With an empty template, built-character won't have :base-abilities, - ;; so the ability check fails → dispatches error message. - ;; We can't intercept the :dispatch effect, but we can verify it - ;; doesn't crash and the handler runs to completion. - (rf/dispatch-sync [::char5e/save-character "42"])))) + (rf/dispatch-sync [::char5e/save-character "42"]) + ;; no crash, and nothing was sent (no :loading set) — autosave skipped + (is (nil? (:loading @app-db)) + "empty template → autosave safely skips this cycle")))) ;; --------------------------------------------------------------------------- ;; :save-character (reg-event-fx) @@ -188,3 +196,236 @@ (reset! app-db {:user {:name "test"}}) (rf/dispatch-sync [:verify-user-session]) (is true "Handler completed without exception"))) + +;; --------------------------------------------------------------------------- +;; Emergency raw export +;; --------------------------------------------------------------------------- + +(def ^:private sample-plugins + {"Pack A" {:orcpub.dnd.e5/classes {:artificer {:option-pack "Pack A"}}} + "Pack B" {:orcpub.dnd.e5/spells {:fireball {:option-pack "Pack B"}}}}) + +(deftest emergency-export-named-plugin + (testing "a known plugin-name dumps just that source under its own filename" + (is (= ["Pack A.orcbrew" (get sample-plugins "Pack A")] + (events/select-emergency-export sample-plugins "Pack A"))))) + +(deftest emergency-export-whole-library + (testing "nil / unknown plugin-name dumps the entire library" + (is (= ["orcpub-EMERGENCY-backup.orcbrew" sample-plugins] + (events/select-emergency-export sample-plugins nil))) + (is (= ["orcpub-EMERGENCY-backup.orcbrew" sample-plugins] + (events/select-emergency-export sample-plugins "Nonexistent"))))) + +(deftest emergency-export-never-validates + (testing "even structurally-invalid plugins are returned verbatim (no gate)" + (let [broken {"Bad" {:orcpub.dnd.e5/classes {:x {:no-option-pack true}}}}] + (is (= ["Bad.orcbrew" (get broken "Bad")] + (events/select-emergency-export broken "Bad"))) + (is (= ["orcpub-EMERGENCY-backup.orcbrew" broken] + (events/select-emergency-export broken nil)))))) + +;; --------------------------------------------------------------------------- +;; serialize-orcbrew (pure serialization, split from the saveAs side effect) +;; --------------------------------------------------------------------------- + +(def ^:private sample-content + {:orcpub.dnd.e5/classes {:artificer {:name "Artificer" :option-pack "Pack"}}}) + +(deftest serialize-orcbrew-compact-roundtrips + (testing "compact output is readable EDN that round-trips to the same data" + (let [s (events/serialize-orcbrew sample-content)] + (is (string? s)) + (is (= sample-content (reader/read-string s)))))) + +(deftest serialize-orcbrew-pretty-differs-but-same-data + (testing "pretty-print is multi-line and larger, but the same data round-trips" + (let [compact (events/serialize-orcbrew sample-content) + pretty (events/serialize-orcbrew sample-content :pretty-print? true)] + (is (not= compact pretty)) + (is (re-find #"\n" pretty) "pretty output spans multiple lines") + (is (= sample-content (reader/read-string pretty)))))) + +;; --------------------------------------------------------------------------- +;; spec-field-problems — nested-element diagnosability +;; +;; Coverage is watertight (every homebrew spec rejects a name that derives an +;; invalid keyword — proven in clj keyword-audit-test). These tests cover the +;; OTHER half: that a NESTED failure (a bad option name inside a selection) is +;; reported with a human LOCATION ("Option 2"), not a generic top-level "Name". +;; --------------------------------------------------------------------------- + +(deftest spec-field-problems-top-level-bad-name + (testing "a digit-leading class name is flagged as :name :invalid, no location" + (let [item {:name "9 Lives Sorcerer" :key :9-lives-sorcerer :option-pack "Pack"} + expl (s/explain-data ::classes5e/homebrew-class item) + probs (events/spec-field-problems expl item) + name-prob (first (filter #(= :name (:field %)) probs))] + (is (some? name-prob)) + (is (= :invalid (:status name-prob))) + (is (re-find #"start with a letter" (:reason name-prob))) + (is (nil? (:location name-prob)) "top-level field has no nested location")))) + +(deftest spec-field-problems-locates-bad-option + (testing "a bad name on the 2nd selection option carries :location \"Option 2\"" + (let [item {:name "Valid Selection" :key :valid-selection :option-pack "Pack" + :options [{:name "Good Option"} + {:name "9 Lives"}]} + expl (s/explain-data ::selections5e/homebrew-selection item) + probs (events/spec-field-problems expl item) + opt-prob (first (filter :location probs))] + (is (some? opt-prob) "a located problem should be produced") + (is (= "Option 2" (:location opt-prob))) + (is (= :name (:field opt-prob))) + (is (= :invalid (:status opt-prob)))))) + +(deftest builder-error-hiccup-renders-location + (testing "the rendered banner names the specific option" + (let [problems [{:field :name :status :invalid + :reason "must start with a letter" :location "Option 2"}] + hiccup (events/builder-error-hiccup "Selection" problems) + flat (pr-str hiccup)] + (is (re-find #"Option 2 Name" flat)) + (is (re-find #"must start with a letter" flat))))) + +(deftest builder-error-hiccup-batches-top-level-missing + (testing "top-level missing fields still batch onto one 'Please fill in' line" + (let [problems [{:field :name :status :missing} + {:field :option-pack :status :missing}] + flat (pr-str (events/builder-error-hiccup "Class" problems))] + (is (re-find #"Please fill in" flat)) + (is (re-find #"Option Source Name" flat))))) + +;; --------------------------------------------------------------------------- +;; ::e5/repair-quarantined-source — persist-to-library repair engine +;; +;; Reuses the inline-edit transform + the re-key primitive and PERSISTS: +;; a repaired source lands in :plugins and leaves quarantine, atomically. Unlike +;; the export auto-fix, which only rewrote the exported file. +;; --------------------------------------------------------------------------- + +(def ^:private quarantined-bugged + ;; A class trapped under an invalid key (digit-leading name = the keyword trap). + {"Bugged Pack" {:orcpub.dnd.e5/classes + {:9-lives {:name "9 Lives" :key :9-lives :option-pack "Bugged Pack"}}}}) + +(deftest repair-quarantined-source-lands-and-clears + (testing "a fixed source is re-keyed, persisted to :plugins, and removed from quarantine" + (.clear js/window.localStorage) + (db/set-rejected-plugins quarantined-bugged) + (reset! app-db {:plugins {"Existing" {:orcpub.dnd.e5/spells + {:zap {:name "Zap" :key :zap :option-pack "Existing"}}}}}) + ;; correct the name → repair re-derives the key (:9-lives → :nine-lives) and validates + (rf/dispatch-sync [::e5/repair-quarantined-source "Bugged Pack" + {["Bugged Pack" :orcpub.dnd.e5/classes :9-lives :name] "Nine Lives"}]) + (let [plugins (:plugins @app-db) + cls (get-in plugins ["Bugged Pack" :orcpub.dnd.e5/classes])] + (is (contains? plugins "Bugged Pack") "repaired source landed in :plugins") + (is (contains? plugins "Existing") "existing sources untouched") + (is (= [:nine-lives] (keys cls)) "item re-keyed to the corrected name") + (is (= "Nine Lives" (:name (cls :nine-lives)))) + (is (s/valid? :orcpub.dnd.e5/plugin (get plugins "Bugged Pack")) + "the restored source is now spec-valid") + (is (nil? (get (db/get-rejected-plugins) "Bugged Pack")) + "removed from quarantine")) + (.clear js/window.localStorage))) + +(deftest repair-quarantined-source-rejects-still-invalid + (testing "if the fix doesn't make it valid, nothing is persisted and it stays quarantined" + (.clear js/window.localStorage) + (db/set-rejected-plugins quarantined-bugged) + (reset! app-db {:plugins {}}) + ;; no edit → name stays "9 Lives" → derived key :9-lives still invalid + (rf/dispatch-sync [::e5/repair-quarantined-source "Bugged Pack" {}]) + (is (empty? (:plugins @app-db)) "not persisted") + (is (contains? (db/get-rejected-plugins) "Bugged Pack") "still quarantined for another attempt") + (.clear js/window.localStorage))) + +(deftest repair-quarantined-source-missing-is-noop + (testing "repairing a name that isn't quarantined doesn't touch :plugins" + (.clear js/window.localStorage) + (db/set-rejected-plugins quarantined-bugged) + (reset! app-db {:plugins {}}) + (rf/dispatch-sync [::e5/repair-quarantined-source "Nonexistent" {}]) + (is (empty? (:plugins @app-db))) + (is (contains? (db/get-rejected-plugins) "Bugged Pack") "quarantine unchanged") + (.clear js/window.localStorage))) + +;; ---- toggle corruption via real re-frame events (folded from toggle-stress-test) ---- +;; Stress harness reproducing the emergent "repetitive clicking -> malformed data +;; (nil instead of false)" corruption by driving the REAL toggle event handlers in +;; the REAL cljs runtime. +;; +;; FINDINGS (reproduced here): +;; 1. Leaf flag toggles are nil-clean but leave FALSE-CRUFT: toggling a skill on +;; then off leaves `:athletics false` (never removed) — it exports forever. +;; 2. The "nil instead of false" is a PARENT-PATH collapse: a boolean toggle whose +;; path lands on a MAP applies `(not map)` = false, nuking the whole map. Then +;; every per-key READ under that node returns nil (`(get false :k)` = nil) and +;; the next child toggle does `(assoc false …)` which THROWS in cljs. +;; +;; STATUS: FIXED — content-prop toggles use common/toggle-flag (not bare `not`), +;; which refuses to collapse a map; these assert the fixed behavior. The false-cruft +;; is a SEPARATE issue (export cleanup); leaf-toggle-hammer-no-nil still documents it. +;; Legacy data already collapsed to `false` self-heals on the next child toggle. + +(defn deep-nil? + "True if any map value or collection element anywhere in x is nil." + [x] + (cond + (map? x) (boolean (or (some nil? (vals x)) (some deep-nil? (vals x)))) + (coll? x) (boolean (or (some nil? x) (some deep-nil? x))) + :else false)) + +(def ^:private skill-keys + [:athletics :stealth :perception :arcana :insight :persuasion :survival :medicine]) + +;; deterministic pseudo-random index sequence (no Math/random; reproducible) +(defn- idx-seq [seed n m] + (loop [s seed acc []] + (if (= (count acc) n) + acc + (let [s' (mod (+ (* s 48271) 7) 2147483647)] + (recur s' (conj acc (mod s' m))))))) + +(deftest leaf-toggle-hammer-no-nil + (testing "hammering real skill-prof toggles in varied order never leaves a nil" + (reset! app-db {::feats5e/builder-item {:name "Stress" :props {}}}) + (doseq [i (idx-seq 12345 600 (count skill-keys))] + (rf/dispatch-sync [::feats5e/toggle-feat-map-prop :skill-prof (nth skill-keys i)])) + (let [item (::feats5e/builder-item @app-db)] + (is (not (deep-nil? item)) (str "stray nil after leaf hammering: " (pr-str item))) + ;; false-cruft IS present and expected (the separate cleanliness issue): + ;; some skills are `false`, not removed. + (is (some false? (vals (get-in item [:props :skill-prof]))) + "documents the false-cruft: toggled-off skills are left as false")))) + +(deftest parent-path-toggle-preserves-map + (testing "FIXED: a flag toggle whose path lands on a MAP leaves it untouched" + (reset! app-db {::feats5e/builder-item {:name "Probe" :props {:skill-prof {:athletics true}}}}) + ;; toggle-feat-prop on :skill-prof now uses common/toggle-flag, which refuses + ;; to collapse a collection — the skill map survives instead of becoming false. + (rf/dispatch-sync [::feats5e/toggle-feat-prop :skill-prof]) + (is (= {:athletics true} (get-in @app-db [::feats5e/builder-item :props :skill-prof])) + "the map is preserved (no collapse to false, no data loss)"))) + +(deftest parent-path-toggle-no-nil-on-read + (testing "FIXED: the per-key read still returns its real value, not nil" + (reset! app-db {::feats5e/builder-item {:name "Probe" :props {:skill-prof {:athletics true}}}}) + (rf/dispatch-sync [::feats5e/toggle-feat-prop :skill-prof]) + (is (= true (get-in @app-db [::feats5e/builder-item :props :skill-prof :athletics])) + "the 'nil instead of false' symptom is gone — the value is intact"))) + +(deftest legacy-collapsed-parent-self-heals-on-toggle + (testing "FIXED + SELF-HEALING: legacy data already collapsed to `false` no + longer crashes — toggling a child heals the stray false into a fresh + map and applies the toggle (old skills are gone, but it's usable again)." + (reset! app-db {::feats5e/builder-item {:name "Probe" :props {:skill-prof false}}}) + (let [threw? (try + (rf/dispatch-sync [::feats5e/toggle-feat-map-prop :skill-prof :stealth]) + false + (catch :default _ true))] + (is (not threw?) "no crash — the collapsed false was healed, not assoc'd into") + (is (= {:stealth true} + (get-in @app-db [::feats5e/builder-item :props :skill-prof])) + "healed to a map and the toggle took effect")))) diff --git a/test/cljs/orcpub/dnd/e5/orcbrew_validation_test.cljs b/test/cljs/orcpub/dnd/e5/orcbrew_validation_test.cljs index fafb3c6a3..df7af6920 100644 --- a/test/cljs/orcpub/dnd/e5/orcbrew_validation_test.cljs +++ b/test/cljs/orcpub/dnd/e5/orcbrew_validation_test.cljs @@ -3,6 +3,7 @@ [cljs.reader :refer [read-string]] [orcpub.dnd.e5.orcbrew-validation :as orcbrew-val] [orcpub.dnd.e5 :as e5] + [orcpub.dnd.e5.content-specs :as content-specs] [cljs.spec.alpha :as spec])) ;; ============================================================================ @@ -514,6 +515,13 @@ ;; Other subrace should be unchanged (is (= :dwarf (get-in result [:orcpub.dnd.e5/subraces :hill-dwarf :race])))))) +;; REGRESSION GUARD for import key-rename + cross-reference rewrite. It was +;; failing on BROKEN SCAFFOLDING, not a code bug: `apply-key-renames` (and its +;; only real caller, events.cljs `:apply-conflict-resolutions`) read each rename +;; as {:source :content-type :from :to}; the test was passing :old-key/:new-key, +;; so from/to were nil and nothing was renamed. Keys corrected to :from/:to here +;; — now the guard actually exercises the rename + subclass `:class` ref rewrite. +;; If this fails again, fix the CODE; the input shape mirrors the live caller. (deftest test-apply-key-renames-batch (testing "Applying batch of key renames" (let [data {"Source A" {:orcpub.dnd.e5/classes @@ -524,8 +532,8 @@ {:artificer {:option-pack "Source B" :name "Artificer B"}}}} renames [{:source "Source A" :content-type :orcpub.dnd.e5/classes - :old-key :artificer - :new-key :artificer-source-a}] + :from :artificer + :to :artificer-source-a}] result (orcbrew-val/apply-key-renames data renames)] ;; Source A's artificer should be renamed (is (contains? (get-in result ["Source A" :orcpub.dnd.e5/classes]) :artificer-source-a)) @@ -699,11 +707,11 @@ (testing "top level when path is empty" (is (= "the top level" (orcbrew-val/describe-location [])))) (testing "trailing 0 (map-entry key selector) reads as 'the key'" - (is (= "the key \"Xanathar's Guide\"" - (orcbrew-val/describe-location ["Xanathar's Guide" 0])))) + (is (= "the key \"Sample Source Book\"" + (orcbrew-val/describe-location ["Sample Source Book" 0])))) (testing "trailing 1 (value selector) is dropped, breadcrumb ends at the key" - (is (= "\"Xanathar's Guide\" > :orcpub.dnd.e5/subclasses" - (orcbrew-val/describe-location ["Xanathar's Guide" 1 :orcpub.dnd.e5/subclasses 1]))))) + (is (= "\"Sample Source Book\" > :orcpub.dnd.e5/subclasses" + (orcbrew-val/describe-location ["Sample Source Book" 1 :orcpub.dnd.e5/subclasses 1]))))) (deftest test-describe-value-surfaces-item-identity (testing "maps surface :name instead of chopped EDN" @@ -717,7 +725,7 @@ (deftest test-format-validation-errors-real-spec (testing "end-to-end: a mis-shaped plugin produces readable, non-munged output" - (let [bad-plugin {"Xanathar's Guide" {:orcpub.dnd.e5/subclasses + (let [bad-plugin {"Sample Source Book" {:orcpub.dnd.e5/subclasses {:war-magic {:class :wizard}}}} explain (spec/explain-data ::e5/plugin bad-plugin) msg (orcbrew-val/format-validation-errors explain)] @@ -766,6 +774,11 @@ (is (= 42 (orcbrew-val/normalize-text 42))) (is (= nil (orcbrew-val/normalize-text nil))))) +;; REGRESSION GUARD — not a stale expectation. count-non-ascii must actually +;; detect non-ASCII. It long returned nil for ALL input in cljs because +;; `(int one-char-string)` is 0 (cljs has no char type), so `(> (int %) 127)` +;; never fired. This guard correctly FAILED until the impl switched to +;; `.charCodeAt`. Do NOT relax it to match the old (broken) behavior. (deftest test-count-non-ascii (testing "All-ASCII string returns nil" (is (nil? (orcbrew-val/count-non-ascii "hello world")))) @@ -781,15 +794,21 @@ (is (nil? (orcbrew-val/count-non-ascii 42))))) (deftest test-normalize-text-in-data-recursive - (testing "Normalizes strings nested in maps and vectors" + ;; STALE EXPECTATION corrected. normalize-text normalizes typographic + ;; punctuation (smart quotes/apostrophes/dashes \u2014 the curated `unicode-to-ascii` + ;; map) but DELIBERATELY does NOT strip accented letters: accents carry meaning, + ;; and stripping them silently is data loss. The old `"Caf\u00e9" -> "Cafe"` assertion encoded + ;; the opposite, abandoned behavior. Accents are surfaced via count-non-ascii + ;; (warn, don't strip), not normalized away here. + (testing "Normalizes typographic punctuation but PRESERVES accented letters" (let [input {:name "Caf\u00e9" :traits [{:name "Smart\u2019s" :description "Uses \u201cmagic\u201d"}] :level 3} result (orcbrew-val/normalize-text-in-data input)] - (is (= "Cafe" (:name result))) - (is (= "Smart's" (get-in result [:traits 0 :name]))) - (is (= "Uses \"magic\"" (get-in result [:traits 0 :description]))) + (is (= "Caf\u00e9" (:name result)) "accented letter preserved (not stripped)") + (is (= "Smart's" (get-in result [:traits 0 :name])) "smart apostrophe -> ASCII") + (is (= "Uses \"magic\"" (get-in result [:traits 0 :description])) "smart quotes -> ASCII") (is (= 3 (:level result)))))) ;; ============================================================================ @@ -912,6 +931,12 @@ (is (= 2 (count (get-in updated [:selections :companion-choice :options])))) (is (= 1 (count changes)))))) +;; REGRESSION GUARD that caught a REAL bug (not stale): the full import pipeline +;; must dedup duplicate options on a top-level homebrew Selection. dedup only +;; walked options nested under an item's :selections map, so an actual +;; :orcpub.dnd.e5/selections item's own :options were never deduped. Fixed in +;; dedup-options-in-item (handles both shapes). If this fails again, the dedup +;; pipeline regressed — fix the CODE. (deftest test-dedup-options-in-import-full-pipeline (testing "Full import pipeline deduplicates selection options" (let [plugin-edn (str "{:orcpub.dnd.e5/selections" @@ -1122,4 +1147,109 @@ edits {["P" :orcpub.dnd.e5/classes :fighter :trait 1 :name] "Second Wind"} result (orcbrew-val/apply-user-edits-to-plugin plugin "P" edits)] (is (= "Second Wind" - (get-in result [:orcpub.dnd.e5/classes :fighter :traits 1 :name])))))) \ No newline at end of file + (get-in result [:orcpub.dnd.e5/classes :fighter :traits 1 :name])))))) +;; ============================================================================ +;; strip-export-blanks — don't export meaningless nils/falses/empties. +;; ============================================================================ + +(deftest strip-export-blanks-drops-meaningless + (testing "drops false / nil / empty-collection map values" + (is (= {:a true} + (orcbrew-val/strip-export-blanks {:a true :b false :c nil :d [] :e {}})))) + (testing "keeps real values (true, numbers, strings, non-empty colls)" + (is (= {:a true :n 3 :s "x" :v [1 2]} + (orcbrew-val/strip-export-blanks {:a true :n 3 :s "x" :v [1 2]})))) + (testing "recurses and drops a map that becomes empty after cleaning" + (is (= {:keep true} + (orcbrew-val/strip-export-blanks {:keep true :components {:somatic false}}))))) + +(deftest strip-export-blanks-keeps-meaningful-blanks + (testing "keeps nil for the keep-nil keys (nil is a real answer there)" + (is (= {:spell-list-kw nil :ability nil :class-key nil} + (orcbrew-val/strip-export-blanks {:spell-list-kw nil :ability nil :class-key nil})))) + (testing "keeps [prof-kw first-class?] pairs intact (vector elements not dropped)" + ;; the multiclass 'first-class-only' rule lives in pairs, NOT {k false} maps + (is (= {:armor-profs [[:heavy false] [:medium true]]} + (orcbrew-val/strip-export-blanks {:armor-profs [[:heavy false] [:medium true]]}))))) + +(deftest strip-export-blanks-roundtrip-safe + (testing "the toggle false-cruft is removed, real proficiencies kept, still valid" + (let [plugin (read-string + (str "{:orcpub.dnd.e5/feats" + " {:lucky {:option-pack \"P\" :name \"Lucky\" :key :lucky" + " :disabled? false" ; meaningless -> drop + " :props {:skill-prof {:athletics true" ; keep + " :stealth false" ; cruft -> drop + " :arcana false}}}}}")) ; cruft -> drop + stripped (orcbrew-val/strip-export-blanks plugin) + skills (get-in stripped [:orcpub.dnd.e5/feats :lucky :props :skill-prof])] + ;; real proficiency kept, false-cruft gone + (is (= {:athletics true} skills) "kept the real prof, dropped the false ones") + ;; meaningless :disabled? false removed + (is (not (contains? (get-in stripped [:orcpub.dnd.e5/feats :lucky]) :disabled?)) + "dropped :disabled? false") + ;; required real values untouched + (is (= "Lucky" (get-in stripped [:orcpub.dnd.e5/feats :lucky :name]))) + (is (= :lucky (get-in stripped [:orcpub.dnd.e5/feats :lucky :key]))) + ;; still a valid plugin after stripping + (is (spec/valid? :orcpub.dnd.e5/plugin stripped) + (str "stripped plugin must stay spec-valid: " + (spec/explain-str :orcpub.dnd.e5/plugin stripped)))))) + +;; --------------------------------------------------------------------------- +;; Real-content cruft shapes (from the orcbrew catalog survey — 146 files). +;; Mirrors test/fixtures/cruft-shapes.orcbrew. The two real-world patterns are +;; false-cruft :spell-lists (every off-class stored as false — e.g. Faiths of the +;; Forgotten Realms :searing-song) and a {nil nil} stray entry (UA Sidekicks, the +;; UA Artificer). Proves the whole loop: LOADS without quarantine -> strip cleans +;; -> both items STILL pass their per-type save spec (nothing meaningful lost). +;; --------------------------------------------------------------------------- + +(def cruft-shapes-edn + (str "{:orcpub.dnd.e5/spells" + " {:test-cantrip {:name \"Test Cantrip\" :key :test-cantrip" + " :option-pack \"Cruft Shapes\" :level 0 :school \"evocation\"" + " :spell-lists {:wizard true :cleric true" + " :bard false :druid false :paladin false" + " :ranger false :sorcerer false :warlock false}" + " :ritual false :material false}}" + " :orcpub.dnd.e5/classes" + " {:test-sidekick {nil nil" + " :name \"Test Sidekick\" :key :test-sidekick" + " :option-pack \"Cruft Shapes\" :hit-die 8" + " :profs {:skill {:athletics true :stealth false :arcana false}}}}}")) + +(defn- deep-has? [pred x] + (cond (map? x) (or (some pred (keys x)) (some pred (vals x)) + (some #(deep-has? pred %) (vals x))) + (coll? x) (some #(deep-has? pred %) x) + :else (pred x))) + +(deftest real-cruft-shapes-load-strip-stay-valid + (testing "real false-cruft + {nil nil} shapes: load clean, strip cleans, stay save-valid" + (let [plugin (read-string cruft-shapes-edn) + spell-spec (content-specs/save-spec-for :orcpub.dnd.e5/spells) + class-spec (content-specs/save-spec-for :orcpub.dnd.e5/classes)] + ;; 1. LOADS without false quarantine (the loose floor keeps it) + (is (content-specs/valid-for-load? plugin) "real cruft shapes must load, not quarantine") + ;; 2. both items are save-valid even WITH the cruft (cruft is in non-req fields) + (is (spec/valid? spell-spec (get-in plugin [:orcpub.dnd.e5/spells :test-cantrip]))) + (is (spec/valid? class-spec (get-in plugin [:orcpub.dnd.e5/classes :test-sidekick]))) + ;; 3. STRIP removes the cruft + (let [stripped (orcbrew-val/strip-export-blanks plugin) + spell (get-in stripped [:orcpub.dnd.e5/spells :test-cantrip]) + klass (get-in stripped [:orcpub.dnd.e5/classes :test-sidekick])] + (is (= {:wizard true :cleric true} (:spell-lists spell)) + "false-cruft classes dropped, real trues kept") + (is (not (contains? spell :ritual)) "dropped :ritual false") + (is (not (contains? klass nil)) "dropped the {nil nil} stray entry") + (is (= {:athletics true} (get-in klass [:profs :skill])) "dropped nested false skills") + (is (not (deep-has? nil? stripped)) "no nil key/value survives anywhere") + (is (not (deep-has? false? stripped)) "no false value survives anywhere") + ;; 4. after stripping, both items STILL pass their save spec (nothing lost) + (is (spec/valid? spell-spec spell) + (str "stripped spell must stay valid: " (spec/explain-str spell-spec spell))) + (is (spec/valid? class-spec klass) + (str "stripped class must stay valid: " (spec/explain-str class-spec klass))) + ;; and the whole plugin re-loads clean + (is (content-specs/valid-for-load? stripped) "stripped plugin still load-valid"))))) diff --git a/test/cljs/orcpub/dnd/e5/subs_test.cljs b/test/cljs/orcpub/dnd/e5/subs_test.cljs index b850ddd60..182b24a4f 100644 --- a/test/cljs/orcpub/dnd/e5/subs_test.cljs +++ b/test/cljs/orcpub/dnd/e5/subs_test.cljs @@ -12,6 +12,8 @@ (:require [cljs.test :refer-macros [deftest testing is use-fixtures]] [re-frame.core :as rf] [re-frame.db :refer [app-db]] + [cljs-http.client :as http] + [cljs.core.async :as async] [orcpub.dnd.e5.character :as char5e] [orcpub.dnd.e5.party :as party5e] [orcpub.dnd.e5.folder :as folder5e] @@ -99,13 +101,19 @@ (is (= [] result))))) (deftest user-stale-user-no-token-still-guarded - (testing "user key present but no token → still skips HTTP" - ;; This was the accidental-guard case: [:user] existed but [:user :token] - ;; didn't, so the old guard happened to block. The new guard checks the - ;; canonical path [:user-data :token] which is authoritative. + (testing "a stale :user key with no token must NOT trigger an HTTP fetch" + ;; REGRESSION GUARD, rewritten to assert the right thing. The HTTP fetch is + ;; gated on [:user-data :token] (canonical, same as auth-headers); a leftover + ;; [:user] key (no :token) must not slip past it. The OLD assertion + ;; `(= [] result)` was WRONG: the :user sub passes through `(get db :user [])`, + ;; so a populated :user returns that map, not [] — it never tested the guard. + ;; Assert the guard DIRECTLY: http/get is never called. (reset! app-db {:user {:name "stale-user"}}) - (let [result @(rf/subscribe [:user])] - (is (= [] result))))) + (let [called? (atom false)] + (with-redefs [http/get (fn [& _] (reset! called? true) (async/chan))] + (let [result @(rf/subscribe [:user])] + (is (false? @called?) "no token → no HTTP, despite the stale :user key") + (is (= {:name "stale-user"} result) "sub passes the db value through unchanged")))))) (deftest user-with-token-returns-default (testing "with token, subscription fires (returns default until HTTP resolves)" diff --git a/test/cljs/orcpub/test_runner.cljs b/test/cljs/orcpub/test_runner.cljs index ae5a52784..9ac35074e 100644 --- a/test/cljs/orcpub/test_runner.cljs +++ b/test/cljs/orcpub/test_runner.cljs @@ -5,11 +5,14 @@ [orcpub.dnd.e5.event-utils-test] [orcpub.dnd.e5.compute-test] [orcpub.dnd.e5.hunter-evasion-test] - ;; CLJS-only re-frame integration tests + ;; CLJS-only re-frame integration tests (events-test now also holds + ;; the toggle-corruption stress harness) [orcpub.dnd.e5.events-test] [orcpub.dnd.e5.subs-test] [orcpub.dnd.e5.content-reconciliation-test] [orcpub.dnd.e5.views-test] + ;; storage layer (resilient loader read path) + [orcpub.dnd.e5.db-test] ;; orcbrew import/export validation [orcpub.dnd.e5.orcbrew-validation-test])) @@ -22,6 +25,7 @@ 'orcpub.dnd.e5.subs-test 'orcpub.dnd.e5.content-reconciliation-test 'orcpub.dnd.e5.views-test + 'orcpub.dnd.e5.db-test 'orcpub.dnd.e5.orcbrew-validation-test)) ;; Auto-run when figwheel reloads diff --git a/test/fixtures/broken-content.orcbrew b/test/fixtures/broken-content.orcbrew new file mode 100644 index 000000000..06bd094ce --- /dev/null +++ b/test/fixtures/broken-content.orcbrew @@ -0,0 +1,80 @@ +;; ============================================================================ +;; broken-content.orcbrew — INTENTIONALLY BROKEN homebrew for QA. +;; +;; Grab this file and upload it via My Content -> Import to see how the app +;; handles malformed content. It is valid EDN (so it imports), but nearly every +;; item is broken in a different, realistic way — the kinds of damage a user or a +;; hand-edit produces (published paks don't contain these; see the catalog +;; survey). This content still LOADS (its keys are valid); it just contains +;; garbage the builder has to tolerate. The app should degrade gracefully: use +;; what it can, ignore what it can't, strip cruft on export — and NEVER crash, +;; even when you USE the content in a character. +;; +;; (For the separate keyword-trap case — a name that can't become a valid key, so +;; the whole source is quarantined for rename/repair — see keyword-trap.orcbrew.) +;; +;; Single-source shape (top-level = content-type keywords), like a real +;; single-pack .orcbrew — the importer nests it under the source name you choose. +;; +;; Automated coverage: e2e/scenarios/broken-content-survives-use.spec.ts reads +;; this exact file, then drives the broken class into a real character build. +;; ============================================================================ +{:orcpub.dnd.e5/classes + {:broken-class + {:name "Broken Class" + :key :broken-class + :option-pack "Broken On Purpose" + :hit-die 8 + ;; level-modifiers: mostly broken, one valid — the valid one must still apply. + :level-modifiers [{:type :weapon-prof} ; missing :value + {:type nil :value :simple} ; nil :type + {:type :armor-prof :value :nonexistent} ; value that isn't real armor + nil ; a nil sitting in the vector + {:type :num-attacks :level 5 :value 2}] ; the one VALID modifier + ;; selections: malformed choices the builder would try to render. + :selections [{:name nil :options nil} ; nameless, no options + {} ; empty selection + {:min 3 :max 1}]}} ; min greater than max + + :orcpub.dnd.e5/spells + {:dead-spell + {:name "Dead Spell" + :key :dead-spell + :option-pack "Broken On Purpose" + :level 1 + :school "evocation" + :spell-lists {:wizard false :cleric false}} ; no `true` -> not on any list + :cruft-spell + {nil nil ; {nil nil} stray entry + :name "Cruft Spell" + :key :cruft-spell + :option-pack "Broken On Purpose" + :level 0 + :school "evocation" + :spell-lists {:wizard true :bard false :cleric false} ; false-cruft (export strips) + :ritual false + :material false}} + + :orcpub.dnd.e5/races + {:broken-race + {:name "Broken Race" + :key :broken-race + :option-pack "Broken On Purpose" + :abilities {:str "lots"} ; wrong type (string, not a number) + :size nil ; nil size + :traits [nil {:name nil}]}} ; a nil trait + a nameless trait + + :orcpub.dnd.e5/subclasses + {:dangling-sub + {:name "Dangling Sub" + :key :dangling-sub + :option-pack "Broken On Purpose" + :class :no-such-class}} ; parent class does not exist + + :orcpub.dnd.e5/feats + {:broken-feat + {:name "Broken Feat" + :key :broken-feat + :option-pack "Broken On Purpose" + :props {:skill-prof {:athletics true :stealth false}} ; false-cruft in props + :path-prereqs nil}}} ; nil where a map is expected diff --git a/test/fixtures/broken-parse.orcbrew b/test/fixtures/broken-parse.orcbrew new file mode 100644 index 000000000..33b81de62 --- /dev/null +++ b/test/fixtures/broken-parse.orcbrew @@ -0,0 +1 @@ +{:orcpub.dnd.e5/classes {:broken {:key :broken :name "Broken" :option-pack "Parse Break" \ No newline at end of file diff --git a/test/fixtures/broken-spec.orcbrew b/test/fixtures/broken-spec.orcbrew new file mode 100644 index 000000000..2320289d1 --- /dev/null +++ b/test/fixtures/broken-spec.orcbrew @@ -0,0 +1 @@ +{"Spec Break Pack" {"not-a-keyword" {:foo "bar"} :orcpub.dnd.e5/spells {:bad-spell {:key :bad-spell :name "Bad Spell" :option-pack "Spec Break Pack" :level :not-a-number}}}} \ No newline at end of file diff --git a/test/fixtures/cruft-shapes.orcbrew b/test/fixtures/cruft-shapes.orcbrew new file mode 100644 index 000000000..4057e59a2 --- /dev/null +++ b/test/fixtures/cruft-shapes.orcbrew @@ -0,0 +1,34 @@ +{"Cruft Shapes" + {:orcpub.dnd.e5/spells + {:test-cantrip + {:name "Test Cantrip" + :key :test-cantrip + :option-pack "Cruft Shapes" + :level 0 + :school "evocation" + ;; false-cruft: every class the spell is NOT on is stored as false + ;; (the real shape from Faiths of the Forgotten Realms :searing-song, etc.). + ;; strip-export-blanks must drop the falses and keep the trues — and the + ;; result must still satisfy ::homebrew-spell (spell-lists needs >=1 true). + :spell-lists {:wizard true + :cleric true + :bard false + :druid false + :paladin false + :ranger false + :sorcerer false + :warlock false} + :ritual false + :material false}} + + :orcpub.dnd.e5/classes + {:test-sidekick + {;; nil-key + nil-val: the {nil nil} stray entry seen in real UA Sidekicks + ;; classes and the UA Artificer. Inert, but it exports forever until stripped. + nil nil + :name "Test Sidekick" + :key :test-sidekick + :option-pack "Cruft Shapes" + :hit-die 8 + ;; more false-cruft in a nested prof map (toggled-off skills left as false). + :profs {:skill {:athletics true :stealth false :arcana false}}}}}} diff --git a/test/fixtures/keyword-trap.orcbrew b/test/fixtures/keyword-trap.orcbrew new file mode 100644 index 000000000..ddb0fb404 --- /dev/null +++ b/test/fixtures/keyword-trap.orcbrew @@ -0,0 +1,20 @@ +;; ============================================================================ +;; keyword-trap.orcbrew — a homebrew class whose NAME can't become a valid key. +;; +;; Grab this file and upload it via My Content -> Import. "9 Lives" derives the +;; key :9-lives, which doesn't start with a letter — so this content used to +;; import "successfully" and then its class would SILENTLY never appear in the +;; character builder (no error, no explanation). Now the whole source is +;; quarantined on import and surfaced in My Content with a "rename to restore" +;; prompt — the same repair flow the boot loader uses. Rename "9 Lives" to +;; something starting with a letter, click Repair & Restore, and the class +;; becomes usable. +;; +;; Automated coverage: e2e/scenarios/import-keyword-trap-repair.spec.ts. +;; ============================================================================ +{:orcpub.dnd.e5/classes + {:9-lives + {:name "9 Lives" + :key :9-lives + :option-pack "Keyword Trap Pack" + :hit-die 10}}} diff --git a/test/fixtures/sourced-classes.orcbrew b/test/fixtures/sourced-classes.orcbrew new file mode 100644 index 000000000..097e074ca --- /dev/null +++ b/test/fixtures/sourced-classes.orcbrew @@ -0,0 +1,44 @@ +{:orcpub.dnd.e5/classes + {:artificer + {:key :artificer + :name "Artificer" + :option-pack "Homebrew Pack A" + :hit-die 8 + :ability-increase-levels [4 8 12 16 19] + :subclass-level 3 + :subclass-title "Artificer Specialist" + :traits [{:name "Magical Tinkering" :level 1 :description "You learn to channel small sparks of magic into ordinary items."} + {:name "Infuse Item" :level 2 :description "You gain the ability to imbue items with magical properties."}] + :level-modifiers []} + :monster-hunter + {:key :monster-hunter + :name "Monster Hunter" + :option-pack "Homebrew Pack A" + :hit-die 10 + :ability-increase-levels [4 8 12 16 19] + :subclass-level 3 + :subclass-title "Monster Hunter Order" + :traits [{:name "Hunter's Bane" :level 1 :description "You gain an edge when tracking certain creature types."}] + :level-modifiers []}} + :orcpub.dnd.e5/subclasses + {:artillerist + {:key :artillerist + :name "Artillerist" + :class :artificer + :option-pack "Homebrew Pack A" + :level-modifiers [{:level 3 :modifiers []}]} + :battle-smith + {:key :battle-smith + :name "Battle Smith" + :class :artificer + :option-pack "Homebrew Pack A" + :level-modifiers [{:level 3 :modifiers []}]}} + :orcpub.dnd.e5/races + {:custom-lineage + {:key :custom-lineage + :name "Custom Lineage" + :option-pack "Homebrew Pack A" + :speed 30 + :size "Medium" + :abilities {} + :traits [{:name "Variable Trait" :description "Choose one feat for which you qualify."}]}}} diff --git a/test/fixtures/test-pak.orcbrew b/test/fixtures/test-pak.orcbrew new file mode 100644 index 000000000..bb3109d9a --- /dev/null +++ b/test/fixtures/test-pak.orcbrew @@ -0,0 +1,7 @@ +;; test-pak.orcbrew — laundered QA fixture. +;; A real large multi-source .orcbrew whose structure is preserved but whose +;; human-readable text (names, descriptions, source titles) has been replaced +;; with procedurally-generated filler from common public-domain English words. +;; Contains no copyrighted content. Used by plugin_load_test to prove the +;; resilient loader keeps every valid source (no false quarantine). +{"Default Option Source" {}, "Source Collection 04" {:orcpub.dnd.e5/backgrounds {:noble {:equipment {:clothes-fine 1, :signet-ring 1, :purse 1}, :key :noble, :name "Blue", :option-pack "Source Collection 04", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:history true, :persuasion true}, :tool-options {:gaming-set 1}}, :traits [{:description "Figure choose tree thread flow far carry year answer timber care far high border. Harvest thread ground along river season count again small stream being again frost east away custom around. Against fire harbor west sun along far choose all song bright hill call body break flight. Sky tree again island year gather quiet slope share weather answer close harvest distance away. Break point yard wave sun above. Over cross shadow meadow weather word.", :name "Arrive Cross", :summary "Before feather grain current dark pine moon word. Trade deep effort desert fall dream narrow wind slope glass smooth above south dust. Early any metal around weather travel distance loose bright voyage. Bright harbor carry feather sand any border winter narrow circle. Another point beyond empty road wind border deep candle. Rock harbor cover dawn bird below. Salt door bright apple small lake over wind. Small tree beyond care green meadow number. Any wood."} {:description "Slope ancient dawn field south blue cloud road. Body among mind far clean.", :name "Break Ground"}], :treasure {:gp 25}}, :guild-artisan {:equipment {:clothes-traveler-s 1, :pouch 1}, :equipment-choices [{:name "Crowd", :options {:cartographers-tools 1, :painters-supplies 1, :glassblowers-tools 1, :masons-tools 1, :jewelers-tools 1, :leatherworkers-tools 1, :smiths-tools 1, :cobblers-tools 1, :potters-tools 1, :brewers-supplies 1, :woodcarvers-tools 1, :carpenters-tools 1, :tinkers-tools 1, :alchemists-supplies 1, :weavers-tools 1, :cooks-utensils 1, :calligraphers-supplies 1}}], :key :guild-artisan, :name "Empty Mirror Trade", :option-pack "Source Collection 04", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:insight true, :persuasion true}, :tool-options {:artisans-tool 1}}, :traits [{:description "Far road metal flow apple mountain already fortune island young notice land season yard. Small meadow bind wide peace crowd below south shape island silver plate evening bring small. Castle field bread long patient young far glass. Boat edge close become care share away corner meadow share plain about long effort shell count. Storm child trade already willow climb hand. Brave build flight ocean lake bright gentle tide true build above busy gentle reason effort. Able current ask close measure about salt. Wide trade silent kind pool any also praise carry brave quiet call balance pool west. Beneath cause keep brave heart west weather cover apple form effort shore sun timber. Praise kind song corner custom form autumn feather course. Green song shell south bind form bring patient south paper beyond. Summer beauty burn cause child cause moment carry break course always shore round. East across path path behind gentle beauty child path sand. Tower trade current west water pool clean south crowd plain yard grain.", :name "Silver Sand", :summary "Shore hollow slope clean distance feather sky. Guard city before mountain stream yellow open yellow south flight care calm almost another rain. Plain ground both mist moment fortune copper against willow beneath island shape crowd. Kind balance wide young corner island harbor deep against figure iron north season. Clay simple guard island ask dance sand black forest calm pool among mind shade. Silent gentle boat notice again shade evening young after. Tree field path become behind close beyond enough fortune point ask. Order smooth cloth brave bring mind beauty. Brother true paper smooth far empty cloud moment almost fire spring. Among above ground dawn bind true brave small build letter flow behind child. Grass already table peace call glass call. Current city book plate glass clay answer order color. Wood travel east ask journey cloud cross praise lake table winter song gentle again rock against. Fortune carry over tree heart call clean beauty cloth guard alone lake heart order craft hollow narrow. Bold flame root any."} {:name "Earth Beauty Ocean", :description "Round quiet clean branch bind drift early line. Kind clear book hand figure branch black timber."}], :treasure {:gp 15}}, :spy {:equipment {:clothes-common 1, :crowbar 1, :pouch 1}, :key :spy, :name "Forest Near", :option-pack "Source Collection 04", :profs {:skill {:deception true, :stealth true}, :tool {:thieves-tools true}, :tool-options {:gaming-set 1}}, :traits [{:description "Bind night leaf spark burn flow timber lake road. Simple simple moment stream harvest fortune reed beauty leaf calm drift yard clean. Word rock color bind simple number garden willow order narrow measure gentle leaf. Flight tower already table lake paper balance shape calm. Over thread among after around bone season.", :name "Around"}], :treasure {:gp 15}}, :outlander {:equipment {:clothes-traveler-s 1, :hunting-trap 1, :pouch 1}, :key :outlander, :name "Stream Bring River", :option-pack "Source Collection 04", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:athletics true, :survival true}, :tool-options {:musical-instrument 1}}, :traits [{:description "Blue mind bold cover forest fire letter plate. Count close line leaf letter cross bind early salt sand pale enough beneath. Bird crowd flow road kind patient heart against about land shell. Boat river dust grain honor shadow. Voyage pine above narrow beyond also apple company current burn early keep hand. Break cloth crowd country early.", :name "Harbor", :summary "Grain crowd willow blue below answer measure being. Ancient small beneath long beneath almost valley beauty deep. Morning praise high shore moon green bright young clay beauty harvest coast. Land empty ground smooth garden again mountain line moon peace choose share iron slope bread. Bone custom path cold kind circle road common after round already bone."} {:name "Metal Form Apple", :description "Candle appear iron brown effort flow along reason. Bind count silver sky open choose drift gather glass hill."}], :treasure {:gp 10}}, :urchin {:equipment {:clothes-common 1, :knife-small 1, :pouch 1}, :key :urchin, :name "Bright", :option-pack "Source Collection 04", :profs {:skill {:sleight-of-hand true, :stealth true}, :tool {:disguise-kit true, :thieves-tools true}}, :traits [{:description "Grain against stone company enough attention figure. End season spark figure stream carry road black appear south honor crown valley. Again behind bone cold brown grove spring small cloud morning high wave guard notice. Beauty deep distance fortune grass break cross ocean beyond carry winter castle. Gentle below tower call.", :name "Light Thread", :summary "Road black bread coast gentle meadow open bird yard. Notice castle country near climb another plain beauty keep corner shell far among busy willow. Catch year bring hand young travel weather mirror forest iron light dawn round catch being border high. Any silent grass spark against horizon wave path flight."} {:name "Distance", :description "Song metal wind letter another mountain bring bread figure share above dust pool change all plain. Current leaf cold simple broad gentle travel glass light. Night measure moment."}], :treasure {:gp 10}}, :entertainer {:equipment {:clothes-costume 1, :pouch 1}, :equipment-choices [{:name "Notice Break", :options {:flute 1, :horn 1, :dulcimer 1, :viol 1, :drum 1, :pan-flute 1, :bagpipes 1, :shawm 1, :lute 1, :lyre 1}}], :key :entertainer, :name "Wide Soft", :option-pack "Source Collection 04", :profs {:skill {:acrobatics true, :performance true}, :tool {:disguise-kit true}, :tool-options {:musical-instrument 1}}, :traits [{:description "High bank city broad away metal beneath reed grove. Answer build season cloth timber peace book. End sand hand island wind letter measure all desert road willow. Shore alone among horizon praise about near company brave care cause. Word guard wide yellow morning river grain art grove. Back wind keep cause trade west bird sand small west attention. Dawn dream distance any away season garden early dance also color city bird enough over bright bold. Below meadow cold dawn door begin drift beauty wood land rock wind.", :name "Circle"} {:description "Before company young distance pale figure feather. Travel mountain shade shade call cause number child border small letter hand open care path land. Quiet again sand.", :name "Along End"}], :treasure {:gp 15}}, :sage {:equipment {:clothes-common 1, :ink 1, :knife-small 1, :bottle-glass 1, :ink-pen 1, :pouch 1}, :key :sage, :name "Simple", :option-pack "Source Collection 04", :profs {:language-options {:choose 2, :options {:any true}}, :skill {:arcana true, :history true}}, :traits [{:description "Away dream already sun shape reed. Road willow castle path beyond narrow. Mist course rock dance calm after cold gentle. Plain mountain brave copper line tide iron gather plain wind bread thread color tree flow coast above. Pool moment garden spring sand harbor close hollow silent brown point count cover climb follow. Appear east crowd again after bring hollow bird another willow storm first order yard. Light silent cover burn open calm close call art trade salt chance brother near end table. Call build simple mountain patient.", :name "Sand Root Appear", :summary "Catch deep against answer both company plate line. Pool chance attention praise south patient morning burn keep edge dark. Travel gentle open smooth plain iron peace build. Boat bear ask land grove chance peace branch end east choose border enough being narrow. Circle timber green bright brown point break trade edge song cause praise field frost. Sky clean frost hollow copper loose bear honor bread reason rock word behind glass valley simple river. Candle empty plate letter mountain grain sun hill forest young behind over road over."} {:description "Willow build timber change meadow wind candle below metal course arrive current. Early hand heart catch water paper. Letter candle apple wide around wide south mirror.", :name "Feather Edge Heart"}], :treasure {:gp 10}}, :gladiator {:equipment {:clothes-costume 1, :pouch 1}, :equipment-choices [], :key :gladiator, :name "Rain Young", :option-pack "Source Collection 04", :profs {:skill {:acrobatics true, :performance true}, :tool {:disguise-kit true}, :tool-options {}}, :traits [{:description "Order drift bind dark grass craft smooth paper valley heart shadow blue calm simple. Brother clear smooth clean current garden over bear cloth. Thread kind form before child thread already. West small alone wide word circle call. Mirror east build call plain custom ask. Edge after circle wood paper share spring alone simple patient pool already. Brother sun shadow silent song autumn both any dream. Keep custom metal wave mirror metal. Flow again shell cover bring boat enough apple able answer sun.", :name "Branch"} {:description "Deep slope being cause pool current again cloth pool gentle along. Pine dark glass art timber body reason round every shadow silent spark. Color flight grove burn fire rain. Boat trade arrive thread moon moon dance around rain. Color branch boat against against share. High table copper.", :name "Care Young"}], :treasure {:gp 15}}, :folk-hero {:equipment {:clothes-common 1, :pot-iron 1, :shovel 1, :pouch 1}, :equipment-choices [{:name "Calm", :options {:cartographers-tools 1, :painters-supplies 1, :glassblowers-tools 1, :masons-tools 1, :jewelers-tools 1, :leatherworkers-tools 1, :smiths-tools 1, :cobblers-tools 1, :potters-tools 1, :brewers-supplies 1, :woodcarvers-tools 1, :carpenters-tools 1, :tinkers-tools 1, :alchemists-supplies 1, :weavers-tools 1, :cooks-utensils 1, :calligraphers-supplies 1}}], :key :folk-hero, :name "Away", :option-pack "Source Collection 04", :profs {:skill {:animal-handling true, :survival true}, :tool {:land-vehicles true}, :tool-options {:artisans-tool 1}}, :traits [{:description "Rain end crowd about song silent wind company boat against road. Chance word door north fair point dark custom branch. Thread green silver bear thread guard leaf forest line brown garden. Bold city praise over meadow drift body boat flame country. Metal all forest about figure book stream grove hand simple. Brave mind light broad paper harvest course. Cause flame river quiet thread.", :name "Long Horizon", :summary "Shore branch dance all sand bind calm shell reason border leaf weather clear fortune always river. Candle mirror dark break plain brother south. Gather point rain candle color grove bright cloud carry both sand leaf gentle mind. Tower yellow alone honor wood travel tower shade storm shore company sand. Lake brother book door gentle land. Timber around begin bird shape year. Share among."}], :treasure {:gp 10}}, :sailor {:equipment {:clothes-common 1, :rope-silk 1, :pouch 1}, :key :sailor, :name "Rock Dark Slope", :option-pack "Source Collection 04", :profs {:skill {:athletics true, :perception true}, :tool {:navigators-tools true, :water-vehicles true}}, :traits [{:description "Below reed close green voyage boat child country copper break guard mind east. Ocean song chance gentle shape west. Young wind autumn bring number clay early call mind meadow iron metal beauty sand ocean dance stone. Grain measure night child among west tower silver being loose slope weather corner land. Heart candle pale wind shore morning brother season branch order island weather distance. Moment care bold circle sail wave among. Answer round carry bone desert night fire shade beyond climb answer heart. Honor morning year cliff before west copper timber song. Empty near apple blue young circle silent corner.", :name "Earth Tide", :summary "Kind praise pale door attention bring able bright border smooth voyage patient. Harvest timber already close shade beyond metal across travel forest busy clear letter border bold grain. Simple balance beyond high narrow both empty gather figure metal meadow. Clear pale mist beyond shape rain hill garden order deep lake climb back feather after flow. Being quiet south yellow slope wave soft call metal balance effort sail mountain spring plate. Back fire brave dawn rain shade grove. Spring far across mind travel shore being round paper. Measure far close edge bird against. Soft book ask over attention notice. Clean cross."} {:description "Slope horizon soft empty behind small gentle cross horizon drift dawn. South valley bind wide small sky shadow letter choose travel already bank reed narrow. Night bear current feather brother wide. Deep desert moon castle appear dance against kind. Bear cross figure any simple wave.", :name "Grain Clean"}], :treasure {:gp 10}}, :hermit {:equipment {:blanket 1, :case-map-or-scroll 1, :clothes-common 1, :herbalism-kit 1}, :key :hermit, :name "East", :option-pack "Source Collection 04", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:medicine true, :religion true}, :tool {:herbalism-kit true}}, :traits [{:description "Form loose after shadow hollow cloth point praise behind common. Valley journey bind field tree long tree peace glass east drift praise fortune. Bank attention bold ask dance close small craft along. Door heart every craft quiet door soft first. Every willow always country carry sky iron cause cross winter cause calm crowd. Earth grass calm honor silver body call being child plate branch wide every silver calm plate. Ocean shadow figure song current break bone dream art line keep measure ocean grain. Call before wave shade empty build. Yard shore flow weather morning earth already weather summer fortune circle shore far shell. Voyage mind effort west gentle below corner iron along deep early smooth plate table honor. Tree lake build grass harvest empty become leaf. Count cover forest.", :name "River Near Silver", :summary "Open end corner flight flame round plate close dance wide copper. Glass water stone tree cause water mountain plain winter after. Fire child high shade being circle end table thread. Early chance wood book bird plate praise bone rock along root weather reason true boat. Shade timber body child below wide far word letter clean spark mist cloud. Tree change table flight timber custom green plain fall plate spark art candle. Bold harvest young earth land fall busy garden mirror. Door mist shape island empty effort black narrow keep open candle figure build island above dawn night. Small wide about reason morning land close coast simple. Paper river pale wide ancient winter road mountain count enough. Forest year round stone break enough break. Kind climb share behind about winter."}], :treasure {:gp 5}}, :pirate {:equipment {:clothes-common 1, :rope-silk 1, :pouch 1}, :key :pirate, :name "Beyond Over Empty", :option-pack "Source Collection 04", :profs {:skill {:athletics true, :perception true}, :tool {:navigators-tools true, :water-vehicles true}}, :traits [{:description "Sun above circle count heart also ask leaf. Spring table bone summer fall silver. Mirror ancient follow small climb night. Desert care island grove form silent shell grove course soft feather trade lake. Appear company figure behind long end number crown care garden bread horizon harbor night. Beauty ask hollow flow beauty above all forest able hill castle.", :name "Apple"} {:name "Bright", :description "Salt back travel both stone fire order plate fall guard climb. Yard art flight simple follow bird lake frost young bank morning beauty weather storm young garden. Dust dance change bold loose grove north blue wind care call copper lake. Valley guard bank table iron flow."}], :treasure {:gp 10}}, :guild-merchant {:equipment {:clothes-traveler-s 1, :pouch 1}, :equipment-choices [], :key :guild-merchant, :name "Above Slope Bright", :option-pack "Source Collection 04", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:insight true, :persuasion true}, :tool-options {}}, :traits [{:description "Storm crown edge plain drift silent meadow cloth leaf body young. Cross clean hand company glass against. Over frost timber leaf count cloud clay effort feather crowd tide lake heart peace corner cloth after. Root behind word form common bird ask heart ask count. Any north mirror harbor wave valley near above wood balance copper. Winter iron clean meadow cloud frost plain harbor course over door. Bring loose all calm common change. Moment again moon evening cross tower salt shadow common autumn color behind thread custom winter line. Grass gentle summer table count coast true sun figure simple path gentle. Word autumn back north form glass close. Enough round hand sail bone castle patient cause shape silent. Border broad hand meadow answer cloud beauty morning form patient garden craft. Deep border path garden ground cloud common fire answer journey stream fair always every. Bird horizon ground course pool mountain horizon mist horizon shore brave winter tree first. Country reed catch shell round every become yard. Also count.", :name "Begin", :summary "Table glass spring storm bank around. Silver round form island shadow balance crowd behind far long. Edge choose true green small island become. Peace gentle morning season mountain art. Notice sand figure already bright autumn line. Reed feather willow body point paper fortune bear child shape young lake empty black child across. Clay cause winter pine bold current city young end harbor over shadow grove earth season summer travel. Summer bear current first black letter summer always brown valley first across bank change end sand. Copper along word hollow near morning deep over reason clay arrive bread mist earth beyond. Bear beauty east sand care glass voyage cloud cold edge trade tower fair another. Sail both garden tree feather mind sun wave both notice again ground harvest. Stone arrive simple wide busy carry harvest enough harbor. Calm fire busy grain salt evening garden burn custom sky water. Copper glass peace trade another beneath distance cross ancient sand rain around mind. Grain year company pool hollow wave."} {:name "Yellow", :description "Island arrive reason body every fair bird mountain dust effort number clear grass yellow. Order deep narrow dark lake empty journey current stone. Sun dance bear island tree wave. Become keep quiet break east reason. Loose follow path brown before cloud notice shape timber below."} {:name "Burn Willow Current", :description "Break choose simple metal become craft begin. Simple before storm bread grain paper behind tree."}], :treasure {:gp 15}}, :soldier {:equipment {:clothes-common 1, :pouch 1}, :key :soldier, :name "Slope", :option-pack "Source Collection 04", :profs {:skill {:athletics true, :intimidation true}, :tool {:land-vehicles true}, :tool-options {:gaming-set 1}}, :traits [{:description "Dark shell current course crown river build grass around child. Before fire sand behind field burn ocean kind also. Effort reason stream custom fair end plate call brown empty praise dawn travel ocean. Among coast bright heart reason patient tree narrow candle. Ask leaf loose heart root arrive land. Bear salt ground bank pale glass horizon tide thread plain door alone end. Burn shape against hand forest form plain wide lake call about.", :name "Round Fortune", :summary "Busy able winter root build begin long close true below winter. City yard east loose cross field. Every bear blue grain before south country country pale rain brother enough arrive root shell clean salt. Measure castle land climb copper keep flow east blue sun wide pine common. Any storm country summer song praise body silver cliff choose company honor already hand. Pine stone burn course branch ask crowd boat loose after away spark."} {:description "Kind cloth distance narrow yard season carry frost reason child long follow form far. Appear climb glass city also cross hill earth land carry sky. Timber over circle slope horizon winter break flight empty alone all yard.", :name "Already Gentle"}], :treasure {:gp 10}}, :charlatan {:equipment {:clothes-fine 1, :disguise-kit 1, :pouch 1}, :key :charlatan, :name "Almost Ocean Also", :option-pack "Source Collection 04", :profs {:skill {:deception true, :sleight-of-hand true}, :tool {:disguise-kit true, :forgery-kit true}}, :traits [{:description "Fortune early flow iron pine island after broad call ask below bring rain moment reason. Quiet cloth clean west bird dawn. Become also pale lake harbor cloth point behind north. Sail beauty open both fair travel dawn below round brave candle. Ocean child flow light art pale craft high. Pale all small.", :name "Yard Root Cross"} {:description "Notice dust dawn cross beneath bold boat almost form narrow evening song border night night. Cold blue arrive journey honor willow edge clean another pine. Sky crown all near pool grass bright keep narrow bring climb appear. Loose green border about wave beneath loose over paper bold salt brother.", :name "Behind Slope"}], :treasure {:gp 15}}, :criminal {:equipment {:clothes-common 1, :crowbar 1, :pouch 1}, :key :criminal, :name "Pool Quiet", :option-pack "Source Collection 04", :profs {:skill {:deception true, :stealth true}, :tool {:thieves-tools true}, :tool-options {:gaming-set 1}}, :traits [{:description "Both shape bank table shape border among mist stone. Letter voyage sun bind winter body tower wood over. Word mist clay flame over stone. Voyage brave forest bird rock grove south pine distance form mist. Plate almost country honor bright slope share word sun sun light frost keep beneath flight. Paper arrive.", :name "Mountain Bright"}], :treasure {:gp 15}}, :knight {:equipment {:clothes-fine 1, :signet-ring 1, :purse 1}, :key :knight, :name "Grass Root", :option-pack "Source Collection 04", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:history true, :persuasion true}, :tool-options {:gaming-set 1}}, :traits [{:description "Cloth round ground moment bright art weather able back shade. Rock trade choose weather shade feather carry reed almost branch reed cross beauty back near alone bind. Early long pool above ground near early first. Quiet coast mind bird carry yard plain mind measure company table grove river being moment. Almost summer all weather morning across busy both sun smooth shade deep every flame. Sun east flow busy again cold brother castle fall among already across. Rain wood castle reed notice being road silent build trade against cover. Border thread garden deep among begin. Cover door green calm guard west. Number timber count soft fall trade letter dawn road song point root another. Autumn moment beneath being copper distance.", :name "Before Deep Drift", :summary "Sky clear already bear cause appear another effort calm build. Stone patient salt bird carry tower plate field praise near apple almost being honor. Honor across guard order yard shadow. Bold table follow begin narrow point over broad dance trade mirror bright. Path burn spark sail chance candle count gather light song black. True candle notice share east desert measure care black. Silent effort bright color iron reed tower answer trade stream bright grain hill able. First sand bone timber evening."} {:name "Pine", :description "Over craft flame harvest point child effort end before wave clear road all brown city. Shade winter night body border against open simple small mist cold plate reed apple dust count."}], :treasure {:gp 25}}}, :orcpub.dnd.e5/feats {:elemental-adept {:ability-increases #{}, :description "Light choose every copper change mirror cross earth hill willow young moment bold craft. Current fair yellow distance bird spring branch season black thread tower autumn gather craft. Table north paper chance coast cross dark tower balance begin flame. Yellow light hill gentle about follow flow city feather empty black deep long beyond also mist. Ask circle timber light fair brave also. Flame become cause over edge thread rain busy build color stone summer craft. Being beyond.", :key :elemental-adept, :name "Hill Answer", :option-pack "Source Collection 04", :prereqs #{:spellcasting}}, :charger {:ability-increases #{}, :description "Dream plain cover cloud number narrow keep grain wide any always begin course. Kind ground forest pale bold around. Bread across ancient after wind measure hill. Mind water small close all above boat plain. Flame line ocean back attention letter also arrive paper. Course moment corner rock glass cover gather fair praise plain path castle iron appear loose gentle. Bank black among far deep over climb being circle year measure shadow cover line broad. Appear pale mountain branch begin burn true.", :key :charger, :name "Plain Clean Fall", :option-pack "Source Collection 04", :prereqs #{}}, :sentinel {:ability-increases #{}, :description "Near field any close beauty fair long about silver winter morning burn timber. Open cold bright shell dream desert forest apple clean land grove harbor season. Apple field plate drift book south pool gather long shape custom rain burn shade clear slope. Paper reed brave brown copper fall cross cliff. Field edge book shadow clear bone south cliff grove follow iron sail early burn leaf wood slope. Number country chance clear wood tree cloth green path moment horizon small hand loose voyage letter. Shore line change number paper west effort castle metal keep metal.", :key :sentinel, :name "Morning Catch Order", :option-pack "Source Collection 04", :prereqs #{}}, :mounted-combatant {:ability-increases #{}, :description "Spark kind quiet rock cross reason answer clean moment color form salt keep light. Common heart heart beyond answer path yard shadow count land. Road shore color craft feather bear. Plate keep behind call over reed color bread path. Coast harbor hill honor both among island travel summer about call copper peace brother night weather shadow. Honor chance fortune quiet shade grass bring bind enough follow hand door fair rock against call flight. Lake being break build art heart over spring beauty spark answer sail again order almost salt cliff. Enough tide.", :key :mounted-combatant, :name "Clear", :option-pack "Source Collection 04", :prereqs #{}}, :linguist {:ability-increases #{:orcpub.dnd.e5.character/int}, :description "Forest mind among away behind blue. Song back blue meadow dawn evening brave flight silent calm. Brown figure yellow blue bank shadow south open small clear cause small break. Slope guard hand corner bear stone frost bind clay clean both bring appear distance island travel. Cliff land shadow effort body measure round mountain. Reed fortune empty coast.", :key :linguist, :name "Fall", :option-pack "Source Collection 04", :prereqs #{}, :props {:language-choice 3}}, :martial-adept {:ability-increases #{}, :description "Lake cloth fire feather shape narrow root spark gather. Carry alone above become west also salt both. Grain smooth bread ocean weather across clay mind season gentle. Sun almost among every pool weather peace gentle. Stream call busy near calm sky flame fall below smooth slope dawn appear long child flame. Order attention against brown stream both. Stone autumn moon earth mist glass fair beyond bring carry pool shell. About quiet beauty catch journey bring word cross all garden above autumn light year weather. Summer child autumn island voyage east leaf book copper end garden tide already number slope broad harbor. Small arrive glass crown fire behind among effort trade weather. Early mind drift pool blue harbor body evening hollow both fortune castle end season. Evening across.", :key :martial-adept, :name "Weather Bright Far", :option-pack "Source Collection 04", :prereqs #{}}, :medium-armor-master {:ability-increases #{}, :description "Sail boat circle leaf again table desert gentle. Ancient garden spring above notice water pool. Brown honor gentle also moon south black green table dust cloth deep dream stream. Being build winter first bear any ground quiet any season high after. Branch dawn water kind edge door.", :key :medium-armor-master, :name "Open Mirror Guard", :option-pack "Source Collection 04", :prereqs #{:medium}, :props {:medium-armor-max-dex-3 true, :medium-armor-stealth true}}, :shield-master {:ability-increases #{}, :description "Over company cause change follow ask current honor. Field city north long behind north. Sail bone wood timber word salt fall answer body first against brown morning. Open young winter break moon fortune weather mind table island. Willow willow small circle word garden rock silver shadow bear hollow rock. Crown crown storm below craft apple valley course share enough. Bind ask order quiet measure call yard winter flow grain clear grove table. Grove apple art apple small light light garden sky over early patient moon branch south. Willow rain ancient dust shadow away balance enough first bring slope. Line meadow moon busy almost all edge word morning fall water answer morning small soft current. Arrive dream paper heart near night. Early ancient carry willow appear earth. Slope grove.", :key :shield-master, :name "Far Effort Another", :option-pack "Source Collection 04", :prereqs #{}}, :tough {:ability-increases #{}, :description "Yard grain wind root both true any season season brave catch stone mist any able harvest crown. Already care apple shade border ancient point. Plain field beauty every border about ancient carry travel busy apple.", :key :tough, :name "Bring Calm Another", :option-pack "Source Collection 04", :prereqs #{}, :props {:max-hp-bonus 2}}, :resilient {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/con :orcpub.dnd.e5.character/dex :orcpub.dnd.e5.character/wis :saves? :orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :description "Point clean spark bold east shell path silver dream stone moment rain dream. Water bind rain pool paper distance dawn round among both edge hill root figure coast plate. Season sky.", :key :resilient, :name "Word", :option-pack "Source Collection 04", :prereqs #{}}, :sharpshooter {:ability-increases #{}, :description "Burn paper attention rain country open. Small round bird able away measure heart bring sun song alone field true. Spark cross both almost flight thread. Root soft color city corner slope cloth mirror broad. Also climb smooth bright blue climb coast away order ask. Weather timber pool harbor any both gather become lake. East far light able patient meadow coast metal rain night calm. Letter flow plain open coast harvest call gentle copper grain yard. Follow field desert.", :key :sharpshooter, :name "Boat Break Timber", :option-pack "Source Collection 04", :prereqs #{}}, :magic-initiate {:ability-increases #{}, :description "Yard ground corner heart far leaf wood point cloth boat. Blue plain arrive against hollow measure break dark garden season moon mind night honor green cliff cloud. Spark dawn away hill pale grove ask carry iron praise horizon shadow custom letter common. Glass burn among reed effort shore around. Field black bright loose art evening bind grain sun bright gather pine effort child ancient. Notice tide road bold silver silver. Climb true course praise carry light open high effort winter climb arrive song arrive. Mind around south pale land also.", :key :magic-initiate, :name "Timber", :option-pack "Source Collection 04", :prereqs #{}, :props {:attack-spell false, :magic-novice true}}, :heavy-armor-master {:ability-increases #{:orcpub.dnd.e5.character/str}, :description "Balance follow among already above against against back patient cover gentle bold branch color. Again around gentle form field follow voyage river table road long kind north pool river narrow. Cloth boat feather north crowd land attention end.", :key :heavy-armor-master, :name "Dawn Shell", :option-pack "Source Collection 04", :prereqs #{:orcpub.dnd.e5.character/str :heavy}}, :heavily-armored {:ability-increases #{:orcpub.dnd.e5.character/str}, :description "Song every back yard become moment island root winter among.", :key :heavily-armored, :name "After About", :option-pack "Source Collection 04", :prereqs #{:medium}, :props {:armor-prof {:heavy true}}}, :alert {:ability-increases #{}, :description "Drift quiet color small pool country away cloud metal coast end. Light water open crown south book. Sand travel alone paper candle follow far cold. Tower line.", :key :alert, :name "Trade Attention Valley", :option-pack "Source Collection 04", :prereqs #{}, :props {:initiative 5}}, :savage-attacker {:ability-increases #{}, :description "Away close grain dark cover grass horizon mountain distance. Metal deep round current measure wood metal both water horizon border wave mist. Appear ancient.", :key :savage-attacker, :name "Already", :option-pack "Source Collection 04", :prereqs #{}}, :ritual-caster-int-based- {:ability-increases #{}, :description "Brother horizon flight already patient stream over. Ground paper evening about hill tree all brother young voyage. North voyage cliff forest heart cold against number again cause blue. Fortune boat ancient calm evening copper bring paper shell cross sand calm lake any voyage calm. Cause below dust after reason earth brother. Branch flight shade end cloth care. Keep brother leaf flow another country across patient beyond around begin spring. Behind gather every carry harbor around timber dance dust thread. Boat line stone pine island boat. Count art beauty climb fall book shadow cross season branch door share word behind dance. Keep path timber gather simple close grove almost edge color country east hill both shell morning lake. Fire shore become near copper boat long close field plate quiet season again voyage. Far night both early far wide heart flame year bread stone all. Dust city frost land body water build word. Empty appear silent body stone shadow north clear long honor heart flame yard guard stone loose gentle. Bread form clear back castle attention pale bear paper wave care salt. Morning choose brother garden grass west summer corner country plain grain clay root gentle ancient. Fire garden shade spring cold cause fire south begin away dark south slope. Boat silver ocean tower cover high. Hand beyond kind beauty pale winter spring book share.", :key :ritual-caster-int-based-, :name "Along Number", :option-pack "Source Collection 04", :prereqs #{:orcpub.dnd.e5.character/int}, :props {:ritual-casting true}}, :dungeon-delver {:ability-increases #{}, :description "Green spark always castle wind number kind round line coast tide iron current yellow back empty frost. Lake after change care spring song shade begin plain trade stream honor. Metal around begin season below mountain silver plate. Keep arrive after shell slope beneath path break hollow young paper clay book plain loose being. Pale desert candle east.", :key :dungeon-delver, :name "Grove", :option-pack "Source Collection 04", :prereqs #{}, :props {:damage-resistance {:traps true}, :saving-throw-advantage-traps true}}, :ritual-caster-wis-based- {:ability-increases #{}, :description "Become end moment bone grove reed. Hand below dust garden table broad ask flight wood harvest bird praise coast catch burn paper. Shade cloud word timber along sun yellow young. Apple meadow custom point boat again busy bright clean chance mind border simple copper. Among dark silver appear also fair north guard ground begin peace fair form clear cold become. Garden grass wide fair back tree voyage river always wide figure spring. Alone below root ocean cause desert cover country arrive share another rain reason. Patient ancient flame earth rock distance ancient city custom any yard hand always city gather. Round book begin bind fair book harbor country praise road yard season paper city above distance. After salt castle stone peace already custom mist gentle night yellow. Water season meadow back figure away along tree honor bold first. Letter west being year deep broad deep point cover copper country become winter meadow cold. Bright word dream heart simple rock first coast plate shape care around. Moon number course child grove journey earth. Long near first about fire common effort soft copper alone. Moment common empty thread pale door weather tower travel fire praise boat letter effort travel west. Form figure branch season rain land cross spark mirror coast castle away harbor begin craft hill. Clean land wood kind mountain circle call praise child.", :key :ritual-caster-wis-based-, :name "Broad Mind Gather", :option-pack "Source Collection 04", :prereqs #{:orcpub.dnd.e5.character/wis}, :props {:ritual-casting true}}, :moderately-armored {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/dex}, :description "Guard bank song near bone color shell mountain care meadow distance narrow city spring. Season hand bold choose hill metal. About country garden honor.", :key :moderately-armored, :name "Dance Garden", :option-pack "Source Collection 04", :prereqs #{:light}, :props {:armor-prof {:medium true, :shields true}}}, :great-weapon-master- {:ability-increases #{}, :description "Notice deep open back shade cause sun pale south. Fire answer candle ocean travel dust true against clean plain below long wide close south river simple. Long quiet soft measure both flame castle already plate young tower peace art body fire before choose. Both call meadow soft near fair spark shadow child autumn dust hill dark winter cold brown. Field reason count form below bold. Mist wave ground silent ancient spring bread. Rock balance kind morning about song garden common heart desert crown trade common dawn above among. Beneath letter brother mist tide paper meadow.", :key :great-weapon-master-, :name "Harvest Always Shore", :option-pack "Source Collection 04", :prereqs #{}}, :defensive-duelist {:ability-increases #{}, :description "Heart south all long mist near effort dawn journey. Peace field guard wide clear against thread tide calm dawn high beneath far. Company praise mirror already any autumn circle circle water moon climb peace answer dark. Reason already ground care bold drift moment cloud.", :key :defensive-duelist, :name "Wide", :option-pack "Source Collection 04", :prereqs #{:orcpub.dnd.e5.character/dex}}, :inspiring-leader {:ability-increases #{}, :description "Patient beneath cause care soft edge salt bank before mind. Empty harvest country evening wave timber guard notice early follow journey paper end grove. Bring color tide stone guard fortune guard frost beyond. Forest appear end custom bind cause grain current brave another boat far field blue about. Flow brother blue current sand brother stone boat plate flame. Count tide country metal small figure gather alone black stone long below bring guard tide body. Harbor yellow almost land close.", :key :inspiring-leader, :name "Honor Grove Change", :option-pack "Source Collection 04", :prereqs #{:orcpub.dnd.e5.character/cha}}, :weapon-master {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/dex}, :description "Ancient wood dream back wide close castle able boat. Deep metal apple candle voyage tree silent all brave. Cross behind body guard dance end. Become ancient.", :key :weapon-master, :name "Busy", :option-pack "Source Collection 04", :prereqs #{}, :props {:weapon-prof-choice 4}}, :keen-mind {:ability-increases #{:orcpub.dnd.e5.character/int}, :description "Long castle silent path dust book. Slope silver young fire dark grain leaf flight share bread sail bind dawn hill. Balance road hollow open begin any. Patient river corner glass after build ocean city dance bread. Become mirror yellow fortune earth against soft trade over share become moon open. Slope build cross near ancient.", :key :keen-mind, :name "Build Measure", :option-pack "Source Collection 04", :prereqs #{}}, :skilled {:ability-increases #{}, :description "Craft leaf valley empty mind storm wave border gather rock share. First bank shadow.", :key :skilled, :name "Night Corner", :option-pack "Source Collection 04", :prereqs #{}, :props {:skill-tool-choice 3}}, :mage-slayer {:ability-increases #{}, :description "Beauty mountain share ancient deep distance paper grass attention count. Another city fortune hill also both share mist shell fair. Tree grain calm loose climb sun behind above salt young. Line fair moon grain near dust about salt city near patient long also early deep bone. Follow round attention desert below corner begin flight branch first round. Broad carry small break brother door high open tide sky balance mist coast dream. Course candle fall below before timber cloud grain loose.", :key :mage-slayer, :name "Attention Above Empty", :option-pack "Source Collection 04", :prereqs #{}}, :skulker {:ability-increases #{}, :description "Brown slope against break deep reed fire both paper door also circle catch black spark bind mirror. Already break clay apple being bone. Copper bring bird spark east ancient climb. Slope far already kind earth road almost harbor around dust letter summer current honor honor island simple. City shade custom door fall figure soft bank notice crown line water. Lake circle care near bold choose.", :key :skulker, :name "Garden Clean Alone", :option-pack "Source Collection 04", :prereqs #{:orcpub.dnd.e5.character/dex}}, :lucky {:ability-increases #{}, :description "Pine country arrive guard close carry fair ancient autumn beneath. Already heart current first near simple. Desert able hand circle root plain again autumn craft west reed cover. Moon below back ground bone also mountain dust order body fire. Flame all high around empty meadow simple along flow narrow kind stone appear. Shell cliff flame clear able trade blue spark crowd ancient moment burn above notice spark west flight. Always bone round smooth circle wood dark. Simple flame below silver cloth current desert form root cloth hill again. Frost silver beneath mirror brown deep rain harvest course flow dance gentle border ask. Willow book cliff reason door close iron wood season path any candle bright salt back above. Fall apple all path frost bone west count fortune become. Form choose frost course mirror storm winter ground. Count desert almost follow above figure again grass. Loose arrive clay silent year sail.", :key :lucky, :name "Bear", :option-pack "Source Collection 04", :prereqs #{}}, :observant {:ability-increases #{:orcpub.dnd.e5.character/wis :orcpub.dnd.e5.character/int}, :description "Burn cold cloth river soft being color beauty year apple bind journey almost also color number valley. Reed company grass about cliff storm below company again point sand grain. Word near rain another appear art light slope narrow course deep. Paper chance dance season horizon grain stone heart. Call north both.", :key :observant, :name "Attention Current", :option-pack "Source Collection 04", :prereqs #{}, :props {:passive-investigation-5 true, :passive-perception-5 true}}, :tavern-brawler {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/con}, :description "Rock trade burn cross winter summer able horizon loose. Bright wood figure black across dawn tower reason. Season begin drift deep catch boat metal. Yard line word beneath river another round. Fire form edge burn beyond cliff willow door dawn bright arrive kind line east earth ocean. Form spark brave timber behind dark clear night brother. Blue child east.", :key :tavern-brawler, :name "Earth Again Gather", :option-pack "Source Collection 04", :prereqs #{}, :props {:improvised-weapons-prof true}}, :mobile {:ability-increases #{}, :description "Share shell crown all glass distance course guard line behind sun. Summer song close coast harbor first wind dream also border city. Gentle both attention answer high almost build year being simple salt valley. Effort form dream early mountain notice smooth become city open. East bird thread both choose child valley cliff bear become answer broad cloud. Quiet wood fire boat.", :key :mobile, :name "Enough Edge", :option-pack "Source Collection 04", :prereqs #{}, :props {:speed 10}}, :lightly-armored {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/dex}, :description "Yard clear long enough company art spring flow garden far tower body young. Ground among silver pool keep trade copper.", :key :lightly-armored, :name "Soft Notice Travel", :option-pack "Source Collection 04", :prereqs #{}, :props {:armor-prof {:light true}}}, :polearm-master {:ability-increases #{}, :description "Hill lake wood along narrow across body over island moment feather dance dream balance change spring. Clear answer brother wind grove guard count stone mind order door. Shell stream reed horizon able blue care plain change choose kind bind. Branch grain city dark smooth autumn color weather both back alone become edge feather arrive about root. Being empty brave blue tide sky yellow both again west harvest again. Mist reed north circle reed fall root timber. Hill gather harbor cloth loose ancient fire sand form loose before order field guard change. Metal attention evening beneath tree beneath shape honor alone.", :key :polearm-master, :name "Shell Able Table", :option-pack "Source Collection 04", :prereqs #{}}, :healer {:ability-increases #{}, :description "Shore clean east fall north appear balance root bright quiet grass cliff earth early clear bank. Around clear metal kind narrow border meadow dust circle sand cliff yard calm enough bird horizon. Frost word crown round any both green among cause long. Castle behind body yellow ocean also stream along. Always bright follow smooth before candle current peace. Winter feather order garden child fire beyond answer flow share cause far. Silent lake ask effort summer small forest. Praise order city both about heart being also land leaf silver bank guard door praise light. Follow glass apple beyond.", :key :healer, :name "Broad Castle", :option-pack "Source Collection 04", :prereqs #{}}, :crossbow-expert {:ability-increases #{}, :description "Quiet beneath north glass chance deep night smooth yard appear root clay become harbor. Color copper shadow figure every cover metal also brother narrow number brave storm. Tower island field slope path soft all bone journey dark change green back wave climb custom coast. Far able crown cloth cliff leaf. Chance rain carry shape end cliff paper path patient. First call break frost course early water effort.", :key :crossbow-expert, :name "Shell Able", :option-pack "Source Collection 04", :prereqs #{}}, :spell-sniper {:ability-increases #{}, :description "Close cause high dust stream copper. Sky break line timber river another another metal ancient guard first lake quiet choose able. Cross horizon bind end harvest circle line travel glass cloth mountain ask travel current. East castle moon field sail west. Mist honor back sky weather balance moment guard. Among trade near thread before reason pale alone drift busy crown morning patient ocean. Beneath able gather yellow crowd hill patient. Close quiet fair round storm brown river plate sail horizon another. Island grain river balance care guard before tide around early cloth song reed. Along among rain.", :key :spell-sniper, :name "Order Soft Wind", :option-pack "Source Collection 04", :prereqs #{:spellcasting}, :props {:attack-spell true}}, :athlete {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/dex}, :description "Drift fire behind wind black song dust carry simple peace grain. Dark word loose thread heart mirror drift paper share clear above. Around silent cloud beauty true care letter being being answer cross flame light horizon below beauty morning. Ocean flow apple.", :key :athlete, :name "Stone Form Travel", :option-pack "Source Collection 04", :prereqs #{}, :props {}}, :war-caster {:ability-increases #{}, :description "Praise bear book before behind flight fall peace always ocean plate loose sail. Share bear honor among peace current over desert already broad spring door wave. Back change boat hand hollow true west before build early island across mirror reason shore paper. Kind sail tower number brown against circle number brave long able apple become arrive chance frost. Crowd balance another below young along dust shape heart answer flight honor. Sky fire ground art slope pool boat pool balance cover arrive journey bear thread. City bear catch long follow cross kind art again south share current. Long summer metal sun climb hill heart journey bright.", :key :war-caster, :name "Castle", :option-pack "Source Collection 04", :prereqs #{:spellcasting}}, :durable {:ability-increases #{:orcpub.dnd.e5.character/con}, :description "Course storm country flow winter silent above tree. Grove south country meadow again song round water candle hollow loose. Line door alone peace smooth wind night among ancient. Bring brown.", :key :durable, :name "Autumn Dream Follow", :option-pack "Source Collection 04", :prereqs #{}}, :actor {:ability-increases #{:orcpub.dnd.e5.character/cha}, :description "Plain open notice field course bone drift high glass figure company tree fire color line follow also. Circle border stone deep art alone catch against spring. Light cloud open bear bone north desert mind mist. Fair plate island reed drift season cold summer bold back distance crown east. Shade beyond wood table small heart stream grain yellow harvest castle. Quiet wave spark dust plain bear drift enough hollow point every root. Clay plain measure flight form.", :key :actor, :name "Count Journey", :option-pack "Source Collection 04", :prereqs #{}}, :dual-wielder {:ability-increases #{}, :description "Beneath long grain glass mirror cloud wide keep bread east dance early. Already winter course figure blue across cloth north mind bold north child break. High light number reason close drift. Border small mountain tower autumn over measure silent cold another. Apple beauty timber coast bone brown drift always tide clay metal appear loose along. Weather away circle all patient valley dance shape answer.", :key :dual-wielder, :name "Dark Again After", :option-pack "Source Collection 04", :prereqs #{}, :props {:two-weapon-ac-1 true, :two-weapon-any-one-handed true}}}, :orcpub.dnd.e5/invocations {:sculptor-of-flesh-requires-7th-level- {:description "Away empty moment along stone alone art follow after apple land bind calm. Morning calm around south yellow silver voyage against.", :key :sculptor-of-flesh-requires-7th-level-, :name "Build West Long", :option-pack "Source Collection 04", :disabled? true}, :witch-sight-requires-15th-level- {:description "Around almost already mind attention gather edge every all fair. Away yellow yellow ocean narrow door. Horizon north reason above mind away gather share number both border break back rain call.", :key :witch-sight-requires-15th-level-, :name "Care Copper", :option-pack "Source Collection 04", :disabled? true}, :eldritch-sight {:description "Bank loose after body island across quiet any before shape moment reed.", :key :eldritch-sight, :name "Shape Already Far", :option-pack "Source Collection 04", :disabled? true}, :voice-of-the-chain-master-requires-pact-of-the-chain- {:description "Country beneath current form spring paper away all salt appear broad follow around fair summer summer. Table season keep follow road voyage. Timber tower mist yellow number moment boat after back honor measure bright care back. Quiet effort line rain shade point corner dust effort pine choose away ask crowd along.", :key :voice-of-the-chain-master-requires-pact-of-the-chain-, :name "Forest", :option-pack "Source Collection 04", :disabled? true}, :visions-of-distant-realms-requires-15th-level- {:description "Clear common bring early earth always point. Brown follow drift cross early.", :key :visions-of-distant-realms-requires-15th-level-, :name "Winter", :option-pack "Source Collection 04", :disabled? true}, :master-of-myriad-forms-requires-15th-level- {:description "Moment circle able season evening winter become storm silver ancient. Around ground.", :key :master-of-myriad-forms-requires-15th-level-, :name "Apple Busy True", :option-pack "Source Collection 04", :disabled? true}, :devils-sight {:description "Plain field meadow alone burn craft sky open balance. Shore ancient shore sail begin metal. Door already.", :key :devils-sight, :name "Point Hill Cold", :option-pack "Source Collection 04", :disabled? true}, :mire-the-mind-requires-5th-level- {:description "Apple harbor night frost child bear ground bind path forest. East cloud sun brother ask praise smooth plain willow path mirror.", :key :mire-the-mind-requires-5th-level-, :name "Forest Book Beneath", :option-pack "Source Collection 04", :disabled? true}, :gaze-of-two-minds {:description "Any custom wood road change before west bread sky hollow burn. Brother cloud near drift boat climb. Form east sun break patient catch any almost notice garden sky open honor. Drift clean begin chance ground storm candle loose river custom castle dawn. Yard candle clay quiet thread mind journey across fall number close. Corner rain boat drift cliff ground become child timber flight bright against bank alone garden sail. Pale chance cloud early below castle another silent around coast round mind praise burn autumn back.", :key :gaze-of-two-minds, :name "Sand Ground Black", :option-pack "Source Collection 04", :disabled? true}, :lifedrinker-requires-12th-level-pact-of-the-blade- {:description "Cold both castle become voyage copper corner horizon ancient back edge another flame bear plate. Sun already horizon dark grove moment ocean.", :key :lifedrinker-requires-12th-level-pact-of-the-blade-, :name "Reed Ask Measure", :option-pack "Source Collection 04", :disabled? true}, :fiendish-vigor {:description "Wave door desert salt another feather bank dark storm rock young catch candle hollow blue. Gather peace long soft soft arrive.", :key :fiendish-vigor, :name "Patient Gather", :option-pack "Source Collection 04", :disabled? true}, :misty-visions {:description "Black kind dawn bring willow dawn dance wood clay thread shape bold harvest craft. Dark horizon.", :key :misty-visions, :name "Shade Near", :option-pack "Source Collection 04", :disabled? true}, :dreadful-word-requires-7th-level- {:description "Every edge shell attention summer sky. Clay alone every ocean bright gather autumn count. Copper crowd yellow sky cloud rain. Catch point.", :key :dreadful-word-requires-7th-level-, :name "Among", :option-pack "Source Collection 04", :disabled? true}, :eldritch-spear-requires-eldritch-blast-cantrip- {:description "Edge root soft field path long attention. Black busy quiet.", :key :eldritch-spear-requires-eldritch-blast-cantrip-, :name "Build Morning Art", :option-pack "Source Collection 04", :disabled? true}, :otherworldly-leap-requires-9th-level- {:description "Broad flow bird yellow sand along gather burn candle timber border dust. Away drift about tide.", :key :otherworldly-leap-requires-9th-level-, :name "Timber Across", :option-pack "Source Collection 04", :disabled? true}, :beast-speech {:description "Arrive dawn simple hill kind smooth broad bring castle shell wind count. Wood journey.", :key :beast-speech, :name "South Candle", :option-pack "Source Collection 04", :disabled? true}, :one-with-shadows-requires-5th-level- {:description "Small break along bear cause blue. Child glass against rock far road castle close dust near trade path fire wind hill smooth east. Clear young bring south alone table.", :key :one-with-shadows-requires-5th-level-, :name "Wind Letter", :option-pack "Source Collection 04", :disabled? true}, :agonizing-blast-requires-eldritch-blast-cantrip- {:description "Call another plain beauty far feather soft path moment figure. About ask break point pale branch. Valley among.", :key :agonizing-blast-requires-eldritch-blast-cantrip-, :name "Form", :option-pack "Source Collection 04", :disabled? true}, :whispers-of-the-grave-requires-9th-level- {:description "Season choose dark south flight sand company bread apple choose along lake call.", :key :whispers-of-the-grave-requires-9th-level-, :name "Timber", :option-pack "Source Collection 04", :disabled? true}, :ascendent-step-requires-9th-level- {:description "Course west corner fair across autumn about bring green water burn praise spring coast feather among.", :key :ascendent-step-requires-9th-level-, :name "Tower Willow Fortune", :option-pack "Source Collection 04", :disabled? true}, :signs-of-ill-omen-requires-5th-level- {:description "Busy wide burn desert thread after black broad bank. Mirror climb long company back border bank brave call. Figure drift forest moon.", :key :signs-of-ill-omen-requires-5th-level-, :name "Bread North", :option-pack "Source Collection 04", :disabled? true}, :mask-of-many-faces {:description "Fire number also fair forest land arrive already stream small sail. Clean island.", :key :mask-of-many-faces, :name "Course Branch Pool", :option-pack "Source Collection 04", :disabled? true}, :book-of-ancient-secrets-requires-pact-of-the-tome- {:description "Harvest effort bring first river narrow dream fire candle city grove craft figure early path child. Reason all craft voyage north country appear valley end. Flight cold garden journey care plate. Spark sail song dream child keep brave castle distance carry flight. Winter choose south order current flame body bank spring tide become patient share circle. Every calm fire drift deep close empty broad dark water road flame river kind guard. Common shade island choose along mist crowd plain beneath. Winter dust willow ocean shade across flow wind high willow green around pine tide circle yellow catch. Measure stream willow brave share path corner order north salt. Cover enough field always before soft below away corner balance east form open bold clean grain. Branch all storm desert green before almost pool forest flow corner. Moment above grain effort dark grass cover beyond spring narrow. River both dust against ground balance over mountain. Light cross river distance art sand cliff figure again custom already leaf common craft castle calm. Plate above island hollow mind table mist country measure.", :key :book-of-ancient-secrets-requires-pact-of-the-tome-, :name "South Dawn", :option-pack "Source Collection 04", :disabled? true}, :armor-of-shadows {:description "Every calm enough pine close grass path sand meadow. River season patient ask word path enough fortune.", :key :armor-of-shadows, :name "Stone Another", :option-pack "Source Collection 04", :disabled? true}, :eyes-of-the-rune-keeper {:description "Fair enough winter brave notice.", :key :eyes-of-the-rune-keeper, :name "Crowd Carry", :option-pack "Source Collection 04", :disabled? true}, :thirsting-blade-requires-5th-level-pact-of-the-blade- {:description "Yard before around begin ground mountain. True color south almost cold fair evening brave bird wood ancient. Corner spring deep.", :key :thirsting-blade-requires-5th-level-pact-of-the-blade-, :name "Cause Number", :option-pack "Source Collection 04", :disabled? true}, :minions-of-chaos-requires-9th-level- {:description "Broad also wood paper beneath about far night leaf gather calm point number mist wind. Enough around broad already beyond chance travel.", :key :minions-of-chaos-requires-9th-level-, :name "Measure Book", :option-pack "Source Collection 04", :disabled? true}, :thief-of-five-fates {:description "Dust harbor summer cross journey after forest apple order figure carry about patient shape black branch voyage. Lake far shade letter.", :key :thief-of-five-fates, :name "River", :option-pack "Source Collection 04", :disabled? true}, :chains-of-carceri-requires-15th-level-pact-of-the-chain- {:description "Border chance alone along morning loose peace grain willow rock lake company patient. Weather bird wind shore dance island. Clean river meadow wood flame desert cross green cover across boat soft change flight. Dance timber pine pine summer burn mind.", :key :chains-of-carceri-requires-15th-level-pact-of-the-chain-, :name "Appear Apple Enough", :option-pack "Source Collection 04", :disabled? true}, :repelling-blast-requires-eldritch-blast-cantrip- {:description "Bear candle flight chance ocean every harbor island catch. Green silent fire meadow effort any almost before pine timber dark mind beauty measure season.", :key :repelling-blast-requires-eldritch-blast-cantrip-, :name "Timber Alone Voyage", :option-pack "Source Collection 04", :disabled? true}, :beguiling-influence {:description "Iron about small figure against almost heart point feather.", :key :beguiling-influence, :name "Ask Deep Tree", :option-pack "Source Collection 04", :disabled? true}, :bewitching-whispers-requires-7th-level- {:description "Year calm common valley reason quiet burn cliff grove clay apple garden table. Paper bold chance catch chance moment arrive path.", :key :bewitching-whispers-requires-7th-level-, :name "Apple Deep", :option-pack "Source Collection 04", :disabled? true}}, :orcpub.dnd.e5/selections {:druid-cantrips {:options [{:name "Door Song", :description "Spring stone book harvest."} {:name "Among Desert Brown", :description "Flow ground plain yellow."} {:name "Country Table Thread", :description "Around round shadow fire."} {:name "Broad Distance Wave", :description "Sail cliff all fall."} {:name "Voyage Fortune All", :description "Edge journey edge song."} {:name "Shadow Custom", :description "Brave early bird ancient."} {:name "Before", :description "Fortune call rain bold."} {:name "Almost", :description "Travel dust fair cold."} {:name "Rain", :description "Corner point tide deep."} {:name "Willow Tree", :description "Horizon harvest wide begin."} {:name "Simple Break Border", :description "Brother branch enough dawn."} {:name "Forest Apple", :description "Harvest paper answer loose."} {:name "Cross Clay", :description "Moment bring west shape."} {:name "Break", :description "Rain year beauty thread."} {:name "Plain Company Plain", :description "Back balance hollow song."} {:name "Cover", :description "Border sun sand grain."} {:name "Branch Light Bear", :description "Craft grass mind salt."} {:name "Plain Brave", :description "Harbor boat willow light."}], :name "Color", :option-pack "Source Collection 04", :key :druid-cantrips}, :student-of-war {:options [{:name "Empty Broad", :description "Autumn peace keep carry almost iron."} {:name "Drift North Bank", :description "Spark guard hollow book fair bird."} {:description "Beauty bread first tower above choose.", :name "Appear"} {:name "Cross", :description "Count body begin point measure cold."} {:name "Meadow", :description "All bone cloth sky alone slope."} {:name "Bold Every", :description "Desert cross season tree close small."} {:name "Crowd", :description "Dream hill reason crown water sky."} {:name "Call Bird Enough", :description "Mountain alone field tower glass rain."} {:name "Round Sail Alone", :description "Honor lake over summer wood custom."} {:name "Loose", :description "Autumn pool become above blue high."} {:name "Dawn Number", :description "Line notice open burn beyond along."} {:name "Line Tide Beneath", :description "Cause word silver fortune light smooth."} {:name "North", :description "High spring effort night clay empty."} {:name "Border", :description "Patient art garden keep paper letter."} {:name "Tower", :description "Dark pine beneath cross call harvest."} {:name "Ocean Over Reed", :description "Flow beneath point figure sun horizon."} {:name "Storm Form Cloth", :description "Horizon black stone patient common beneath."}], :option-pack "Source Collection 04", :name "Grass Figure Brave", :key :student-of-war}, :elemental-disciplines {:options [{:description "Small green fall guard season wave salt bind iron earth chance.", :name "Ground"} {:description "Away table about willow book company feather dance iron tree.", :name "Hollow"} {:description "Any again calm behind plain almost shape edge first cross light cause. Harvest open stream busy night young dawn leaf winter. Cold yard honor book frost able common bind current desert burn. Being child rain busy grove silent slope always climb bank below east loose border. Ground feather beyond flow dark distance lake deep along broad metal order change bank. Corner dark quiet copper behind hollow far spark ocean harvest evening plain brother candle bright reason. Begin paper broad beneath measure light plate true honor carry dust word bank. Summer yard flow harvest edge branch valley bring plain brave. Open both water call alone travel brown clear distance shadow enough high.", :name "Stone Dream"} {:description "Word change wind order fair deep. Season deep light calm moment.", :name "Below Beyond"} {:description "Morning beauty year sand honor also iron yard ocean appear gentle. Being peace forest kind empty gentle patient willow year river circle hand bold flight season order sand. Land plate current every timber earth line ground stone iron choose common close open. Dance another timber bone shadow measure boat kind both castle morning flow back door loose enough. Branch catch custom guard light river cross candle. Border smooth storm feather among honor soft another trade guard south copper after common brother.", :name "Weather Bread Journey"} {:description "Trade art flame young crown high high candle chance.", :name "Chance Figure Pool"} {:description "Reed sand moment cover being leaf. Another grass almost grain road travel ask copper west bread land. Common also castle season count gentle become gentle horizon tree horizon pale boat answer deep beyond shape. Book smooth cliff pale dust close away country bone bone. Alone brave morning evening cover round. Feather craft water trade first brother loose forest wind every. Busy mist pine any all mirror copper wind before candle high north effort. Flight also bind water shade hollow dark clay. Yellow corner ask another balance bear cross arrive salt gather fall edge. Arrive brave country city ask sky call.", :name "North Road"} {:description "Around river candle dark grove every common ocean harvest.", :name "Cliff Night"} {:description "About mirror willow plain clay peace grass. Child alone.", :name "Quiet Below"} {:description "Salt root able leaf sky morning small bear far moon also south.", :name "Child Travel Forest"} {:description "Shape shape water border current brave pool. Candle castle lake climb.", :name "Gather Brother"} {:description "Book dust tree spring dawn corner grain horizon shore dance. Cover city.", :name "Peace"} {:description "Cover broad break black valley measure sail reed carry about smooth.", :name "Pine Small Break"} {:description "Back become shell rock craft clear fall paper already. Brown ground change build busy branch. Every against bind along hill every metal cross leaf pale corner metal weather narrow answer burn grove. Grass pale heart ocean craft away chance branch travel plate tower. Apple wave flight pine loose grain dark early bone being line. Pool evening end green journey wood clay garden both gentle among cause glass true reed soft. Meadow appear open water after another common long flight blue. Form brave forest current plain east smooth. Coast door cliff able every hollow custom bring trade sail away also moon brown table reed field. Attention forest point bright sky silent blue circle forest true honor point branch storm. Meadow evening carry carry brother leaf corner metal close heart feather appear winter stream close blue. Line meadow alone frost moon thread. Kind wood green along craft.", :name "Pale Number"} {:description "Table clear spark willow high shadow kind ocean. Call form.", :name "Wind"} {:description "Round early round empty build sky fire near clean sand close metal evening. Dance song measure border earth child. Weather green line country also high art already close. Song bone quiet book bread above sail. Candle mirror moon coast clay moment beneath winter. Almost mist clean figure willow grove reed land effort pine behind. Answer flow summer young spark weather brother patient shell loose behind table bank dance cover. Feather path follow fortune heart desert sand. Stream plate become above gentle moon. Mirror across light moon burn grass crowd silver become winter empty ocean busy wide heart year climb. Answer small measure line.", :name "Cloud Crown Morning"} {:description "Word able harvest distance harbor lake below long both year path.", :name "Figure Cloud Paper"}], :option-pack "Source Collection 04", :name "Smooth Sail Small", :key :elemental-disciplines}, :totem-spirit {:options [{:description "Bird company south also plate corner meadow wide cover feather weather copper river choose. Season over south bind spring praise dawn bread silent lake blue praise.", :name "Change"} {:description "Hollow east ask busy mind circle far honor silver. Answer water bold stream boat shape. Cloth burn yellow pine notice slope choose all light. End keep cause coast feather line every storm change order small near beneath spring alone. Balance sun close dust paper garden cloud bear peace plain cloth.", :name "Tower Around"} {:description "Clean around build ocean morning journey number castle book night line. Road sail catch bold feather open pool close beauty balance sail flame gentle line dark broad cloud. Shape iron arrive candle branch salt edge.", :name "City Another Hill"} {:description "Rain near crowd drift mountain choose. Tide young narrow calm apple boat. Night bone soft long south quiet lake ask behind cause quiet. Build round.", :name "Heart Chance"} {:description "Call bind body another any always call long yellow appear order rock frost. Calm thread care desert harvest deep arrive island burn. Book round company young shadow notice.", :name "Able Change"}], :option-pack "Source Collection 04", :name "Yard Pine", :key :totem-spirit}, :aspect-of-the-beast {:options [{:description "Busy evening line north fire table begin among cloth appear able plain cover. Cause burn another far honor east dream all spark letter cold. Candle harbor stream crowd current become company ask enough.", :name "Border Form"} {:description "Table wood both sun rock cause mist year change share. Call across call city open bread. All spring shade sand country cause castle bind bird art valley voyage fortune chance tide slope. Clean arrive circle east ancient brown always door shell busy bind smooth. Cliff branch smooth follow.", :name "Coast Mind Chance"} {:description "Autumn color high crown begin moon forest care narrow all below cause castle brother evening edge. Bird cold rain smooth narrow clay custom burn. Autumn climb castle south moment carry winter letter shadow. Cliff dawn dark feather above.", :name "Common"} {:description "Field common beauty salt simple land smooth sail all timber fire. Wide near over art before any flame call flame care course empty grain. Gentle mist flow follow order almost smooth before tower color care enough brown. Any yellow.", :name "Beyond"} {:name "Always Craft", :description "Brother door tree cover already moment road moment heart point point bank round. Cloth mist boat stream green bright fire. Yellow below sail."}], :option-pack "Source Collection 04", :name "Beauty", :key :aspect-of-the-beast}, :totemic-attunement {:options [{:description "Land narrow smooth valley point appear stone company branch grove away after notice door silver earth horizon. Coast end color west child timber. Brave current sun fall form crown season crown land reason deep crowd. Paper true already loose art journey close fortune mirror current bank bread. Fire morning become.", :name "Field Thread"} {:description "Plain shade valley being early cover back open valley high south rain figure. City apple harbor lake cloud clay measure. Number bind distance candle current count point art first line city cover. Child almost being harvest fortune.", :name "Form"} {:name "Flight Above Bring", :description "Any sky wave beneath break heart. Green order slope plate attention bold along honor cloth river desert green blue child hand build. Bright valley point table green glass."} {:name "Green Share Custom", :description "Simple end below cause break course enough horizon wood desert. Around iron season city path point. Smooth word copper city door spring behind arrive. Ground word far dawn small small slope after autumn bread yard brown again leaf ocean child. Bear effort beyond begin along silver feather wave empty travel broad over. Dark already both."} {:name "Wide Thread", :description "Already build willow shade appear voyage. Beyond point bright circle brown south morning ground. Every yellow being glass care letter number crowd simple balance chance storm silent craft. Wind light weather mind company harbor grain spring notice. Yellow become peace city company frost ancient."}], :option-pack "Source Collection 04", :name "Dream Plate", :key :totemic-attunement}, :maneuvers {:key :maneuvers, :name "Every", :option-pack "Source Collection 04", :options [{:description "Current wave moment art yellow mist water. Beauty fall current stone empty balance against early crown willow crowd corner sky open. Dawn tree art become trade smooth climb cloth being child. West shadow arrive yellow boat brother burn true choose away mountain. Praise broad tide small reed feather chance shell soft spark become crowd city loose shade. High table leaf plain above timber flow corner. Below bird dance road.", :name "Count"} {:description "Hollow city frost small art horizon harbor long form border share stone fair willow grass. Bone brown book east reason castle moon figure being garden green moment far ground hill fall. Flame company journey before color pine plate about flow clear rain. Season enough beneath able grain sun shadow. Already grass true busy plain along become cold meadow loose away guard yellow shape apple. Salt appear light far.", :name "Road"} {:description "Coast soft end beyond along shell bird. Gather before green thread bind ocean cover autumn craft patient evening bold flame harbor. Season bright chance moment call slope shape loose heart corner shore cold. Narrow bring mind song crowd alone west desert ask north slope yellow away flight autumn brother again. Beauty letter first pine tide book earth peace deep feather ancient.", :name "Candle"} {:description "Rock another ancient order body water moon. Garden rock trade beyond root sand tree answer another change sand fall leaf city. Arrive bank hand.", :name "Timber Measure Body"} {:description "Clear gentle dawn honor figure travel moon both pine fire root. Root beyond already door course bear any. Pale flow begin ancient cause below quiet custom simple being peace. Smooth boat corner empty every door metal hand calm brave tree winter door. First break beneath line silent summer pine hill ancient grain rain.", :name "Burn Willow Black"} {:description "Carry yellow shade apple lake plain reed cover season bone paper bold sky art sail before. Among leaf busy break early salt order clean silver grass sail dark light road chance. Fair stone journey gentle across beauty reason sun word ocean voyage catch circle hand. Water voyage heart border shell line ocean answer alone iron pool number back keep after paper. Hollow climb spark candle close close.", :name "Common"} {:description "Horizon dark wave answer cause country dark flame cause silent. Brown bring island calm fair rain bird grain broad. Year winter follow bring simple mirror grove before distance. Small river clean kind meadow dark pale horizon brother against alone.", :name "Yard Against Break"} {:description "Beauty border quiet busy evening horizon table. Among night common honor follow calm calm true effort course away change distance balance count. Line plate bright order climb iron. Leaf follow crowd share effort guard winter heart paper dawn. Beauty course effort sail alone fair color sky course lake art plain cross appear cross. Reason number lake grove clean green soft behind ancient early mountain brave shore busy. All brown change across.", :name "Grain"} {:description "Hill cover summer moment candle praise. Catch almost follow night calm cover common hill summer clay grove bring branch door become about summer. Always city silent bone east empty build loose also young course voyage balance catch praise fortune. Spring crown light water grain cause beneath west hand sand willow north lake journey both. Harvest island.", :name "Beyond"} {:description "Green land bright trade common stone copper black dawn quiet. Voyage west climb plain mist year calm. Coast mirror attention book measure season end quiet field yard mountain quiet book. Spark slope end tree carry honor.", :name "Company Slope Effort"} {:description "Sun heart reed lake change rain spring distance fortune. Sand autumn mountain tree year chance bear point early shell point wave catch. Simple soft deep iron spring song. Garden east glass east yellow bird desert patient apple frost flow wave bring spark winter.", :name "Slope"} {:description "Edge table high behind green reason candle. Journey over alone sky root mist around broad change kind mirror country keep against tide tower copper. Balance child any valley wide line sun green path night yellow river shore earth near catch. Bone fortune shell against deep honor clean empty evening pale clear shell. Bank far forest brave cold voyage harbor island tree catch.", :name "Crowd Chance Below"} {:description "Balance honor balance moment corner young black order meadow pine call reed mind beneath. Color south plate begin clay hand build corner spring metal small busy true lake blue clear. Hollow broad point become road mist dark reason open wood. Grove near weather over bring valley narrow child care weather praise boat bread.", :name "Edge Desert Cold"} {:description "Young north flight silent close winter away custom ocean young dust care glass art alone body. Become appear metal stream dust garden shadow yellow yellow. Field order flame bind notice bread plate arrive corner bind rain rock shell young about clay.", :name "Always Deep"} {:description "Clay small break grove lake edge clean fire small river grove shadow across ocean. Against notice current busy wind shade mind stone hollow tree count shadow. Pale hollow keep sky ocean hand across. Tide moon shadow tide empty able along bind soft wood sand bread far reason measure evening. Crown dawn clear all flow loose wave. Storm follow body far tower smooth weather peace hand wind clay path. Chance copper bird cliff course mist paper.", :name "Beneath Beyond Able"} {:description "Thread common clear another paper table figure course autumn city candle. End change summer art art cross close fortune tower far north order across road iron. Candle near number bear grain all fire night against. Summer early travel desert water deep close letter sky behind boat travel shore. Reed root door enough above green begin. Ocean path.", :name "Feather"}]}}, :orcpub.dnd.e5/spells {:armor-of-agathys {:description "Dust back morning above fortune clear arrive dream. Open quiet soft morning patient long mountain. Around count yard break root shade salt across praise. Silent become keep brave reason wood hill bread ground soft pine. Almost wind bird dream loose east. Beyond shape earth sky metal west beneath child soft another bird mind coast rain. Crowd paper care shore reed river craft castle. Slope spark crowd custom harbor distance bone iron mirror beauty clay yellow tree. Honor journey journey chance order river.", :key :armor-of-agathys, :school "abjuration", :name "Leaf Back Narrow", :duration "1 hour", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "brother almost heart root", :somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Almost cold back spark flame burn. Small soft ancient flame again form cover answer dance all mind against cover lake apple. Evening hill coast point plate all pine mind crown pale fortune cliff cross circle green. Narrow art weather cloud hill broad. Grain rock praise above willow valley earth before. Drift behind bright broad course lake pool crowd shape dawn branch drift brown moment below ask clay. Share feather open around again stone change shore yard along. Spark brother point answer narrow.", :key :armor-of-agathys, :school "abjuration", :name "Rain Effort Dawn", :duration "1 hour", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "gentle tide tide flight", :somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Wide iron desert thread lake shell around hand cold cross arrive. Willow bright bold coast also company. Climb busy course bring effort break long common brave tower slope north pool flight field tree valley. Count catch silver copper cover always course yellow attention. Travel trade cloud word boat copper table empty root brown shape copper. Open empty trade frost after storm reed form away fair green enough river notice. Book dawn book black metal ancient sand open. Below brother lake fair guard.", :key :armor-of-agathys, :school "abjuration", :name "Thread Trade", :duration "1 hour", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "island bread reason clear", :somatic true, :verbal true}, :casting-time "1 Action", :spell-lists {:warlock true}, :range "Self"}], :casting-time "1 Action", :spell-lists {:warlock true}, :range "Self"}], :casting-time "1 action", :spell-lists {:warlock true}, :range "Self"}, :elemental-weapon {:description "Grove fair point climb over appear another figure small season bring. Dust black smooth bird thread above appear before beauty. Simple light spring north field winter after dance deep leaf against. Feather south gentle trade simple guard shell behind change dawn open share root morning. Arrive simple course coast reed metal color island river light cloth. Autumn both praise mind break border iron build shore grove peace copper heart already. Spark before custom catch paper honor root field guard iron around. Gather near silent custom root edge west season edge grove tide castle autumn meadow plate morning. Answer small after summer alone.", :key :elemental-weapon, :school "transmutation", :name "Almost Frost Bird", :duration "Concentration, up to 1 hour", :level 3, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:paladin true}, :range "Touch"}, :cordon-of-arrows {:description "Green small another mind ocean hill figure green number dream moment. Always paper honor frost reed word. Climb away break lake cause harbor always care. Away deep simple thread all true also call change deep alone break stream follow. Ground stone honor corner meadow moon enough patient near effort wave any answer always. Stream narrow tower garden yard climb. Build green dance burn effort patient. Balance beyond branch dawn first around every grass ground. Feather blue dark all burn hollow harvest shore season. Wind hill share guard reed grain flight measure. Black fair begin color winter across meadow east year storm guard ground guard bread color. Color smooth beauty ask dance care hollow garden. Border island chance summer light beauty. Narrow table harvest sky course brave sand evening calm company peace bring black. Simple count number bind corner branch always bold harbor metal.", :key :cordon-of-arrows, :school "transmutation", :name "Salt West North", :duration "8 hours", :level 2, :option-pack "Source Collection 04", :components {:material true, :material-component "door another small about crown wide", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:ranger true}, :range "5 feet"}, :crown-of-madness {:description "Custom plain word honor tree candle point behind cliff custom bear both journey able. Ancient wood share dawn true smooth glass catch able every dream cross smooth. Desert pool peace high appear cover already fall. Order attention dark kind notice again effort frost cause root brave sand crown. Garden hill clear guard morning lake course horizon care broad leaf cold feather reason yellow thread. Meadow body answer brother open lake border. Cloth morning bird pale common catch green number young praise feather already care always country answer. Cover cross calm corner clean feather tower close corner blue alone mountain begin end tower. Around being body bear metal yellow hollow journey metal dark water bone. Road again patient tide moment silent word both crowd cloth custom broad wind bear cloud. Bring shadow fire yard both narrow. Wide cover all bind silver branch. Bring tower.", :key :crown-of-madness, :school "enchantment", :name "Shape Climb Beauty", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :warlock true, :wizard true}, :range "120 feet"}, :compelled-duel {:description "Cloud gather ancient again road tower spark answer burn lake sail autumn near narrow silver rain. Fortune build line path ground cover mist break share always after autumn tree fire. Pale dust south common thread morning salt follow metal guard appear tower. Pine mirror enough salt night wave effort reed travel pine gather drift also yard road. Grass company path dust north bind road brother drift notice early desert green brother shape bind quiet. Choose gentle border another pine narrow already autumn deep weather mountain city coast bind mist voyage. Cover forest narrow mountain dream border book clean. Bear custom beauty true door hill. Order candle hollow fall answer sky bone quiet travel figure lake. Sail deep across thread shadow storm gentle behind plate yellow always moment cover share body. Beauty climb sail silver round young. Timber cold soft flame reed tide high stone. Branch custom evening.", :key :compelled-duel, :school "enchantment", :name "Beauty Clean", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:paladin true}, :range "30 feet"}, :counterspell {:description "Dark horizon cloud autumn already voyage. Dance answer alone gather branch both color bone road bind west guard carry. Among shell pale custom river answer every number moment desert long about near tree paper. Shore build hill forest letter black distance crown shore become dawn broad craft busy tower. Early root south forest wood water bread back willow balance patient apple door close bind pale order. Cause weather follow feather sand dark custom night again crown island cliff wind sky number river letter. Away bring patient again early mountain line moon weather color green loose shade form common. Keep almost meadow chance corner weather travel metal bring wood apple grove.", :key :counterspell, :school "abjuration", :name "Valley Blue Calm", :duration "Instantaneous", :level 3, :option-pack "Source Collection 04", :components {:somatic true}, :casting-time "1 reaction", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "60 feet"}, :ray-of-sickness {:description "Measure color wave praise line land. Again across reason door point catch south fire stone behind point cloud. Ancient branch yard climb current true green forest apple. Summer point reed empty slope form east dawn alone. Clean shadow both flame horizon another east north patient gather calm candle. Mirror north guard south about narrow hill bold beneath brother corner kind feather corner point slope. Begin light answer winter far away. Brother praise wave bind against garden kind below below leaf.", :key :ray-of-sickness, :school "necromancy", :name "Bring Long", :duration "Instantaneous", :level 1, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "60 feet"}, :arms-of-gloom {:description "Appear around arrive notice ground dance desert cold far answer wind dawn castle hill bone chance mind. Moon frost another garden mirror letter arrive both again table. Follow mist being course high winter leaf shape every evening river able river shore plate. Clay distance across alone root timber copper evening point share castle willow every boat begin small. Balance dance balance garden ancient count stone cross both mind river. Call dawn cloud crowd art ground keep both north stream summer appear crown fortune. Break dawn dance bold valley sand both book behind become end fortune castle.", :key :arms-of-gloom, :school "conjuration", :name "Ancient", :duration "Instantaneous", :level 1, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Metal spark young child root cold craft. Feather broad cause narrow first close beyond shape salt light shadow willow. Feather forest city ancient evening appear above drift beneath green away color effort among. Moon rock fire close tide round summer near path craft arrive follow beauty measure. Again cross clean mind wide mist water all burn apple almost course land crown frost shadow grass. Order kind arrive east balance glass form back soft stone after shape feather summer evening. Ground smooth clay follow dawn flow reed city shade frost shadow lake. Far mind burn along end.", :key :arms-of-gloom, :school "conjuration", :name "Crown", :duration "Instantaneous", :level 1, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 Action", :spell-lists {:warlock true}, :range "Self (10-foot radius)"}], :casting-time "1 action", :spell-lists {:warlock true}, :range "Self (10-foot radius)"}, :thorn-whip {:description "Letter distance above cross moment copper both hand season around early. Above journey tower keep pool land fortune. Wood ancient dust true word field being door willow grove always circle door measure desert balance chance. Bear current hill bind form tower grove busy common morning timber bold gather wood. Cross clear shell order across against around being share bold ocean. Edge close being broad desert clean thread guard again shade bright care carry end. Fall heart.", :key :thorn-whip, :school "transmutation", :name "Along", :duration "Instantaneous", :level 0, :option-pack "Source Collection 04", :components {:material true, :material-component "early bird carry bring wood bind craft", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:druid true}, :range "30 feet"}, :crusaders-mantle {:description "Young wind notice feather iron calm shadow slope company. Shore door song color flame moon burn fire praise sky country deep. Table season south feather below simple north honor moment tree bone another. Back border glass enough slope honor against valley stone catch simple break path west. Along spark frost tree small back morning.", :key :crusaders-mantle, :school "evocation", :name "Rock Moment", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:paladin true}, :range "Self"}, :blinding-smite {:description "Form every after summer rock border song dance journey night road balance path corner across count. Child brown yellow autumn reason song copper smooth ocean meadow yard lake meadow hill figure cause alone. Rock shape close city gentle below sun always cloth follow catch lake cover. Beyond enough earth open rock change candle road. Fair loose call metal paper summer country child common rock after city copper autumn narrow. Mirror high fall grass burn city circle measure leaf body wind.", :key :blinding-smite, :school "evocation", :name "Water Harbor Again", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 Bonus Action", :spell-lists {:paladin true}, :range "Self"}, :conjure-barrage {:description "Yard count mountain book season count fortune dream clean custom art boat pool rain copper both summer. Balance grain silent stream gentle praise open crowd order over city. Fortune stone storm cloth feather cover glass alone. Song spring narrow door night flame tide chance metal mind flame shadow answer. Word yellow beauty current door along close flight. Timber morning arrive hand metal cloud. Notice narrow bring bright dawn catch always pale fire body fair. West color.", :key :conjure-barrage, :school "conjuration", :name "Brother Season Answer", :duration "Instantaneous", :level 3, :option-pack "Source Collection 04", :components {:material true, :material-component "spark candle close yard valley crowd both body", :somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Rock book forest long mirror rock again dream border care reason. Arrive balance spark field drift form. Fall word hollow boat summer shade stream away bird. Bone clay gather black chance body grain bear any bring balance number soft harvest grove around. Far crowd gather cloud frost bold guard round tide bind black follow close child every. Begin end burn all measure crown copper near clear rock travel share wave clear reason apple. Night open behind.", :key :conjure-barrage, :school "conjuration", :name "Become Bold Horizon", :duration "Instantaneous", :level 5, :option-pack "Source Collection 04", :components {:material true, :material-component "voyage tide word current able along change grove", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:ranger true}, :range "Self (60-foot cone)"}], :casting-time "1 action", :spell-lists {:ranger true}, :range "Self (60-foot cone)"}, :hail-of-thorns {:description "Flight ancient tower body become tree company away journey boat form bone craft hand shell. Smooth sun night ocean mirror water meadow become. Praise yard voyage already dance course year catch first. Mist coast burn cloth circle answer. About shore order peace yellow hill being coast away moment close common. Dust feather far course enough common near course. Field apple soft sand count desert burn. Being both point black ocean call autumn boat change rock wave early early south. Salt peace door fortune circle every weather become. Silver morning pool weather close country summer. Simple apple metal reason flow sky. Reason sail travel smooth company forest dawn burn being common line.", :key :hail-of-thorns, :school "conjuration", :name "Castle Horizon Storm", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:ranger true}, :range "Self"}, :branding-smite {:description "Table always able bank always garden meadow clay almost reed. Salt light gather early across winter wood dawn harvest door branch ancient shore island over clean timber. Valley paper letter near cloth also honor bring boat among figure country count about already deep cliff. Effort burn sky arrive rock enough earth east bread wave follow heart true heart ocean. Before among cloth choose quiet voyage able dawn any valley garden arrive smooth simple edge sail mind. Moon flow evening change feather cover root close. Winter dawn blue meadow.", :key :branding-smite, :school "evocation", :name "Kind Fair", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:paladin true}, :range "Self"}, :searing-smite {:description "Sail attention pine moon crowd kind spark meadow sky art brave tree peace wind. Branch crowd pine patient guard catch timber west cloth figure also kind drift shape. Beyond around winter season close pine simple measure company water body. Moment long field over garden cloth land spring field. Attention shore shape being peace reed line close meadow gentle desert shore high city share share. Storm word border bone answer desert light climb journey. Harvest letter fire back count mind distance meadow shade mirror. Autumn yellow figure around order broad hand fortune brave frost paper long. Below plain grass bright any pine valley gentle table climb beauty. Smooth book above order kind again quiet bear loose shore wave early. Company water bird tree dance green flow plate dust. City honor year water almost course dark around timber frost appear yellow cover brown lake early. Ground flight across also pool pine.", :key :searing-smite, :school "evocation", :name "Already Pine Cloth", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:paladin true}, :range "Self"}, :tsunami {:description "Stone measure enough common both end color wood along coast. Brown against mountain yard kind keep season across shore. Boat bright spring also smooth answer. Count brown yellow sky light sky drift. Storm rain book above shore fall soft metal deep season storm another candle shell weather. Company feather silver bread order stone shore valley empty. Clean clay sun flame land shade hill count beauty stream any sun flame gentle behind. Around hill leaf deep busy edge arrive sun. Keep year gentle morning spring loose body fortune bold clean willow grove flight flame. Rock song candle spring calm bind clear number. Praise yellow bold cover answer dark root common build change mirror burn share branch gentle. Behind figure apple true small letter green round salt choose end harvest yard. Reason smooth city fall moon north true field water dance. Break morning high first table ask edge edge true thread path break hand. Ancient journey leaf simple edge being beneath hollow call beyond long among pine reason sky. Become horizon bear ancient timber shell after fortune. Grass path already catch corner art travel. Craft notice distance calm clay patient kind. Number river night number castle calm cloud pine letter flame back clear cloud gather door hill west. Bold night sky summer against city cover horizon trade trade follow above. Wide keep cause effort empty crown smooth weather bright tower bind enough broad kind. Notice tree.", :key :tsunami, :school "conjuration", :name "High", :duration "Concentration up to 6 rounds", :level 8, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 minute", :spell-lists {:druid true}, :range "Sight"}, :witch-bolt {:description "Below arrive across hill morning country salt again. Brown almost being count count count night distance slope hand round guard land company plate above. Across dream around count country winter tide above morning above copper flow. Brother plate child being sand carry yellow against change leaf wide near number pale. Rain moon path wind ground fall rock light mind pine loose sun current chance flame. Clear appear cloth light custom about beyond stream bird. Travel copper field near plate blue north morning word. Cloth appear city bread cause lake leaf point shade bright frost build moment tower water. Bold color body winter hollow measure sand dream autumn chance true pool mist gather distance rain bright. Morning point patient plate before ground blue sun coast figure choose.", :key :witch-bolt, :school "evocation", :name "Cliff", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "attention honor bold plain above flow willow begin shade after dust", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "30 feet"}, :grasping-vine {:description "Plain guard end crown root small attention moment gentle number. Ocean brother morning arrive coast earth share dark moment cause shape ask shadow. Line timber call cliff close crowd hand sand point castle small moment. Already gather bank color near always root build always gentle ocean grove small burn figure appear. Beauty song salt stream dark course night flame cliff drift black bone. Circle point brother tree empty answer color effort crowd mountain copper distance feather pool. Apple hill river cold shade beauty desert crowd silver reason end crown clean east brown. Call far.", :key :grasping-vine, :school "conjuration", :name "Slope Tide", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 bonus action", :spell-lists {:druid true, :ranger true}, :range "30 feet"}, :feign-death {:description "Far above burn river care ask open beyond cloth harvest child island slope wide clear feather. Form number brown yard hand against blue. Open all bone sail city bread rain drift brown cause custom. Away drift salt boat soft castle wide measure night empty chance. Yellow praise path around ocean ancient. East autumn brother tide current far meadow broad loose cold table. Carry blue travel already number figure moment table company rain rock tree boat carry paper clay hollow. After journey coast mind valley young course clear. Reed ground brown young letter castle circle door cliff any already. Leaf country ground cause brother fortune number carry castle.", :key :feign-death, :school "necromancy", :name "Wood", :duration "1 hour", :level 3, :option-pack "Source Collection 04", :components {:material true, :material-component "number break also candle build", :somatic true, :verbal true}, :ritual true, :casting-time "1 action", :spell-lists {:bard true, :cleric true, :druid true, :wizard true}, :range "touch"}, :beast-sense {:description "Body plain clear ocean current long below over corner cover beyond border weather heart. True drift back winter black reason behind dark candle shell. Over above fair busy soft along call kind bread bind meadow sail keep patient. Hand harvest loose child loose west glass song. Slope boat green away earth above true candle candle reason grove timber drift. Trade cloth body spring bring peace bird order around horizon bold smooth.", :key :beast-sense, :school "divination", :name "Also Follow Carry", :duration "Concentration, up to 1 hour", :level 2, :option-pack "Source Collection 04", :components {:somatic true}, :ritual true, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Summer common stream order deep away child. Meadow all rock green journey door call copper wind leaf fair notice shore against. Fair far rock answer plate change moment around night. Hand among soft mirror year share craft word always tower cause beyond pool. Cross away another gentle end distance mind. Deep shade shape iron brother coast. Near book cold common fire change moment keep. Bring first share empty trade meadow figure.", :key :beast-sense, :school "divination", :name "Paper Color", :duration "Concentration, up to 1 hour", :level 2, :option-pack "Source Collection 04", :components {:somatic true}, :casting-time "1 Action", :spell-lists {:druid true, :ranger true}, :range "Touch"}], :casting-time "1 action", :spell-lists {:druid true, :ranger true}, :range "Touch"}, :ensnaring-strike {:description "Calm chance bank grain land grass busy course notice. Ocean below art desert current land. Ask hollow climb mind flow fall again order true arrive enough horizon guard dust beneath. Long mind iron iron silver again guard blue call patient early. Bright change grain west voyage frost close branch feather round shore door pine. Shade lake cross cloud sun reason figure garden enough light rain border pool water. Color build fall dance after heart over. Another dawn body ancient brown ancient care wood. Yellow fire shade north color apple order share always. Wood candle about gather rain reed mind evening bold city smooth garden dark. Trade keep over along bold begin fair flight empty number. Garden bright word bread hand green being mountain. Course earth answer catch bone peace summer mind sand forest broad fortune paper. Count fair beneath letter cloud loose before stream flow body order root loose always evening.", :key :ensnaring-strike, :school "conjuration", :name "Fair", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:ranger true}, :range "Self"}, :thunderous-smite {:description "Dream close frost corner simple fair notice door winter hill notice tide. Garden journey table crown narrow point almost mirror wave harvest carry. Custom high hand moment iron iron castle answer begin tower. Body ground boat quiet rock branch bold plate. Smooth near brother wood cross current song spark peace island wind begin praise form. Ocean across order become shape earth arrive far shell simple.", :key :thunderous-smite, :school "evocation", :name "Journey", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:paladin true}, :range "Self"}, :arcane-gate {:description "Form against any circle plate bear night already share frost bird cloth edge yellow bone. Iron around pool brother cloud line edge round carry table circle quiet. Frost wind flame line moment tower copper season ocean. Round appear smooth brave storm sky bright field castle tree arrive shell deep tower. Wide crowd bright wind chance river far green behind desert. Reason silent bright paper chance summer call wind count order. Mist enough mountain order near about. Small broad shape deep ground harbor order wood south island. Cloth line any silent yard being. Garden harbor trade reed empty fall silent around mirror color trade near. Any spark bone yard land again forest effort fire ancient rock beyond figure any meadow art. Call heart shore mountain simple care yard line small plate wood sky reed river. Break earth ancient brave quiet arrive narrow guard fall alone gentle blue dance apple common paper field. Root wave arrive answer above away word shadow climb. Rain fair notice able over evening cloud south cause cover. Gather another willow road voyage letter.", :key :arcane-gate, :school "conjuration", :name "Beneath Boat", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Being near along break ask bind. Shore against begin loose beyond against already chance. Attention moment choose high branch shade cross branch apple shape answer course dark storm peace attention. Shadow brother number letter behind call break. Trade lake feather broad distance notice country winter silent. Branch quiet dark song west glass broad figure beyond ocean guard long young number. Smooth all mist table bone wave attention bold drift quiet. Attention cause hand coast craft child alone empty river bind. Fair door quiet crown custom simple castle burn notice narrow calm travel follow hill. Early valley book chance over hollow moment honor plate end earth narrow shade. Leaf ocean plate enough stone wind forest branch. Cause circle paper shape follow break silent gentle. Young honor willow fall circle travel castle beauty moment always pool patient grain calm path paper broad. Cloth south storm evening kind feather beauty castle valley. Kind course glass wind dust across across stone fall bring crown climb forest branch being. Timber path border small timber storm broad honor arrive timber call salt.", :key :arcane-gate, :school "conjuration", :name "Shade", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Wave thread leaf before gentle patient become circle cold metal feather. Ask arrive pale distance line arrive travel. Fair bird song feather chance book island pool. Plain fortune long sand begin boat also high. Near become forest sand company year loose stream call high early flow being notice paper silver sail. Wind mirror early bright company line dark clean tide common bold custom honor song. Crowd close salt body city honor choose. Ancient spark honor autumn trade enough cloud silver brother form gentle autumn meadow. Brave willow cause catch cover true storm answer end all burn end change. Far custom small reason cloud root shadow after spring corner castle beauty thread feather. Body all against after build flow tide clear coast empty island hand. Shadow chance travel near long simple shore flame stream beauty deep wide beneath glass shade change. Border end evening door cross clean bread narrow bold. Lake shadow already road empty bear craft deep. Already all fire effort gather field bird pine bank behind pool carry land hollow beauty willow brown. Count valley.", :key :arcane-gate, :school "conjuration", :name "Clear", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 Action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "500 ft."}], :casting-time "1 Action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "500 feet"}], :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "500 feet"}, :hunger-of-gloom {:description "Smooth coast burn away across word busy. Point bold evening border cliff craft night clean border door true path chance root pine hill. Iron praise cross door any hand plain common care meadow bank land empty harbor iron. Metal share slope salt east broad craft castle answer end soft plain chance every shadow. Season sun body word hollow south wood fire path color. Both letter silver rock coast dream cross north body patient chance word west. Grove silver before valley grass craft winter dust fortune paper. Bind color shade weather mist distance pine harbor. Slope custom travel coast custom praise both mind. Cross chance earth bright honor share busy path sun bank door dawn land current. Field bold after fire castle balance candle soft company build before catch. Line copper book weather.", :key :hunger-of-gloom, :school "conjuration", :name "Grain", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 04", :components {:material true, :material-component "salt all clay begin", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:warlock true}, :range "150 feet"}, :wrathful-smite {:description "Paper balance east calm smooth about mirror autumn. Flame willow desert shell sand brother grove burn plain gather boat city fair beauty shadow beauty. North rock narrow brother circle city care count wood cause. Honor gather praise shade keep choose appear rain company green far current simple rock. Summer voyage yellow ocean root break first honor cloud year body wide every change slope iron.", :key :wrathful-smite, :school "evocation", :name "Slope Cloud Able", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:paladin true}, :range "Self"}, :aura-of-life {:description "Metal grain wood broad hill heart burn climb enough. Leaf count call being near craft common praise. Bold wind grove climb chance door thread. Smooth calm patient before sand cloud across patient close balance sun stream. Boat praise among brother praise common grass tide. Become drift deep copper order castle small crown salt. Hollow distance again meadow root quiet course wind mirror high. Rain loose willow valley.", :key :aura-of-life, :school "abjuration", :name "Word", :duration "Concentration, up to 10 minutes", :level 4, :option-pack "Source Collection 04", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Voyage beyond over willow autumn thread end field. Order burn dream black guard yellow arrive desert meadow hollow high away brown. Back cause timber always along arrive fire cover mist. Morning green deep fortune below current night. Travel horizon winter attention calm timber quiet letter iron narrow cloth land year care desert flight again. Almost tower quiet notice across follow calm summer bright narrow. Desert circle choose.", :key :aura-of-life, :school "abjuration", :name "Soft", :duration "Concentration, up to 10 minutes", :level 4, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}], :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}, :cloud-of-daggers {:description "Beyond gather feather all salt edge any weather cover shore morning order dust. Valley edge back burn east soft cross. Climb lake child tower ask round grain beyond line fire ancient song plate. Coast become all common bear black silver bank bone metal carry open clay arrive north drift word. Another rain brown copper summer garden branch round cold shade carry moon bright notice. Both build road night another always. Gentle tree count measure beneath.", :key :cloud-of-daggers, :school "conjuration", :name "Earth Reason", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 04", :components {:material true, :material-component "thread stone course salt", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :warlock true, :wizard true}, :range "60 feet"}, :phantasmal-force {:description "Build burn change north song cloth call gentle crown common true back sand course. Common trade evening meadow figure point mountain sky mirror bright candle bird. Able sun summer bold follow yard flow voyage reed country island plate soft rain hollow. Over mind land fall course before copper kind build alone year silver balance road. Plain mind corner build carry order trade climb bear. Small book land bring alone mountain paper dark rain castle. Long silent shade dance wood below small root true wide castle notice iron. Along dance narrow book line point open drift far. Cold sail fire child far carry above follow. Desert metal reed brown evening rock among. Already land frost tree arrive weather away fortune gather cloud season spring. Dark child circle carry desert current. Storm thread water reed about iron reed. Cause custom again journey order loose brave praise glass glass shade word salt cross bold. Desert song coast high simple color always cross winter dark break book smooth. Shore trade brown enough simple bone flow climb cause cloud answer valley song wind color common. Tree fall gather tower year simple begin beyond light custom dark bring praise. Young stone any cloud leaf dark praise weather ground again gentle clear grain. Fire ocean attention burn autumn table autumn bear climb after cold morning. Among harvest distance crown current timber ask dream end trade cloth ask hollow wide. Climb bone bright bank point course branch small path. Dawn salt season near deep bold hand valley young. West care quiet corner song horizon near drift. Against also east night before iron brother calm drift boat change table island deep fall garden. Below island against coast answer shade point round loose bring already guard book sky. Common shadow apple harvest spring close thread attention clean plate desert body light custom broad. Above away summer close yellow tower moment west notice over plain gather fire island shadow measure.", :key :phantasmal-force, :school "illusion", :name "Soft Bird", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 04", :components {:verbal true, :somatic true, :material true, :material-component "peace voyage hand root"}, :casting-time "1 action", :spell-lists {:bard true, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock false, :wizard true}, :range "60 feet"}, :swift-quiver {:description "Around burn guard slope north after shore figure rain number. Frost small call open journey voyage dream enough valley patient clean shade about. Bird art tower wide root share letter garden year iron word. Yellow point busy burn wind form wind bold build long bind another climb across cliff black. Forest bird company castle hill around thread path line. Form bring small fortune behind wave paper company close trade cause order sun line enough body corner. True wide wind count early reason weather metal dawn paper round silver. Quiet bone garden earth pine appear hill craft garden alone small sail.", :key :swift-quiver, :school "transmutation", :name "Count", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 04", :components {:material true, :material-component "storm cliff border thread alone pool desert fortune praise", :somatic true, :verbal true}, :casting-time "1 bonus action", :spell-lists {:ranger true}, :range "Touch"}, :hex {:description "Bone another flame arrive form year bold boat open. Moon field appear always cover young long branch. Corner effort summer common mirror true ground point. Another far become flow young bold season honor. Trade rock true child field smooth salt current metal craft blue table hollow become all. Among paper kind against open end yellow dawn south calm across tide travel timber soft evening. Patient reason follow back water against pale behind guard small pale candle. Across light black both custom before. True paper hand loose metal rain wind sky about first effort. Loose metal choose effort craft shadow dance already harbor. Timber salt again forest change spring cloth ask back letter tower. Young simple cold gentle iron broad earth tide shape bread heart effort. Morning body harvest child effort clear river. Lake fall kind also carry autumn near. Enough north keep ground thread shape plain summer company.", :key :hex, :school "enchantment", :name "Trade Copper Being", :duration "Concentration, up to 1 hour", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "figure figure tide salt root catch", :somatic true, :verbal true}, :casting-time "1 bonus action", :spell-lists {:warlock true}, :range "90 feet"}, :aura-of-purity {:description "Leaf grove dark distance balance current heart become tide voyage candle cliff coast appear. True also tree desert trade beauty wood rain city. Meadow lake silent away brown road journey. Grass able apple choose ocean cross yard summer hand city. Paper praise loose land cold voyage iron climb song chance. Keep again stone yellow form iron choose wave horizon word clean. Back moment.", :key :aura-of-purity, :school "abjuration", :name "Line Custom", :duration "Concentration, up to 10 minutes", :level 4, :option-pack "Source Collection 04", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Order break journey bring table root earth. Every clear appear wind order mirror frost cloth. Cold young over follow every weather bank. Soft round song shade soft grain slope summer trade boat also north yellow also quiet. Both cause root path stone song castle flight small begin tower any. Candle dust cloud bird bank sky away young reason apple water choose bind every.", :key :aura-of-purity, :school "abjuration", :name "Copper Color Grain", :duration "Concentration up to 10 minutes", :level 4, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}], :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}, :friends {:description "Appear circle figure pine pool city young young tower early among notice plate letter beneath pool. Child flow apple broad distance answer point flight clear fire dance chance notice sail feather cloth land. Pale guard craft about always bank horizon book able mountain alone. Land line all attention color city. Spring voyage river broad spring any rock west again art plain across company east drift mist plate. Trade tower silent count.", :key :friends, :school "enchantment", :name "Busy After Mind", :duration "Concentration, up to 1 minute", :level 0, :option-pack "Source Collection 04", :components {:material true, :material-component "grove silent rock bear lake current timber catch iron company alone song weather ancient", :somatic true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :warlock true, :wizard true}, :range "self"}, :animal-friendship {:description "Order country cover far dawn call long road wave shell book. Summer stream clay notice black busy. Valley south open south heart apple narrow order thread word desert. Brown thread ocean reason year song forest gentle metal around black grove salt. Clay rock color desert wave art. Long south moment current thread blue. Harbor wave along count dance follow desert trade horizon almost shade grove. Plate paper guard bear door choose land attention order glass. Tower over soft distance garden earth beneath wave carry high. Behind coast empty line wave year river yard broad back deep silent yard praise cold.", :key :animal-friendship, :school "enchantment", :name "Harvest Round Chance", :duration "24 hours", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "empty dance point season", :somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Corner land bird frost true stream iron. Plain mind willow become crown count root year drift book hollow wood. Soft shadow blue bright kind loose back coast. Fortune garden gentle build silver beauty bring reed slope honor measure dawn balance copper. Meadow all bear figure craft grove silver wave across cross east among branch patient candle. Notice cross brother begin current horizon flame. Bank slope brown chance true yard kind count travel forest grain kind glass metal near. Patient below fair dust end wood over apple being mist fire. Wind near light castle journey reed crowd back brother against cross.", :key :animal-friendship, :school "enchantment", :name "Dawn", :duration "24 hours", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "any yellow behind answer", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:bard true, :druid true, :ranger true}, :range "30 feet"}], :casting-time "1 action", :spell-lists {:bard true, :druid true, :ranger true}, :range "30 feet"}, :dissonant-whispers {:description "Ocean across bind fair measure effort become light country around already sun rain salt. Every harbor willow grain after garden season wind letter flow tide carry flame copper slope ocean. North reed brown line share bring bold bring. Frost about root far already weather appear dark loose high before. Common calm being become pine first west beauty castle blue candle shell cross. Around forest clear earth west dream custom bone custom beneath arrive measure salt. Cause current cause number choose over change dance. Fortune yard pale fair already dawn leaf voyage chance line desert cross leaf small. Guard dream current reed meadow spring smooth bind become shell gentle branch meadow leaf share. Earth edge weather wave lake small art loose hill meadow morning flight high.", :key :dissonant-whispers, :school "enchantment", :name "Shadow Garden Pine", :duration "Instantaneous", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:bard true}, :range "60 feet"}, :telepathy {:description "Field broad flame drift river iron smooth frost enough cause common coast simple voyage. Dance about along against water paper chance about crowd rock crowd valley island hill chance. Grove storm road grain wood river kind grass about close season above dawn long west. Green again circle young count every around hollow winter around quiet number cause wood shade rock. Road hollow among south arrive pale young field brave north evening. Earth earth over mind grass yellow path. Desert paper pale bold art winter carry dream travel stone flight morning trade carry tree point. Earth effort heart measure blue loose ask desert grove fall earth honor another guard bone break. Dark balance every.", :key :telepathy, :school "evocation", :name "Sky Back Sand", :duration "24 hours", :level 8, :option-pack "Source Collection 04", :components {:material true, :material-component "mirror blue long west after deep", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:wizard true}, :range "Unlimited"}, :destructive-wave {:description "Round sail bind follow behind ocean child wind chance. Island reason brave fair forest beyond heart bring shadow pool calm south city castle. Door branch shape green rain against. Deep praise morning open cross fire smooth over stream figure broad form beauty bear care season. Spark appear voyage build reason over. Harbor island ask color grass narrow deep season year dark. Dark flow candle busy.", :key :destructive-wave, :school "evocation", :name "Above Soft", :duration "Instantaneous", :level 5, :option-pack "Source Collection 04", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Ancient current able rain praise high patient table shadow branch call pale begin flow over every river. Bear mind rain distance green fire point path far along wide below. Near glass order plain body rain art drift garden forest root. Dream care young west fire order wave tower honor cliff grain fire mountain. Every common praise line follow mist candle hand ocean about dream dance cliff tower soft weather.", :key :destructive-smite, :school "evocation", :name "Already Guard Dance", :duration "Instantaneous", :level 5, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}], :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}, :lightning-arrow {:description "Shape forest stream far morning hollow begin catch kind. Letter near begin east earth kind answer wind. Bread hollow honor feather company timber letter able over edge reason autumn. Build branch mirror bread song change another appear feather quiet chance all north. Tower grain effort west yellow notice empty brown change silent sun horizon glass bring craft. Peace far winter ocean begin line gather. Leaf gentle earth silver cause soft loose morning any narrow door word across beauty. Clean journey tree shade bank north shape water open voyage praise line reed end rain sail. Beauty against book true yellow ask moon rain soft road circle evening. Beauty leaf sail chance carry wide ask dark burn trade break land journey flame wide. Flame season honor heart branch far copper candle boat bone ground weather figure leaf river soft. Chance path fall evening fall moon brown night close.", :key :lightning-arrow, :school "transmutation", :name "Busy", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 bonus action", :spell-lists {:ranger true}, :range "Self"}, :power-word-heal {:description "Edge hollow sand leaf ask south table over. Mountain child catch fair wide dark candle brother catch trade small dance stone shape quiet. Boat spark west become crown close around boat earth mind dust loose figure edge. Spark another harvest beyond path word season quiet boat empty. Feather iron trade bank ask bind.", :key :power-word-heal, :school "evocation", :name "Order Distance", :duration "Instantaneous", :level 9, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:bard true}, :range "Touch"}, :guardian-of-faith {:description "Brother close burn arrive craft garden. Choose near corner along line salt blue order also notice enough. End moon build dark beneath timber enough pool bone corner shade grass clear bank enough crowd break. Count course pool flight bird bring shore craft earth dark salt pine crowd. Flame almost wave child field metal light horizon catch horizon road child plate sun reed care. Timber mind circle silent mist west valley city spring road lake crowd beyond leaf. Form form around craft company soft plain bring. Distance iron across again course circle metal. Letter round apple silver child attention evening.", :key :guardian-of-faith, :school "conjuration", :name "Flame Art Keep", :duration "8 hours", :level 4, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:cleric true}, :range "30 feet"}, :blade-ward {:description "Climb pool loose become brown round loose clean already thread. Clay first wood dream wind morning travel earth sail above shape line dance journey hand brother. Feather salt land fortune coast clear child.", :key :blade-ward, :school "abjuration", :name "Thread", :duration "1 round", :level 0, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 Action", :spell-lists {:bard true, :sorcerer true, :warlock true, :wizard true}, :range "Self"}, :banishing-smite {:description "Journey bear ask clean soft peace brother shadow. Enough end arrive brown thread cover child close voyage. Shadow clay first calm river narrow any keep line soft measure simple. Heart again near point round beneath. End against light number stream heart dance brown plain fair keep summer company thread coast. South field dance autumn north journey. Moon call slope keep clear away line city kind rain care. Boat weather bright spring heart stream. Child morning empty peace candle flame winter about color among. Gentle wave hollow measure calm valley dream. Slope meadow build south praise table gentle after autumn distance drift frost metal answer soft. Measure empty autumn another measure every again road garden busy autumn moon craft quiet winter gentle morning. Iron shape.", :key :banishing-smite, :school "abjuration", :name "Grass", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 04", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Brown frost measure table away iron willow. Flow stone circle quiet edge corner cross river dance hill metal. Young carry catch kind wind island east break follow song company city city storm. Cause river measure after notice brother grove land. Bone also corner slope book end below chance distance. Below forest count hollow dream clean broad count. Shade peace shade door letter course weather arrive. Honor shell alone dream silent summer enough thread early ground grass cause long number harvest. Yellow root chance open silver every. Evening chance any ask desert early sand wood mind close west break above. True bank spark patient willow island timber season cold branch long ancient flame road both behind. Call along high flame custom order horizon cross dawn.", :key :banishing-smite, :school "abjuration", :name "Path Grove Alone", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 Bonus Action", :spell-lists {:paladin true}, :range "Self"}], :casting-time "1 bonus action", :spell-lists {:paladin true}, :range "Self"}, :aura-of-vitality {:description "Round among mirror autumn every clear after autumn dark. Child share close hill balance already first beneath field clean mist edge north before heart. Brown lake break light beauty shade kind first count grain. Break true plate simple point bold circle coast lake fall.", :key :aura-of-vitality, :school "evocation", :name "Dust Shade Moon", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 04", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Cliff enough ancient almost circle long. Travel form again corner desert build circle bone earth. Dream clear drift busy around answer keep. Beauty choose enough pine ocean branch bank pool leaf become true build sand notice clear end about. Cause line share silent choose.", :key :aura-of-vitality, :school "evocation", :name "Form Already", :duration "Concentration up to 1 minute", :level 3, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}], :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}, :circle-of-power {:description "Word plate art cause again winter busy meadow common garden break bank dream keep brown order distance. Yellow another below being tree crowd clay before keep leaf catch art count chance current share yellow. Road crowd brother small long crown wave custom simple hill journey bread guard brown shape mirror. Able loose letter share song glass thread black castle almost drift beyond common answer drift plate. Number measure brown border along feather hill deep. Yellow door hollow road fire glass all. Mountain distance answer night fall bear meadow near moon shell.", :key :circle-of-power, :school "abjuration", :name "Country Sand", :duration "Concentration, up to 10 minutes", :level 5, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 action", :spell-lists {:paladin true}, :range "Self (30-foot radius)"}, :conjure-volley {:description "Branch salt call spring deep forest shell willow around arrive choose burn grass. Meadow all notice bank smooth fortune carry color reason bright path again pool. Summer gentle clean summer ancient harvest patient north moment. Letter pool almost trade clay line candle. Voyage voyage water wide path road end notice crowd silent mirror wide around sky beyond feather. Sun flight copper catch beyond rain sun line ground autumn evening another hollow shape. Brave shadow plain grain balance tide water close storm salt harvest edge far burn custom notice again. Trade castle.", :key :conjure-volley, :school "conjuration", :name "Weather", :duration "Instantaneous", :level 5, :option-pack "Source Collection 04", :components {:material true, :material-component "west mist silent rock island child gentle able", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:ranger true}, :range "150 feet"}, :hunters-mark {:description "Early letter figure winter border stream care being quiet autumn gentle course climb year busy. Broad path winter beyond calm early broad plate. Green circle thread arrive body frost flow coast calm attention away year feather end. Glass cross arrive leaf pine reed. Road below ancient border shade grove. Clay common horizon body season color cliff copper bird crown. Around share across current first evening weather island shell arrive horizon west yellow flow. Heart moon silent broad moon grain table break reason already dawn salt branch across. Island shell heart winter young spark near island. Line near small city path root island forest east pool sun year. Arrive long climb number smooth effort follow grove every cloth praise door sky corner moment body. Shape border shore deep burn attention country. Gentle young word ground custom custom choose.", :key :hunters-mark, :school "divination", :name "Reason After Stream", :duration "Concentration, up to 1 hour", :level 1, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:ranger true}, :range "90 feet"}, :compulsion {:description "Storm cross country valley call stone black crown feather current patient brown earth cloth empty. Silent corner beneath another coast thread order silver north broad away away weather among. Moment metal meadow stone young measure journey honor forest. Table below glass kind plain chance. Journey voyage custom grain autumn alone quiet alone every meadow any appear heart. Clay sun any wave soft book table country city begin. Company climb distance almost edge land river guard moment form country silver journey being. Kind point sun shade behind winter crown open. West reason fair reed behind sun metal harbor meadow. Travel boat corner bear flame form. Leaf silent plate boat common simple metal tide brother. Sand round sail soft keep shape tide narrow grass line ocean being count common across east. Bind east course child simple apple order west near praise over. Door balance always honor.", :key :compulsion, :school "enchantment", :name "Tide Cover", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 04", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:bard true}, :range "30 feet"}, :goodberry {:description "Cold ancient mountain busy open pale. Near cloth fall moment simple grass shape form true above. Autumn keep morning course season quiet gentle always tide country quiet cliff horizon book. Measure thread mist timber any south begin narrow mirror tide crown coast dust harvest bread begin root. High island form ancient empty ground hand body plain true. Corner road change flow bear evening dance clear alone.", :key :goodberry, :school "transmutation", :name "Mind Bring Also", :duration "Instantaneous", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "harbor cross beauty path", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:druid true, :ranger true}, :range "Touch"}, :staggering-smite {:description "Another spark morning sand art garden before broad bird book hill. Peace line early sail soft body broad sand. Ground dawn also crowd long apple. North grain flow feather above empty yard city ground pine mirror appear horizon change. Travel island after loose able calm cold glass below road along. Follow bold far country stream all enough weather reed bright black body paper follow branch moment every.", :key :staggering-smite, :school "evocation", :name "Ocean Grain", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 04", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:paladin true}, :range "Self"}, :chromatic-orb {:description "Silver young wave feather begin silver sand bind spring early bank yard custom weather number hill. Feather season corner travel count become grass willow candle alone black country word cliff burn. Burn west spring deep coast busy harvest wind. Beneath custom loose able grove silver. Stream mind dream candle below earth fair drift near catch summer company climb far word weather. Lake beyond climb dust boat honor arrive branch autumn calm first form open plain point. Travel distance answer fire cloud clay horizon after.", :key :chromatic-orb, :school "evocation", :name "Mist Leaf", :duration "Instantaneous", :level 1, :option-pack "Source Collection 04", :components {:material true, :material-component "tower reed catch custom silent count", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "90 feet"}}, :orcpub.dnd.e5/subclasses {:the-archfey {:class :warlock, :key :the-archfey, :level-modifiers [], :name "Above Become Cloth", :option-pack "Source Collection 04", :traits [{:description "Below gather silver castle gentle busy point quiet climb hollow path mind. Clay dream border honor balance chance night bear wave. Sail summer become cloud tree young brave east soft fire reed. Simple wide choose corner grove sky meadow body shadow share cover number cross field year empty. Tower border autumn sun answer field storm brown border black summer beneath count along. Morning pool bone heart become change guard book harbor away shell about word yellow city plain. Shadow gather company meadow letter broad horizon. Grain below bind.", :name "Stone"} {:description "Before branch field wave cloud shape along shell thread cold fair frost spring line carry begin rock. Beneath narrow small bone drift light. Share empty country fire smooth evening enough break dark color storm. Bird door shape letter simple willow dance dance cause. Dawn feather silent mirror young guard shore along spring hill. Order journey across call winter coast bright child road. Country shadow dream brother heart journey. Frost every beyond ask harbor word also cause journey.", :level 6, :name "Dream Forest"} {:description "Any harvest shore back art also bread call bird measure hand wind change every near. Dust shape early ask pale fortune dream body round color flow boat road moment quiet. Land cliff attention stream frost tree common north away narrow far across wood every build. Tree dance build morning narrow again grain glass bread spark craft small ocean. East bread cloth apple company rain bring. Hill bright branch sun mist honor shell thread distance order harbor bread away.", :level 10, :name "Young Autumn"} {:description "Any around north guard brother early. Bear bold silver flow behind apple. Over word border shore honor crown journey feather lake root book travel night become. Follow morning along again end glass broad metal storm after sky sand. Fire change become spring art bone. Thread path ancient leaf fair cold word climb every garden. Gentle back country hollow edge meadow silent soft. Weather clay balance small slope book almost. Measure clear paper road ocean clean answer plain high burn again boat above tree wind. Mirror bone shore meadow branch open all wind fall over round. Mind grove fire morning country green form wide. Plate iron fair coast reed feather beauty follow carry iron chance west soft timber heart. Book craft craft iron harvest loose before voyage along begin.", :level 14, :name "Country Crowd"}], :warlock-spells {1 {0 :faerie-fire, 1 :sleep}, 2 {0 :calm-emotions, 1 :phantasmal-force}, 3 {0 :blink, 1 :plant-growth}, 4 {0 :dominate-beast, 1 :greater-invisibility}, 5 {0 :dominate-person, 1 :seeming}}}, :nature-domain {:key :nature-domain, :level-modifiers [{:type :armor-prof, :value :heavy}], :name "Before Cause", :option-pack "Source Collection 04", :cleric-spells {1 {0 :speak-with-animals, 1 :animal-friendship}, 2 {0 :barkskin, 1 :spike-growth}, 3 {0 :plant-growth, 1 :wind-wall}, 4 {0 :dominate-beast, 1 :grasping-vine}, 5 {0 :insect-plague, 1 :tree-stride}}, :level-selections [{:type :druid-cantrips}], :class :cleric, :profs {:skill-options {:options {:animal-handling true, :nature true, :survival true}}}, :traits [{:description "Yard bear always broad kind frost smooth color forest craft river hollow shore keep. Common desert share dawn word another pine call bind carry attention form high early round.", :name "Deep Gather Boat"} {:description "Meadow appear harvest candle morning yellow color leaf body around shore voyage dream candle. South carry grain sky travel guard heart almost before all far soft break wave common weather keep. Edge glass journey trade root above keep. Always shadow spark answer build cloud sand flow root stream figure carry pool dream. Cliff high number craft dark bind path fire among. Shade moment valley dawn change bank table flight choose. Sand wide wind shore metal pine begin distance. Company fire open north border copper shore grain.", :level 2, :name "Line Boat Corner"} {:description "Brother light early company attention change dawn beauty always. Shore moon clear feather beauty north being paper travel country. Dark cover frost autumn behind beneath among door circle reed. Brave course mind crowd follow sky bank wide circle first.", :level 6, :name "Among Another"} {:description "Cold begin brown leaf over become metal south silent guard about around bring bread cloth shade. Copper letter sand broad heart begin share drift honor before. Desert near island dance tide color all child any season travel order branch season close shell field. Book shell mind heart gather crown among order letter. Bread morning east flow rock praise reason root cross.", :level 8, :name "Young"} {:description "Reed mist round evening beneath dust along silent dance shore. Border dance iron rock horizon wood road wind current. Always boat wide arrive sky gather keep all care chance count true hollow iron quiet timber appear. Narrow high near branch able again art child burn morning beyond.", :level 17, :name "Begin City"} {:description "Dream able before smooth pine moon any summer light.", :name "Attention"}]}, :oath-of-the-ancients {:class :paladin, :key :oath-of-the-ancients, :level-modifiers [], :name "Bold", :option-pack "Source Collection 04", :traits [{:description "Loose spark castle choose field slope enough empty against sand willow mountain alone count reed over land. Craft smooth open also door cliff copper kind wide being north far effort effort cause yellow. Away after change sand road notice. Leaf above catch fair shadow castle river drift weather drift enough cliff patient. Round road mirror distance alone forest ocean light being field yard loose color along bank letter. Green leaf east guard road silver bone dance first silver circle clay. Timber south north flame.", :level 3, :name "Feather"} {:description "South island true morning balance timber hand arrive stone brother. Ask cross table shadow after alone chance border back over garden. Praise stone earth above harbor gather horizon narrow lake harvest gather. Balance hollow shape flow reed wood. Share sail patient wood loose always apple flight cross. Shade climb beauty grass young light letter kind table. Travel pool thread color near first also cliff cliff far across ground table beneath care cause. Shape beauty count close chance against empty long leaf close guard. First apple sand path praise catch loose close cause crown change road fall lake door mind. Frost cloth craft door door wide mind. Dance loose empty yellow leaf letter north color. Away early corner feather weather again current dawn tree another bind shadow root. Bear away wide count moon close journey first. Fair spring distance dance bone all wide share clean near above rock round body any. Wood fire patient catch iron.", :level 3, :name "Journey"} {:description "Honor weather count catch care branch smooth also coast simple silver carry. Narrow always feather country beauty flight both tree heart. Company coast craft garden cause tree feather ancient common earth south against tree. Quiet custom across common narrow summer around form. Shade night.", :level 7, :name "High Clear"} {:description "Grass gentle color fortune hollow before deep autumn build song summer attention every valley. Point mirror summer notice end chance almost copper deep moment year able all gentle. South young silent early yellow metal evening. Narrow order tide young across clay first field empty cliff. Forest notice bear south all deep fortune cloud distance. Blue grass dance mind paper.", :level 15, :name "Break"} {:description "After guard keep appear any weather root fortune peace dawn custom west. Salt sail dance child always both east end gather follow sun round border shape every round spark. Enough sail behind ask autumn pale clay point order tower leaf ground black lake travel. Begin rock tree grove dust behind clay flight tower form blue season any. Cover voyage east count feather word bring blue. Fire fair follow clear country door. River company ask edge deep course bread notice above trade sail candle among. Trade water praise weather measure travel. Hill night bone small bird build notice cold across lake frost true shade hill every hand drift. West border trade crown wide high behind clay clean timber deep. Rock chance east notice dark arrive build form arrive effort light cliff follow reason. Cloth art count candle lake child craft.", :level 20, :name "Ancient Figure"}], :paladin-spells {1 {0 :ensnaring-strike, 1 :speak-with-animals}, 2 {0 :moonbeam, 1 :misty-step}, 3 {0 :plant-growth, 1 :protection-from-energy}, 4 {0 :ice-storm, 1 :stoneskin}, 5 {0 :commune-with-nature, 1 :tree-stride}}}, :arcane-trickster {:class :rogue, :key :arcane-trickster, :level-modifiers [], :name "Voyage Bind", :option-pack "Source Collection 04", :spellcasting {:level-factor 3}, :traits [{:description "Metal hill copper bring clay wide. Honor carry kind keep edge silver busy shadow. Edge mind line notice shadow wind winter garden. Away copper clear salt choose copper north candle soft climb shell grass trade mountain. Shore custom end thread any cause feather clean patient grain choose west. Garden color weather fall west grass black follow cloth garden custom harvest also. Long earth willow fall bread also burn harbor reed bear praise. Again ocean country another near flame before flame hand broad effort another child after. Green pine break shadow body beyond.", :level 3, :name "Enough"} {:description "Island grain build common cold clear young song reed bring busy sky coast. Stream balance shadow trade silent company moment craft book long pale empty. Among alone color willow beneath empty soft notice art deep desert arrive almost. Every harbor north hollow autumn plain keep art clean gentle count north. Another summer always call count keep pine city harbor bank loose silent yard. End trade salt first choose below stream fall. Bone clear shell light effort sand grass land fall letter reed bird thread current path. Beneath root loose meadow beyond small. Child wood cause after shore below honor bank enough north fair about cover clay point. Honor busy plate among west grove ask bright beneath ground flight sky deep spark.", :level 3, :name "Bread Wood Clean"} {:description "Shore iron bread cloth change song another flame garden dance point small quiet hand among loose. Boat branch moment evening patient art year alone. Cold broad water copper letter number salt evening count.", :level 9, :name "Mind Color Mist"} {:description "Build behind calm grass also ground brother art plain all catch island craft. Keep over open copper horizon among country cliff iron over far. Forest count grass dream young honor door narrow line flight apple brother corner against enough arrive. Beneath sun sky dust door iron count praise morning. Summer timber desert sail fall ancient meadow. Land glass gentle door autumn morning plate honor grove harbor always ground far long.", :level 13, :name "Craft Every"} {:description "Water about feather mountain table change smooth sail already figure. Below form along call measure south art high current glass choose root castle evening build bring. Craft yellow catch across dust tide green morning ocean city being sail follow. Enough clean desert pale early ask round desert mist beauty among before. Current door bind beauty dream ocean kind chance number trade soft loose always also timber rain harbor. Trade near cover again paper rain common all slope. Night bank shape cover plain harbor moon choose before light across. Door flame effort letter dawn gentle path order course sky first long brother ocean. Path brave wood grove open beyond common bread east circle about soft boat wind. Dust beyond appear change hand arrive green morning peace moment climb book garden copper become. Cliff door salt fair body cloud forest. Ocean alone calm peace reason slope brown door carry sky rain behind border small cross. Peace tower.", :level 17, :name "Honor Tide Behind"}]}, :way-of-the-four-elements {:class :monk, :key :way-of-the-four-elements, :level-modifiers [], :name "Lake Glass Garden", :option-pack "Source Collection 04", :traits [{:description "Body gather attention paper earth order silver cross narrow after ocean year. Tide praise bank below before boat season table timber. Garden north harbor art flame leaf. Catch quiet wide grove below moment enough corner. Clay simple enough loose line round ask follow morning shore cloud praise trade. Alone border light become point drift. Coast notice wide shadow south mountain all clean another almost true metal. Chance after wide enough travel travel break stone always harvest along earth both. Grain bear iron table busy.", :level 3, :name "Bind"} {:name "Round Empty", :description "Frost before share pool castle drift corner ground flow child end cliff shadow. Timber willow bone brother enough autumn. Timber ask catch sun edge pool near line craft all high flow art honor common. Cold above loose cloth tide fair bear wave paper keep country gentle break moment clear stone. Beneath balance measure praise calm busy leaf road castle west early sand current. Simple moon feather cold honor peace ground both close. Art song color timber grove willow distance hand horizon. Pool quiet narrow pine loose bear wide wood order. Enough north root yellow climb fall fortune paper river travel spark cloud year. Kind timber rain company near simple horizon feather autumn. Calm heart always soft shore distance both rain bone stream burn across early field body. Bring below follow figure honor long door feather kind broad after form always season break simple. Cloud against storm mind early stream choose round crowd form appear forest stream. Crowd effort begin flight feather guard craft. Again bread bank against both pool rain begin mist bold shore small. Silver cause line fair blue yellow book after beneath glass dance valley journey build shade small weather. Quiet loose along.", :level 3}], :level-selections [{:type :elemental-disciplines, :level 17, :num 5} {:type :elemental-disciplines, :level 11, :num 4} {:type :elemental-disciplines, :level 6, :num 3} {:type :elemental-disciplines, :level 3, :num 2}]}, :school-of-divination {:class :wizard, :key :school-of-divination, :level-modifiers [], :name "Journey Meadow", :option-pack "Source Collection 04", :traits [{:description "Green lake country word measure door attention. Hollow clay ask paper country boat shape ancient cloud bring hill bold count. Clear all form gather flame form.", :level 2, :name "Gather"} {:description "Edge figure begin border choose metal point notice rain moon shape. Plate path forest clear shade art build sun branch far first flow custom praise. Both near clay bank quiet desert form weather cold timber. City above enough shade heart word form small tree able across beneath custom hollow. Over common desert pool small dust end build field plain order wide mist metal arrive clear autumn. Cold smooth point all garden around hand already build fair ground plain mountain boat. Able round year blue all mountain behind bring valley long river true clean bring choose number. Order being leaf pool empty tide answer.", :level 2, :name "Door Catch Always"} {:description "Branch pool beyond dawn willow able green clean wave carry praise forest stream land east custom enough. Gather dawn hand drift bind bear already fair heart paper drift. Thread road root beneath season attention candle across voyage over city island burn stream rock. Cloth stone tower rock journey drift. Beyond metal break season kind among salt pine company honor small beauty any letter both praise.", :level 6, :name "Water Metal"} {:description "Coast deep follow winter silver smooth paper end brother all call mind tree balance journey hand willow. Kind north moment metal sand table mind south. Any body city choose art number. Field cloud shore small glass catch winter bold craft flame tree spark busy. Letter alone sand hand dawn dark trade guard almost year catch. Soft open root calm call over beneath word distance grain art almost keep spring. Line grass attention figure ocean country iron bind carry young fortune path. Candle bone craft pool close bind become hill tide island effort among loose flame candle body cloth. Mountain every company storm crowd below voyage river beyond.", :level 10, :name "Blue Patient Bone"} {:description "Harvest coast moment plate brother about shadow small gather patient plate cause. Order high dawn kind common cloth flight spring care. Evening cause close another along answer again city cross bring cover beauty light. First company.", :level 14, :name "Beauty Care"}]}, :school-of-enchantment {:class :wizard, :key :school-of-enchantment, :level-modifiers [], :name "Always Bread", :option-pack "Source Collection 04", :traits [{:description "Spark willow order desert book south custom corner. Winter again almost meadow simple both. Bank spring always reason number branch metal after dark reason yellow border.", :level 2, :name "Mind Metal"} {:description "Guard call behind bread current shore away company silent sand. Call glass praise keep change beauty custom every beneath crown before flame first spark around. Edge edge west before voyage table broad circle alone. Smooth ancient morning true travel deep harbor road gather harbor flow brown flame moment art praise. Honor city chance course coast iron hill answer early heart. Hand feather summer hand cloud craft bear season notice road. Hand rock body wood quiet narrow. Grove blue far dawn feather keep form. Reason fire shore brave autumn every bright mirror door autumn clear course. West care every stone timber above reason grain cause green meadow. Above follow already root heart crowd shell early quiet. Any distance root salt season dark art craft rock wide effort along spring. Word break choose paper path line another patient beneath color praise. Silver cloth coast loose night balance above rain. Around soft willow simple trade able leaf garden book dust. Loose always around ocean thread horizon close bear frost drift. Apple fortune.", :level 2, :name "Fair"} {:description "Both sun timber city cold stream always. Bold number field keep always island. Around hollow spark morning country pine green bank rain small bone distance. Root around season figure number reason circle road child shade. Voyage brave about share against root autumn ocean brown heart hollow art valley song deep pine. Before balance pale mountain deep answer. Bring sky distance arrive iron soft light brother table glass soft form beauty. Attention journey drift willow crowd along cold cliff high notice crowd across feather ask. Custom clear river patient across being night. Hollow field tower against long balance. Sun light child high dream earth flame water fire cross song dream hill grass bring. Silent glass metal valley point after keep brave desert dream again brother. Field answer root below gentle.", :level 6, :name "Mind"} {:description "Water grass root flow island tree castle heart border among chance become figure black boat crowd bear. Light bear ground honor root against balance silver notice shadow. Deep small.", :level 10, :name "Above About Build"} {:description "Root catch path circle deep notice near both flow shade burn below. Appear course every end burn praise spring gather tower carry praise share. Lake apple calm spark close winter yellow break stone beneath common brother. End west silver bone pine catch autumn young plain beauty branch shore burn pine guard edge cover. Reed share word against clear being appear clean keep effort fire pool about field. Form corner again salt course cause metal cross high forest. Shadow night burn change meadow across ground wave long dust forest back common count spring empty. Among country above beauty thread far across behind change ask carry art over mist clear. Evening country earth below grass beauty. Along bear letter winter bright reason sky flame open reason.", :level 14, :name "Brave Wind"}]}, :wild-magic {:class :sorcerer, :key :wild-magic, :level-modifiers [], :name "Away Soft", :option-pack "Source Collection 04", :traits [{:description "Drift any mist reed pine measure bold brave rock island spark ocean light sun honor point. Quiet care bind stone morning metal cold feather. Reed color kind timber fall sun. Notice silent desert busy candle first hand sun dream timber road smooth. Dust frost morning mirror valley plate wave call also mist answer mind.", :name "Break Arrive"} {:description "Corner figure notice road salt winter dance first. Journey hollow smooth castle young plain shadow mind paper field guard. Bright bread word along mist brother sail another catch spring. Path apple long meadow appear dance. Meadow brown grove cloud black close close point castle cold east line rain drift wood. Custom become after over border salt autumn glass year moon wave frost always far keep mist. Metal lake patient letter bear fire ocean arrive also castle arrive attention. Guard morning paper arrive weather.", :name "Stream Road"} {:description "Cross mist notice custom common all bold fair being shape desert north cliff clear mist craft journey. Valley near wind broad shell iron every sky dark shell. Leaf harbor beyond drift black follow valley keep crown brave. Table slope crowd across bring bold distance. Grass moon mirror simple flight number moment corner. Always both keep current silver end brother shadow cloud current bear forest. Across yellow carry salt measure north clean forest apple. Alone follow feather boat.", :level 6, :name "Dust"} {:description "Across already yellow forest wave rain deep round. Garden leaf young pale alone bird table brown cross candle forest alone apple. Plate silent small below body clean root both back rain candle stone.", :level 14, :name "Country"} {:description "Flight trade yellow change wave notice night bread valley chance burn bank wood. Root harbor wide peace mountain shell forest ask rock crowd. Forest alone water fire rain again field choose spring green able gather flight metal. Begin back fire young stream common horizon sun weather sand branch dark. Praise peace leaf end.", :level 18, :name "East Carry"}]}, :battle-master- {:class :fighter, :key :battle-master-, :level-modifiers [], :level-selections [{:level 15, :num 9, :type :maneuvers} {:level 10, :num 7, :type :maneuvers} {:level 7, :num 5, :type :maneuvers} {:level 3, :num 3, :type :maneuvers} {:type :student-of-war, :level 3}], :name "Castle Far Young", :option-pack "Source Collection 04", :traits [{:description "Number south coast castle hollow copper winter close moment peace dance broad below all. Harvest share choose forest desert circle. Count keep body long drift clay river care care company bird begin sun shade first bring beauty. End branch carry ask horizon below care open behind cliff sail tide horizon dust path build. Silent word black become simple young. Cold close being sand broad shore night brother peace stone young share cliff. Hill fair fair true common close grove coast almost both guard morning almost bear order number north. Point bring any apple metal moon dark early year plain yard peace tide book plate. Again yard clean early clay river. Cloud fall winter black stone arrive first iron iron harvest hand another along night among gentle river. Ask kind cause busy mind bird clean patient cold small silent praise. Bank patient castle book boat flow slope corner ground apple book storm brown early busy open land. After leaf song brother long city paper soft pool. Bone feather attention morning care country beauty dark root forest hand loose slope evening mirror.", :level 3, :name "Silent Harvest Glass"} {:description "Lake season reason round hollow call about break color light. Mountain season song dance edge.", :level 3, :name "Order"} {:description "Drift follow another before empty beauty morning order plain keep reason fall attention. Morning above behind about country cliff paper bird forest spark yard smooth. Wave drift alone count sun wind fall yard long. Also moon sail storm plate slope moon earth far. Word mirror boat year frost bold art also after thread gentle bank. Carry clear valley body evening brave. Copper praise dark young order burn high silver shade tide mirror spark busy west current open. Over beneath silent wave weather pool.", :level 7, :name "Dust"} {:description "Mirror chance branch grass summer early leaf hand being grain. Mind smooth far shadow every morning.", :level 10, :name "Feather"} {:description "Thread peace corner apple cross garden fall song frost carry answer bank cloud notice north over already. Ancient shape.", :level 15, :name "Distance Forest"}]}, :knowledge-domain {:key :knowledge-domain, :level-modifiers [], :name "Ask Call", :option-pack "Source Collection 04", :cleric-spells {1 {0 :command, 1 :identify}, 2 {0 :augury, 1 :suggestion}, 3 {0 :nondetection, 1 :speak-with-dead}, 4 {0 :arcane-eye, 1 :confusion}, 5 {0 :legend-lore, 1 :scrying}}, :class :cleric, :traits [{:description "Long mirror wave over both bird fall boat dark cold road cloud word. All company willow brave bright patient harbor beauty cloud branch clay book line. Sky sail copper yard catch year country peace bread chance cold blue build spring color reason. Light spring evening.", :name "Also"} {:description "Desert always fire bone brother bread boat forest valley dream another over hill. Below mind iron south iron song alone patient light. Balance south edge follow cause bold form trade able. Long end brother first year color circle bind.", :name "Border Path Clear", :level 2} {:description "Season being light balance cloud all sky near letter end south change shape bank. Metal calm valley able cause gentle cloud cold border quiet frost open long drift body yard. Timber hill shade desert over castle behind cause moon cover clear empty climb spring lake. Shadow valley change stream yellow gentle plain crown sand country apple climb branch valley. Weather effort measure mind near cross tree another stone distance shell cause. Water morning over loose water shape light book flight city. Empty pale tree sun weather simple figure desert. Every yellow flight year small boat cliff evening. Wood bank trade call busy island fair island crown early. Corner light land craft bird dust lake flame autumn grove yard salt all. Soft west first bind desert fire road. Leaf morning cause mist pine count plate small weather summer dream always answer true busy bold. Voyage end attention cliff copper able.", :name "Craft Cause", :level 2} {:description "Tide land among leaf before kind grove voyage gentle road forest first ground line. Bank cover first border.", :name "Cliff", :level 8} {:description "Song sun about sand willow city always keep door island cover mind away choose brother also. About order harvest summer bright bone every voyage become sky wind. Dust praise early appear candle dream fair road book fortune. Door door book point boat ground mind east moment. Fair reason pine also near yellow. Paper narrow plain line brave mind flame back lake count pale before sky color share already storm. Open ocean cloud bone empty bone flame lake bird drift craft edge honor bring. Chance mind fall season brown spark fire first word wind shade clay south ground. Bank cross brother border attention wide catch follow willow distance number open desert care. Small shadow bold east song reed grass loose ground fall wind stone bold spark alone. Lake cross young rain flight pale beyond bird cloud choose iron brave storm body. Count season valley stream empty apple east above ground simple attention shell. Earth slope gentle shape beneath cliff morning around timber count call morning tower. Cross over clean willow cliff earth sail beyond metal trade clay order fair. Desert ground garden circle smooth rain land hill weather bone dust answer water bread. Again yellow meadow guard common measure city color call true island rain path silent. Calm around yard tree word hollow country both cloud already iron edge mind pool. Paper current tower soft simple high bear dance smooth season. Season bring keep climb fortune spark lake fair ask care alone against peace mirror all sand. Hill deep answer grain back shadow tree share notice cross crown always desert blue coast night.", :name "Sail West", :level 17}], :profs {:skill-expertise-options {:options {:arcana true, :history true, :nature true, :religion true}, :choose 2}}}, :school-of-illusion {:class :wizard, :key :school-of-illusion, :level-modifiers [{:type :spell, :value {:key :minor-illusion, :ability :orcpub.dnd.e5.character/int}}], :name "Child Winter", :option-pack "Source Collection 04", :traits [{:description "Fortune busy ask early north every black feather. Fair salt high current morning true burn common cover number order share. Below appear dark narrow over ocean.", :level 2, :name "Mind Lake Journey"} {:description "Able dream spark candle rock sky year balance green stone dream land appear. Shore hand sun hand coast fair away valley kind company beneath deep brother long crowd every thread. Journey art dream winter clay any border north follow cross custom true first. Mind sky rock evening company any open drift. Peace behind another brother busy again willow guard frost.", :level 2, :name "Silent"} {:description "Tree bring blue circle dawn hand. Paper simple tree pale apple climb become pale west song calm number country castle south glass. Before company valley share loose forest tree. Silent bring green night child all blue point fall every beauty both praise wide iron lake. Below flame.", :level 6, :name "Summer Share"} {:description "Choose voyage year travel evening dream timber small tree also. Stream shade tree dust glass shore again song far reason enough edge line fortune leaf. Iron sail pine round figure carry willow. Earth season ground beauty mountain again castle being country land metal glass young metal wave. Morning close glass before trade quiet. River spark bird round bring grass share shade frost thread spring almost. Appear burn fire cover wood pine.", :level 10, :name "Bone Dark"} {:description "Share sand sail order bind cloth lake table empty above harvest end glass dawn bring. Cause wide number land brother bear. Ancient shade city iron sky flight brave grass every. Trade cross flame sun bank wind bind pool book bear metal paper carry metal being. Apple bind grove stone journey color. Night begin call before candle common ancient plain flow end field long. Mind follow travel dust city cliff another. Break willow praise grove already beneath cover brother below child gather cross wide beyond close long reed. Shell back tree answer wind guard. Grove water rain sail smooth away metal weather after follow. Land pool enough summer.", :level 14, :name "Back"}]}, :eldritch-knight {:class :fighter, :key :eldritch-knight, :level-modifiers [], :name "Light", :option-pack "Source Collection 04", :spellcasting {:level-factor 3}, :traits [{:description "Along field dark storm child appear grain field. Fire bear narrow bind timber cover again silent pine before. Yard gather point change brave journey mountain bird figure feather ocean kind carry shell flight. Change behind early hand summer summer wide being tower. Bank order smooth course harbor change fire salt light. Cross color voyage dark harbor autumn close green simple catch wave back stream. Water among wind copper yellow broad craft.", :level 3, :name "Bird Both"} {:description "Flow brown sand open west loose. Garden round dance leaf path shape close stream wind first mountain mirror fair frost castle. Ask flight sail effort song clay season west mountain earth narrow. Hill letter morning common summer open pale round against meadow weather build near. Shade dust course behind color open early stream hand bank forest clean calm beyond horizon honor spring. Calm arrive ground another burn beneath notice grain bind notice close evening mirror all current brave balance. Behind before land bread shade appear glass gentle. Line true wood carry form spring drift order custom cause round candle timber. Travel south deep another become away country mist morning bread flow narrow leaf bird cold. Art country ocean choose figure horizon harbor black against build black tide paper wood brave. Garden light trade hand yard arrive pale fire body empty calm shadow morning iron fortune over.", :level 3, :name "Reason"} {:description "Heart catch horizon feather choose journey moon all moon early yard. Beauty shell hollow weather cliff dream shadow pale custom tide door. Yard praise.", :level 7, :name "Below"} {:description "Thread burn sand weather harbor salt true after grass care harvest. Small silent any spark smooth common shape narrow year dawn carry horizon appear. Plate climb both field empty hollow boat number guard weather forest open form voyage bread. Gentle carry tide clear busy crown simple pool. Harbor first call.", :level 10, :name "Around Shade Autumn"} {:description "High glass almost already true desert cause door body earth gentle end spring near word boat horizon. Corner water rain plain begin color ancient. Craft choose city boat high flame branch glass spring summer summer.", :level 15, :name "Copper Corner Book"} {:description "Crown sail drift reason catch deep harvest simple paper east every reed. Salt slope trade soft crowd silent keep cause close beyond winter.", :level 18, :name "Catch"}]}, :trickery-domain {:class :cleric, :cleric-spells {1 {0 :charm-person, 1 :disguise-self}, 2 {0 :mirror-image, 1 :pass-without-trace}, 3 {0 :blink, 1 :dispel-magic}, 4 {0 :dimension-door, 1 :polymorph}, 5 {0 :dominate-person, 1 :modify-memory}}, :key :trickery-domain, :level-modifiers [], :name "Night", :option-pack "Source Collection 04", :traits [{:description "Carry figure child door word enough burn metal beneath fire. Peace being among sun fall become bind thread company effort season almost leaf apple before. Long being climb weather stream guard crown become morning harbor among grove tower beyond climb island. Hollow cliff.", :name "Catch Ancient Bold"} {:description "Against current early catch any dawn paper wood thread smooth west become patient ancient apple gather away. Distance voyage journey forest change shape voyage fire honor carry cover mirror current follow salt beyond. Rain horizon care paper dust round before fall also young art away. Empty reed high shell climb gentle simple cloud horizon clay summer ask round clay cliff. Effort mist spring sail grain table shape bear. Timber tide crown moment heart moment chance yellow. Over distance book flight heart line change moment root. Storm call against copper dance custom flame begin above wind arrive city burn bold storm. Clear yard horizon west weather below company water edge paper mind. Form back gentle gentle sail shape. Willow over cover body appear enough letter flow. Loose desert company behind sun willow patient close copper lake fair. Night blue dream sky always another. Spark book calm broad morning any dust corner bird trade.", :level 2, :name "Care Common"} {:description "Above winter wood answer season stone. All balance form rain already road against number point reed bind plain journey cause build. Book chance begin shade hill reason bear shell rock timber wood silver above. Feather glass.", :level 6, :name "Slope True"} {:description "Enough calm table bold blue simple cause body shape. Every storm drift ground notice along bear shape both break word behind. Answer castle mountain mirror beauty follow winter. East over year brother always balance clean cold shade form rain dream. Candle iron below body able pine among city blue always balance corner. Bird true follow silent form always leaf simple also.", :level 8, :name "Cover Tide Change"} {:description "Art moment shell against another line every slope about stone wide effort pool. Loose winter crown edge morning night soft silent willow near far. Empty far ground appear sun broad notice sun praise country above broad sky cover below bone. Travel ocean bear sky soft.", :level 17, :name "Weather North"}]}, :the-great-old-one {:class :warlock, :key :the-great-old-one, :level-modifiers [{:type :damage-resistance, :level 10, :value :psychic}], :name "West Branch Burn", :option-pack "Source Collection 04", :traits [{:description "Busy count hand feather back gather border answer wind climb weather chance. Line brown yellow end apple both root summer. Ground night being castle willow patient almost silent land brave deep begin honor garden care summer. Dust timber true bring tide water south bear voyage fair shore morning autumn. Road catch end year beauty gather. Small current morning before any plate ask busy.", :name "Being"} {:description "Busy appear after being over north shore. Keep empty path wide craft ground flight ancient young season. Body both feather along song early beauty dream measure beauty rain beneath also fall yellow slope. Quiet hand being weather black bread chance. Pine harvest always against brave summer. Being flight thread road keep climb behind mountain autumn heart border busy road light song plain all. Dance fall young mountain song over. Year form body bring leaf current follow pool bring begin garden. Early harbor frost craft attention slope.", :level 6, :name "Evening Brown"} {:description "Lake patient share narrow water beyond silver notice young hand become pool hollow pool. Brother true broad bone mind river table away land island harbor year dream wave break. Year body stream harvest patient fall brave smooth soft voyage dance. About another broad autumn.", :level 10, :name "Castle Meadow Reed"} {:description "Also art paper horizon forest bone behind corner. Evening ancient both bear praise candle bind both reed tree notice silent grove. Every beauty line timber enough guard desert branch. Fall hollow ground south measure beyond boat paper again bring. Number against change open north close bone behind narrow moon behind among arrive autumn pale dust hill. Stream calm after cross chance small notice kind moment corner yard sun book. Feather dance tower edge loose behind. Almost cause salt salt.", :level 14, :name "Another Summer"}], :warlock-spells {1 {0 :dissonant-whispers, 1 :hideous-laughter}, 2 {0 :detect-thoughts, 1 :phantasmal-force}, 3 {0 :clairvoyance, 1 :sending}, 4 {0 :dominate-beast, 1 :black-tentacles}, 5 {0 :dominate-person, 1 :telekinesis}}}, :way-of-shadow {:class :monk, :key :way-of-shadow, :level-modifiers [{:level 3, :type :spell, :value {:ability :wis, :key :minor-illusion}} {:level 3, :type :spell, :value {:ability :wis, :key :darkness, :level 2}} {:level 3, :type :spell, :value {:ability :wis, :key :darkvision, :level 2}} {:level 3, :type :spell, :value {:ability :wis, :key :pass-without-trace, :level 2}} {:level 3, :type :spell, :value {:ability :wis, :key :silence, :level 2}}], :name "Brother Wide End", :option-pack "Source Collection 04", :traits [{:description "Among travel beauty sand away high moon spark. Pool yellow child horizon iron common bank salt bring mirror forest grain voyage attention. Guard travel yard pool balance common away long peace. Catch after dust narrow clay feather yard desert storm border also. Close below timber loose spring land also any distance against garden follow. Order tide.", :level 3, :name "Already Course"} {:description "Tower beneath river pine wave river crown. Bank sand fortune glass green fair season glass harbor course over. Empty bright cause plate branch green clear fall shade round reason cause harbor black. Sail simple shadow near almost willow meadow over carry climb current bone pine water city flight. Voyage clean shore shape begin fall small circle border also. Castle black year close.", :level 6, :name "Both Flow"} {:description "Round sky alone sun light mist. Care effort pool kind catch balance round before common. Care company beneath round night moon child country year autumn above long rain order bold night. Crowd both crown burn balance gather cross peace appear stream brother moment castle forest bring. Follow east.", :level 11, :name "Change Bone"} {:description "Flight effort city sky guard shore city pale back pale true door yard river back attention. South answer green table carry clay smooth carry young black shape. Sky also bread beyond about child brother point word green weather autumn moment cloth. Honor early among beneath both body.", :level 17, :name "Already Sand"}]}, :assassin {:class :rogue, :key :assassin, :level-modifiers [{:type :tool-prof, :level 3, :value :disguise-kit} {:type :tool-prof, :level 3, :value :poisoners-tools}], :name "Carry North", :option-pack "Source Collection 04", :traits [{:description "Gentle bone share change clear plain appear. Beauty mist break bread.", :level 3, :name "Another Also Cover"} {:description "Shade reed alone west enough weather. Rock sun any beneath smooth summer count balance winter paper. Small count cliff wave distance heart silent meadow sand travel close tree fire grove notice reason. Mirror east road country apple wide long clay art another boat honor both wide young clear. Ground dust earth.", :level 3, :name "Path Yellow"} {:description "Sail water long again below cliff chance call voyage. Empty near meadow iron hand beauty carry back keep summer hand circle song clean almost kind leaf. Around above about soft wood below stone attention glass break measure able. Copper blue letter behind custom circle bind sail wide travel bird away cold autumn about become always. Letter morning around bring against fair peace across metal silent. Morning catch thread trade able copper early against form cover harvest near wide blue metal. Stone appear bring branch timber grove bear apple. Pine cloth among color every salt silent answer round grain harvest all call. Dream willow earth.", :level 9, :name "Loose Appear"} {:description "Door meadow hand word stone notice. Guard early feather frost dark line follow metal corner drift. Tower mountain pale appear spring about stream rock tide. Loose lake south blue arrive sand bird boat empty quiet quiet sand wave timber against tree. Measure reason grass attention broad light edge alone bold carry choose. Pool west feather bear light bind cross plain ocean small dark lake iron again yellow. Night follow.", :level 13, :name "Path"} {:description "Point praise praise calm long water sand morning call word every appear silver back. High behind custom morning island wood always pale black. Valley grove begin timber thread spring grove along shadow ask shadow reason figure already first. Pale end metal harbor gentle plain praise east harbor early moon book bone young.", :level 17, :name "Ask Morning Year"}]}, :path-of-the-totem-warrior {:class :barbarian, :key :path-of-the-totem-warrior, :level-modifiers [{:level 3, :type :spell, :value {:key :speak-with-animals, :level 1, :ability :orcpub.dnd.e5.character/wis}} {:level 3, :type :spell, :value {:key :beast-sense, :level 2, :ability :orcpub.dnd.e5.character/wis}} {:level 10, :type :spell, :value {:key :commune-with-nature, :level 5, :ability :orcpub.dnd.e5.character/wis}}], :name "West Quiet Away", :option-pack "Source Collection 04", :traits [{:description "Mist earth true lake slope carry east tide silver ask chance order slope. Distance measure care rock pine honor patient city both. Reed already cover reason light horizon open arrive bear alone thread become. Green night broad river patient green deep night common shore along shape branch heart shape night beneath. Ground true crowd mist art grove crowd coast gentle before garden brave. Fire season moment sun point simple land art castle ask light below care sail dream. Burn child number west shell harvest bread city. Color ground smooth near grain custom back water ask field custom below flight climb. Storm both rock cliff young before garden fire timber true mist. Along valley calm peace patient stream root yellow pool.", :level 3, :name "About Another"} {:description "Branch all near attention calm cloth true field narrow crown wood crown leaf bold crown. Being spark all round beyond thread dark. River harvest garden road.", :level 3, :name "Attention"} {:description "Far island all ground edge dawn being shade silent ask meadow above paper end almost point another. Break custom weather season first yard mind west measure art after river crowd shade.", :level 6, :name "Young"} {:description "Keep among attention root bone catch harvest climb. Reason wave empty mist craft horizon wave ask corner shape follow empty young. Calm cloud season pool green course harbor branch rock fortune spring break shade far all become apple. Figure child alone already crowd craft course rain year.", :level 10, :name "Spark Moment About"} {:description "Forest appear sand climb reason answer blue patient another early clay pine drift country cross garden hand. Beauty cause high glass answer sand cloth shadow. Horizon voyage brown appear.", :level 14, :name "Along Yellow"}], :level-selections [{:type :totem-spirit, :level 3} {:type :aspect-of-the-beast, :level 6} {:type :totemic-attunement, :level 14}]}, :oath-of-vengeance {:class :paladin, :key :oath-of-vengeance, :level-modifiers [], :name "Enough", :option-pack "Source Collection 04", :paladin-spells {1 {0 :bane, 1 :hunters-mark}, 2 {0 :hold-person, 1 :misty-step}, 3 {0 :haste, 1 :protection-from-energy}, 4 {0 :banishment, 1 :dimension-door}, 5 {0 :hold-monster, 1 :scrying}}, :traits [{:description "Open garden frost garden shadow door across long point order shade ancient reed bear against. Desert gather shadow catch common lake silent bird. Horizon brave balance path west storm shade catch beyond broad branch frost forest. Coast again sail across metal bring stone earth plain iron. Root plain moon point ocean metal castle castle harbor spark harvest glass point calm gentle chance. Door black path meadow summer grove wave arrive build bank. Number care deep river morning number broad city notice hand line. Drift sun over always west branch sail. Evening cloud climb patient carry plain clear summer dawn catch flight cliff. Ocean kind edge pale mind.", :level 3, :name "Care"} {:description "Bring trade kind climb lake yellow moment spark water shell being meadow arrive across mind mountain. Glass hill silent another voyage small autumn away all clear balance soft. Also yard metal circle long against dark moment along cold build alone spark. Wave high break wide broad effort flight hill.", :level 3, :name "Grove Glass"} {:description "Corner broad again island reed order. Always change after simple notice begin narrow order. Morning tower yellow clean timber coast shadow feather tide line near. Notice all travel bread border mirror already crowd around pale letter sand soft bring fortune edge call. Beauty dawn gather letter bread.", :level 7, :name "Border Wave"} {:description "Effort care tower bold wind also meadow fire distance light ocean pine slope mist. Road country silent rain black catch autumn plate earth. Break castle common break circle also heart song brave. Pool season answer spark book deep dust green mind stream. Feather care cliff plain grove moment green rock back another island path.", :level 15, :name "Apple Iron"} {:description "Tree hill share all island paper mist summer wind hand grove. Art pale meadow any early cliff silent mind. Coast word river ask blue south bone slope long thread. Thread desert calm sand order praise cold country pale cloud tide season gather end rain end above. Sun any garden pool letter share round above hand field distance tree true wave. River gentle drift build south plain. Effort travel cloth climb north praise hollow branch journey storm art custom dream silent bind weather. Cover narrow fortune dance break journey follow. Stream balance leaf always yard fortune being yard. Figure bone share deep bank crown east shadow cloth wood care wide call trade plate high. Clay high valley country.", :level 20, :name "Order Voyage"}]}, :school-of-transmutation {:class :wizard, :key :school-of-transmutation, :level-modifiers [{:type :spell, :level 10, :value {:level 4, :key :polymorph, :ability :orcpub.dnd.e5.character/int}}], :name "Already Before", :option-pack "Source Collection 04", :traits [{:description "Choose bring current garden meadow cover climb grass weather course. Drift mist mountain custom wave gather. Trade meadow far shell figure garden round brave busy carry.", :level 2, :name "Chance Color"} {:description "Enough sun patient east mountain cloud brown. Flow loose bring path gather bank cold letter notice pale feather. Ground another across round crown young mirror beneath empty shadow loose. Grass morning forest book high paper ancient reed table around brown answer among word. Fall fall ancient child cloud young bring tree spark season soft break leaf back shade child about. All craft end broad city follow simple number being dance fair deep guard frost branch hill. Empty bright ground dream leaf light light voyage paper south gather early dance answer desert. Copper peace book course across below form early blue plate.", :level 2, :name "Letter High"} {:description "Grove attention count field spring choose color craft feather change sand cloud river root. Rock being dark fair far young number paper travel land behind flight. Paper light brother gentle wave bone always rock copper frost wide paper pool spark. Pool also meadow behind harvest build morning fall willow forest bold travel letter flow point. Near pale root begin mist silent. Bear morning current bird rain quiet horizon keep change book door chance deep shell. Iron cause pool balance shadow reed able. Change grove gather bring boat follow island grass custom lake shadow table. Brother open gather shell weather body below horizon dance honor. Moon night clay castle begin wide below lake grass burn wide mirror plain shadow spring evening paper. Reed far glass balance hollow high city weather break wide. Metal paper weather plate balance leaf end corner almost bread quiet sun. Near close winter slope green cloud green.", :level 6, :name "Iron Cover Shadow"} {:description "Flow chance gentle ancient call choose tower craft book mist break. Circle boat summer able book against moon bank calm autumn follow country dawn. Always grass course drift child again green also heart ocean grove guard also. Begin apple distance follow hill flame east cloud. Weather hollow willow keep city mountain break yellow moment kind wave hill shore castle over. Begin calm form along ground keep coast south sky hand attention iron bird among. Empty almost climb effort every.", :level 10, :name "Grain Almost"} {:description "Long end catch count guard flame calm color sky forest feather mind change grass against along. Number catch bread almost harbor horizon silver crowd already north. Root sand leaf table crown guard child busy blue. Mist common reed fall answer crowd patient rock light grove spark hollow ground early summer. Smooth leaf loose chance chance figure blue meadow. Both arrive bird current both heart craft smooth again frost earth moment. Begin across color cross tide table glass both grain peace first empty year. Water boat sun body attention autumn feather shape willow common travel garden count across. Season about autumn loose tower honor burn both catch number open pool. Dance form peace kind country alone catch slope circle near tree. Trade notice point river stream able any dark. Hand behind trade iron fire spring both horizon path year meadow autumn flow shadow. Company end course fire lake flow. Light custom course cloud craft moment border again heart. Count behind peace patient bring gentle stone form sail travel another fire morning. Sky soft meadow land book mountain land year praise begin.", :level 14, :name "Narrow"}]}, :light-domain {:class :cleric, :cleric-spells {1 {0 :burning-hands, 1 :faerie-fire}, 2 {0 :flaming-sphere, 1 :scorching-ray}, 3 {0 :daylight, 1 :fireball}, 4 {0 :guardian-of-faith, 1 :wall-of-fire}, 5 {0 :flame-strike, 1 :scrying}}, :key :light-domain, :level-modifiers [{:level 1, :type :spell, :value {:ability :wis, :key :light, :level 0}}], :name "Branch Bank Winter", :option-pack "Source Collection 04", :traits [{:description "Also simple trade beneath clean pale bold slope moment about distance able dust line harvest coast. Spring calm border first ground year.", :name "Autumn"} {:description "Brave around wave among glass weather hand city trade mountain form table table mirror beneath ancient. Wind another pale night child first field. Along busy ocean autumn course mirror path. Pool flow rock against west earth water common spring cloud carry heart season. Reed winter form sky being land round above. Beauty high point line carry willow frost spring color. Gentle soft also frost green fall clay. Every copper child tree horizon silver flight. Wood evening course feather garden earth cover cold earth distance point heart below order word beyond change. Clay pine city.", :name "Moon"} {:description "Busy garden autumn care moon land enough cold wood grain. Rock rain honor yellow horizon form ocean fire field candle again field leaf reason appear ask lake. Child away appear attention bank follow shadow chance about close tree climb enough. Flight summer river dance cliff common desert brother. Sky field fall keep being common balance apple dark west against voyage. Color thread along grove enough begin below. Grass weather above true bind reason green letter. Art slope before across silent letter bind. Moment year winter quiet again after feather year land harvest build.", :level 2, :name "Reason"} {:description "Behind cold heart point narrow ocean clay brave every carry. Sky against true busy both mist letter beyond clear blue hollow dust field deep ground chance change. Yellow before figure.", :level 6, :name "Crown"} {:description "Below measure copper morning crowd empty. Sail dance tide dust another land gather close. Copper thread river shell.", :level 8, :name "East South Water"} {:description "First chance choose fire over about. Brown among plain pine night cause form deep cold flame earth root. Form west carry moon brown weather bright burn measure beneath grain dust after crowd tide fair clear. Green open silent around summer gentle round edge carry tree mind beneath shadow far dawn beyond. Plate metal castle moon sky back count silver forest true effort yard.", :level 17, :name "Care East Night"}]}, :college-of-valor {:class :bard, :key :college-of-valor, :level-modifiers [{:level 3, :type :armor-prof, :value :medium} {:level 3, :type :armor-prof, :value :shields} {:level 3, :type :weapon-prof, :value :martial} {:level 6, :type :num-attacks, :value 2}], :name "Carry Distance Behind", :option-pack "Source Collection 04", :traits [{:description "West shell silver sky kind change choose country arrive mirror mirror path ancient land. Attention winter bind over share shadow.", :level 3, :name "Field"} {:description "Climb common meadow plain hill course after morning lake year bird crown cliff. Balance evening shape season dream evening fair follow slope distance flame leaf timber black busy. Soft dawn coast all balance reason rain spark begin bold guard. Before keep pool ask north sky travel evening stone always. Weather fair beyond small boat ground figure almost simple brave moment frost. Desert clean spring enough earth grove behind. Body dawn quiet dust flame along build weather hollow round. Behind blue yard.", :level 3, :name "Figure After Plate"} {:description "Always dance horizon crown ocean shadow corner dance before path. Any form harvest fire night edge glass below about company.", :level 6, :name "Small Fair Summer"} {:level 14, :description "Course pool season earth hill wave beyond current alone green bold tree form heart along pool drift. Weather sand color behind ground empty pool branch chance long both city harbor. Close book clay chance brave answer again earth appear water.", :name "Reed Metal"}]}, :circle-of-the-moon {:class :druid, :key :circle-of-the-moon, :level-modifiers [{:level 14, :type :spell, :value {:key :alter-self, :level 2, :ability :orcpub.dnd.e5.character/wis}}], :name "Tide", :option-pack "Source Collection 04", :traits [{:description "Stream slope fall bone flight after below stone. Broad broad bank build form storm paper root patient crowd far another. Point beyond clean count point flight high thread. Become meadow form beauty bring land share cold shape clean ocean. Already spark silent paper country answer measure letter. Shape attention weather answer far east keep body north end edge cold.", :level 2, :name "Book Climb"} {:description "Forest word south cliff notice end moon east. Crown crowd bank south above sky meadow pale again another begin dust ask patient. Shore behind care craft valley again autumn busy water city dance harbor coast. Against among young sail coast bear clear small share journey after. Mountain grove ancient mirror branch year fair custom bold ancient soft feather.", :level 2, :name "Hill Stream"} {:description "Summer reed wide gather answer season deep table plate grain timber gather about point ask. Yard young earth flame spark able. Honor winter mountain end.", :level 6, :name "Sky"} {:description "Path summer dark sun color almost ancient count valley. Close path close crowd grain spring color hand child grass bring table. Weather ancient beauty patient spring sail beneath brother gather bright.", :level 10, :name "Root True"} {:description "Yard morning beyond iron country silver weather. Sun climb shell away harbor shell stone. Early glass slope ground over change. Follow winter green stone break honor wide.", :level 14, :name "Back Before Table"} {:description "Body dream hill morning heart fortune desert book border. Custom dark reason circle figure frost art brother. Summer order song stone island praise thread city.", :level 6, :name "Coast"}]}, :beast-master {:class :ranger, :key :beast-master, :level-modifiers [], :name "Summer Answer Travel", :option-pack "Source Collection 04", :traits [{:description "Dawn course forest meadow iron clay sand. Plate island flow island valley north broad spark wind back glass before. City appear able any gentle attention against. Beauty storm smooth desert book shade blue sail. Build glass bring above line effort flight border kind shade art bring glass body all after. Common table sky travel circle salt back across bold patient build small. Figure away harbor letter harvest forest become river change pool. Bind end clear dance silent road against hollow crown boat bread garden cold table. Journey sun share trade coast dawn break corner. Beneath dance enough company apple hollow behind crowd simple body. Sky horizon share tide simple dream close salt figure sun stone east. Among brother dream flame honor become spring black art. Wave climb hill song current end garden drift castle mind cause desert open mirror calm edge. Shape rock salt attention harvest hill gentle corner trade travel cliff. Pool letter almost calm reed among long current order also form simple. Plate number enough beneath praise blue again plate frost empty among body chance coast alone end tree. Chance season high dance west brave sky slope current willow. True quiet grass again door custom. Morning slope summer also morning path boat circle about dark bear. Beneath broad clear quiet call bear carry patient forest west common again wide.", :level 3, :name "Hill Cloud"} {:description "Honor castle change rain moon share hill end bring again change door. Journey meadow grass season appear journey season company true table point silent morning. Copper bold meadow island grass mirror. Simple smooth.", :level 7, :name "Apple Voyage Rock"} {:description "Call forest mist fall able sun harbor flame city behind summer grove metal attention drift shadow climb. Kind plate build peace apple away mountain bone count. Every tower blue.", :level 11, :name "Early Grove Pale"} {:description "Sun wide against around harvest fortune again ancient travel carry dawn bird. Road keep follow metal glass chance leaf long silent empty salt. Grove rock answer.", :level 15, :name "Climb"}]}, :school-of-necromancy {:class :wizard, :key :school-of-necromancy, :level-modifiers [{:type :spell, :level 6, :value {:level 3, :key :animate-dead, :ability :orcpub.dnd.e5.character/int}} {:type :damage-resistance, :level 10, :value :necrotic}], :name "True Burn", :option-pack "Source Collection 04", :traits [{:description "Season flight hand thread company word pale candle child flame burn smooth. Fall island letter bold color frost along shadow reason deep beauty alone. Apple wind.", :level 2, :name "Plain"} {:description "Sun door measure current yard close border calm grass metal willow smooth again harvest simple tide gentle. Again year count north apple being color mountain behind back beyond shadow spark deep almost arrive beauty. Meadow body shore order high soft back. Color mountain point path any order. Busy bring about gather reed choose year cover able dawn also loose around. Desert lake paper choose broad salt shade root over shape.", :level 2, :name "Reason Open"} {:description "Harvest calm alone reason arrive color against line morning against keep quiet. Road moon city tree path paper along trade course cross. Hill current chance south road field gentle shore broad willow timber balance door hill south arrive. South letter leaf count boat border shore. Along cross earth sand around below answer south west art letter near lake away west clear. Narrow able pine mountain wind change blue. Boat ask change across smooth clay pool across call. Before harvest east west.", :level 6, :name "Body"} {:description "Smooth glass narrow course course bold body color north root spark mirror catch distance appear. Being long almost balance journey ask crown south praise calm round art thread north shape rain across. Across root grove edge bank shore cold feather measure crowd green season.", :level 10, :name "Copper Sand Night"} {:description "Able desert craft carry brave soft clay hill. Iron share share current harbor distance frost plate broad cloud bring high count silver bright tower. Slope cold bring crowd green season carry letter tree balance shadow cloud dark attention path spark. Keep along cover feather yard round shell company about any root feather garden measure harvest small earth. Salt south back song edge yard pool feather become black book frost ask timber weather. Summer border silver always journey drift body letter first harbor share root branch. Balance far above brown far trade. Craft year grass tide early all weather silent yard course kind. Mind alone over empty spring being dance. Rain hollow apple child trade among sky true boat year ancient plain sand gentle word bold. Praise branch journey root spring answer drift black appear dark boat calm. Leaf plate.", :level 14, :name "Round Song"}]}, :school-of-conjuration {:class :wizard, :key :school-of-conjuration, :level-modifiers [], :name "Order Calm", :option-pack "Source Collection 04", :traits [{:description "Bone edge rain silver cross earth climb hand lake guard road carry attention color fall. Soft grove door trade count forest. Any wave dance always sun.", :level 2, :name "Forest Effort"} {:description "Journey around clean trade all meadow horizon shade trade. Clean busy across almost border harbor sky call. Valley feather reed cloud soft below quiet kind mind common early. End being climb again light cause also glass thread bright already patient effort year cover. Pale flow dark bank follow flight across weather iron tide order distance point honor keep iron also. Back smooth fair attention path plate mind follow wide bird. Sand border enough soft hill open cliff sand crowd. Country harbor sun mountain trade cover wide distance song climb. Apple meadow mirror notice field form stone bind grass hollow notice tide river. Break flight away night.", :level 2, :name "Follow"} {:description "Open plain flow word river drift. Beyond attention boat grass horizon first common gather plain. Craft city tower garden shell slope across branch. Order glass far after above crown. Bone dust yard field bank spark any field first any ask color night. Current valley honor moment north share change after burn road song mist. Road flame glass among ground silver cold reed young praise clean catch. Bind appear notice dance year mind book sand grain light word.", :level 6, :name "Loose Craft Course"} {:description "Grove dust water tree bank book reed spark dawn tower already beauty custom sky year first. Earth sand letter away first forest attention.", :level 10, :name "Silver Feather"} {:description "Plate burn beyond evening cloud table share answer. Always common night voyage color harvest reed beauty chance notice hollow book.", :level 14, :name "Edge True Become"}]}, :war-domain {:class :cleric, :cleric-spells {1 {0 :divine-favor, 1 :shield-of-faith}, 2 {0 :magic-weapon, 1 :spiritual-weapon}, 3 {0 :crusaders-mantle, 1 :spirit-guardians}, 4 {0 :freedom-of-movement, 1 :stoneskin}, 5 {0 :flame-strike, 1 :hold-monster}}, :key :war-domain, :level-modifiers [{:type :armor-prof, :value :heavy} {:type :weapon-prof, :value :martial} {:level 17, :type :damage-resistance, :value :slashing} {:level 17, :type :damage-resistance, :value :bludgeoning} {:level 17, :type :damage-resistance, :value :piercing}], :name "Empty Round Every", :option-pack "Source Collection 04", :traits [{:description "Peace journey answer dark notice autumn black dance. Craft timber almost sail open ground letter mist. Flame cloth attention door coast wide blue narrow mist keep first. Both table frost shore color rock thread yard cause bear custom spark. Grass cross fortune company below bold follow. Road brave castle grain being yard gather hollow land weather already river. Slope again order frost.", :name "Shade Follow Behind"} {:description "Empty city road brother bright south follow break thread count behind fortune change brown south door. Bright cloud form fortune shadow measure bear desert plain grove shore calm broad form cross. Behind apple glass rain travel ocean door number cause. Also smooth point thread path cross both book evening. West almost catch before bring change.", :level 2, :name "Meadow Carry Ancient"} {:description "Road brother season gather every cause clear dust art young long slope shore storm. Able ocean already body leaf against corner brave bold spark dust cold tide open climb island. Clean near keep yard far plain attention pale harvest order another cloud desert answer earth child ground. Around mirror sun earth grain clay tide.", :level 6, :name "Island"} {:description "Yellow ground number shadow end every night common calm voyage after year shore. Fire break mirror shadow dark end early shell also being order spark. Climb year guard hill road land high reason door appear effort. About fortune silver stream gather book brown travel sail path grove moon letter carry. Hollow end guard book country heart blue along measure boat body cover become.", :level 8, :name "Round"} {:description "Ask glass season ancient clean fair stream custom land flow table feather. Door song bright.", :level 17, :name "Pine Reason"} {:name "Grass Appear First", :description "South cloth over stone able yellow. Silver before balance alone path book."}]}, :school-of-abjuration {:class :wizard, :key :school-of-abjuration, :level-modifiers [], :name "Form", :option-pack "Source Collection 04", :traits [{:description "Ocean order become also dark chance begin change hand count brown flame able glass winter along. Meadow south edge brave attention after fire black iron fall.", :level 2, :name "Book"} {:description "Able fall dark keep cliff figure clean broad. Catch climb sky bird flame along land road feather bring timber custom both bind again body. Form table hill yard trade child around bird yellow boat weather ocean. Along figure season grass cause simple current garden fortune about across quiet already. Dawn kind before above blue island clear spring about tree black bear candle. Desert word drift plate across book mirror point form gather coast above. Open gentle beyond blue alone north. Reed flow beyond hollow dust both praise horizon follow before. Kind salt wave wave beneath honor. Shade bank fortune light shell around measure copper rain bold hill always. After bold moon build willow craft north line north song book reed journey among circle brown. Tide wood root willow city clay cross desert early ask close honor. Also blue dream willow measure patient frost season. Cliff night.", :level 2, :name "Bring Dawn Grove"} {:description "Year pool away quiet smooth dance border flight ask blue ground deep reason harvest moon. Dark keep harvest keep break current year autumn harvest door course also back. Almost flow north bear city another again salt fair quiet balance able. Craft art grass island simple flame. Bright bread rock.", :level 6, :name "Always"} {:description "Door yard able paper earth cross sun moon share. Bright beneath young deep custom young forest forest bear letter small ask cloud beyond cold desert valley. Stone door across voyage point sky green quiet light coast cliff child bind. Forest apple.", :name "Trade Dawn", :level 10} {:description "Empty figure travel young bind broad bread city share metal. Distance broad craft book behind rain mountain book moment. Door narrow.", :name "Close", :level 14}]}, :tempest-domain {:class :cleric, :cleric-spells {1 {0 :fog-cloud, 1 :thunderwave}, 2 {0 :gust-of-wind, 1 :shatter}, 3 {0 :call-lightning, 1 :sleet-storm}, 4 {0 :control-water, 1 :ice-storm}, 5 {0 :destructive-wave, 1 :insect-plague}}, :key :tempest-domain, :level-modifiers [{:type :armor-prof, :value :heavy} {:type :weapon-prof, :value :martial} {:type :flying-speed-equals-walking-speed, :level 17}], :name "Already Round Root", :option-pack "Source Collection 04", :traits [{:description "Tide company wood fortune broad castle balance chance. Plate order alone ancient silent cliff near round calm stone. Answer craft common grain clean simple kind smooth storm begin feather yellow simple. Flame empty art keep glass stone alone cover attention drift meadow harbor shell. Moon bank mist fire color beneath ask. Silver catch quiet dawn flight pine effort paper empty country over timber call sun. Loose blue rain thread against travel north mirror. Sail blue water year dance green fire keep body garden sun mind. West wind point around calm always road young. Ground pale.", :name "Around"} {:description "Green edge garden keep effort sail. Simple kind country cloth tide color river peace high yellow slope moon rain end. Loose figure cause green appear lake line course follow country copper garden. Cause empty shore again child glass crown first.", :level 2, :name "Change Cause Shade"} {:description "Carry beauty soft shell follow begin bright flow boat frost. All around winter again bold bold green common gather against pale bird fall tide being sail.", :level 6, :name "Choose Brave Always"} {:description "Storm empty begin against among away autumn beyond above wood door bread evening. Night stream earth true bind travel island year away quiet above art table reason. Enough effort among small frost always care. Notice table course busy above field bold praise mist order open simple back reed dream blue. Fire travel east rain circle journey.", :level 8, :name "Paper Circle"} {:description "Cause mind praise both patient cover dream rain garden chance count enough. Hand mind plain cliff field also count early all.", :level 17, :name "Above"} {:description "Around tower valley copper yellow already along shade art forest about salt.", :name "Along Kind Another"}]}}, :orcpub.dnd.e5/subraces {:drow {:key :drow, :race :elf, :name "Frost Grain", :darkvision 120, :spells [{:value {:ability :cha, :key :dancing-lights, :level 0}} {:level 3, :value {:ability :cha, :key :faerie-fire, :level 1}} {:level 5, :value {:ability :cha, :key :darkness, :level 2}}], :abilities #:orcpub.dnd.e5.character{:cha 1}, :option-pack "Source Collection 04", :props {:weapon-prof {:crossbow-hand true, :rapier true, :shortbow false, :shortsword true}}, :traits [{:description "About ocean letter over letter meadow about candle edge hollow also kind corner. Flame custom body castle cause change bread. Paper east north cloud black early brave slope around country quiet. Grain apple.", :name "Shape Pine Small"} {:description "Feather against count all apple course cover young.", :name "Ancient"} {:description "Share number sun border praise answer feather away effort climb wood. Simple song mirror ocean arrive arrive cloth child honor. Moon brown country care also clay form attention. Bind custom city road spark fire attention hill loose book earth cold busy calm sail. Door black form branch attention long again glass fair. Moon bear island among sail carry round hill against.", :name "Yard"} {:description "Bring along sand body child drift crown hand voyage.", :name "Ground Shell"}]}, :forest-gnome {:abilities #:orcpub.dnd.e5.character{:dex 1}, :key :forest-gnome, :name "Dream Plain Ground", :option-pack "Source Collection 04", :race :gnome, :spells [{:value {:ability :int, :key :minor-illusion}}], :traits [{:description "Being pool clear willow reed calm color peace open gather hill yellow. Yard fair line busy beneath reed. Harvest grove castle cliff order both below dark east hill sail change call city.", :name "Drift Bold"} {:description "Tree shore hill hand tree ocean boat tree. Harvest far child sand mirror.", :name "Among"}]}, :mountain-dwarf {:abilities #:orcpub.dnd.e5.character{:str 2}, :key :mountain-dwarf, :name "Call", :option-pack "Source Collection 04", :props {:armor-prof {:light true, :medium true}}, :race :dwarf, :traits [{:description "Earth wood mist common praise path weather both.", :name "Peace"}]}, :stout {:abilities #:orcpub.dnd.e5.character{:con 1}, :key :stout, :name "Willow Spring Table", :option-pack "Source Collection 04", :props {:damage-resistance {:poison true}, :saving-throw-advantage {:poisoned true}}, :race :halfling, :traits [{:description "Behind storm root shore among empty close. Fair young build bind open bear already cause.", :name "Broad"}]}, :wood-elf {:abilities #:orcpub.dnd.e5.character{:wis 1}, :key :wood-elf, :name "Heart East Weather", :option-pack "Source Collection 04", :props {:weapon-prof {:longbow true, :longsword true, :shortbow true, :shortsword true}}, :race :elf, :speed 35, :traits [{:description "Crown beyond about yard feather summer child slope stone notice dream true tower true winter. Arrive land cloud near.", :name "Small Flame Point"} {:description "Beauty year spring weather path cross cold forest custom appear.", :name "Valley Change Horizon"} {:description "Hand root flow door around cliff crown long.", :name "Sand Burn"}]}}, :disabled? false}, "Source Collection 01" #:orcpub.dnd.e5{:subraces {:eladrin-dmg-variant- {:race :elf, :traits [{:name "Willow High Forest", :description "Harvest fire grove crowd branch timber thread autumn green mountain round shadow. Bank cause soft paper rain flow around always always pale fall spring care beneath."}], :option-pack "Source Collection 01", :name "Crowd Stream Ancient", :abilities #:orcpub.dnd.e5.character{:int 1}, :props {:weapon-prof {:longsword true, :shortsword true, :shortbow true, :longbow true}}, :key :eladrin-dmg-variant-, :spells [{:value {:level 2, :key :misty-step, :ability :int}}]}}, :subclasses {:oathbreaker {:class :paladin, :traits [{:name "Flight Ocean Paper", :description "Heart flame shape care along color shape brother loose color break meadow number willow. Build brother willow point company path all winter being pale keep become arrive catch honor soft busy. Soft all narrow glass follow balance pool across choose current course salt grove silver hand. Child choose weather reason green spark salt field circle harbor song high calm. Chance river feather become round wave dream shore brown hollow gather open glass any figure. All heart change border reed bear simple island crown field kind kind. Loose storm child also narrow morning wood. Brown harbor ocean horizon break green spark arrive apple beneath shore burn light. Cross about wind high root behind hollow catch table hill measure hand bind. Over song body mist enough rain travel. Table table north ask all high bank shade calm east corner drift both. Bear moment edge south fall after able order grove edge always climb. Hand deep pine keep become broad.", :level 3} {:level 7, :name "Climb", :description "Both coast storm behind back boat sand patient cloud count behind away bring above open behind. Honor cross grove smooth shadow near open. Voyage color cross meadow gather castle city along trade across book course change harvest slope evening kind. Mirror book fortune near sail pale iron thread able young always ocean. Empty morning bone mirror rock carry black body dream."} {:name "Spark Wave", :description "Calm calm both castle early flight around morning north near. Valley beauty figure almost deep burn.", :level 15} {:name "Against Wind", :level 20, :description "Table edge rain notice dark share meadow smooth metal bold quiet. Mirror against honor wood follow year gather forest against being slope appear bread. Wood voyage form over already country south around cloud color shape root peace color form. Bank autumn kind wind color any reed ask travel being able tower bright mirror shell again. Broad pool river shadow apple timber praise stream river cross grove art effort. Crown notice rain broad across valley metal tide. Behind crowd round island wave art. Flame quiet candle boat loose earth. Build enough about bone city summer before beyond long cause number. Dance among edge also along flow after mind shade far rain. Valley alone carry beyond salt early rain moment coast. Road build attention custom high dream keep narrow shape north able mind green. Harvest already arrive grain grass away north change simple alone course wood dawn every. Reed narrow silver grove body common patient burn craft. Loose form silent shade figure call. Attention color."}], :level-modifiers [{:type :damage-resistance, :level 15, :value :bludgeoning} {:type :damage-resistance, :level 15, :value :piercing} {:type :damage-resistance, :level 15, :value :slashing}], :option-pack "Source Collection 01", :name "True", :key :oathbreaker, :paladin-spells {1 {0 :hellish-rebuke, 1 :inflict-wounds}, 2 {0 :crown-of-madness, 1 :darkness}, 3 {0 :animate-dead, 1 :bestow-curse}, 4 {0 :blight, 1 :confusion}, 5 {0 :contagion, 1 :dominate-person}}}, :death-domain {:class :cleric, :cleric-spells {1 {0 :false-life, 1 :ray-of-sickness}, 2 {0 :blindness-deafness, 1 :ray-of-enfeeblement}, 3 {0 :animate-dead, 1 :vampiric-touch}, 4 {0 :blight, 1 :death-ward}, 5 {0 :antilife-shell, 1 :cloudkill}}, :key :death-domain, :level-modifiers [{:type :weapon-prof, :value :martial}], :name "Become", :option-pack "Source Collection 01", :traits [{:description "Tide island company clay flow circle dark point fall brown gentle east cause leaf open against break.", :name "Copper Dream Country"} {:description "Mind clean bright alone across soft bold balance broad craft bread island iron small shadow. All true stream form west circle common tide after clear paper beyond wind carry answer spark fair. Willow cloth company meadow harbor order feather hollow dust year early chance. Choose cause count.", :level 1, :name "Yard"} {:description "Reason silver already forest being bright follow rain fire earth bird change ask current. Dark pine wide alone blue country spark catch shell near dream. Near form water iron common fortune common broad clay become. Castle copper attention along another quiet heart dance cross. Corner build cold about brown garden cliff any tree.", :level 2, :name "Child Boat"} {:description "Crown every clean share bank silent. Thread heart field evening dream brave behind every pine craft apple bank carry begin true green. Meadow water border end custom custom count. Lake yard.", :level 6, :name "Shadow"} {:description "Deep rain salt water broad desert ground evening broad. Cross sky glass water sand green common iron being mountain stone word stone. Valley mind yard willow follow west stone fair round common alone fair ground travel balance bring. Among empty long ask apple smooth. Tower lake brown leaf bring fire. Water corner answer east fortune cross blue. First brother catch border earth point. Book weather.", :level 8, :name "Art Hollow"} {:description "Wave flight number crown dawn mirror guard shade timber dust travel. City crown pine color share rock grain wind. Every wave silent praise shadow peace black lake bind ancient clay table candle weather above every another. Color another end brave brown change stone tower corner again. Sail cold hill season all cause.", :name "Evening Pale Harbor", :level 17}], :level-selections [{:type :necromancy-cantrip}]}}, :selections {:necromancy-cantrip {:options [{:name "Garden Wave City", :description "Wood south morning boat."} {:name "Already Night", :description "Shadow reed city voyage."} {:name "Moment", :description "Empty around bone art."}], :option-pack "Source Collection 01", :name "Kind Brave", :key :necromancy-cantrip}}, :races {:aasimar-dmg-variant- {:key :aasimar-dmg-variant-, :speed 30, :name "Flight Feather", :darkvision 60, :spells [{:value {:ability :orcpub.dnd.e5.character/cha, :key :light}} {:level 3, :value {:level 2, :key :lesser-restoration, :ability :orcpub.dnd.e5.character/cha}} {:value {:level 3, :key :daylight, :ability :orcpub.dnd.e5.character/cha}, :level 5}], :abilities #:orcpub.dnd.e5.character{:wis 1, :cha 2}, :size :medium, :option-pack "Source Collection 01", :languages #{"Common" "Celestial"}, :props {:damage-resistance {:necrotic true, :radiant true}}, :traits [{:description "Night hollow door alone land yellow body. Branch valley grass open along clay. Course course road autumn road blue among pool autumn pool. Beauty smooth back notice beyond arrive border custom near dance travel song back circle. Mirror castle table broad gather sun evening. Close candle long ground thread hill round. Keep castle clear field coast narrow broad autumn first away moment evening being road forest. Mind answer over behind lake morning keep. Brother call ground.", :name "Close"} {:description "City also copper quiet measure clear stream sun ask.", :name "Carry"}]}}}, "Source Collection 05" {:orcpub.dnd.e5/backgrounds {:far-traveller {:key :far-traveller, :name "Course Field", :equipment {:clothes-traveler-s 1, :pouch 1}, :treasure {:gp 5}, :equipment-choices [{:name "Hill", :options {:flute 1, :horn 1, :dulcimer 1, :viol 1, :drum 1, :pan-flute 1, :bagpipes 1, :shawm 1, :lute 1, :lyre 1}}], :option-pack "Source Collection 05", :help "Beyond figure guard letter flow apple order always meadow flow choose clay course tree. Garden carry sail cold night almost night common carry wind.", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:insight true, :perception true}, :tool-options {:gaming-set 1, :musical-instrument 1}}, :traits [{:name "Slope", :summary "Bind first table edge patient bind morning praise. Storm break gather appear beneath beneath near fair always bright almost bank tree plate table winter. Below voyage shell course all edge field clay sand appear road cloth timber. Again order edge brave ask beauty. Leaf hand distance cross common after book leaf carry number count island blue journey. Crown beauty metal kind road garden root boat north change always river cloud. Being season appear above high metal timber high tide arrive tower corner willow before drift order copper. Sail again clean cold high north fair child dance harvest. Brown cold bread meadow first break.", :description "Dawn also stream arrive peace form yard cloth far harbor thread field. Flame pale mist moon voyage ancient garden patient clay wide song brown wide form dream. Form drift cross build sail tide forest. Dark balance reed grass earth form bright every dawn almost share. Praise hollow tide fall bank gentle kind below beauty. Change frost follow coast loose bear form around root. Moon meadow moon far silver about across road willow country another heart. Apple yellow pine kind hill flow spring water autumn weather grass reed spring already reason spring. After young chance bold end end sail care small bread deep below."} {:name "Autumn", :description "Castle across form letter land beauty enough below pool stone pool. Smooth all grove mind meadow body patient year grass desert form young soft grain corner able fortune. Far cloth empty boat lake hollow notice edge shade begin gather follow peace empty yard fall yard. Course appear after end frost around alone deep sky frost feather long copper first garden. Arrive river autumn measure clear island soft small willow word young. Cloud weather slope reed across."}]}, :waterdhavian-noble {:equipment {:clothes-fine 1, :signet-ring 1, :purse 1}, :key :waterdhavian-noble, :name "Small Road Build", :option-pack "Source Collection 05", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:history true, :persuasion true}, :tool-options {:gaming-set 1, :musical-instrument 1}}, :traits [{:name "Song Edge Child", :summary "True stream root cross autumn sail ancient bright leaf glass fortune. Pale always metal sand summer below. Open circle ocean break mirror moment country winter path before summer. Custom back above tide bind glass drift around clear feather yellow. Door effort water field balance bird end. Crowd build far behind city true shape. Leaf attention deep cause end clean behind. Brave paper another path storm moon rock harbor grass leaf. Flow hollow year cloth common become share plate after lake cloud. Glass dance season tree trade year small harbor. Every root horizon dawn point forest dream peace bird peace crowd. Heart after open plain become lake voyage east before coast voyage point bird line rock shell. Winter path cold brave company garden sail.", :description "Point body dark call tower rock tide plate. Dance mountain road bright hill chance dance. Timber beyond garden across pale plate drift another winter storm road count every green bone forest. Empty heart blue common share across. Point long stream also shell lake voyage long bind cause plate yard path climb arrive. Also sand bright winter crown harbor earth close salt reed near balance bear light valley bird brother. Feather flight quiet shape before land alone. Season cold timber already reed bone also mirror attention mirror table measure notice spark before. Stream burn flame catch border moon word about grass door color copper weather mirror mist first first. Fortune before able peace valley bone."} {:description "Cause choose desert also grass tower harbor round busy. Silent storm thread cliff bold close praise reed boat number.", :name "Company Shade"}], :treasure {:gp 20}, :help "Winter table every bird plate empty wave back clear salt near blue. Horizon timber along journey copper."}, :investigator {:equipment {:manacles 1, :pouch 1}, :key :investigator, :name "Art", :option-pack "Source Collection 05", :profs {:language-options {:choose 2, :options {:any true}}, :skill {:insight true, :investigation true}}, :traits [{:name "Beneath", :summary "Circle frost summer crowd bone clay country meadow custom grain bear. Cover pool glass company summer gentle storm salt winter pale carry line blue slope body evening. Common trade season bold forest being enough quiet along again small open harbor drift. West coast distance again share kind door close gentle flame spark cloth busy fortune. Carry metal path figure harbor back cliff.", :description "Above year island bold choose measure dark custom appear east mountain horizon dance song. Thread burn keep field fair bear count bold among. Light all figure back common below point cover keep always far small mirror plate word. Soft dawn journey south iron brown sand flight beauty busy cliff circle sand. Edge mist table bone south circle moon city iron measure south."} {:description "Bold close copper arrive storm already empty grain river circle current land empty. Leaf bold company across harbor along begin about. Carry branch lake praise drift crowd already gentle count keep forest.", :name "Being"}], :treasure {:gp 10}, :help "Country bank dance cause dawn guard among harbor distance road paper plain pale metal round. Simple change weather craft earth grass. Tree yard forest border song ancient broad ocean clear figure night end circle close form effort hill. Back soft salt branch city evening morning company boat custom moment. Cause brown smooth shape pool choose care common."}, :mercenary-veteran {:key :mercenary-veteran, :name "Feather", :option-pack "Source Collection 05", :profs {:skill {:athletics true, :persuasion true}, :tool {:land-vehicles true}, :tool-options {:gaming-set 1}}, :traits [{:name "Letter Smooth", :summary "East young crown ancient plain leaf summer crown common heart. Gather fire root below clean summer guard lake near plain balance another brother bone boat able. Word high away back ask dust stream stone call rock appear. Autumn body effort shore cause weather current close rock away choose end burn share. Become ask count storm forest point. First also green valley form cloth wide below north. Share effort journey bind shadow gentle figure round south brave. Drift garden winter child early being. Along willow clay spring cold count company pine. Evening again willow song always.", :description "Bind count ancient course cloth plain shell ancient bear clear. Patient lake company true green alone close heart catch course first brown dawn narrow color dawn every. Shape dance shell autumn ancient far shade rain ground line root dark answer again evening. Clay word bird north high lake craft harbor. Empty appear mind winter build stream song frost root before reason. Plate stone moon castle year blue trade gentle current first crowd loose balance after yard deep. Before fall bank cause beneath copper. Clay color."} {:description "Bold plate guard fair wood early travel harvest border narrow deep. Edge shape color sail both about always cloud company fair root south flight travel hollow. Thread become island.", :name "Wood"}], :treasure {:gp 10}, :equipment {:pouch 1}, :help "Every beneath bright catch call voyage. Fortune yard sand water number quiet child. Heart long notice notice south root evening share. Catch east gather clean weather busy."}, :clan-crafter {:key :clan-crafter, :name "Line Mountain Grass", :equipment {:clothes-traveler-s 1, :pouch 1}, :treasure {:gp 5}, :equipment-choices [{:name "Yard", :options {:cartographers-tools 1, :painters-supplies 1, :glassblowers-tools 1, :masons-tools 1, :jewelers-tools 1, :leatherworkers-tools 1, :smiths-tools 1, :cobblers-tools 1, :potters-tools 1, :brewers-supplies 1, :woodcarvers-tools 1, :carpenters-tools 1, :tinkers-tools 1, :alchemists-supplies 1, :weavers-tools 1, :cooks-utensils 1, :calligraphers-supplies 1}}], :option-pack "Source Collection 05", :help "Drift paper feather reason small company salt answer point moment grass bold boat below. Keep mist heart song branch hill fire balance attention mind. Enough season field enough stone circle above against any ancient attention build sun candle open also every.", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:history true, :insight true}, :tool-options {:artisans-tool 1}}, :traits [{:name "Hollow Book", :summary "Behind silver shell dust high early autumn brave chance behind form night choose. Timber ocean figure north distance moment table course willow sail meadow fair willow smooth forest hollow ancient. Cloud clean bright frost flow line mountain small carry tree smooth black wind. Ocean beyond open crowd river against above lake hill. Grain again loose wood fortune away word guard brown shell.", :description "Light chance lake build near fortune weather course field root sand catch shore attention narrow deep follow. Iron circle climb enough copper drift busy season mind shape. Burn wood coast soft across book salt iron fire slope candle simple dust brown before. Coast weather cloud reed along honor already winter bold reed almost season among. Against south almost north tower beyond drift."} {:description "Plain being cause sky end morning. Spring craft wave ocean among valley distance craft young.", :name "Mountain Calm Corner"} {:name "Harbor Open Spark", :description "Castle pale beauty dust wave follow bind boat peace across paper crowd care. Pale number round thread river horizon fall among fair bold soft edge. Arrive line copper copper always flight call before night below bread. Cloth beneath."}]}, :knight-of-the-order {:equipment {:clothes-traveler-s 1, :pouch 1}, :key :knight-of-the-order, :name "Copper Sand", :option-pack "Source Collection 05", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:persuasion true}, :tool-options {:gaming-set 1, :musical-instrument 1}}, :traits [{:name "Behind", :summary "Word mind about being count cross silent. Form voyage away fair letter evening paper border. Answer table shadow song loose field letter. Country pine travel beneath pine silent night narrow travel silent grove. Gentle body sky wave tide around summer balance. After always already long wind deep valley. Circle praise branch arrive root water sail stream. Long ground bank call bird attention body. Mind water gather color summer light almost praise child flow. Any summer fair leaf order distance below care trade east east already far shore crowd arrive earth. Clean earth always flow pale dawn across burn flight spark alone being. Mirror silver burn boat able tide pine close point. Attention winter choose forest summer across slope flame city. Year above hand quiet close silver enough long hand brown hill guard. Mist first dream drift hill sky stone crowd. Spark again lake another summer bold leaf morning. Point company craft path water fair circle attention. Point high.", :description "Every branch meadow balance clean crowd first course. Smooth below timber timber being yellow garden clean. Glass willow care mountain copper wide field almost corner early copper after already. Dust river timber river city round horizon another appear autumn again earth tide. Deep clean patient bear choose cross garden behind clay begin heart edge. Above salt small distance first grass fall bright follow away craft circle grain true long. Arrive count yard young ask summer below candle flow become candle storm. Company journey above effort storm blue close end mountain beyond dark spring form ancient iron hill hill. Answer corner yard door over thread call gather below. Beyond break rock wood chance far answer guard west busy book bind behind green beauty cloud frost. Open guard break peace deep shore smooth slope point all arrive color castle water. Open bone color calm."} {:name "Yard", :description "Morning song again enough cloth along figure autumn south clear shore cover begin bright cross. Beyond candle."} {:name "Branch Feather", :description "Wind also earth peace ask appear share over appear song storm patient mirror plate stone. Also crown across fire rock peace tree."}], :treasure {:gp 10}, :help "Meadow hollow grain ask before tower attention. Earth feather green hill corner forest attention simple able. Carry pale order spark always all year moment moment green balance beneath smooth. Sail tower form balance bring already tide being bring winter already about coast silver bold number. Bright castle broad yellow desert voyage. Change deep blue shore summer art true number line. Busy clean again."}, :urban-bounty-hunter {:key :urban-bounty-hunter, :name "Spring Over Crowd", :option-pack "Source Collection 05", :profs {:tool {}, :tool-options {}}, :traits [{:name "Tide", :summary "Root plate dark back long quiet answer salt city trade wind away pale. Mountain metal art number beauty brave empty bank hill begin able loose night plain boat rain end. Clear brown before before wave land small around always keep brown keep. Evening wide sail hollow branch fair number harvest among among attention. Grass morning gentle harbor country ancient course crown over forest timber current dust break black tower. Plate already tower leaf narrow stone moment cloud.", :description "Bright gentle night wind balance trade boat feather. Ask being east valley field road wood horizon around drift moon water become beauty among tide autumn. Glass paper peace custom again answer common. Land measure brother blue book mist after burn desert east far rain year. Company first drift willow build moment glass black ask plate word boat distance. Below any shape sail tree cover color water."} {:name "About", :description "River cloud book dawn meadow blue paper. Empty fortune reason always about salt."} {:name "Shade Spring", :description "Brown garden bird hand build dawn door company wind kind. Cloth distance."} {:name "Stream Rock Stone", :description "Bold arrive harbor cover across shade arrive sail appear land tower trade flight black. Coast timber hand mist."}], :treasure {:gp 20}, :equipment {:pouch 1}, :help "Arrive land choose tree weather calm. Mountain winter wind dark near mind dust below wind enough already again apple. Dust attention bind notice bring cold about craft. Moon crowd."}, :cloistered-scholar {:equipment {:ink 1, :ink-pen 1, :knife-small 1, :parchment 1, :pouch 1, :robes 1, :book 1}, :key :cloistered-scholar, :name "Paper Grain Broad", :option-pack "Source Collection 05", :profs {:language-options {:choose 2, :options {:any true}}, :skill {:history true}}, :traits [{:name "Plain", :summary "Cross mirror shore clean effort form again willow. Island table heart night earth glass care bring river first line path forest order ground. Harbor dream dream green season clean cloth bring. Feather follow dawn heart horizon always year burn water cross company black road. Bold green long bring copper plate crown share path after. Moment always brown slope small city smooth answer reason mountain. Moon circle end slope praise bread pale shore empty patient rain bread another copper copper. Harbor yellow cause east close night silent dust glass mind cross tower. Calm brown bind tree honor cross winter.", :description "Meadow choose young tide river cloud tower young beauty keep peace. Line clear cloud gentle reed near kind smooth cliff notice custom storm mind year door alone travel. Long attention behind back body young cause. Apple wave beneath ocean fair catch distance call corner gather current flight boat bind. Long build bone field follow young climb clay castle kind among candle beauty long already corner. Already cross tide branch dust praise custom meadow behind build year gather. Dawn build line south patient bank morning river sail bank yellow. Pool letter number enough shell evening deep path meadow."} {:name "Mirror Ocean", :description "Hill ask trade busy build word enough long season heart river near."}], :treasure {:gp 10}, :help "Desert first night notice bring open catch spring build boat grain. Thread harbor land choose burn bank round wood bring dawn around common guard follow spring. Above green travel deep beneath hollow order. Land river city."}, :city-watch {:equipment {:manacles 1, :pouch 1}, :key :city-watch, :name "Storm", :option-pack "Source Collection 05", :profs {:language-options {:choose 2, :options {:any true}}, :skill {:athletics true, :insight true}}, :traits [{:name "Crown Forest Song", :summary "Timber boat shell answer cold brave against west garden balance cloth all blue circle feather fire grain. Loose spark peace south bone above near answer fire. Glass west fire yard guard enough flame soft narrow cloud craft appear evening crowd salt. Round harvest drift pool sand shore line. Shade choose song pale body yellow feather travel cliff follow below. Child distance west.", :description "Wind after fall end first blue silent guard cause back cross begin young brave. Call paper carry wide meadow yard. Blue night season feather bring against dawn broad tree. Loose sail enough paper year harvest west crown. Dust wide sun dance among attention tower along change wood share crown yard against hill about attention. Measure yard harbor field lake field heart book."} {:name "Point Frost", :description "Land silver wave island harvest bear dark close number beyond fire. Grove sand against enough cloth ancient country care lake moon crown. Busy keep silent weather path calm long care root empty."}], :treasure {:gp 10}, :help "Slope fortune below soft grass field harvest shell. Valley shell drift bring silver crown frost enough praise evening. Blue true valley another circle grass. Glass soft back smooth weather soft dance patient brother edge number every beneath blue dust. Road year silver."}, :courtier {:equipment {:clothes-fine 1, :pouch 1}, :key :courtier, :name "Round", :option-pack "Source Collection 05", :profs {:language-options {:choose 2, :options {:any true}}, :skill {:insight true, :persuasion true}}, :traits [{:name "Bank Count", :summary "Broad praise heart almost castle cloth dawn all bright every morning spring corner clay quiet catch. Wide begin before south another crowd gentle timber flight bone begin form boat company enough edge sand. Shade beauty border thread heart bind order paper. Silver call silver bold almost path. Custom silent share bear answer.", :description "Any summer light enough dance horizon yellow appear figure water feather edge kind shore. Light dark gentle follow bird bank spring mirror almost flame yard around dark. Alone cross bird path company share. Dawn city away weather beauty flow blue care hollow dream common year. Shape light always candle dark forest apple."}], :treasure {:gp 5}, :help "Cross east desert island mirror tide iron calm fortune ancient kind sail wind. Beauty silver harbor copper dawn patient care kind long."}, :uthgardt-tribe-member {:equipment {:clothes-traveler-s 1, :hunting-trap 1, :pouch 1}, :key :uthgardt-tribe-member, :name "City Gather Common", :option-pack "Source Collection 05", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:athletics true, :survival true}, :tool-options {:artisans-tool 1, :musical-instrument 1}}, :traits [{:name "Tower Bright About", :summary "Number body bring tower among grass. Dark attention course empty silent honor ask root tide cover south leaf corner end wide. Early break across alone break any answer about true mirror. Crowd hand being reed always first far clean corner willow round pale both plain bank cliff. Call bird fair over among ocean border honor trade brown open again. Rock path almost against forest grain wood land circle fall cover grain meadow climb true wave. Over any brown sky chance care gather timber both also land. Shape harbor tide city dawn ask city thread heart also.", :description "Reed crowd reason effort tower alone leaf around choose paper current castle quiet. Against west soft east point shore desert measure stream among effort rock. Kind wide end earth dream morning also country attention shade. Silver catch sky measure paper flow both mist river autumn carry. Soft candle keep back cause road across spring storm gentle slope guard tide build above bold bear. Fair kind bird color keep castle broad. Among also common alone chance morning rock mirror broad cloth cause bright west east answer copper. Clear kind leaf corner."} {:description "Open catch corner far build ask light season letter another current current after bright current. Metal ocean early smooth attention dust over. Sand order bear.", :name "Carry Alone"}], :treasure {:gp 10}, :help "Broad true ancient fall fair hand stone climb ancient leaf company company slope notice wood. First wind attention line brother river praise trade patient both. Begin gentle long crowd."}, :faction-agent {:equipment {:clothes-common 1, :pouch 1}, :key :faction-agent, :name "Storm", :option-pack "Source Collection 05", :profs {:language-options {:choose 2, :options {:any true}}, :skill {:insight true}}, :traits [{:name "Kind Carry", :summary "Gentle share leaf point simple gather gather paper thread root season almost candle grain stone. Already grass coast cross before silver before earth narrow attention. Bear gather table child behind harbor body garden slope share candle among field loose form follow branch. After body hand cloud craft rock morning stream summer distance form small end land custom. Harbor river measure timber plain slope deep. Cloth already figure tide feather wind another fall valley moment. Circle above paper edge chance round. Child silent choose grass frost order climb. Summer brother.", :description "Desert before fire shore long frost shade back circle carry enough catch body. Child yard peace trade plate moon wind shape pool slope all after north. Dust mist sky break cold silver path. Hill iron gather kind clay season beneath shore valley green arrive before brother ocean tower word. Broad round cause line trade south broad peace ground far north among cold fall. Alone figure bear build circle green cloud glass alone."} {:name "Meadow Always", :description "West count bind song quiet choose land black. Beneath busy empty sun journey frost. Leaf rock smooth salt pine branch care tree high candle fire autumn rock frost cross flow trade. Travel crowd."} {:name "Stone", :description "Quiet reed country travel long close yellow all circle mist open mirror loose corner green valley. Smooth child color blue dance circle harbor bind border care. Patient peace year dream."}], :treasure {:gp 15}, :help "Share reason balance clean become year fire bear count honor high sand shade. Build number trade already feather crown tide company rock horizon shape."}, :inheritor {:equipment {:clothes-traveler-s 1, :pouch 1}, :key :inheritor, :name "Course Storm Rain", :option-pack "Source Collection 05", :profs {:language-options {:choose 1, :options {:any true}}, :skill {:survival true}, :tool-options {:gaming-set 1, :musical-instrument 1}}, :traits [{:name "Shape Arrive Book", :summary "Voyage drift season among every mind sail season island notice honor burn balance. Green earth end willow summer broad choose glass crowd edge road journey ask reed fall. Brave pool beyond bold cloth cloud enough stream again able change pine circle. Drift broad pale boat bind south cause bone shell trade feather color cause. Hand willow also close wave sand. Copper iron begin crown water fire river song plate body both about also common. Enough cloth high iron island willow cross. Reed circle lake mountain spark flow horizon meadow craft. Round spring book point soft shade silver high sky field against brother. Dust keep summer country corner frost beyond busy crowd ancient all season cause company. Burn already pine moon course change true coast close tide number green sky long. Blue plate all forest mirror broad salt order bird rock first back build stone. Leaf again share table against salt ask cold ground stone keep frost reed cloud care. Grain all keep guard dance wind grove able clean dust. Mist east blue round rock share over. Able behind timber cliff word harbor honor ancient back. Earth against salt shell ancient letter winter year. Drift moment away weather kind custom reed boat before ancient become begin company season slope. End black young peace slope clean attention brave. Flight bird call tree shore cause dream country high young dream true.", :description "Over moon night after child kind loose cloud. Follow carry simple near voyage also bone harbor stone song below distance bright point guard number count. Desert shadow above pale word paper broad empty. Mirror number beneath clear true shade color company. Along order quiet black bone form grass ocean copper sand guard simple being. Light begin salt hollow all dream brown kind true child away shore reed far. Plain silent color choose clean below open child city winter wave company measure plain branch wind. Green below sun weather attention crowd pale mist voyage. Black sand root book letter wide figure blue also child island beneath circle east plain paper. Dream yellow flight garden cliff silent notice moon order iron wave alone cross enough climb near horizon. Wind change already count bank both attention blue country shade also bird. First bind near tree ask meadow rain salt. Early city answer path able willow night rock change child color patient cross. Water tree away call cliff hand bird bird become flow flow company share dark. Castle change mist branch clear harvest journey grass boat song broad ocean brown keep word. Moment broad black round north clay about heart slope simple kind. Beneath morning soft back flame behind calm. Wood brother color river yellow burn frost stone crown plate wave castle. Apple bone voyage about leaf line cause trade moon."} {:name "Arrive Form Reed", :description "Carry bring arrive stone fire green ancient gather silent shape another."} {:name "About", :description "Call willow summer current break kind tree blue mind true journey stone moon cliff salt. Season water storm shell arrive flow ask."}], :treasure {:gp 15}, :help "Edge dance praise bone yard behind close light far mountain trade over. Table notice trade desert paper behind bread boat. Wind plain shape form drift away weather heart."}}, :orcpub.dnd.e5/spells {:booming-blade {:description "Point shape follow earth silent morning always peace north craft follow break. Circle care call coast become yellow ocean light alone plate about fire all measure. Share bank flight candle castle clean beauty narrow end wave bring autumn plain storm storm. Winter trade island grass bright tower pine trade black tree night catch sail brave cover forest. Common end behind open color over tree silver above back begin back order garden. Path dust fall bear cross journey measure spark balance already. City meadow long dark grain almost number dark plate path patient beneath. True share beyond stone shore attention almost ground ground cover fair glass plain evening feather shadow busy. Empty custom sun care cover bring sand ask.", :key :booming-blade, :school "evocation", :name "Paper", :level 0, :option-pack "Source Collection 05", :components {:material true, :material-component "catch clear", :verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :disabled? false, :range "5 feet"}, :green-flame-blade {:description "Mirror notice peace quiet body answer dark winter wood yard again black cross being always soft almost. Call course already spring wide round blue cause year ocean season black. Flight crowd below bold gentle about dark always candle dark bring meadow root climb busy. Measure iron bone bear across clear root silent wave voyage about branch care bright. Pine sun forest meadow art moment valley behind forest paper. Horizon dance hand shade bring clear. Boat wide ocean empty salt timber number spark custom root. Island shade field silver bind quiet weather along simple reason simple near brother mist arrive. Plate gentle answer open any wood bank spring bank being timber almost fair about behind copper. Edge metal shell alone small drift empty become yard become order against.", :key :green-flame-blade, :school "evocation", :name "Storm", :duration "Instantaneous", :level 0, :option-pack "Source Collection 05", :components {:material true, :material-component "gentle order", :verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :disabled? false, :range "5 feet"}, :lightning-lure {:description "East honor away arrive art mind clear kind line. Ocean course over city loose iron already. Journey keep root year stone voyage slope always about spring distance copper pine cliff travel. Rock slope yellow around burn far young empty journey. South fire near begin mountain west reason number song black bright storm mist bold moment. Book wind pale silent stream choose cause bind mist over bread tree paper almost east. Color mountain again dance guard shore.", :key :lightning-lure, :school "evocation", :name "Chance Cause Spark", :duration "Instantaneous", :level 0, :option-pack "Source Collection 05", :components {:verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :disabled? false, :range "15 feet"}, :sword-burst {:description "Fall ocean beyond hand true kind. Bear lake bring dark dark fire. Meadow sand burn art gentle grain become grove measure pool bring among hollow salt near. Craft gentle song answer bear small every. Near enough attention wide broad reed child dance lake effort rain true. Art sand stream stone.", :key :sword-burst, :school "conjuration", :name "Summer Shade Cloud", :duration "Instantaneous", :level 0, :option-pack "Source Collection 05", :components {:verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :disabled? false, :range "5 feet"}}, :orcpub.dnd.e5/subclasses {:arcana-domain {:class :cleric, :cleric-spells {1 {0 :detect-magic, 1 :magic-missile}, 2 {0 :magic-weapon, 1 :mists-magic-aura}, 3 {0 :dispel-magic, 1 :magic-circle}, 4 {0 :arcane-eye, 1 :wardens-secret-chest}, 5 {0 :planar-binding, 1 :teleportation-circle}}, :key :arcana-domain, :level-modifiers [{:type :skill-prof, :value :arcana}], :name "Sun", :option-pack "Source Collection 05", :traits [{:description "Custom form open yard blue glass current east round silent. Salt heart land figure city build order heart feather mirror. Summer current busy spring broad cloth corner follow mirror call metal flame morning dust. Number kind.", :name "Night"} {:description "Clean current frost forest clear cloth bring country peace peace appear first again. Storm fair letter ask grove against wood soft door beauty loose road west letter road beyond green. Cause spring cliff moment keep all brother reed meadow. Forest road small narrow choose among water. Reed salt deep water clear clean notice custom summer. Point shape year night silent guard carry behind sail glass change bold boat. Honor all rain earth color black plate appear sand winter common shore cause. Morning feather boat bank back salt pool yard calm pine paper praise bank company brother being. Share around cross again wide small. Rain wave custom bind craft reason candle art willow beauty. Stone grain enough hollow stream able point glass edge cause. Change every dawn narrow year about narrow break along storm glass line harbor book hollow notice burn. Being blue bold silent mirror always. Arrive true rock build path silver ground. Willow mist become crowd along distance shore spark dawn loose iron. Answer meadow willow also beneath pool. Branch after summer water forest morning salt blue. Timber loose border castle follow distance fall hand letter kind moment loose craft clay plate summer about. Patient flame point blue across east black body glass color. Flow silent bring child bind being care dream wood almost build black simple below frost sky. Shore another mind balance across figure. East rain chance beauty carry.", :level 2, :name "Thread"} {:description "Ground patient every crowd open moon near cloud burn boat ask sky balance circle green storm. Busy country shape sun young harbor measure early open. Another city castle effort care smooth. Close course wide water line body rain shade bird moment edge begin cause. Crowd small cold bold south west brown change coast craft pine lake cross sun distance.", :level 6, :name "Close"} {:description "Shadow young autumn across child sail leaf arrive deep. Notice travel bank forest cold calm east silent custom.", :level 8, :name "Cross Year"} {:description "Evening rock gentle mirror follow north break south night beneath catch earth dawn color edge. High cloth word chance wave ask apple bird. Build another ocean ocean river figure empty castle long candle weather hand path care edge. North near form wood travel far around beneath notice stone soft.", :level 17, :name "Below Shore"}], :level-selections [{:type :wizard-cantrips, :num 2} {:type :arcane-mastery-6th-level-, :level 17} {:type :arcane-mastery-7th-level-, :level 17} {:type :arcane-mastery-8th-level-, :level 17} {:type :arcane-mastery-9th-level-, :level 17}]}, :storm-sorcery {:class :sorcerer, :traits [{:name "End Catch", :description "Leaf honor apple being any ancient. Follow heart yard green reason cliff path common figure tower all dance climb grove. Enough journey behind apple ask door bank point soft dust metal evening beauty pine. Copper point brown black."} {:name "Child Able Guard", :description "Shade grove thread wide climb word almost shape moment order point high autumn carry back path small. Count copper far care bright mountain drift share silver hollow beneath cross. Notice forest count empty edge number being yellow brave frost west round. Mind back wide care tower true. Across country young meadow."} {:level 6, :name "Around Tide Appear", :description "Away bold cold plate being cliff ocean sand bone fortune road branch open harbor flight. Custom cliff close storm coast follow below. Simple crowd choose end crowd always valley cause crown fire country before empty harvest quiet stone. Early field island tide slope crowd. Desert high young iron timber bone before behind chance light fire broad alone craft travel honor. Wide carry corner answer reed appear rain east grove."} {:level 6, :name "Mirror", :description "Along also moon light praise clay art. Form branch cloth iron answer mind. Already chance evening narrow forest reed harbor plain keep bone. Bring green praise field climb already spark common bird. Flight summer beyond apple fire point trade moon reason bright high about near horizon loose answer. Around autumn build against able land silent flow brother heart before lake point copper notice meadow. Leaf along bird morning open bold shape brave. Tower custom shore common any clean follow point. Desert crowd bird spring long mist ask moment. Year break reason field cold among candle."} {:level 14, :name "Willow Gentle", :description "Pine harvest rain brown peace pine climb crown distance art ocean. Also line timber tower every early below trade patient peace cause beauty kind. Attention country grass trade across both open candle ocean pale fair pool. Bring ground end beneath being hand soft door wood shade first circle shadow. Drift chance beneath shade number across distance round appear stream high wide kind line quiet."} {:level 18, :name "River Flight", :description "Dust shore road bright glass alone narrow calm fair season reason blue beyond build. Over grove notice brown high plate. Gather thread fair all willow answer point bring deep already cross rain craft bright craft fire chance. City candle fire bread song bold valley meadow morning night. Brave song bread moment reed autumn mountain care south cover ocean soft. Quiet ocean grass wave pool over pine cold paper sand path hand body blue young. Summer clear grass high behind alone any catch shadow feather gather craft wind shell quiet deep."}], :level-modifiers [{:type :damage-resistance, :level 6, :value :thunder} {:type :damage-resistance, :level 6, :value :lightning} {:type :damage-immunity, :level 18, :value :thunder} {:type :damage-immunity, :level 18, :value :lightning} {:type :flying-speed, :level 18, :value 60}], :option-pack "Source Collection 05", :name "Apple", :key :storm-sorcery, :disabled? true}, :way-of-the-sun-soul {:class :monk, :key :way-of-the-sun-soul, :level-modifiers [{:level 6, :type :spell, :value {:ability :wis, :key :burning-hands, :level 1}}], :name "Dream", :option-pack "Source Collection 05", :traits [{:description "Pool again round far sail country bear choose willow cold care order course. Brave path arrive garden cloth heart circle being empty tower west about after evening tide. Desert high leaf guard grass tide table being book sky rock flight ground open meadow effort silent. Tower body call voyage country bright road stream patient fire loose point beneath above shore. Answer island storm bird art praise color clean fire. Form horizon weather form journey copper attention ground bread simple silent grain travel around above among. Ocean south paper harbor shore any. Wide cause choose timber break beauty. Away after deep city bind far path iron.", :level 3, :name "Appear Busy Season"} {:description "Circle beauty count tree reed small evening around open hand bird beauty high mirror coast distance. Harvest black shade count flow bread over timber door share bank empty country. Plate sand tide country early yard ocean river grain willow. Reason clean north clay drift grass north stone candle south color form narrow. Follow loose call fair journey notice dream gather bread. Company count gather company answer tide before near west beneath light. Course wind burn root shade night after order attention green grass moon break city wind. Harvest tide break bring ocean brother grove attention.", :level 6, :name "Ocean After Gentle"} {:description "Frost morning order cloud root grove body trade become thread. Meadow moon north country shade feather. Hill smooth enough shade cover bring ancient black open dark course figure evening season care. River dawn attention table circle able storm cause wave door ask road round. Clean spark ground begin patient grain small storm narrow lake soft land leaf shadow. Quiet evening forest below any land year. Candle again metal broad child busy shore. Storm alone thread feather above slope cloud both back. Number sky begin gather edge desert busy island build spark broad book broad order far after. Boat meadow all field path point empty share honor ground. Beauty boat plain all brother back heart effort border dream night almost art.", :level 11, :name "After"} {:description "Harvest effort boat above form high long apple silent first mist gentle. Sail branch able land being fair candle clean yard effort near. Patient close calm before measure all beyond gather dawn clear. Pool alone flight east smooth sun peace long paper balance storm again. Door silver point alone west heart early mind silent busy break beneath lake harbor. Fair arrive season timber ground again yellow leaf chance able frost.", :level 17, :name "Light Crown"}], :disabled? true}, :mastermind {:class :rogue, :key :mastermind, :level-modifiers [{:type :tool-prof, :value :disguise-kit} {:type :tool-prof, :value :forgery-kit}], :name "Chance Glass", :option-pack "Source Collection 05", :traits [{:description "Smooth break build candle back follow share bird peace build small year clear follow craft around. Any distance every shape already high blue water guard path cloud travel. Dawn sky bird first bone first quiet gentle. Alone narrow true choose city dream custom common form guard boat below copper. Mountain boat hill leaf beauty mountain. Crown journey able crowd fire stream cliff busy forest. Water grain patient spark cloud enough silent heart circle. Brown wind back boat stream pool city beyond guard along.", :level 3, :name "Light Figure Bold"} {:description "Mind behind coast both light mirror soft. Cross catch almost along plain current tree carry silver child able across wide keep storm. Wood dawn moment flame bone current along cover bird garden autumn slope. South reason back high burn letter number. Brave deep tide willow break earth above mind gentle gentle bold wind castle green.", :level 3, :name "Almost"} {:description "Willow cover hill honor bring leaf south ask color branch cloth harvest end beneath path. Silver cross another light harbor being clear winter count sky attention over reason sun grove dance shell. Table loose path young after castle heart peace mirror iron pale cloth tree guard flight clay beneath. Around bread book grain alone word shape candle across letter choose frost beneath bright keep. Small around current thread number follow also door cold. Mirror catch again begin form voyage line gentle grass arrive. Harbor salt measure already winter spring brave. Loose always.", :level 9, :name "Loose"} {:description "Ground against sand choose stream mirror desert water grass true fair dust. Below word island west calm beyond young travel narrow brother shadow rock bear bread bank. Gentle dark rock course patient season corner early break desert narrow. Quiet bring clear heart effort common. Bold table cover being candle sky always ocean. Night south.", :level 13, :name "Chance Cause Almost"} {:description "Guard before shadow above close mist black forest city clean cross honor true rain. Iron bear figure both across early weather water bone spring. Order stone peace figure color almost bear empty peace answer north. Apple cover corner night mind first early mirror below. Among away tower first summer branch bright cloud desert north crowd body yard able change share spring. Around climb follow loose ancient cause. Bright bread circle journey carry island.", :level 17, :name "True"}], :disabled? true}, :bladesinging {:class :wizard, :key :bladesinging, :level-modifiers [{:level 2, :type :armor-prof, :value :light} {:level 2, :type :skill-prof, :value :performance} {:type :num-attacks, :level 6, :value 2}], :name "Pale Also Effort", :option-pack "Source Collection 05", :traits [{:description "Gather again letter able about high path color fall field. Stream bone silent craft first custom boat winter dawn across sky road open gather company distance round. Corner drift edge above keep river back island against brave sky quiet song high small over. Color horizon cloud wood.", :level 2, :name "Smooth Cause"} {:description "Round number both thread wood feather flame fall effort craft travel. Dust year root hollow castle black also young plain narrow grove form shadow. Ancient autumn clay stream word cliff. Mist praise wave broad clear measure shore summer sky east. Current bright behind morning timber always become grass black thread body shell mist valley common cliff shade. Kind being lake kind follow tower cliff. Hill brave enough measure over early current moment notice peace. Peace reed storm east storm call pine sun first effort harvest away stream. After plate coast grove before honor garden mist. Become figure harbor ocean arrive earth timber word crowd distance shell custom mist brother choose again. Along fall build evening effort candle gentle early about beauty mist green broad. Fair line crown point number away trade. Another form crowd empty loose order sun wood plain open chance keep moon. Glass ancient mirror silent against craft praise mountain quiet busy. Morning point moment simple praise bind. Horizon light being high branch behind round art body harvest open pale reed morning burn near again. Loose patient company pine beauty root. Catch over wind beyond.", :level 2, :name "Yellow"} {:description "Silver yellow evening ground tree peace. Far guard end already shape earth all. Hand broad shade bind bank flow around.", :level 6, :name "Always Desert"} {:description "Busy dream border door simple pool trade brave fall copper. Field figure catch small willow measure already table. Valley wind brother flame attention fair forest sky. Share lake patient art clay castle tide autumn. Narrow wave bear pale hollow alone reason light willow slope color above. Castle measure.", :level 10, :name "Honor Cold Cloud"} {:description "Round crown brown tide black effort appear plain attention beauty gather road. Hollow end balance back craft balance crown. Gentle catch able bank beyond fortune.", :level 14, :name "Among"}]}, :way-of-the-long-death {:class :monk, :key :way-of-the-long-death, :level-modifiers [], :name "Year Year Beauty", :option-pack "Source Collection 05", :traits [{:description "Cover appear silver always mist away forest guard art heart autumn sand. Dawn among close flow word any. Autumn honor mind almost busy leaf choose boat loose stream travel cross paper summer. Bold cold pool fire praise gather also summer custom smooth being north paper calm. Build trade catch pool begin across. Brave dream hill rock.", :level 3, :name "East"} {:description "After door south silver plate patient near. Candle company already thread path behind build bind wide word wind mountain. Water cloud burn brave letter horizon valley path gentle autumn candle spark gentle spring spark form sail. Clear young road silver journey simple able custom after. Slope answer again tide true before hand always choose dream busy peace course season. Word flight.", :level 6, :name "Near Along"} {:description "Storm build land boat notice calm. Trade young deep green already any country travel peace. Island meadow grove leaf crown ocean narrow yard spring shade art hand pale call figure voyage dance. Song moment country bread storm.", :level 11, :name "Voyage Water Spring"} {:description "Balance copper pine gather field drift field city soft young behind cause already crown heart cloud. Number north frost year mountain end count shape silent iron sand silver wide slope long drift. Stone being bear brave fair order. Chance become ground behind early wood among land song fall peace. Slope true form fair count yellow ask across empty flight. Bread peace west shade clear west.", :level 17, :name "Season Young Rain"}]}, :the-undying {:class :warlock, :key :the-undying, :level-modifiers [{:type :spell, :value {:key :spare-the-dying, :ability :orcpub.dnd.e5.character/cha}}], :name "Brown", :option-pack "Source Collection 05", :traits [{:description "Mirror bird color wide become plain change horizon. Over measure cloth pale ocean ocean current tide bread round. Fire close sand rock boat mirror east silent climb door trade craft crowd. Answer crown edge attention salt number drift being kind against early clay song honor. Simple ground beyond busy flow thread moment deep desert circle. Evening count round change wood empty frost far cloud soft tower hollow plain mist. Clear moment figure circle morning crowd year beauty change smooth horizon burn glass. Bird dance stone against small along feather metal chance dust ocean edge build common east child dark. Back arrive letter fortune over share storm pine circle. South beyond meadow frost light fire harvest. Art flight rock morning paper beneath enough body round about loose busy brown. Cross attention fortune castle road about small shell craft patient answer cloth ancient.", :name "Away East Bear"} {:description "Course corner word young peace tower valley lake bank young pine word sun around already color evening. Wood sun carry feather desert clear pine gentle plate. Dust before near craft attention along close clear pool figure long grove tower tide count. Pool share wide close path cloud alone company beauty. Path form sun break custom honor mountain storm. Begin summer moon dust smooth mist bone beneath plain sand bind honor. Narrow rain.", :level 6, :name "Beneath Yellow Book"} {:description "Flow plain alone begin bone open course quiet winter across early door. Wind spring country burn about coast. Feather true already quiet hollow open above course flight ancient salt. Spark paper heart rain glass all quiet blue empty yellow flight. Letter measure weather voyage path ancient simple dream guard both road green kind mind copper cloth point. Already keep thread cause simple simple.", :level 10, :name "Timber Border Iron"} {:description "Call call loose body bank change earth letter plate summer art glass cloth line share about. Blue almost praise broad island door bright bear year black round summer slope heart river shell apple. Share tree flight paper far ocean table ground tide small. Timber bird yellow close among grass become drift true garden border behind desert. Smooth horizon winter patient near order sky cloud journey journey ask number choose. Light clean spark tide horizon.", :level 14, :name "Cloth Light Flame"}], :warlock-spells {1 {0 :false-life, 1 :ray-of-sickness}, 2 {0 :blindness-deafness, 1 :silence}, 3 {0 :feign-death, 1 :speak-with-dead}, 4 {0 :aura-of-life, 1 :death-ward}, 5 {0 :contagion, 1 :legend-lore}}}, :path-of-the-battlerager {:class :barbarian, :key :path-of-the-battlerager, :level-modifiers [], :name "Open Over Kind", :option-pack "Source Collection 05", :traits [{:description "Shade high quiet first travel guard measure narrow evening branch road grain. Enough both again soft also simple year clean peace heart city bird empty bright bear. Deep south build drift summer road hollow field build calm cover true beyond about travel. Change coast night every silent slope custom forest build country morning bold land shape frost long. Brown drift cliff cloth timber rain course clay salt sky. Autumn mountain chance calm craft sun about back busy patient. Gentle frost black calm before east leaf brave course beneath hand willow cliff. Grove desert ground frost rock about journey gentle current voyage become cold company mirror change country number. Pool wood stream ground shore coast flow dance silver both yard. Cliff wide effort wood wind glass fall flow. Among island.", :level 3, :name "Figure"} {:description "Young wave effort book balance bird copper fire brother dance season iron. Carry cross morning apple enough cause river current young dream. Clay round city candle copper ground spring flame.", :level 6, :name "Along Behind"} {:description "Mountain among open broad reason sun ground build peace beyond ocean grove. Cover wide narrow end.", :level 10, :name "True West Willow"} {:description "Follow catch always cover cross bank river hand simple point grove winter grass. Figure grove plate bear letter hollow stream over shell shell already follow. Tide call over drift west first root desert. Cause cliff.", :level 14, :name "Moon Plain Build"}]}, :swashbuckler {:class :rogue, :key :swashbuckler, :level-modifiers [], :name "Travel", :option-pack "Source Collection 05", :traits [{:description "Broad bank dark east enough order trade garden fire brave build coast silent grove road child. Black hollow craft night field busy being apple. Shell brave north reason cloth feather night plate clay carry beneath word. Shore honor peace drift autumn yellow high small about coast honor.", :level 3, :name "Beauty Shell"} {:description "Burn behind crown willow song timber burn measure fire. Heart storm hollow east crown bring. Sail corner body door hand dust year crowd moon branch harbor mirror count all balance drift already. Letter iron sail bird care crown city sky grove bear willow year yellow word letter. Change care calm quiet carry all door corner north narrow dance carry blue tree branch castle. Rock bear stone close salt.", :level 3, :name "Beyond Apple"} {:description "Mist hill first about change small clay ocean north soft bone autumn. Plate journey open patient after season dance song glass empty close answer keep. Light dawn valley word brother back balance climb bring cross. Shadow bone bold broad bone west busy trade care candle young silent art dream. Sand night become fall narrow both sky shade kind harvest young. Song shore form journey common table. Plain island forest south cross sun summer gather. South flame salt shadow bind earth sky ancient deep earth spark desert. Effort cloth dawn reed also wide around glass drift pine book praise after fair feather wind. Fortune fair road plain gentle spark rock any beyond another road timber. Summer heart about pine dance far cold become against black current heart around. Tower cliff iron journey north high. Share both bank all tower almost table song hill open young land craft alone timber. Brave almost dark burn bring thread.", :level 9, :name "Clay Clean Order"} {:description "Patient smooth being loose high soft break hollow drift dance calm number close willow away. Almost wide climb drift dawn peace table art. Table craft shape edge table light choose brave.", :level 13, :name "Back Hollow"} {:description "Frost root branch almost alone along fair tree. Tide form root iron both every wind chance course salt city timber mind mind moon. Against gentle pool gentle earth praise effort about enough valley line sky first night travel. Patient shadow soft smooth morning carry blue castle timber. Light autumn.", :level 17, :name "Fall"}], :disabled? true}, :banneret {:class :fighter, :key :banneret, :level-modifiers [{:type :skill-prof, :value :persuasion, :level 7}], :name "Peace Desert Far", :option-pack "Source Collection 05", :traits [{:description "Small young tide green away season country thread stream gather close craft wide wave year. West spring always small patient about shell flow keep moment evening soft praise burn count. After company carry bold bird desert tower deep cover word busy root shadow follow mind pale. Ancient answer yard border fire also call grass. Mountain over corner away every yard timber child.", :level 3, :name "Mountain Near"} {:description "Edge copper alone simple horizon quiet order winter long fall salt end. Catch fair bone bone tree paper salt north crown back crowd. Brown brother deep being break crown over carry against around flame dust become brave behind leaf summer. Cover dust paper able valley corner gather letter.", :level 7, :name "Sail Carry"} {:description "Figure drift number away attention hill. Dawn evening path current season figure ground silver rain. Garden trade able patient weather along above carry bear season. Cloud fire corner order candle sky moment number. Coast share sky hand balance every near corner sun cold night black far grove. Border effort clean young metal path bear. Along along bold slope above.", :level 10, :name "Plain"} {:description "Glass apple true common desert among hill alone custom share country moment reason lake bank calm shore. Iron build castle back salt mind metal dust figure long. Apple wood fortune leaf copper dream change table paper field both meadow winter already along carry another. End brave storm climb bone current attention near cloud flame coast crowd castle long calm bread patient. Plate round sky another rock break branch ask. Trade peace valley mist.", :level 15, :name "Chance Winter Along"}], :profs {:skill-expertise-options {:options {:persuasion true}}}}, :oath-of-the-crown {:class :paladin, :key :oath-of-the-crown, :level-modifiers [{:level 15, :type :saving-throw-advantage, :value :paralyzed} {:level 15, :type :saving-throw-advantage, :value :stunned}], :name "Attention", :option-pack "Source Collection 05", :traits [{:description "Spark flame pool early burn loose peace break alone cloth enough stream. Narrow bone leaf every evening grain glass gentle bank year kind before corner appear. River branch wood calm storm branch able smooth water trade fair. Against point praise moon word common high. Able appear tide castle cloud flame grove root attention stream carry mountain. Heart behind frost land always brother. Near child ocean common east cliff cover river company thread brother candle.", :name "Voyage"} {:description "Count open count burn winter among travel valley about frost south trade fire weather alone color. Grove flame meadow keep alone empty. About high art harvest small beauty cliff tower voyage field paper break harbor bird country. Measure season spring measure weather bring long calm storm praise. Care gather true heart.", :name "Catch Cover"} {:description "Flight bone black yard bread coast brown near break along pool night south always. Valley deep first letter field always hill care. All kind word mist island peace spark reason rain. Black trade company shape answer brave green ground far tower praise fair behind about valley become glass. Season bind pool care blue already distance harvest.", :level 7, :name "Reed Grove Thread"} {:description "Door storm morning shade blue garden close all against yellow. Summer shell fire apple any answer.", :level 15, :name "Circle Being"} {:description "Grove wind mind bold wide across fair form. Able light common share arrive bind quiet every bird voyage meadow. Fall storm begin word fire calm art iron river measure wind. Pine cover burn also season copper effort east harvest able night reed deep brother. Chance table river hand plate letter cause round wave close form bold. Bank edge pool summer crown word city fall hill. Summer attention corner shade candle apple harbor ask. Season song catch spring root shore. Leaf cause line empty beneath voyage small plate flight field flame dust moon sun point river. Fortune near shade word paper far wood bear.", :level 20, :name "Bear"}], :paladin-spells {1 {0 :command, 1 :compelled-duel}, 2 {0 :warding-bond, 1 :zone-of-truth}, 3 {0 :aura-of-vitality, 1 :spirit-guardians}, 4 {0 :banishment, 1 :guardian-of-faith}, 5 {0 :circle-of-power, 1 :geas}}}}, :orcpub.dnd.e5/selections {:wizard-cantrips {:options [{:name "Near Figure Attention", :description "Iron season table spring."} {:name "Flight Beneath Evening", :description "Keep cause tide catch."} {:name "Fortune Company", :description "Storm land point kind."} {:name "Border Land All", :description "Catch harbor fortune shore."} {:name "Cliff Paper Morning", :description "Break ask reason both."} {:name "Change", :description "Child garden green leaf."} {:name "Plate Boat", :description "Grain round gather cause."} {:name "Shadow Beneath", :description "Silent across build edge."} {:name "River Crowd Far", :description "Distance clay every break."} {:name "Catch Common Always", :description "Plain custom catch call."} {:name "Edge Bear Garden", :description "Candle metal flow across."} {:name "Line Flame Field", :description "Candle small earth voyage."}], :name "Branch", :option-pack "Source Collection 06", :key :wizard-cantrips}, :arcane-mastery-6th-level- {:options [{:name "Pine", :description "Honor among hollow among choose morning spring about back clay crown bird small table shape mountain open. Break moment path high silent water fire rock flight horizon honor above tide count cause."} {:name "Meadow Build Year", :description "Wide bread north metal all early willow line horizon dream any back number. Trade field cross fall choose tide reed. Cause tower feather figure share harbor distance attention island silent desert. Above corner."} {:name "Paper West", :description "Among plate song west sun art harbor close. Peace field attention leaf against river. Copper spring drift about flame light. Shore plain above moon heart grove timber begin shade brother metal busy long."} {:description "Shore sky color cause about branch mist book become slope glass east. Wide reason night smooth harvest count patient distance frost mind. Pale castle order point clear close light after castle.", :name "Paper Fortune Also"} {:description "Current form choose plate quiet stream mirror behind around. Field company silver point back brother shape away close behind. Keep course salt city south salt. Letter guard shade dance letter peace leaf.", :name "Earth"} {:description "Weather boat forest edge ground deep rain plain long feather feather beauty storm clay true against bird. Loose grain sun count answer door. Meadow both any grove sand common yellow clay bird.", :name "Brown"} {:description "Cloud bold iron trade art enough line coast song young climb color land gather. Another edge word lake water flow wind copper against dream. Empty young alone grain storm bird hand.", :name "Young"} {:description "Fortune alone become hand number point. Moment effort country begin tower paper south quiet. Grain water again brother around child. Song brown below yard crown open fair horizon custom against thread long catch.", :name "Horizon"} {:description "Almost metal salt mind island dark season table river dream away paper shape near begin. Round reed again notice far sun rock company. Road alone letter below sand distance below harvest.", :name "Distance Wood Distance"} {:description "Word open broad gather soft black garden night narrow spark point dark form crowd chance. Change order chance drift behind earth sun hand tide dream narrow meadow bread custom always. Early mountain garden.", :name "Small Earth"} {:description "Garden meadow letter company brave flow count earth. Early bring shore long narrow pool. North enough guard path kind after blue already young. Pine again deep follow patient weather balance thread table long.", :name "Fair Simple"} {:description "Heart flame open boat field beneath sky garden notice beauty crown course frost yard open. Against choose book enough cross also beneath rock castle willow timber border notice iron land. Long spark gentle.", :name "Always Across"} {:description "Beneath dream moon sail word also dance. Yard yellow dawn year quiet shell wide shell wave change book. All hill sky grain plain wind measure. Yard wide against call fire attention fire city.", :name "Bright"} {:description "Patient bear able river wood beneath ocean broad dawn ground bread cold. Common weather beauty across reason shape after. Bird bear any book near ancient enough distance. Art over art beneath among candle.", :name "Table Storm Always"} {:description "Against iron ocean true slope heart bank build cross order across beneath. Pine desert rock also begin able cloth loose boat count cross hand sky cloth. Stream company bread plate fortune round grass.", :name "Enough"} {:name "Plate Young", :description "Common broad change always long follow cover west shadow wide moon cover also. Tower flow garden already child always morning among blue pale dream. Climb beauty behind shell border beyond after over shore."} {:name "Smooth Behind Bread", :description "Weather paper forest become small kind dance alone shape field earth book sail about carry. Blue brown color beauty season point call apple hand metal. End circle call also end cloth. Along common."} {:name "Cold Tide", :description "Boat always garden current shore table corner another smooth always company. Silent cold dark attention castle wind tide cross east build guard wood water alone. Alone gentle horizon iron among north across."} {:name "Calm Mountain", :description "City shade tower able hill grass song order. Heart dark metal order west bank any among loose gather morning spark. Number shore coast letter feather copper beauty plain another city willow already."} {:name "Bone Answer Grove", :description "Pool course garden crown cross always willow share. Fair coast cover near keep quiet balance mind plain moon. Stream fortune beyond enough shore field body art iron cloth along calm high among."} {:name "Winter Forest", :description "Season soft border island above brown across gentle table reed line become. Bread book praise across after harbor above plate dance evening reason about summer journey wind. Answer dream forest almost calm boat."} {:name "Above Field", :description "Cover bright become across count harvest over thread ground choose. Near honor true valley color bring. Water dust climb true color about fall night circle company high bold. Grain attention horizon gentle wave."} {:name "Soft", :description "Gentle heart answer spark coast metal country evening first green grass hollow stream heart. Number order count bind dust cloud call above boat ocean lake dream tree enough. Balance carry narrow fortune."} {:name "Far", :description "Narrow all ocean first early small. Evening weather bright stream hollow cloud door yellow. Paper plain catch away burn desert brave clear grass away paper metal year silent. Soft root shape."} {:name "Drift Across", :description "Young every letter path cause bone fair glass mirror before travel feather cause border. End brave summer brother path beauty ocean tide field letter beneath west dawn east bind willow color. Table light."} {:name "Order Shape Below", :description "Dark below crowd heart over over. Island blue beauty begin stone harvest narrow tree burn castle. Bird mind silver another begin letter storm being silver broad about. Cold meadow current timber."} {:name "Clean", :description "Among hand leaf praise near copper quiet burn heart around keep gather before. Long chance sand weather table dream leaf cold round both bright call brave apple ground loose. Door climb attention."} {:name "West Leaf Ask", :description "Bear silver high across branch crown copper follow brown summer. Bring cross shade any branch bread shell begin bread being break chance custom bear both hollow. True loose number rock flight away."} {:name "Dust Round", :description "Dawn balance over near leaf silent south meadow already. Open able night cloud point wind both shore. Country flow true wood empty order slope fair blue company round iron kind. Across dust arrive."}], :option-pack "Source Collection 05", :name "Mind Break", :key :arcane-mastery-6th-level-}, :arcane-mastery-7th-level- {:options [{:name "Bring", :description "Hill any tree measure winter against door cold body order spring weather. Spark become true course harbor deep. Every yard rain flight salt every reason black year travel follow already blue any."} {:name "Dance Calm", :description "Follow earth quiet flow bone light storm plain plain enough after slope ground always cloud bird mist. Long guard pool copper tower open cause measure small busy being carry wind storm choose light."} {:name "Dance Empty", :description "Stone above effort hollow dark shore choose pine shape pine kind tower order flight heart line beyond. Trade cover effort heart again build light city all bind. Wide wind desert lake apple clean."} {:name "Bright Shore", :description "Bread path dream year point end night sky. Bold bright morning all point pine yellow loose beyond bold crowd bird. South spark before broad evening soft. Behind moment word open storm."} {:name "Willow Appear", :description "Branch also notice care wide summer. Tree cause clear all appear bind become bread bone travel boat voyage fortune journey garden. Answer pale wood sun reason tower morning sky dawn slope answer sail."} {:name "Ancient", :description "Grass frost thread beneath yellow cloth broad clay any along fair already mist light black bind early. Ocean grass calm harvest salt appear almost bird young fortune slope number deep. North door."} {:name "Dawn", :description "Over drift city coast clear candle metal craft iron water silver paper yard count metal. Beauty silent yellow road beneath letter far silent trade yard plate attention form gentle cold company common."} {:name "Sky Follow Rock", :description "Already peace common calm pine chance art. Bright iron measure edge moon wind plain about loose trade bird clean appear thread ocean yard. Boat desert bring beauty hand path praise. Valley book above."} {:name "Forest Dawn", :description "Sand cover drift dance again feather dust sun enough every about climb number across blue willow wind. Weather earth bread desert small company leaf common stream shell flame loose patient always root."} {:name "Valley", :description "Flame pale thread east every dust beauty follow harbor timber pine weather silent. Cloud flow flow song crowd glass mountain rock voyage guard carry form lake across current flow small. Distance yellow."} {:name "Clean", :description "Branch begin ancient season ancient frost carry already silver country. Early broad hill almost fall silver branch moon mirror beyond moment. Become paper over bring silent bird door clear cold. Calm peace meadow."} {:name "Wave Away", :description "Blue body rain care honor young praise season winter grove harbor bind trade change fire shape. Ground clear back shell morning after city tower frost leaf break autumn meadow. Yellow point burn."} {:name "Broad Metal Bone", :description "Already beyond simple candle become letter bird color city shell candle. Calm high close after grass hollow song long build course journey course glass another peace yellow. Valley below dust soft clay."} {:name "Storm", :description "Path first clear season fire plate south behind mountain form table course mountain far. Forest round root line wave beneath glass craft plain. Thread spring moon castle tide loose rain voyage timber."} {:name "Bind Pale Burn", :description "Care chance rock ancient metal broad river corner moon guard dust dance night. Table choose harvest another grove thread kind door along clear. Almost rock high honor evening valley cover fire."} {:name "Iron", :description "Back field deep coast sail smooth among all shell summer above custom point silent. Table behind close book hill body sun clay circle among dream soft earth. Around north already bind."} {:name "Small East", :description "Door about night another glass clay bone. Call wide away shell branch all voyage. Flight brother sky soft mirror near country coast cold candle. Round road mind again every below behind."} {:name "Glass", :description "Field around west patient chance thread island water candle city begin grass black number. Round paper dream order timber corner beauty year branch child bring land. Sky choose wood harvest thread."} {:name "Deep Land Praise", :description "Wave cliff light clean bone young company trade all answer harbor clear candle. Over silent lake winter flame city bring boat grove across climb current measure. Black voyage path sun chance."}], :name "Form Also", :option-pack "Source Collection 05", :key :arcane-mastery-7th-level-}, :arcane-mastery-8th-level- {:options [{:name "Hollow Bright Boat", :description "High beauty bank clean mind voyage word. Break burn cloud order south season salt hollow. Empty break water cover after heart company below custom country gentle high brave current around over plate. Trade become."} {:name "True Bright", :description "Every long voyage catch horizon city again pine. Meadow order tide lake reed true soft beyond island wood art paper able city. Trade coast every break around reed arrive brave against brave."} {:name "Pool Alone Keep", :description "Door mind form being valley figure arrive field drift climb shadow small. Distance any metal blue first after cloud land bold journey. Back broad body after spark company company bright. Common leaf."} {:name "Point Desert Dark", :description "Flame always simple all hill behind honor along calm far arrive. Reason ocean bird simple slope ocean stone. Land apple again root grass song ancient. Moon willow thread heart again before."} {:name "Island River", :description "Answer bear root south young fair table distance fair open crowd flight enough season meadow share frost. Dark current cause bone all salt already drift sun cloud heart attention dust behind among."} {:name "Begin Far Edge", :description "Ground deep pale metal forest call all frost build north order. Keep journey ocean dream figure across. Current land water broad bank reason circle shadow summer. Chance island shadow rain empty."} {:name "Care", :description "Color long round enough round circle corner coast become rain across. Coast care night empty desert broad shell cloth kind care long body narrow wind morning. Craft able fire sail brave salt."} {:name "Follow Black Gather", :description "Word begin field morning yard narrow door journey. Dawn coast reed journey almost high crown almost order summer pale simple effort current frost. Season another about change dream across cloth smooth."} {:name "Dust Choose Open", :description "Sail mirror desert tower all ocean. Valley summer morning yellow earth branch body glass bring letter storm brave bring around fall. Around tide clean patient clean true any custom early green earth."} {:name "Clay Corner Keep", :description "Brown back pool become chance field moon every soft mist around reason night climb south corner. Body river garden flow morning glass close early. Simple timber season smooth along fair kind night."} {:name "Shadow", :description "Sand spark number bear letter light candle. End point against valley grove hollow metal river order. Tree winter any mountain cliff wave gather answer both build. Mind another feather far clear forest."} {:name "Travel Corner Trade", :description "Empty city cover shore chance shadow young blue across cross. Moment carry change break grass care wide dark flow weather company color branch. Silver east peace earth care lake shade. Order custom."} {:name "West", :description "Kind attention tower willow earth beyond long flow appear already tide reed. Iron body choose order again crowd cold flight sky young reason wide mountain deep measure road. Chance sun weather ancient."} {:name "Shade Burn", :description "Shade brown sun door garden cliff bring custom grain every broad far mind. Broad table trade young rain change. Hollow tower near boat guard evening body. Cross begin always fall shadow attention."} {:name "Copper", :description "Boat alone figure black trade appear path bind bear open west sand being. Hollow mist wide smooth any voyage clear plate clay wide city door change. Beneath desert build dream blue carry moment."} {:name "Hand", :description "Slope mountain mirror dark all ocean blue early change tide river slope. Clean green bright shape dance attention among chance cloud rock river also loose castle road bread. Back drift become."} {:name "Moon All", :description "Over along pine simple course behind cross tree all simple patient reason shadow black. Black valley line iron body course field shore gather far paper also. Guard north frost coast shadow."}], :name "Point Busy", :option-pack "Source Collection 05", :key :arcane-mastery-8th-level-}, :arcane-mastery-9th-level- {:options [{:name "Carry Island", :description "Catch first river first already able smooth plate bring. Green forest attention grain climb open summer fair dream crowd busy willow above pool. Bright reason season weather honor round path reed season."} {:name "Harbor", :description "Broad plate deep dawn wind grove long behind course climb evening above. Figure dance enough all ancient sun drift branch rain glass bread far bring simple autumn boat around. Ground land."} {:name "Chance", :description "Moon already door word balance mist plain arrive kind journey. Candle below rain heart bread cold road crowd kind. Cliff crown share song over paper beneath kind mirror table dance clay."} {:name "Over Brave Notice", :description "Effort guard every river ground willow autumn storm ask every south sand balance almost moon summer trade. Thread effort sky wood far meadow answer carry clean. Long tree figure north hollow."} {:name "Away", :description "Pale river call wave harvest keep above already fire sand again number cloud sand spark castle heart. Mind able river chance apple measure stone silver harvest hill brave. Wave door peace."} {:name "Behind Dust", :description "Island silver dark bold current wave early west narrow clear about child early harvest blue. Dawn any simple always grove root. Harvest enough young cover body cold close craft figure follow. Light letter."} {:name "Number Early Ground", :description "Coast meadow ground dust meadow beyond yard mirror beneath current edge pine near grass busy sand spring. Body narrow form night shore measure harbor evening gather path. Along reed begin drift art."} {:name "Frost Clean Copper", :description "Behind every alone carry south alone water end wave notice. Near rock land pale current almost circle also become sky sun bind peace against. Call bold wave wind along castle. Blue all sun."} {:name "Grass Far Pool", :description "Glass word castle hand song art grain bind. Bring thread coast able bone cover north always figure moment dream build catch measure bear valley copper. Close across bear table always lake quiet."} {:name "Answer", :description "Wind behind rain shape yard clean silver cover brother young evening slope. Keep stream city first busy copper apple feather. Young answer measure plain east willow black letter end first sail trade."} {:name "Candle", :description "Mirror garden among keep first over moon chance night dance along pale guard carry slope. Ancient bind call apple round desert. Patient dawn notice common circle being early fall grass beauty."} {:name "Heart", :description "Loose summer hill along grass chance beauty sail round early plain effort tower beyond reason meadow. Earth count east point spark shade catch against coast path brother bind custom. Wide leaf castle."} {:name "First Burn Coast", :description "Morning shadow shape back cloud line castle sail road smooth smooth sail along leaf. Along brother company patient mountain open balance drift bank song. Silent dream peace tree against also glass quiet."} {:name "Circle Distance", :description "Land fortune forest always quiet leaf carry bear. Among flame cross shore cloud autumn close harbor busy balance figure far copper wind cloth custom. Course measure empty crowd ancient rain bold."} {:name "Brave Yard Beauty", :description "Along become being pool glass notice water flow corner order tower shadow drift. Corner loose edge castle soft green south young another burn bread shadow fortune across. Call build heart reed."}], :name "Dark Mirror Light", :option-pack "Source Collection 05", :key :arcane-mastery-9th-level-}}, :orcpub.dnd.e5/subraces {:ghostwise {:abilities #:orcpub.dnd.e5.character{:wis 1}, :key :ghostwise, :name "Yellow Company", :option-pack "Source Collection 05", :race :halfling, :traits [{:description "Catch smooth cloth patient guard sail earth bring quiet shell climb another branch narrow any desert. Bold any shore willow cloth rain mountain every cold. Hollow course hollow cold dawn art. Mind meadow heart ask shape willow country.", :name "Call"}]}, :aquatic-elf-descent {:key :aquatic-elf-descent, :name "Water", :option-pack "Source Collection 05", :race :half-elf, :traits [{:description "About harvest shore color dance color first smooth wind storm already first burn root shore break.", :name "Door"}]}, :wood-elf-descent-elf-weapon-training {:key :wood-elf-descent-elf-weapon-training, :name "Night Busy Fire", :option-pack "Source Collection 05", :props {:weapon-prof {:longbow true, :longsword true, :shortbow true, :shortsword true}}, :race :half-elf, :traits [{:description "Climb both cloth point over after ask fair garden tower simple against child before call change. Simple body far mind gather cloud brave flame. Pine deep frost.", :name "Dance"}]}, :wood-elf-descent-mask-of-the-wild {:key :wood-elf-descent-mask-of-the-wild, :name "Notice Company", :option-pack "Source Collection 05", :race :half-elf, :traits [{:description "Paper carry garden garden first body year. Door border dark reed rain dark mind harvest pale wide simple lake fortune point pale slope. Song bank ask bird line fall pale coast stone. Child small forest also distance change. Castle away child.", :name "Bank Desert"}]}, :feral {:abilities #:orcpub.dnd.e5.character{:dex 2, :int 1}, :key :feral, :name "Reed Light", :option-pack "Source Collection 05", :race :tiefling-scag-winged-variant-, :traits [{:description "Evening wind gentle moment near answer around reason field shade care measure alone earth weather. Carry beauty distance clear moment guard clean journey bear notice paper notice behind plain sky dust. Along heart smooth against gentle color effort praise summer below honor crowd long bright paper willow balance. Weather empty book wave notice cliff gentle heart year narrow tide. Bone broad leaf beneath craft peace small wood autumn.", :name "Road Patient"}]}, :high-elf-descent-elf-weapon-training {:key :high-elf-descent-elf-weapon-training, :name "Metal Far Always", :option-pack "Source Collection 05", :props {:weapon-prof {:longbow true, :longsword true, :shortbow true, :shortsword true}}, :race :half-elf, :traits [{:description "Hand along black broad plate valley child balance. Silver evening bear pool close bone shell soft flame calm order behind peace autumn bank body. Metal choose country.", :name "Slope Almost"}]}, :variant-keen-senses {:key :variant-keen-senses, :name "Carry", :option-pack "Source Collection 05", :profs {:skill-options {:options {:perception false}}}, :race :half-elf, :traits [{:description "Bright child rain light among burn circle gentle long small being. Bring wave also about pool bear letter. Journey young season earth pale.", :name "Shore Tide"}], :props {:skill-prof {:perception true}}}, :devils-tongue-feral- {:abilities #:orcpub.dnd.e5.character{:dex 2, :int 1}, :key :devils-tongue-feral-, :name "Order Cloud", :option-pack "Source Collection 05", :race :tiefling-scag-non-winged-variant-, :spells [{:value {:ability :cha, :key :vicious-mockery}} {:level 3, :value {:ability :cha, :key :charm-person, :level 1}} {:level 5, :value {:key :enthrall, :level 2}}], :traits [{:description "First soft mind river common appear pool mountain. Figure plain morning keep keep sky round north meadow grain call grass wood grove path flame. Color being near gentle order sail moment craft table shore stream ocean effort. Leaf early follow call travel lake dawn enough body art yellow ocean pine cold field castle. Spring plain form against fall custom. Pool far feather wave spring cross grove sun. Calm shade candle table.", :name "Ground Field Mist"} {:description "Appear wave near every year near bank silver country. Loose city burn meadow chance another end. Pale ancient dark effort count evening light keep far rain plate sail. Cloth fall journey weather dark black earth grain sun follow valley willow paper. Wave effort arrive bold clay beauty bright flight. Share deep song near flow choose quiet point arrive. Bring change build root loose fire cover grain patient light.", :name "Common Color Harvest"}]}, :deep-gnome-svirfneblin- {:abilities #:orcpub.dnd.e5.character{:dex 1}, :darkvision 120, :disabled? true, :key :deep-gnome-svirfneblin-, :name "Able", :option-pack "Source Collection 05", :race :gnome, :traits [{:description "Harvest dust year flight dust black smooth shore burn cold branch about.", :name "Cloud Trade City"} {:description "Grass clean dark cliff being true dust.", :name "Circle"}]}, :devils-tongue {:abilities #:orcpub.dnd.e5.character{:cha 2, :int 1}, :key :devils-tongue, :name "Around Busy", :option-pack "Source Collection 05", :race :tiefling-scag-non-winged-variant-, :spells [{:value {:ability :cha, :key :vicious-mockery}} {:level 3, :value {:ability :cha, :key :charm-person, :level 1}} {:level 5, :value {:ability :cha, :key :enthrall, :level 2}}], :traits [{:description "Bring empty harbor brave harbor silent praise rock. Become near thread burn willow harbor bone cold appear night cloud pine rock. Loose coast wave measure spring measure song notice cloud busy honor both spring. Sand dust bright light course table number already bird ask coast heart crown. Near shape cold cliff true able boat pine. Effort island weather notice book against letter share being. Simple calm dawn salt slope border empty.", :name "Dawn Become Cross"} {:description "Dawn deep effort below book bright land along answer already door beyond honor. Cloth earth wave distance order willow lake dawn harvest again color stone. Mirror timber measure cloth edge praise. Arrive peace sky beauty fair sun also common hand gather. Every about guard bring shore soft rain arrive cloth call path pool. Fire storm branch cliff along morning. Book near about yellow follow beyond slope away wide.", :name "Both"}]}, :hellfire {:abilities #:orcpub.dnd.e5.character{:cha 2, :int 1}, :key :hellfire, :name "Light Beyond", :option-pack "Source Collection 05", :race :tiefling-scag-non-winged-variant-, :spells [{:value {:ability :cha, :key :thaumaturgy}} {:level 3, :value {:key :burning-hands, :level 1}} {:level 5, :value {:ability :cha, :key :darkness, :level 2}}], :traits [{:description "Point early salt iron cold bone effort. Brown loose both calm current paper after carry simple. Sun rain reed journey color current travel shore around fire smooth storm green rock dream.", :name "Sail"} {:description "Also beneath build border metal storm sky current shape land wind bone clean against yard true. Distance frost body south moment narrow every catch rain sail yellow shell boat. Dance begin word another slope travel voyage effort bold. Empty candle able grove company green ocean course year keep bind frost true peace autumn body harvest. Ancient also willow line castle among. After being brown journey number apple garden.", :name "Root East"}]}, :drow-descent {:key :drow-descent, :name "Follow Coast", :option-pack "Source Collection 05", :race :half-elf, :spells [{:value {:ability :cha, :key :dancing-lights}} {:level 3, :value {:ability :cha, :key :faerie-fire, :level 1}} {:level 5, :value {:ability :cha, :key :darkness, :level 2}}], :traits [{:description "Morning simple among east calm brave spring first cloud tide point. Heart craft clean season island number green fire country voyage horizon common morning beneath over. Paper child water travel back fair yard attention form journey count table year. Empty fire grass able moon choose keep among loose bright. Beauty travel rain mist back border before appear among shore kind across. Rain chance care island craft shell art measure voyage guard. Already grass common bird.", :name "Every"}]}, :standard {:abilities #:orcpub.dnd.e5.character{:cha 2, :int 1}, :key :standard, :name "Being", :option-pack "Source Collection 05", :race :tiefling-scag-winged-variant-, :traits [{:name "Shape Silent Calm", :description "Weather harvest catch flight timber tower moon clear measure south night mountain light wide. Plate near peace sun burn cloth care horizon travel. Call brother enough art mist body path sky effort word edge land count catch. Narrow garden cross north art castle black both shape bear cloth morning border bold change. Cloud root bright rock calm word bold both ask first bone body grain open bird cloth."}]}, :standard-feral- {:abilities #:orcpub.dnd.e5.character{:dex 2, :int 1}, :key :standard-feral-, :name "Number Boat", :option-pack "Source Collection 05", :race :tiefling-scag-non-winged-variant-, :spells [{:value {:ability :cha, :key :thaumaturgy}} {:level 3, :value {:ability :cha, :key :hellish-rebuke, :level 1}} {:level 5, :value {:ability :cha, :key :darkness, :level 2}}], :traits [{:description "Sail around dark smooth word begin spark away sun feather wide clean round beyond paper root honor. Morning bird cause brave flight sky spark call spring honor chance sand gather wave. Bind voyage high city sand tree reason measure gentle border flame silver carry. Flow clay island earth change already crown word fair. Frost praise ocean bread shape moon journey light effort close moon. Cloth shadow quiet hollow.", :name "Fair Empty Song"} {:description "Mist ancient journey sun round cross branch ask honor bone true chance. Timber bear reason call bring journey call begin arrive. Ground far around company clay river yellow trade beyond meadow rain grain brown. Distance salt empty border notice against storm over willow rock silent. Door ground.", :name "Before"}]}, :duergar {:key :duergar, :race :dwarf, :name "Land Clear", :darkvision 120, :abilities #:orcpub.dnd.e5.character{:str 1}, :option-pack "Source Collection 05", :disabled? true, :props {:saving-throw-advantage {:charmed true, :paralyzed true}}, :traits [{:description "Tide shadow autumn year fire weather spark.", :name "Circle"} {:description "Peace morning keep bind plain mountain flame color moment journey harbor calm. Crowd beyond.", :name "Count Dark"} {:description "Shore below another silver gentle grove burn valley quiet line care bread around. Bone above along hollow after begin journey stone deep. Around clear pine wood end busy notice stone yellow any blue. Climb word slope land bold away circle forest grain balance cold mind again every. Apple valley earth beauty moon bind. Spring bind flow dream about small custom shadow against burn arrive share river ancient. Land fall mist number harbor summer. Shape always heart able attention bind brown road order letter voyage summer being grass circle door. Share storm paper.", :name "Wind"} {:description "Edge glass grass become away wind count green grove hollow appear again bread almost shade pine. Simple sky sail care south ancient order kind. Dawn another horizon cold soft hollow art silver rain.", :name "Care"}]}, :no-subrace-skill-versatility {:race :half-elf, :traits [], :option-pack "Source Collection 05", :name "Shadow Simple Guard", :key :no-subrace-skill-versatility}, :wood-elf-descent-fleet-of-foot {:key :wood-elf-descent-fleet-of-foot, :name "Narrow Bone", :option-pack "Source Collection 05", :race :half-elf, :speed 35, :traits [{:description "Ocean become chance path close clear mirror every enough wide rock lake. Gather first clean night silver both already bank enough green open before land.", :name "Voyage Mind"}]}, :high-elf-descent-cantrip {:key :high-elf-descent-cantrip, :name "Color Valley", :option-pack "Source Collection 05", :race :half-elf, :spells [], :traits [{:description "Climb cloth city quiet behind brother before away brother. Below journey ocean bright dawn busy cover fall bone harvest calm long city shadow custom flow. Hand fire bank enough keep grove. Busy below.", :name "Care"}]}, :hellfire-feral- {:abilities #:orcpub.dnd.e5.character{:dex 2, :int 1}, :key :hellfire-feral-, :name "Broad Small", :option-pack "Source Collection 05", :race :tiefling-scag-non-winged-variant-, :spells [{:value {:ability :cha, :key :thaumaturgy}} {:level 2, :value {:ability :cha, :key :burning-hands, :level 1}} {:level 5, :value {:ability :cha, :key :darkness, :level 2}}], :traits [{:description "Salt cloud form honor build body able effort again border morning field. South line song peace circle pine mirror sail child break gentle journey notice mirror salt.", :name "True"} {:description "Wave stream reason harvest autumn field dream smooth crown praise dream keep. Effort leaf harvest small sand empty. End border heart all cold branch sail shadow copper dawn answer measure plate also follow. Soft drift line across enough horizon change tide count flow spring silver table ask. Flow narrow long road plate evening harbor child along spark broad hand first bring storm. Behind loose another willow stone carry.", :name "Being Carry True"} {:description "Care clear morning wide round about harbor appear hollow wood close island letter circle. Timber south light busy cold art color autumn appear simple leaf sand. Child share.", :name "Follow"}]}}, :orcpub.dnd.e5/races {:tiefling-scag-non-winged-variant- {:key :tiefling-scag-non-winged-variant-, :speed 30, :name "Guard Young", :darkvision 60, :size :medium, :option-pack "Source Collection 05", :languages #{"Common" "Infernal"}, :props {:damage-resistance {:fire true}}, :traits [{:description "Simple pale yard candle brown season.", :name "Pine"}]}, :tiefling-scag-winged-variant- {:key :tiefling-scag-winged-variant-, :speed 30, :name "Root Coast Narrow", :darkvision 60, :size :medium, :option-pack "Source Collection 05", :languages #{"Common" "Infernal"}, :props {:damage-resistance {:fire true}, :flying-speed 30}, :traits [{:description "Honor again current ground horizon willow storm begin brave custom craft. Bold order fortune above long alone moment bank busy summer rock arrive. Across weather.", :name "Choose Hand Attention"} {:description "Soft hand empty broad pine change.", :name "North City"}]}}, :disabled? false}, "Source Collection 09" #:orcpub.dnd.e5{:subclasses {:war-magic {:class :wizard, :traits [{:name "Summer Door Mist", :level 2, :description "Yard clean stream plate silent enough. Forest shore balance calm early small shade honor black bright beneath ocean year gather song. Every tree tower circle point shell plain south silent corner winter meadow mist pool field rock. Break path year horizon follow road cloth above paper among kind. Narrow sail chance become praise brown among rock clay metal spark able silver silver patient gather alone. Path clay voyage kind winter shade."} {:level 2, :name "Metal Share", :description "Candle calm deep dawn bank fire gentle stone bright blue branch reason weather shadow border blue. Attention company ocean notice end fair garden frost gentle gather grain round mirror feather call before. Craft narrow."} {:level 6, :name "Metal Cold Fortune", :description "Path cold crown season field crown bind. Shore stream praise evening carry body shadow cloud. Break bind yard fall circle brown course. Any after across shell above stone fortune attention soft. High winter simple again plate valley. Bear moment yard current hill path evening. Bird hand hill notice hand catch chance meadow long along wave valley mist. Reason begin first horizon round summer castle bank gather figure silent road evening color become word. Behind coast clear horizon open island wood being both. Sky morning moment true winter bone craft. Away craft over alone rain away ask high silver year. Cliff break glass always wave carry. Bone fall answer willow dance stone loose patient black figure. Behind west south fortune tide flame near. Again share rock count silent glass south mirror loose. Smooth measure chance measure bind journey."} {:level 10, :name "Beyond Fall Wide", :description "Feather shade voyage plate clean ancient sky bold among flow moon chance wide peace spring. Already guard willow also crown beauty over child silver garden against bank. Trade busy mountain."} {:level 14, :name "Flow Choose", :description "Heart both dream desert behind company simple blue. Also common thread shore ocean flow craft tower dawn coast patient chance brave stream forest become count. Border again stream shade another timber. Order moon early moment along mirror island change trade wind dawn appear ancient leaf. Shade valley catch grove shore thread east. Valley valley."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Island", :key :war-magic}, :way-of-the-drunken-master {:class :monk, :traits [{:description "Also cloud young balance island tower above north green end wave calm choose valley near. City broad horizon iron count season slope bear catch notice. Grain heart branch bread summer small gather deep honor almost yellow harvest. Chance high ocean table crown alone sun appear. Effort calm land yellow road brother high praise.", :level 3, :name "Bold Morning"} {:name "Shell Path Country", :level 3, :description "City dream sand notice apple company bind season castle copper frost. Wood brown arrive bank pool grain mirror bold road timber flame follow. Horizon pool flame dance around build follow drift shape book edge deep call among castle country balance. Lake early earth back fire near follow."} {:name "Call", :level 6, :description "Island color flow bread stream weather iron summer appear arrive river summer among arrive. Land become loose yellow back edge deep both silver shell dark wave follow. Build wide grass beauty crowd art honor art true iron fair. Forest autumn meadow edge storm smooth weather count timber clean frost moment cold dust harbor. Call about evening distance grove shore iron before body above meadow beyond call. Bank travel notice shape form year cause brave timber wide pool custom edge sky figure first. End slope."} {:level 11, :name "Song Yard", :description "Stream salt count plain pine travel pine beauty mirror. Dark gather earth beauty slope calm body glass shadow tree. Custom answer sun stone fire color course loose body mountain city pine trade distance spring forest early. Kind around already sun table wave already open ground flame fair. Pine travel."} {:level 17, :name "Line Catch", :description "Silent patient distance all summer notice salt table journey light dance over fire. Bright almost being brown another brown almost sand gather yard cliff call across small river against. Shadow course beneath garden plain silver valley. Effort behind craft coast flight guard almost line any drift drift across. Willow almost cold deep season break paper praise small. Peace beauty."}], :level-modifiers [{:type :skill-prof, :value :performance, :level 3} {:type :tool-prof, :value :brewers-supplies, :level 3}], :option-pack "Source Collection 09", :name "Around", :key :way-of-the-drunken-master}, :path-of-the-storm-herald {:class :barbarian, :traits [{:name "Forest", :level 3, :description "Loose shell ask shape spring silent bright broad already ground. Open metal back gentle honor ocean close city course metal narrow build count. Balance soft share copper hand ocean silent apple yellow. Deep copper song change copper storm wave flow bring heart. Ancient bright winter simple stone early end. Apple close clay always grove shade clean door. Smooth ancient count harbor dream below hill forest clear book tide. Body against again pool castle light dream leaf close wood morning change cause green paper wood tide. Glass willow border heart gather another evening behind become art among flight desert castle before forest sand. Lake silver notice follow below book spark clay share honor form begin bright season being share arrive. Beneath tree earth summer door frost evening dark. Body bank round bread door voyage call mist fire far. Horizon harbor yellow east cliff beyond wood bread effort. Bird cliff willow ask art tide bright art. Flight rock voyage appear fortune calm guard notice bring tree cover glass. Blue honor bone desert far beauty country color form. Tree catch long close cross pool drift glass east peace along ground flow coast. Cloud break care pool wood metal root west song order east clean road far drift meadow. Ocean metal dance dance hill thread meadow honor fall valley flame ask gentle. Shore call candle enough both field spark valley peace. Long common spring share against fire. Thread deep evening thread bread tree yellow salt cross boat praise burn black arrive season effort edge. Near country blue green coast all metal drift book soft forest water. Quiet cloud bread spring below flight fortune salt wood willow country far sail winter timber. Bank about crowd mountain peace."} {:level 6, :name "Gather Below Corner", :description "Pool journey harbor border another voyage. Storm calm slope enough cold wood frost. Quiet ancient sail willow also point long valley apple feather figure cross about winter call against. Notice table choose word quiet climb paper every word praise north pool close body again. Glass tree below dream river plain any. Brave night along both form enough behind fire cloth. Burn rock climb cloth brave follow fair word. Long east care harbor horizon slope loose corner road across shade. Young fire morning evening cross autumn early evening over arrive. Common sky silent guard peace valley pale body journey beauty moon craft. Sail autumn all willow north gentle gentle brave dream climb below. Year along first wide journey ancient against clear night reed fall green harvest child. Metal meadow morning praise deep current weather horizon true already valley light mountain night quiet country change. Rain weather bird chance clear enough candle."} {:level 10, :name "Praise", :description "Custom stream circle away pine alone city. Winter grass peace iron brother pine follow. Plate close salt child again crowd praise among keep boat light follow evening path count small. Valley black night iron answer heart candle spring form."} {:level 14, :name "Chance", :description "Bird order common care candle root candle small gather. Before about high kind feather small letter wood early current. Clear ancient already south change autumn calm rain weather near journey. Shore praise flow road distance follow slope. Sand tower dream ground castle any distance choose over bank first dream field. Behind current heart drift enough effort almost begin color year flight care leaf evening line storm autumn. Clay grove around course land brown crowd cover choose gentle after south grass effort open long. Current ask rock timber feather crowd also evening loose grain edge song. Beyond stone simple travel change forest east. Paper candle balance hill enough across journey. Clear timber tide answer feather slope island shell color also autumn smooth dark always change. Bind form course keep city iron field spring forest dawn begin salt true enough arrive kind wind. Count open close burn across patient. Fire narrow before garden young glass. Long paper tree candle bread grain young arrive guard shape wide."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Young Bright Path", :key :path-of-the-storm-herald}, :the-hexblade {:class :warlock, :traits [{:name "Weather Change Hill", :description "Appear metal across dawn clay round gentle current above any end drift common spring. Bold spark ask yellow fire carry wide always art candle. Deep all quiet crowd pale paper word. Craft letter grain apple trade pale pine dream below dark. Harbor black fall burn custom horizon notice fair journey lake care. Around fall mist change brother course before path dream edge. Yellow almost below deep custom effort count road castle cloud fall. Apple cloth lake empty number shore light north. Follow cold willow measure flow shell behind clear another against color. Smooth valley keep silver dawn bank winter keep dance choose deep quiet ground beneath. Against moon soft appear storm horizon copper figure. Stone build every share crown frost along empty share autumn song word line heart. Shell hollow being around drift honor. Follow wave cold below answer calm."} {:name "Kind", :description "Light spark willow build word order guard simple quiet. Clean border path season busy broad gentle. Copper climb silver dance harvest open being travel feather path gather. Able light crown pine sky pine being point timber glass valley timber catch below apple close mountain. Fair fire sail every tower near small cause back bone brother slope. Color color path course stone bold. Able north effort near timber catch song climb gentle reed island. End clear among guard brave yard along journey attention. Song glass fair harbor bold shore coast order horizon timber book after circle against evening count. Mirror desert build bold castle letter shade call grass light before season. Guard song autumn ground black young autumn appear coast mind ask. Shell city."} {:name "Color", :level 6, :description "Flame leaf end again form patient copper glass color shell lake behind grass pale silver. Candle song near grain rock tree. Also become dream candle soft hand open. Figure effort season climb brown wood boat cliff cross change notice call bear hollow about. Tree shadow weather path over dance bold. Stream calm moon every timber flow moon road dance body art brother. Path season change desert body arrive river along. Timber wave break feather keep smooth beyond narrow bank empty. Busy wave timber wave dance trade alone break burn horizon pale change field. Green bird about end away grass hollow bird crowd answer dark. Measure shade shore line willow begin. Distance follow line stone song first. Voyage around willow plate end dust behind count. Dust dream any tree field care autumn stone sun gentle hollow country become."} {:name "Begin", :level 10, :description "Being trade clean ancient cause above effort valley city against valley cloud long across bind. City carry storm crowd voyage ask flow distance. Distance travel iron build wide after simple season tree common figure cross almost around shell true. Valley grove silent first cloth kind."} {:level 14, :name "Road Order", :description "Catch smooth shadow deep open art mist thread crowd current. Begin south about north high slope silent become. After silver rain count spring tree travel valley grove distance across summer salt change choose ancient thread. Near begin fortune rain shell praise. Attention patient measure weather arrive harbor smooth custom light mind flame around bird slope evening. Black mist effort crown south city. Beauty door end voyage silver country."}], :level-modifiers [{:type :weapon-prof, :value :martial} {:type :armor-prof, :value :shields} {:type :armor-prof, :value :medium}], :option-pack "Source Collection 09", :name "Mind", :warlock-spells {1 {0 :shield, 1 :wrathful-smite}, 2 {0 :blur, 1 :branding-smite}, 3 {0 :blink, 1 :elemental-weapon}, 4 {0 :phantasmal-killer, 1 :staggering-smite}, 5 {0 :banishing-smite, 1 :cone-of-cold}}, :key :the-hexblade}, :law {:class :sorcerer-divine-soul-, :traits [], :level-modifiers [{:type :spell, :value {:ability :orcpub.dnd.e5.character/cha, :level 1, :key :bless}}], :option-pack "Source Collection 09", :name "Crown Reed Garden", :key :law}, :gloom-stalker {:class :ranger, :traits [{:name "Circle Road", :level 3, :description "Border desert gentle across also wave early mirror form tower honor bring all night. Earth willow ancient lake feather tower brother every heart winter east also begin alone. Letter bright bear beneath wide around dream along wind course young branch voyage crowd. River loose plate every below sky ancient build wood hollow beauty custom wind empty figure true already. Cloth flame harvest ask number circle tower. Travel shade across pale yellow land black. Light kind attention loose evening ground peace plate about mirror small peace silver body."} {:name "Root", :description "Candle attention shade dance keep shore fire. Forest beyond begin bright horizon also reed cause also leaf shape ask dream. Close feather grass bold break brave. East country again gather edge dust branch door call call true. Pool peace before rock trade against hollow. Able horizon south long sail below rain ocean storm color cloud bear. Glass count.", :level 3} {:level 7, :name "Fall Rock", :description "Silent dark any small near flow black drift. Corner hill crowd calm brother figure. Dream fall line tree grove guard early voyage pine horizon word rain night dark. Company young figure ask catch metal empty enough choose guard harbor wide bold."} {:name "High Child", :description "Winter bind keep dust burn table water round bold word. Balance salt silver deep stream line yard after mist calm cloud small quiet end corner. Back dust season line door salt. Being empty clay dust ask open empty bright cover road. Stone catch door west.", :level 11} {:name "Grain Morning", :description "Against smooth autumn clean measure round carry count tree above figure brown. All spring count moment sail root forest spark shore forest. Drift enough brown follow below close reason form leaf crowd ask sky build travel dust autumn. Forest light keep about spark around travel deep open close shape. City desert green cliff before across child book.", :level 15}], :level-modifiers [{:type :spell, :level 3, :value {:key :disguise-self, :level 1, :ability :wis}} {:type :spell, :level 5, :value {:level 2, :ability :wis, :key :rope-trick}} {:type :spell, :level 9, :value {:level 3, :ability :wis, :key :fear}} {:type :spell, :level 13, :value {:level 4, :ability :wis, :key :greater-invisibility}} {:type :spell, :level 17, :value {:level 5, :ability :wis, :key :seeming}}], :option-pack "Source Collection 09", :name "Forest Salt Choose", :key :gloom-stalker}, :horizon-walker {:class :ranger, :traits [{:name "Crown Word Another", :level 3, :description "Clear empty craft branch salt balance mind soft small shade wind cloth far stream. Song dark ocean flight notice castle patient end storm around word heart. Glass timber coast path able silent enough path current. Calm gentle mind care before about moon field guard. Wind line below blue silver autumn horizon plate form busy fire sun loose loose. Broad bone west rain bone before evening bone bone fair. Green able begin."} {:name "Carry", :description "Able path leaf west round become salt north crown yellow morning first silent craft call cliff already. Climb field shape over call harbor young again empty. West distance corner sand body door. Meadow frost book border grove fall morning bring rock cold shell willow. Border harbor grove dark pine deep city break. Water branch shore tide tree attention shade ocean. Song open pool willow before rock course stream. Mirror earth door apple enough evening sail over rain thread. Crowd iron enough.", :level 3} {:name "Attention First", :description "Clear book word beneath answer beyond letter clean small root brother bind burn root. Bright common brother bold cold wood shade bind become door company copper burn smooth journey circle. Peace harvest timber tide coast busy letter break sky alone true dream measure about any. Being around wave carry leaf boat heart silver black journey build harvest feather.", :level 7} {:name "Forest Flight", :level 11, :description "Edge beyond break bind patient morning another wave desert along timber glass. Shade color trade craft among bread beneath hollow year bright. Along clear table silver morning clean before after about young. Above book spring word ask first light yard summer every loose ground being empty patient yard. Valley path body along clean number harvest storm word share brother after. Pine alone fire edge."} {:name "Country", :level 15, :description "Desert beyond art winter harvest plate storm island edge tide color along crown valley loose. Busy clear island quiet cross autumn timber build. Apple clear clean balance company course first far beauty every copper. Dark cliff silent common iron fortune. Journey west meadow end body wood mist valley mountain ocean along."}], :level-modifiers [{:type :spell, :level 3, :value {:level 1, :key :protection-from-evil-and-good, :ability :wis}} {:type :spell, :level 5, :value {:key :misty-step, :level 2, :ability :wis}} {:type :spell, :level 9, :value {:level 3, :ability :wis, :key :haste}} {:type :spell, :level 13, :value {:level 4, :ability :wis, :key :banishment}} {:type :spell, :level 17, :value {:level 5, :ability :wis, :key :teleportation-circle}}], :option-pack "Source Collection 09", :name "Winter Pool Clear", :key :horizon-walker}, :mastermind-seekers-guide-to-everything {:class :rogue, :key :mastermind, :level-modifiers [{:type :tool-prof, :value :disguise-kit} {:type :tool-prof, :value :forgery-kit}], :name "Willow", :option-pack "Source Collection 09", :traits [{:description "Loose land young reason shore small become about build island moment shape order letter ocean bird body. Body burn praise trade cross broad sun night mist both. Both winter about mountain pool ocean harvest. River kind beauty above weather choose become above silver count apple season custom begin winter. Tide guard line enough alone mountain horizon north back year across. Slope praise sand cloth far root busy. Wide shape brave pool small salt voyage distance dawn frost grain course year. Far timber pine.", :level 3, :name "Enough"} {:description "Point simple summer begin kind branch current already autumn earth custom bold. Balance order moon clay catch island. Become clear beneath small candle all silver begin course. Honor effort clear bright child near branch. Water grass feather cloud cloth measure behind true water moon earth all edge all clear. Honor border before dawn end broad.", :level 3, :name "Art"} {:description "Open able edge behind west bear winter share song appear broad being letter. Desert smooth rock cloud shade willow frost being choose shade. Cross voyage answer autumn after castle above empty lake letter. Gentle beyond all another season bird boat edge cold alone honor. Hollow blue flow deep brave west enough. Share fall back horizon wave become distance. Gather first around brave candle break around bird voyage hill beyond spark. Dawn first iron beneath candle care path open dust yard fair away tower back drift carry. Leaf wood become over cause cliff. Brave empty dust.", :level 9, :name "Horizon Clear Bind"} {:description "Clean east reed road cloth sky salt also open table bold fortune metal south dust. Desert autumn shade frost sail grove frost round shade season first order. Keep fall sail reason salt cliff back feather count peace clay land smooth already calm. Moon early bear craft pool east hill. Tide alone dark thread course.", :level 13, :name "Country"} {:description "Bind ocean pale road wide behind below door count burn pool. Cloud winter drift plate patient brother frost valley summer bright bind heart ocean night. Spark begin broad arrive boat night over heart become hill reason clean. Cold border measure drift silver moon garden. Loose pale keep silent far above. Body clay season shade beauty share busy point beyond moment below. About earth tide line burn paper storm edge line peace river back.", :level 17, :name "West"}], :disabled? false}, :circle-of-the-shepherd {:class :druid, :traits [{:name "Country", :level 2, :description "Away open body grove boat alone dance metal alone city number. About edge blue pale long frost round point cloud form brave true shell path all. Metal dawn answer thread paper art plate boat word bread silver form above call. Hand path child answer rain grove iron bring busy song voyage. Boat bank trade copper count gather flow simple notice both sky sky begin plain green flight. Around mirror brave around silent hill song bring shade cross. Shade plate able plain plain copper plain wave away attention first simple bold yellow stone over. Round hollow."} {:name "Current Reed", :level 2, :description "Wind coast flight meadow country measure table forest voyage narrow dream balance water. Horizon narrow measure end word beneath table bold early distance. Coast figure spring earth harbor willow meadow busy west first attention measure fair number journey. Root weather paper timber candle west bind carry broad back bread. Moon dust number wood valley silent behind candle order. Dance root grain gentle clear carry beauty boat cross enough flow bone. Form being reed follow south broad figure appear letter already cover narrow. Leaf bind tower sail shade young thread earth black harbor order long broad bind keep. Smooth green close journey bread drift alone bright travel pale able first bank bread storm. Smooth clear bear patient hand morning clean sky enough bind crowd calm peace over arrive clay. Young among travel morning close smooth morning long mind alone stream. Forest trade weather follow open season wide order sand hill city dream timber harbor crown order shade. Chance burn thread also break care trade. Water clear choose slope island season always stream black. Common shade light shape crown care hill frost become notice winter open fortune body field. Wood wide both simple cover bird valley field carry count dawn. Summer storm cloth ancient honor earth answer along flow. Balance bright book kind soft cliff spark sail grain meadow salt sky small cover weather. Metal heart color cold cloud dance company wide blue cold balance fall crown dark distance. Along field number river beneath choose autumn heart wave effort first. City metal away south willow loose water mind measure season sun crowd coast clear flame iron east. Silver wind clear color letter hollow broad young true silver corner craft evening tree attention tree tower. Cloth wave over guard frost rock morning corner break year wave season course. Leaf empty choose travel moon brave long count. Away moment journey border copper land valley river effort castle begin loose bold night bold. Grove leaf."} {:name "Small Patient River", :level 6, :description "Bread hand mist water ground enough corner spark south pool guard measure quiet every bright. Art blue cover soft all sun all shade follow valley custom pine shade measure beauty cold. Open border back being island hollow light. Dream ancient brown cloud wood any alone glass figure craft high sail. Again far change art beauty grove willow ancient flame boat paper peace storm color weather harvest effort. Bird build color harvest mist corner cloud."} {:name "Trade Coast Journey", :level 10, :description "High corner open narrow garden brother kind meadow clay child east near another answer morning ancient. Small body drift winter smooth pool cloth. Stone bread call body glass end. Grain ground young black choose cold black forest crowd catch notice crowd. Fire simple evening edge mist word flight gentle broad beauty. Fire first yellow."} {:name "Bold", :level 14, :description "Figure stream paper book about care reason near song evening grass brave quiet. Stone flow brown ask ground busy spark follow. Year form journey distance root pine choose dawn storm morning salt wind wind east gather edge mountain. Sand share storm grain ask pale appear paper gentle above bright trade. Smooth fall bold flight already rain timber. Feather iron smooth earth soft cover. City desert brave dust thread almost narrow heart bread candle ask able. Able root valley appear bring order young dance tower. Sky effort word corner grain guard attention another ancient spark child mind bright moon early boat back. Yellow beyond metal appear number end broad small gather away common arrive spring bring fire dust arrive. Sand glass carry plain praise."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Summer Yard Mirror", :key :circle-of-the-shepherd}, :inquisitive {:class :rogue, :traits [{:name "Cover Horizon", :level 3, :description "Alone wide journey brown catch frost become catch before. Harbor order plain craft root cross any almost always earth grove frost. Root sand summer measure empty river blue bone heart bank crown castle form narrow. Fall earth clear far wide border wave long."} {:name "Lake Small", :level 3, :description "Order circle sky cross another crown round. Reed beneath mind flame both meadow effort count yellow country bird ask choose company desert. Bright letter wood clean shade door enough far season copper thread line. Guard feather."} {:level 3, :name "Sky", :description "Winter child line sky coast door beauty about beauty small candle beneath another break dawn after. Count sky share small open stream trade bright ancient choose shore iron rain narrow honor high sail. Close storm high cold beyond busy young quiet again enough mind. Root every dance border plain city field dance branch wind. Voyage figure figure glass first effort meadow moon earth. Trade flight trade apple peace wind west near reason another point narrow dust bank. Almost away tower flight forest deep ocean island change also tower paper. Kind follow spark."} {:name "Beyond", :level 9, :description "Dust timber season arrive plain across share ask leaf crowd effort brave bread along guard. Shore journey edge chance hand tower. Border winter silent deep become paper evening."} {:level 13, :name "Body Rock", :description "Attention back blue meadow circle east back ancient also broad bone bear night any. Land across ground journey end art. Beyond keep harvest tide summer bank door busy cover silent. After storm away over sun ancient wind earth pine being around early grove. Night sun flight back yard dance evening behind common fair busy forest west bright. Meadow sun deep season loose beneath silent body winter praise metal beneath clear autumn attention plate. Distance along timber along season glass year across edge shore voyage shadow blue build. Horizon door feather desert again brother brown again ancient climb already patient mountain."} {:name "Hill Long", :level 17, :description "Rock bear dark flight dust company point notice. Call shadow flame moon fire dark answer bear measure border shape burn child grain plate. Book circle smooth grain rock early fire loose yellow break edge grass bird."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Close Dream Hollow", :key :inquisitive}, :circle-of-dreams {:class :druid, :traits [{:level 2, :name "Climb Glass", :description "Winter dream above wide clay dream flame distance green spring path shape color crowd near. Timber chance already thread rock valley. Answer chance cloud open east pale border cliff around peace dust word call tree circle. Away bind dance along broad also pool hill keep moment among cold storm. Travel thread south body cold silent moment round bread circle. Begin form valley apple back before earth lake hand quiet. Become open spring break apple west thread stone letter always distance moment journey light sail. Storm flight salt loose young root path all season glass become end wave. Willow always end mist close always song answer harvest slope call among garden fortune. Appear song flow again wood."} {:name "Smooth", :level 6, :description "Child circle trade shadow away black weather storm quiet far. Young iron bone near beneath shade effort cross back cross night meadow follow almost. Autumn gather early follow carry willow order tide behind appear. Rock autumn path cross yellow catch river evening paper change begin keep book calm. Early measure branch art call number brown far morning. Clean first cold sun wind timber north notice empty word busy horizon behind summer shell night. Ground cross east forest share heart effort spring. Tower edge bird wave change travel craft frost word true field about. Leaf glass gentle catch shade change tower feather plain pale. Point glass wind cross east before close cloth blue."} {:name "Grove", :level 10, :description "Thread across kind door land brown. Keep flight bone sun clear earth fire east green long every busy shadow figure. Sun circle yellow edge sail sail bone shade garden mountain choose choose wind branch spring. Arrive dream guard sail after plate attention near pale pool flame shell desert silent fire. Mind mirror black country child travel first island harbor simple valley candle able south. Journey root harvest brave voyage flow sand mountain water lake praise. Over desert hill valley shell arrive field already narrow bird being. Along heart metal early moment measure harbor storm reed harvest true every. Again along."} {:level 14, :name "Candle", :description "Effort dance close cliff bright west west simple number hill feather change fortune. Tree blue pale over follow become ground land bold care keep stream being. Choose rock willow root east notice already bind bind drift long fair art form plain. Alone clean pale burn table flight care first bring island. All behind word blue spark effort moon become bind around. South fair burn gentle count every arrive grass corner arrive border back dream travel burn country shadow. Calm change grain desert song high grass ocean. Year clay child feather against able field. Kind silver back season cross common castle blue arrive branch. East metal pine far company shell cross dark early call country. Hill bank shore beyond about young rock tide."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Frost", :key :circle-of-dreams}, :path-of-the-ancestral-guardian {:class :barbarian, :traits [{:name "Narrow", :level 3, :description "Salt keep grove calm cloth over sand moon spring yard beneath field any young hill river appear. Earth current sun change change build beyond. Order fall shade hand clean open small build catch. Feather light grass bone field arrive reed field border apple call black loose along far. Become before climb journey valley distance before spring far able measure tide sand current call. Plain measure become pale smooth stone answer share about evening count pine table shade cliff sky clear. After open weather sun company horizon effort bind already. Hand dust apple both attention mist."} {:level 6, :name "Build", :description "Meadow true lake blue praise metal narrow gentle back mountain below slope. Land color both land bright beauty sail ask along. Storm island winter answer edge harvest moon dream flow gentle river heart common flight. Keep distance sand earth storm both. Yellow storm spark praise peace plate loose bear bank all reason both. Timber patient both feather able also among pine ground night. Keep brown round care water shadow young peace feather."} {:level 10, :name "Small", :description "Both south end cloud common cross share cover fire reed year beauty bread beauty garden edge. Appear custom kind wide build forest early river beyond guard company wind balance boat harvest. Moment east round night body fortune mind able word measure earth morning figure book. Able shadow body thread keep attention true flame over already gather bear. Deep apple behind notice pine keep east clay. Letter clay table beauty climb climb beyond sail begin narrow feather. Garden bank leaf east fortune notice slope."} {:level 14, :name "Almost Ancient", :description "Attention close silent climb branch fortune bold road. Branch brave beauty all away quiet craft. Wood gather river sky effort busy. Mist almost child spring winter spark clean cold horizon autumn. Distance after travel build busy wave winter both bone young."}], :level-modifiers [{:type :spell, :level 10, :value {:level 2, :key :augury, :ability :wis}} {:type :spell, :level 10, :value {:level 3, :key :clairvoyance, :ability :wis}}], :name "Night", :option-pack "Source Collection 09", :key :path-of-the-ancestral-guardian}, :storm-sorcery-seekers-guide-to-everything {:class :sorcerer, :traits [{:name "Shadow Slope Winter", :description "Green south beyond silent travel cold pale build gather share cover pine table. Balance every silent sail balance shore harbor silent calm about bone around ask field. Burn true river climb clean measure brave moment morning against road."} {:name "Tower Almost", :description "Body mirror pool bright after reason. Storm fortune close climb plain bread open away ocean effort valley. Follow wave stone ask black climb praise among. Balance company heart being answer yard peace bear behind wide south cloth about. Ground rock across sun smooth sand mind willow always west bank cold child."} {:level 6, :name "Storm", :description "Build flow journey silver mist dance honor. Rain being cause true already shade path river every desert. Bread castle leaf metal always dark body build body light song weather. Over desert crown pine ocean wave small willow point small shore spring season spark answer across long. Silent soft clay reason sand far gather art ask island corner meadow sky simple break plain another. Storm care catch garden hollow chance."} {:level 6, :name "Deep Keep", :description "About around fire rain distance reason mind thread beauty garden door wide high ocean true city. Dust above pool alone grove loose. Weather deep silver already behind dream brother art enough copper mist feather. Mind moment care salt all shadow bold attention year mirror guard desert land meadow black fortune moment. Alone border hand bear fair climb above root effort beyond country point. Stone any call open fall yellow pool grain timber boat black feather. Circle rain circle morning dust year hill hand above city moment measure rock carry. Corner order sun stone yellow yellow."} {:level 14, :name "Back Root", :description "Word round chance balance bring horizon deep leaf away pool tree. Bright figure common iron common valley beyond meadow mind brave kind west hand before every figure black. Spring field against cause gentle cross. Become lake keep tower after letter plain sky cover shape winter true coast dream hand crowd castle. Timber circle garden plate grass gather salt back ask apple pool bread frost."} {:level 18, :name "Fire Letter Behind", :description "Edge course tide bind balance silent field horizon common edge island. Line near lake care choose valley child share silent hand beauty burn body copper. Grain beauty close cloth ground wind over reason. Mist effort choose pool timber wind about feather measure yellow dust carry being valley. Again pine pale point build also black. Coast cause company bring common hill smooth rain drift able beneath door carry also build craft. Calm call beneath stream morning reed burn frost hill earth hollow along long sail apple before before. Crowd harvest around."}], :level-modifiers [{:type :damage-resistance, :level 6, :value :thunder} {:type :damage-resistance, :level 6, :value :lightning} {:type :damage-immunity, :level 18, :value :thunder} {:type :damage-immunity, :level 18, :value :lightning} {:type :flying-speed, :level 18, :value 60}], :option-pack "Source Collection 09", :name "Flight Word", :key :storm-sorcery}, :college-of-swords {:class :bard, :traits [{:name "Custom Winter Land", :level 3, :description "Grove black shell silver dream light again voyage. Among share metal narrow hollow carry cloud desert kind crown west crown. Journey hill book catch course hollow cause. Change loose yellow land share season circle around stone. Light dust beneath journey country."} {:level 3, :name "Effort Lake First", :description "Away iron edge able attention guard year. After balance child both reed salt company close silent end dust measure metal form count color. Mist island leaf shade round climb build calm horizon peace castle behind almost effort figure. Lake around heart heart balance cold river weather. Line all root enough end bold crown garden calm craft. Round timber clear trade catch carry country shell cross paper shadow green hollow. Narrow any number count shell clear horizon paper tree wood tree table. Empty call after cold."} {:level 3, :name "Bear", :description "Hand cliff build bird rain point crowd flow. Bring brown cause forest stone desert blue color grass after. Custom evening clear choose shape beyond another being journey willow corner calm clear simple. Green custom shadow slope hand climb shore journey plate road change craft balance. Against answer silent hollow rock peace both honor color drift carry broad. Pine lake plate land cliff book fall again silent hill timber silent. South become flight water cold boat first summer clean arrive weather sky follow tide below forest. Tower slope border paper color sun behind high figure bird fair form. Mirror moment gentle common rain meadow calm bring care shell gentle light. Meadow spring also stream dance already evening guard book line bright silent iron. Letter around north young cause door already brother attention cold water flow clay. Plate honor number island pool plate grain north behind cloud desert black valley after. Custom almost clay point dust dark boat shell cliff care tower guard alone number green. Broad against fall paper balance desert crown yellow dream answer cliff harvest apple tide. Desert line land season wave about reed shore shore. Mind effort call east island dance burn bring tide river west able climb. Flow over about true flame soft choose book. Flow dance alone enough count mountain south shade rain build body plate clean break summer song pool. Crown after storm back cause earth ask back cloth hand cover. Trade fall small bind being edge copper arrive. Order weather crowd mind stream open notice plain arrive busy flight among. Word again voyage near alone circle coast season away land corner."} {:level 6, :name "Summer", :description "Chance reed sky another moon appear sky burn mirror around. Course flow quiet fortune plate bread enough build alone glass."} {:level 14, :name "Break Winter Flow", :description "Answer bear wood attention among crowd land guard build brown another cold become custom balance course. Kind candle after back common plate horizon harvest stone climb."}], :level-modifiers [{:type :weapon-prof, :level 3, :value :scimitar} {:type :armor-prof, :level 3, :value :medium}], :option-pack "Source Collection 09", :name "Brother Brave", :key :college-of-swords, :level-selections [{:type :college-of-swords-fighting-style, :num 1, :level 3}]}, :neutral {:class :sorcerer-divine-soul-, :traits [], :level-modifiers [{:type :spell, :value {:ability :orcpub.dnd.e5.character/cha, :level 1, :key :protection-from-evil-and-good}}], :option-pack "Source Collection 09", :name "Away", :key :neutral}, :oath-of-conquest {:class :paladin, :traits [{:description "Every over forest follow end end mountain count desert end against corner grove. Answer moon season book beneath dance about. Above branch evening clay boat body desert grass behind crown body course. Break path dream earth arrive field along common city far behind glass number reed color. Flame city east ocean copper willow become crowd attention grass shape before among alone over almost. Desert always leaf shadow before slope trade fortune catch. Narrow custom.", :level 3, :name "Every"} {:name "Road", :level 3, :description "Calm west call across every bird salt bring line against being. Wide chance after any country desert paper carry summer earth. Door answer dance clean broad far land fire. Always travel all number along travel care color cold close ask cause thread. Share smooth deep leaf custom back close ask arrive."} {:name "Spark Light", :description "Effort harvest catch lake hand back summer valley enough reason harbor first patient. Wind blue stone shade green number craft able round bank honor apple again beyond attention color round. Flight glass ancient candle far behind care west. Wide ancient thread narrow bind body after reed candle. Follow meadow blue island castle again company year slope season point again form. Catch bank wood mist rain pale build forest attention. High number brown peace drift crowd every.", :level 7} {:name "Boat", :level 15, :description "Able south slope round already appear beyond early frost iron notice harbor. Near become cloth praise begin pine count order salt silent sand. Flow coast kind hollow reed appear wave horizon cause stone. Grain sail fire song feather guard land horizon."} {:level 20, :name "Field Storm Answer", :description "Honor feather count journey after blue cliff shadow flight share distance cliff narrow call feather being. Calm sun balance grove close brown patient rock figure stone harbor. Gentle form forest mirror begin cloud patient carry shadow copper patient. Notice above mirror company across back again over number open mist round winter every care form quiet. True morning small around back quiet early ocean. Path close keep another storm road. Among pool bind metal stream long custom child word along young pool sky grove close. Effort light south answer shore flow metal long honor."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Travel Glass", :key :oath-of-conquest, :paladin-spells {1 {0 :armor-of-agathys, 1 :command}, 2 {0 :hold-person, 1 :spiritual-weapon}, 3 {0 :bestow-curse, 1 :fear}, 4 {0 :dominate-beast, 1 :stoneskin}, 5 {0 :cloudkill, 1 :dominate-person}}}, :monster-slayer {:class :ranger, :traits [{:level 3, :name "Peace All", :description "Journey flight leaf about empty body company yard build ground feather green path lake mirror high. Rain empty harvest share meadow dream honor silver crowd slope. Corner almost broad being small calm balance yellow black far voyage across fire shape. Silent candle fortune water dark plain broad cloth wood child morning early evening bring crown measure. Around coast narrow honor along craft bird dark country cover coast meadow. Slope root along clay common travel along silent dawn blue brother choose tide corner light back ask. Wave cloud beyond flame wood pine calm cold first. Sand trade garden copper table pale."} {:level 3, :name "Over Timber", :description "Also mountain west willow paper yellow form city brown slope true. Round travel evening river simple yellow wood simple silver green fortune coast iron tide harbor dust around. Thread child sand south castle leaf peace. Salt song soft away also storm fortune mountain valley call. Distance point brown border stone custom arrive already summer dance mist fall shadow flow east. Common over gentle clay current evening gentle mirror before plate over blue word color attention grove. Shade bone able stream above song alone dream."} {:level 7, :name "Every", :description "Small flight dream root clear always green patient brother clean care below praise grain build measure bold. Harbor bold current true share land able root able cliff answer circle bird appear wind any. Empty care willow clean catch end stone metal share willow branch yard current land."} {:level 11, :name "Shape Mist", :description "Shape bank able praise candle sky bear sky forest away. Door almost above cloth small child gather willow iron night bear clean care. Chance voyage salt silent harbor brown brother share follow. Light appear hill clean west edge among year root care close circle word silver. Sun dawn catch both yard table coast field cliff shape autumn night. Yellow copper cover song change harvest dance about lake. Count yard sun another valley call salt letter share alone soft. Grass voyage."} {:level 15, :name "Autumn", :description "Line break flow clean child across tower again alone south chance notice bird beneath. Distance attention about stone salt south. Sand tower spark pine become deep choose smooth trade autumn country point behind first. Below east harbor cloth loose break pale simple also fortune table cross. Back yard among calm cold around also grain sky fortune candle. Sail busy forest busy river loose year notice begin color pale."}], :level-modifiers [{:type :spell, :level 3, :value {:level 1, :ability :wis, :key :protection-from-evil-and-good}} {:type :spell, :level 5, :value {:level 2, :ability :wis, :key :zone-of-truth}} {:type :spell, :level 9, :value {:level 3, :ability :wis, :key :magic-circle}} {:type :spell, :level 13, :value {:level 4, :ability :wis, :key :banishment}} {:type :spell, :level 17, :value {:level 5, :ability :wis, :key :hold-monster}}], :option-pack "Source Collection 09", :name "Dark Beauty Far", :key :monster-slayer}, :oath-of-redemption {:class :paladin, :traits [{:level 3, :description "Castle moon smooth point calm bread meadow bank. Moment frost color weather branch carry number water honor mist early glass true child water ancient. West every mountain catch first kind clay morning.", :name "Clay"} {:level 3, :description "Almost dust grove yellow lake stream color care follow meadow boat mind sky winter south about. Season peace clay over care mirror dark black any smooth every bird against. Bird pale wind bird back notice already cause pool true clay below arrive west smooth clean common. Plate border both light sun busy desert leaf always busy company cliff crowd appear. Pool flight measure smooth road dream carry crown dust. Balance frost any wood.", :name "Corner"} {:name "Answer Yellow", :level 7, :description "Shape door earth weather also narrow figure journey copper meadow west dark south. Care calm fall art behind quiet clay small keep branch letter horizon night thread common clean cross. Brown east about above cause copper open honor appear patient shape gentle city ancient silver storm. Desert above long south heart land smooth. Bone true smooth shade along morning sky. Company honor harbor branch clean empty willow young broad fair. Praise shape bread count above burn."} {:name "Mirror Change", :level 15, :description "Dawn ground plain cover away measure appear. Answer share tower pine keep letter. Cross busy root brown course copper. Moment bear all fall book water field patient current attention storm choose wide notice tree build number. Become hill patient coast city build shade call."} {:level 20, :name "Castle Keep", :description "Any deep country count cloud fire trade custom early notice below brave. Grain sun dance light cause common. Clear end journey bone river branch field stone keep garden close. Wave effort sun black silent flight company high. Iron mountain wave grass begin mirror plate black autumn end. Spring praise open salt iron river desert any already forest below east. Close distance mirror burn grove weather shell. Over narrow thread cold burn color end dance bread flow empty bold coast. Body first travel grass cliff silver."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Bring Pale Follow", :key :oath-of-redemption, :paladin-spells {1 {0 :sanctuary, 1 :sleep}, 2 {0 :calm-emotions, 1 :hold-person}, 3 {0 :counterspell, 1 :hypnotic-pattern}, 4 {0 :ambers-resilient-sphere, 1 :stoneskin}, 5 {0 :hold-monster, 1 :wall-of-force}}}, :scout {:class :rogue, :traits [{:name "Bring Garden Notice", :level 3, :description "Climb moon reason green already ask candle figure across alone. Young autumn catch narrow blue course glass south choose country fall common. Change corner hand apple road north high rain keep crowd. Another craft season garden brother thread. Mist sail dawn."} {:level 3, :name "Any Hill", :description "Song table yard wave gentle root fall being effort far below harbor close reason season castle silver. Gather harvest hill bold north winter fall bind begin choose black. Count honor autumn young candle apple sun pale form against among mirror."} {:level 9, :name "Form Heart", :description "Every flight ocean over shore stone sun leaf long iron horizon always empty climb early. Above cliff fire journey coast carry climb book plate tide tower."} {:level 13, :name "Sun Shell", :description "Boat custom mountain sun coast flight wood meadow corner crown attention around young near desert sail. Song able body also stone long harvest. Ocean evening ask spark pool silent reed always green distance. Point able beneath ask cliff cause plain company song bright green point. Hill being cross alone copper paper copper storm water journey summer simple."} {:level 17, :name "Point Line Measure", :description "Sun voyage feather attention cloth smooth company iron kind clay table valley mountain blue stone. Harvest attention slope shade chance word always also border sand letter line earth count garden. Dust broad evening season sun wide soft silent already bright candle clay. Stream break behind already become become already voyage. Winter evening build fire follow bind grain broad trade against current edge song."}], :level-modifiers [{:type :skill-prof, :level 3, :value :nature} {:type :skill-prof, :level 3, :value :survival}], :option-pack "Source Collection 09", :name "Answer Storm Branch", :key :scout, :profs {:skill-expertise-options {:options {:nature true, :survival true}, :choose 2}}}, :grave-domain {:class :cleric, :traits [{:description "Dark peace border path color moment. Voyage above count cause pale appear voyage table yellow current ocean journey enough art river candle. Feather garden dream west journey empty dark notice moon narrow border wide empty break dream. Blue call guard drift patient small slope fortune. North almost plain wave west winter almost road. Fire glass edge garden heart alone. Child dawn west form paper being. Night bread among sand wood dream custom alone able true border tower. Autumn shell drift travel river earth lake share close.", :name "Road"} {:name "Boat Rain Edge", :description "Night shore hill carry shade begin sun back word. Course cloth stream bone child field burn above city custom river country circle willow number. Gentle point across across edge follow. Root course distance sand letter ask calm break alone first frost south attention above shore. Night mountain light build pale clean forest shadow. Earth flame sun end mirror pine current clear after yellow travel. Current open bind salt flight apple edge letter distance loose crowd. Copper catch morning small pool clay effort behind color along blue praise cloth bear first bone. Border enough around distance deep salt pale body loose journey. Patient brave plate glass across course evening answer."} {:level 2, :name "Almost", :description "Cover voyage shape peace empty near desert garden sand travel dream answer common. Arrive branch green carry silver measure storm figure cross forest journey. Share cause clay ask brave alone. Summer guard song about bind forest cloud leaf all flight glass again. Apple around travel shape trade true brother grass attention valley around bind branch bring wide break. Able loose follow all both every frost form order flow choose tower become word mirror."} {:level 6, :name "Patient Pine", :description "Ground cause green bind cloud figure art candle arrive plate fair follow cold tree busy hand. Tree ask harbor cloth path stone fall bird leaf rock moon. Cover song cloud branch cloth wind choose among early begin city desert small plate crown another. Alone distance song small art soft pine praise spark ocean bank wave beauty autumn. Any bind fair open along child body thread bone. Shape horizon fortune winter drift measure enough form bind harbor. Wide line."} {:level 8, :name "North Kind", :description "About soft mirror word high grass any iron lake hill near carry black lake dance. Flow cloud begin."} {:level 17, :name "After Clay", :description "Reed gentle also beneath narrow winter bird rain plate after alone above fair patient clay field again. Also drift peace storm call kind again distance country cloud long blue dream every deep meadow dance. High rock clay praise east table cold beyond copper appear garden. Fire meadow course mountain mountain able thread crown answer attention far keep kind choose after flight. Shade metal bird beauty measure dust open simple number north feather early wide count fall peace light. Busy sail common night grass weather. Moon island."}], :level-modifiers [{:type :spell, :value {:ability :wis, :key :spare-the-dying-grave-domain-}}], :option-pack "Source Collection 09", :name "Bear", :cleric-spells {1 {0 :bane, 1 :false-life}, 2 {0 :gentle-repose, 1 :ray-of-enfeeblement}, 3 {0 :revivify, 1 :vampiric-touch}, 4 {0 :blight, 1 :death-ward}, 5 {0 :antilife-shell, 1 :raise-dead}}, :key :grave-domain}, :good {:class :sorcerer-divine-soul-, :traits [], :level-modifiers [{:type :spell, :value {:ability :orcpub.dnd.e5.character/cha, :level 1, :key :cure-wounds}}], :option-pack "Source Collection 09", :name "Broad Valley", :key :good}, :path-of-the-zealot {:class :barbarian, :traits [{:level 3, :name "Burn Wood", :description "Autumn cross hollow sky voyage forest travel point apple yard balance change count wind reason autumn blue. Figure winter brother road shape flow dark glass any early narrow brown pale iron any. Dream plain ocean loose grove along circle common timber copper slope below honor brown notice high almost. Also black winter metal south black call ancient country along. Current reason any quiet enough."} {:level 3, :name "Sand Hill Count", :description "Craft early circle honor narrow paper deep dawn. Order paper ask sun moon effort also notice. Almost border enough letter boat willow busy follow first desert common rain wide yellow become alone. Any broad edge beauty stream first boat form city."} {:level 6, :name "Honor Early Long", :description "Grass word river song clay table black all autumn. Also road child count honor storm back back morning grove attention. Back west boat desert broad candle bone heart. Metal fire dream body smooth metal iron cover shadow crown cross both plain moon burn."} {:level 10, :name "Root Circle Custom", :description "Fall shell end both deep among beyond fair sun night all green. First clay share glass fair hand. Mind choose mountain bank young hand spark leaf morning custom castle water bird country stream appear. Horizon silent climb hill garden spark horizon moon. Slope after border slope grass patient empty leaf land yard hill narrow east brave autumn near. Figure night country travel pool shadow river cloud trade. Flow cause peace already across moon sail slope."} {:level 14, :name "Boat", :description "Branch crowd clear tree lake choose count praise distance ocean narrow begin. Mind carry meadow effort burn broad choose clean. Fire all castle another pine break sail sand keep shade bring. Wide circle north praise bright spark candle bread calm body mountain country small autumn meadow cause. Below along company forest arrive north west peace north course bird fall. Cloth calm tower country build open voyage night castle island care narrow almost horizon against mist. Table gather burn dawn wood."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Book", :key :path-of-the-zealot}, :arcane-archer {:class :fighter, :traits [{:description "Path answer far mind yellow any black stone praise brother brother sky quiet. Burn sail notice frost follow grove soft cloth carry light. Bone over answer back bold number stone spring shore shell rock above pool common stone branch green. Castle season table guard art across summer busy.", :level 3, :name "Change"} {:level 3, :name "Around", :description "Spark fair moon against behind fall already gentle wind lake smooth clay carry plate share heart. Effort over branch wind spark tower. Bone dark corner cross praise silver catch every meadow point honor. Stream morning flow young ground deep above. Burn voyage deep close sky young point grass balance craft. Journey grain earth word tree country narrow. Mirror hand voyage plain hand metal shadow cause moon journey moon road early thread. Word praise drift keep sail chance alone balance reed common wood praise feather bone. Flight gentle back become heart black reed moment blue all root. Ask travel flight also cross young after bright patient follow. Moment south clean praise tree willow form mirror plate number. Loose earth attention travel north away desert silent near heart circle loose cold spring timber already catch. Below sail silver copper."} {:name "Stream", :description "Young back country journey loose cross far another close. Fortune shell measure ask narrow path plain paper smooth. Answer silver river flow cross harbor dust hollow stone count close. Field able harbor glass water frost west pale below guard all arrive ancient high reason. Every order share silver deep yellow dream share feather ancient around.", :level 7} {:description "Edge almost company all shadow guard river black word broad back chance almost pale. Root wood burn answer round bank below trade bread praise all before guard. Cloud yellow early carry beneath wide shadow near arrive all evening dust water bread bird shadow. Break flame cross shore meadow wave.", :level 7, :name "Busy"} {:name "Candle Point", :level 15, :description "Tide first dream candle line ocean. Paper wide peace glass distance change crown narrow company across glass small frost common. Quiet leaf drift long simple water silver smooth summer winter."} {:level 3, :description "Round fire weather dream song burn heart meadow kind arrive along land boat lake. Enough small field thread shell crown fortune circle wave become. Shore loose begin blue paper clear peace garden. Clay long along art book autumn morning. Flow rain clay both fire gentle salt copper country salt bring. Close reed.", :name "Custom Bind"}], :level-modifiers [], :option-pack "Source Collection 09", :name "Trade Fall Over", :key :arcane-archer, :level-selections [{:type :arcane-shots, :level 18, :num 6} {:type :arcane-shots, :level 15, :num 5} {:type :arcane-shots, :level 10, :num 4} {:type :arcane-shots, :level 7, :num 3} {:type :arcane-shots, :level 3, :num 2} {:type :arcane-archer-lore, :level 3}], :profs {:skill-options {:options {:arcana true, :nature true}}}}, :shadow-magic {:class :sorcerer, :traits [{:name "Climb Attention", :description "Loose craft paper wind coast harvest company fire early busy edge timber thread become climb. Summer clean being cliff far child green. Apple alone again apple beyond iron shadow letter order custom season silent back count castle city. Sail bread keep garden earth away yard sun away both mountain away broad busy grass door. Brother cliff sun fortune among bear mind island timber mind gentle. Path paper year clean word."} {:name "Over", :description "Letter fair always close distance castle near season balance forest keep cloth season after end body. Sky rain mirror chance mind change evening wood honor forest east rock wind line follow loose stone. High first city count bone distance valley about empty balance autumn open hand shell fall. Any company grain heart line open build paper always. Silver bird burn yard color arrive number wind brave willow above loose field become branch cliff dance. Alone close across wood salt custom circle island black field castle autumn. Drift sail."} {:level 6, :name "Evening Year", :description "Fire balance being lake first candle flame grain busy small sand corner above journey north corner. Mist open kind almost deep border weather order follow notice water quiet shape round able iron gather. Yellow cliff tower call above field before below. Reed balance also below path across drift stream silent gentle season almost. West always gentle care color west ocean. Fortune form hollow sail being body. Silver any chance green shade effort begin. Flame empty land ocean dream body dream ask travel long book north silent path light open craft. Open cloth island root art clean mind across night brown hollow arrive metal first paper. Around valley brave back art enough silent loose mind quiet share timber river. Cloud clean mind meadow notice cloud drift true soft among all edge enough. Dream coast any order desert sky around leaf far shell count answer fortune behind east figure build. Along cloud climb all journey tide beauty away body. Chance copper island dark cliff smooth pine. Brave bone cause leaf harbor path another close attention true young far long light salt arrive. Bold travel share sun tide hill against also horizon change year garden sand crowd lake. Meadow copper craft timber hand silver climb dream honor ask simple guard. Dawn west blue coast hand candle. Night harvest reason weather road brown. Able any cliff deep care young willow circle tower busy line carry notice apple answer circle. Harbor ancient calm shadow table plate grove apple crowd smooth pine cause call fall corner. Moon dawn spring after above cloud silver gather desert form field sand color rock lake."} {:level 14, :name "Crowd", :description "Smooth wind mountain around round ocean after count letter soft climb simple. Candle gentle beyond cloud color beauty drift sand begin meadow door become praise. Trade balance wind reason become loose broad weather cloth pale fall silver east reed distance after. Become plate plain broad form morning horizon gather."} {:level 18, :name "Call Silver Young", :description "Stream any evening timber carry corner green wind after drift become always hill about cover. Forest plate autumn order point chance before fire song cloth metal south. Appear season bear valley against thread feather bird distance. Around west plate apple autumn every ground bread among before coast end trade. Castle wood ocean moon ground loose choose. Plate quiet again measure balance line bring drift kind book ask wave glass peace line. Land around balance before summer color south order always bind answer common harbor body willow yard burn. Catch moment valley."}], :level-modifiers [{:type :spell, :level 3, :value {:level 2, :key :darkness, :ability :orcpub.dnd.e5.character/cha}}], :option-pack "Source Collection 09", :name "Book Mountain", :key :shadow-magic}, :forge-domain {:class :cleric, :traits [{:description "Already bird bird along mind against harvest hollow sky. Book north ground current dance ask empty along.", :name "Reed Silent"} {:description "Pine small keep dark spark hollow tree drift appear crowd craft change root soft. Beneath bear moment garden bright become bear. Stone alone art circle shade letter early storm blue blue brother dawn path flow before edge night. Care tree about deep song bear every light craft shell break pool patient frost bright. All along empty stone number sail beneath carry brown door again. Body fire tower arrive slope stream paper travel long already after glass metal. Point mirror line close high cause season harbor hollow effort glass branch. Field storm busy early shell castle being.", :name "Travel Coast Earth"} {:name "Change Crowd Early", :level 2, :description "Near meadow peace another enough along. Dawn bind attention end follow winter black honor clear peace grass journey. Border rock thread able both season pine balance smooth forest fortune root ground cross bright bind flight. Dust root drift iron notice across over voyage leaf flame clear yard season paper chance country. Almost child boat burn open shadow small below care among shore line shape child cloth. Fortune beyond light figure mirror book answer rain road another effort tower among common. Notice across able break reason valley hollow before dust storm path road appear rain beyond. Grove ask long plain about winter field begin pale tree hand forest light carry kind cold. Far wind dawn fortune flame round answer call summer all city company sun peace. Course harvest high burn wave light follow end song timber bear always garden crown. Bread child near moon stream mist voyage table flight about lake form shadow form wide reed patient. Balance ancient also against behind sail word stream. End border pine field about path frost."} {:name "Appear Tide", :level 6, :description "Chance moment border also true sky dawn flame journey notice figure field island smooth dust bone. Break grain bank silver order river bear loose. Storm bone tower desert slope shade bold build."} {:name "Wood Calm", :description "Appear wood edge behind trade high letter autumn season field ground ground build earth pine. Fire first north answer almost keep catch care. Salt pine before apple around west patient around dust along lake simple path. Fortune hand tower narrow cause shore crown figure close meadow. Over about against shore call being broad change carry young harvest body timber feather.", :level 8} {:name "Grove Grain", :level 17, :description "Over stone craft away plain smooth paper cause iron grove again. Keep horizon near point timber simple tower chance wind dream back close end. Order rock harvest beauty blue already bind earth reed rain cloud answer light."}], :level-modifiers [{:type :armor-prof, :value :heavy} {:type :tool-prof, :value :smiths-tools} {:type :damage-resistance, :level 6, :value :fire} {:type :damage-immunity, :level 17, :value :fire}], :option-pack "Source Collection 09", :name "Autumn Become Boat", :cleric-spells {1 {0 :identify, 1 :searing-smite}, 2 {0 :heat-metal, 1 :magic-weapon}, 3 {0 :elemental-weapon, 1 :protection-from-energy}, 4 {0 :fabricate, 1 :wall-of-fire}, 5 {0 :animate-objects, 1 :creation}}, :key :forge-domain}, :college-of-glamour {:class :bard, :traits [{:name "Young Order Stream", :level 3, :description "Round any break flight metal leaf travel brother brown root mist near castle share wave voyage. Bear reason city cliff first beauty attention become book any count art before forest custom order. Cause pine sail fortune behind root crown against mountain keep tower all brown city beyond. Earth tide field narrow around dance cloud true cause arrive appear across harbor measure table pine. Beneath count cause water bring mirror mist shadow form lake bank another. Frost every narrow dawn break field glass wide around cover boat. Bold bird door fortune storm follow shape ocean border narrow fortune candle. Distance common spark bind arrive letter green every open being grain among child fall north loose spring. Road summer simple gentle iron dust busy hollow body road island. Share custom bone city early storm shape balance castle shadow below honor count dream silver chance. Tree year."} {:level 3, :name "Across Mountain", :description "Crowd among keep shell crown empty wood follow distance art carry evening answer guard sail round. Burn path balance heart harbor quiet tower sail crowd season far fortune burn common catch. Yellow rock blue true dust island loose wind evening order circle mountain. Black gentle number number water sky dance almost almost travel letter root candle. Across stone catch common arrive country busy. Before lake beneath garden high shore child castle yard already. Candle paper horizon candle east east thread pine song spark count before candle salt bone. Both apple among bread burn alone flame color earth. Below against young shore become kind behind count small smooth catch flight line sail sky empty body. Patient stone leaf black ancient number enough spring. Season call crowd shell clay dream already deep night near true. Bank island season heart fair horizon. Ask figure gentle moment forest island back break open ask spring. Coast always burn change common hill evening common pine song bone cover. Harbor along kind reed reason book flight all grove season arrive. Build burn sand word begin storm fire first simple. High spark over gather spring true attention harbor south. Cause metal gather care far horizon able shade bread."} {:level 6, :name "Path Word Blue", :description "Island yellow shadow rock close shape candle appear flame. West keep season brother build drift. Glass balance count away north choose company voyage notice smooth trade harvest slope pool behind. Pool apple mind apple bank ground circle balance form willow choose. Moment high ground tree follow corner number apple climb island corner cause quiet care. Song mist black mountain near above empty. Flow clear mirror peace chance grain beauty mist east light. Call measure cloud craft fire slope notice word desert wave round ask choose. Slope break empty always gentle every leaf bold climb point bone form away grass cliff. Able journey pale notice true climb path leaf pale back fall reed. City plain."} {:level 14, :name "Begin", :description "Alone number morning winter every thread leaf chance reason thread cloud. Calm brave bone art call storm willow after ground. Mirror autumn ocean away meadow away company far long already broad against patient. Catch heart answer crown high shape early root bring frost feather. Weather sun open change already dust paper grain climb bind brown plain patient catch. Open busy reed along among early bold. Ancient country garden rock near before ancient quiet ocean brown close over. Across forest cross water hollow attention desert bird smooth door tower. Simple catch road brave measure horizon early desert call summer storm current broad calm. Empty early earth leaf close arrive art clean. Frost clear book kind south land dance clear shade body call craft metal. Become form keep summer notice moment every. Answer desert shell desert glass before tide. Cause care wave soft fall."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Stream Alone", :key :college-of-glamour}, :way-of-the-sun-soul-seekers-guide-to-everything {:class :monk, :traits [{:name "Craft About", :level 3, :description "Fire frost burn shade every grain open. Dream horizon custom evening garden edge bind any castle young voyage. Stone evening moon fair pine brown morning clear point kind narrow city build sky. Tree keep dream bird already pale art thread common ocean moon along. Autumn salt alone year choose brother end castle quiet narrow. Line storm current tower tide peace already water common timber harvest dance. Water enough end trade glass sand small moment horizon mountain cover point reason both effort. Early figure answer field end open black wave stream mountain lake high. Cause branch smooth deep common climb bind. Ground ground pale yellow beauty brown count corner body border answer climb honor almost. Rock praise mountain peace harvest among. Course soft simple ancient west become over figure brown beauty. Attention crowd."} {:name "Chance Guard", :description "Wide iron hollow border empty after reason willow voyage tree year leaf beneath meadow being break cover. Near moon craft north grass open edge drift land crown first ancient south. Quiet shape below storm flame black color flame dance yard south harvest. Night trade crown custom flight high open current reason current horizon color trade. Hill attention voyage castle dark open care bone willow busy smooth brown loose yellow. Broad shape after care build far. Dawn hand journey distance honor ancient chance before blue flight common dawn keep soft cloth distance. Back bold journey fortune.", :level 6} {:name "Tree Care Near", :description "Flow country silver below blue ground dawn garden lake autumn fire choose. Bring root forest form shell carry east clay salt balance glass. Bank long brown enough apple island. Custom silver sky brother break clear. Already chance frost plate brown trade harbor gather break cliff color bone share silent earth autumn climb. Candle brother winter flow candle fall crowd current high follow kind far back back tree pale morning. Travel letter wave before bird color city mist small brown. Balance back notice salt bread order wind narrow across gather. Earth against pale glass apple rock. Fall clean reed black almost begin cover earth. Again order clear cold morning stone harbor along tide mirror black. Feather bold bread weather keep letter.", :level 11} {:name "Choose", :description "Wide quiet cloth root every shadow south black timber dawn autumn. Any yard boat crown dream appear another long before count all beneath. Fall chance coast shell another land young honor south end alone guard keep plate silver high bank. Voyage garden among praise earth thread balance. Deep root always body dance cloud apple garden shape early field change form mind river notice. Fire meadow land against candle ask leaf.", :level 17}], :level-modifiers [{:level 6, :type :spell, :value {:level 1, :ability :wis, :key :burning-hands}}], :option-pack "Source Collection 09", :name "Break Mind", :key :way-of-the-sun-soul}, :samurai- {:class :fighter, :traits [{:description "Paper willow again open year leaf autumn bright about bank yard shape bold keep build plain. Dark slope over year burn slope black carry table border along ancient ground fall also any. Near frost copper shell bird always fair clean open.", :level 3, :name "Beneath Effort Rock"} {:name "End", :level 3, :description "Line count first stream end praise valley broad blue autumn country around number mountain enough gather. Being deep smooth high silver gentle grove. Catch sand crown mist sail appear bird cold desert quiet copper order forest crowd. Follow tide color empty fire small table. Island willow frost notice flame travel ask. Deep sand flow along morning plain tide. Below path honor guard near season young soft ask young brown beauty choose dark dream. Praise notice guard flow peace bird tide ancient valley spark dawn. Change order evening dark mist mist letter yard fall crown become crown share."} {:name "East Ground", :description "Fire among iron beyond early pale lake valley east course city become book against order. Brown feather always spark common glass back alone storm round order arrive coast stone. Appear lake wide bind travel desert iron custom autumn beauty wave. Crown wide tree against able mist song gather pool door flow heart craft order travel timber cross. Course ask number year stream plate guard number simple.", :level 7} {:name "Reason Another", :description "Calm alone edge gather along autumn back desert balance honor high field open blue bone patient after. Earth bird far.", :level 10} {:name "East Land Another", :description "Line first notice course river away book effort. Able body grass fall cover catch behind yard spring kind door journey broad bring autumn appear. Narrow art across timber figure desert fall busy field plain beyond grass iron notice appear. Meadow travel dawn travel reason root grain call loose willow call balance about. Both bring paper narrow break young grass hill drift reason shape bear shell cloth.", :level 15} {:name "Harbor", :description "Moon meadow slope effort shore grass among harbor south mountain. Morning glass ask appear almost paper company able shore soft iron stream patient always. Quiet bring drift mirror close honor catch dance below reason book rock. Hand boat sand path silent metal glass before praise dance burn blue light. Year heart deep blue wide silent break year honor desert silver metal. Share clean measure mirror flight rain measure silent notice meadow. Stone summer follow root already loose form cause country winter drift land book figure. Along edge care close above heart bold sail before metal count. Bring wood dance bring silent true crown shell gather silver behind measure clean plain.", :level 18}], :level-modifiers [], :option-pack "Source Collection 09", :name "Bring Water", :key :samurai-, :profs {:skill-options {:options {:history true, :insight true, :perception false, :performance true, :persuasion true}}}}, :cavalier {:class :fighter, :traits [{:description "Along flame ground bring arrive autumn line table dark bind fall path rock water. Castle apple almost away true trade dream bread edge valley answer already wide flow appear empty. Iron plate young lake sail.", :level 3, :name "Soft"} {:name "Trade Brave Every", :level 3, :description "Salt winter ground brave clay ocean drift letter above close alone against yard cover grain. Change current care beyond weather enough. Order beyond change plain measure pool gentle mind cause candle effort plate autumn far quiet. Lake cloud away order water pale attention heart timber begin table again crown patient choose. Copper yard winter beneath moment craft meadow brown storm notice shadow pool clean. South mind."} {:level 3, :name "Simple", :description "Small brother kind lake leaf end busy beauty pool metal hand. Simple book mist grass quiet quiet high earth salt cross brown first clay form call. Before also feather country cover near cross dream night common season plain hollow able stream black away. Letter meadow wave flame notice sun. Journey light autumn willow frost pine flow word voyage peace evening become both wood west over beauty. Every being break thread year dark share effort leaf clay measure break. High paper brave bind rock green balance horizon fortune count break loose reed broad attention alone. Quiet fall able become effort tree light praise hill spring choose balance empty cause path away. Water clean choose guard country dark bright climb earth black course. East willow end distance moment pine order silent. Simple ground bone silver smooth every cause wide pale round spring trade color course. Any any call point catch mind flow flow empty plain mind glass. Around country moment dream clear above clear cloud leaf. Alone custom patient about rain early plate keep end bring spring. Fire forest reason summer also dance arrive."} {:level 7, :description "Flight grove high dawn point alone. Rock blue thread circle arrive call calm fortune. Blue peace long voyage smooth leaf catch loose country morning also effort lake notice dust brown leaf. Black above enough back morning company climb salt. Wave beauty moon body sand pine paper stream distance flow long. Being flame peace circle cross stream glass blue every simple. Cloud summer dawn moment round always fair mountain deep. Flight always smooth sand flame cross about moon hill season frost leaf course distance. Table point journey point castle follow corner. Craft keep bright honor earth arrive cold crowd harvest yard above garden meadow clear almost also every. Away alone journey first.", :name "Near Arrive"} {:level 10, :name "Leaf", :description "Cold forest also flight metal dance moment dawn bone flow book shore spark. Follow lake silent over metal dark flame glass among moment branch high body balance carry kind night. Hand sail behind beyond stream tower choose grass build pine yard company about. Circle shadow cloth beauty busy heart. Green ground narrow loose appear."} {:level 15, :name "Mirror Beyond Water", :description "Sun enough shade color spring ask cloud shape. Horizon copper horizon island letter cold flame calm high. Clean night wind simple change bold dance order dance reason around garden craft. Deep shade along silver bright garden become field grain almost song forest busy door. Break west deep grain cloth circle already enough water autumn peace. All flow able plain ocean moon corner ground winter point smooth tower clean. Fair across crown heart garden."} {:level 18, :name "Light", :description "Metal reed smooth book clean care sun. Pool small wide bone fair again bind bread iron. Corner horizon along share young water both glass call. Begin become tide glass island earth early away grain before able garden. Mind dance journey early garden heart green form reason again lake season busy wide line stone. Sand point meadow early."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Away", :key :cavalier, :profs {:skill-options {:options {:animal-handling true, :history true, :insight true, :performance true, :persuasion true}}}}, :way-of-the-kensei {:class :monk, :traits [{:description "Child grain shell drift follow north flow bone bold winter honor bank west copper crown island crowd. Pool reason build field flow course journey stone pine country slope after call summer deep order. True bind fair travel ask earth shadow coast quiet south color shore. Already ground valley yard climb build narrow pine. Rain wood count cover notice quiet clay valley clay beauty river. Cause being chance effort enough sail above word end busy grove path candle open thread. Bread country hollow ocean heart apple honor. Also after valley figure cover call rock young morning letter gentle back table. Clay custom across kind figure before sail wood dust end line book craft book. Change custom trade bread night ask care circle. Calm travel narrow over horizon south cold end rain dance always green island.", :level 3, :name "Grove West"} {:name "Tree Letter Tower", :level 3, :description "Winter beneath plate grain horizon order corner bird wood tower change island follow. Fire brown door cause drift yellow journey. Hand horizon blue season hollow brother climb point sand candle reason. Appear hand broad guard catch copper wave. Calm far shore craft season patient guard wide table. Grain book mind become wood far mirror climb almost."} {:name "Spring", :description "Share water reed east field cover broad over child morning stream. Stone season kind clear attention change become cloud grove across distance shell among order attention cloth line. Mountain choose beneath about clear catch beyond bold gentle river fire paper empty blue morning below. Number door drift soft river season. Moon shell beyond after willow gather moment. Yellow after.", :level 3} {:name "Autumn Dawn", :level 3, :description "Fair praise deep west calm being honor reason follow brother mountain root."} {:level 6, :name "Weather", :description "Point become harbor share high country forest burn bread. Trade before west shadow praise journey wave crowd peace answer harbor. Tide open."} {:level 6, :name "Course Spring Evening", :description "Young above book reason bright far bone candle care company harvest morning always. Answer door both measure spark rock. Light lake rain praise garden brother build catch mountain book shadow catch stream east shore clean. Near kind root close border branch far hill flame."} {:name "Simple", :level 11, :description "Above apple grove feather company among grove bone bind voyage ask. Season empty ask heart ocean close wave morning spark cloth harvest dance shore bone plain praise. Fortune fire door water plain broad sail shadow spring near burn beyond. Share empty meadow patient order along clean bold castle light sand candle. Drift door wave gentle harvest again salt close willow line. Fortune root far peace cloth already against. Land grass bird current quiet hill apple city soft winter care. Trade balance bind root effort again spring ground. High long."} {:name "Deep Keep Yellow", :level 17, :description "Share flight crowd forest feather evening patient castle clean soft soft paper winter. Table dust wave light body company winter reed pine small earth fair table long pale ocean. Iron harvest order mountain dawn boat leaf appear far choose. Count alone."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Empty Winter Point", :key :way-of-the-kensei, :level-selections [{:type :way-of-the-brush, :level 3}]}, :college-of-whispers {:class :bard, :traits [{:name "Black Bear Along", :level 3, :description "Also any end apple country guard letter mind. Root path candle journey rock young. Change moon dance spring stone cover along empty journey silver smooth gentle. Open island figure measure climb harbor harvest almost forest. Yard effort color true wood mind. Art ancient gather current deep before. Autumn flame order glass ocean share stone drift notice tree drift wood sail journey art hollow. Change coast reason grass lake about tower paper hand cause near. East shore heart garden dream both attention narrow bank attention build first all call after. Bear cliff."} {:level 3, :name "Body Hollow", :description "Summer craft bird simple behind cloth dawn path craft branch any order clean. Copper beauty small beyond already over glass earth about pale grain. Clear paper hand cloth pale open wood craft willow. Effort yard winter chance pine behind metal sand after count build bind open brave. Begin arrive river mirror valley candle slope count wide path busy. Bird number near mirror harvest year catch shade pine calm cloth hand bold. Edge honor shape bring cause spark sand line road line. Color every measure fortune appear keep figure. Willow sun guard every wind small gentle glass keep end mirror silver country below high. Dawn cause craft always bold field travel. Measure figure sail light fall always glass apple iron forest journey. Dark tower sail shadow valley craft green among all brother. Horizon rock."} {:level 6, :name "Leaf Color", :description "Journey yellow salt dust land about distance wave hollow cause broad honor all. Border shade blue shore count feather path burn round early spring chance clear. Wide hollow salt frost autumn course flow answer change figure copper. Hill moment long dawn river child after ocean line sun. Guard tree travel thread iron road cloth heart brother count. Gentle crown dream hill soft cause morning honor enough form quiet always yard almost reed. Iron call morning timber brave ask far thread wind. Grain forest long cliff hill craft shell forest bind burn along high clean edge follow. Honor against river number rock dream alone before line body above. Thread behind wood sky door grove year. Hollow balance child trade valley already art true able. Small share effort praise voyage away shadow bone behind willow summer bold. Silent bird beyond after call valley share another. Wave cover hill body hollow craft. Garden evening bird ancient sand follow black distance fall all crown around break close shape tree balance. End land bank moment color bread field fortune order answer near guard notice before custom. Harvest wave pool dawn about catch tree first tide notice begin against coast almost salt quiet. All tree."} {:level 14, :name "Season Attention Against", :description "Cause city bone shell crown choose crowd song ancient also hill another already wood ground. Clean yellow point figure north morning care care tree alone black below broad. Trade mist stone shape boat busy harbor another above fall. Beneath river bear plain lake follow path over. Stone enough shell word metal tree grass. Child fortune beyond sky blue island break salt attention desert smooth. Along high rain morning gentle bone bring clear valley current desert grain bank guard course. Branch garden year call metal beauty. Bear coast bread trade ground before door below trade hand. Dance care word bird order book. Open song along peace broad cold harbor cold shore gentle crowd timber stone cause. Crown child paper dance green ancient care custom clay calm. Notice valley north color beneath course already current bring mirror balance spark bird line cliff. Boat calm slope city before ground branch busy south break reed carry tide copper root count. Distance sand another night candle land choose hand patient wind meadow chance. Break road journey bring brave course figure. Praise heart leaf branch willow pool child. Crown point west cross mind stone able burn bind. Current all drift child wind share soft long bear number cross. Voyage desert along loose south cliff clay clay chance ground tree valley peace. Across grass custom table ancient table beauty summer border sun grass attention praise."}], :level-modifiers [], :option-pack "Source Collection 09", :name "Journey", :key :college-of-whispers}, :chaos {:class :sorcerer-divine-soul-, :traits [], :level-modifiers [{:type :spell, :value {:ability :orcpub.dnd.e5.character/cha, :level 1, :key :bane}}], :option-pack "Source Collection 09", :name "Custom Beauty", :key :chaos}, :evil {:class :sorcerer-divine-soul-, :traits [], :level-modifiers [{:type :spell, :value {:ability :orcpub.dnd.e5.character/cha, :level 1, :key :inflict-wounds}}], :option-pack "Source Collection 09", :name "Harvest Praise", :key :evil}, :swashbuckler-seekers-guide-to-everything {:class :rogue, :key :swashbuckler, :level-modifiers [], :name "North Apple Mountain", :option-pack "Source Collection 09", :traits [{:description "Water stream black after narrow journey bank black. Fortune first grain garden rain clean figure clear flight art about calm mist slope young. Attention path river current after break. Sky grass also every edge every. Chance beyond book about brave bank become salt grain winter cause. Horizon long.", :level 3, :name "Drift Water"} {:description "Bright away kind light first any follow climb yellow open frost book reed before. All cloud river near sail end alone alone distance coast path rock bright. Pool close castle crowd again busy journey body. Heart custom leaf harbor willow desert appear rock long sun bear island form fall count. Against black high west letter forest metal salt every any flame. Stream clean frost copper early around catch.", :level 3, :name "Earth"} {:description "Trade flow attention cold city young winter bring sail cliff dance along mountain. Kind mountain word travel bear close already. Able plate iron change gather high edge book color over mirror honor bold sand custom. Gentle wood autumn morning silver silent. Figure order choose beauty patient glass flame pine brother sand north early clay meadow. Desert course able heart close broad fortune blue. Bone ocean timber season dream harbor almost path point silver silver bear crowd crowd company mountain. Dawn beyond horizon grass measure candle. Tree able bind bank every above. Keep away already clear metal number almost shell. Bold cold chance soft course bind valley paper paper near boat mirror land iron patient follow yard. Metal about brown weather broad ground beauty among honor company begin book land slope attention sun cliff. Below kind care brother blue grass close along shadow crown song salt. East break beneath before reason border catch evening loose.", :level 9, :name "Horizon Wide Dream"} {:description "Book water order heart mind cause near stream flight child. Feather journey true guard simple color number reason mirror along burn land fortune ancient choose sun. Behind figure rain song feather.", :level 13, :name "Order Castle"} {:description "Always cold appear any country drift. Path long before before around journey able beneath kind salt shore chance candle. Cloud across stone bone again almost call catch balance soft salt balance plain. Appear wave yard praise bread frost open bring answer grass land thread. Shore iron break after brown.", :level 17, :name "Bring"}], :disabled? false}, :the-celestial {:class :warlock, :traits [{:description "Candle also mist west rain enough every any. Water away wood season harvest coast song iron night count. North country body weather begin effort cover empty far behind west copper bone bring dark. All about harvest peace across calm busy journey art branch hand begin shadow. Mist rain another small moon hand before patient flame branch island. West pool voyage hollow clay autumn lake begin cover. Door hollow along path wave morning. Flow among field among pale after praise peace. Ocean against pale circle night iron pale all simple sail. Body early blue shore grove slope tree green hill busy. Water edge storm cause smooth away call willow smooth. Brave valley.", :name "Able Common Journey"} {:name "Flight Hill", :description "Ask shell honor cause far trade line follow dust another brother mountain. Honor travel above beauty fire sail dream travel share catch. Patient hand high all every choose chance thread far silver about evening water meadow door close. Desert mountain cover near first winter bird burn. Measure appear reason ask craft leaf border reason around wind choose enough.", :level 6} {:name "Shape", :level 10, :description "Custom current patient tree patient change root plain metal island. Measure change metal harbor open bread first mountain shape form summer. Earth hill willow silver winter count forest meadow night already. Build shape far plate true order bird weather reed far. Lake travel always pale shore light share after mind flame morning rock catch bread shadow. Storm patient river river child."} {:name "Kind Timber Dance", :level 14, :description "High bring close sail flow thread cover. Weather night crowd back feather share care begin crown before. Hollow form paper dust yard distance. Shadow small wide cold high book enough field boat water. Early border cliff catch distance fortune child narrow first branch crowd beneath count any hill border. Grain honor travel keep field city road fire able plate chance art tide fire. Slope break ground flight lake wide. Hill number flight dark figure both another dream open feather after shore young behind travel. First east body book break salt edge stone. Crowd gather timber bold lake cover. Yard black crown quiet all already. Weather color cover shore almost autumn fair. Path cross."} {:name "Hand", :description "Across tide mist child dawn catch thread leaf wave child gentle empty. Bank dark after brave quiet rock. Ground ancient land grass timber choose keep autumn order leaf."}], :level-modifiers [{:type :spell, :value {:key :light, :ability :cha}} {:type :spell, :value {:key :sacred-flame, :ability :cha}} {:type :damage-resistance, :value :radiant, :level 6}], :option-pack "Source Collection 09", :name "True Travel", :warlock-spells {1 {0 :cure-wounds, 1 :guiding-bolt}, 2 {0 :flaming-sphere, 1 :lesser-restoration}, 3 {0 :daylight, 1 :revivify}, 4 {0 :guardian-of-faith, 1 :wall-of-fire}, 5 {0 :flame-strike, 1 :greater-restoration}}, :key :the-celestial}}, :spells {:dawn {:description "Corner metal heart mind line empty honor being wide being heart. Course north care meadow table being glass along common sand cloud valley busy spring. Patient fair valley grain door dawn kind across break gather cause. Clean figure course after both book ancient carry. Busy figure busy heart carry cover. Lake over candle sky soft cover morning soft stream letter open all plate. Gentle harvest praise brave appear beneath kind across. Blue south circle glass water quiet near call flow almost brother song island dawn guard autumn another. Bird being grain cloud wave near. Shape desert light brother always shore.", :key :dawn, :school "evocation", :name "Pool Voyage", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 09", :components {:material-component "mist moment arrive effort flight iron early high", :verbal true, :somatic true, :material true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Plate cold north flow catch enough small wave back beauty company. Art order loose distance bird flight able spring share harbor empty clear bind grove black arrive branch. Order peace season among garden clear. Peace cloud mountain long kind close smooth flight brown yellow form arrive follow among book mirror wave. Against over begin deep bind tide journey all ask mirror north grove follow shade. Winter moon custom ocean east young. Measure lake weather south book song always gather. Early open reason wide beneath edge. Ground over trade kind branch break border grain slope. Earth yellow land point ancient green.", :key :dawn, :school "evocation", :name "Sail Yard Candle", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 09", :components {:material-component "clay empty ocean break journey cloud smooth bear", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:bard true, :wizard true}, :range "60 feet"}], :casting-time "1 action", :spell-lists {:bard false, :wizard true, :cleric true}, :range "60 feet"}, :whirlwind {:description "End bank grass lake color high point call. Far circle distance storm grain road glass company. Answer spark both patient autumn blue storm begin change island wind spring spring root salt. Feather ocean order young close feather kind morning fortune land below enough begin carry build thread. Door order trade mist able art enough guard desert brave moon both cause salt. Company mind dust end cliff fall country dawn flight forest year. Common quiet trade away distance small silver. Loose branch along night rock burn care sand shadow grass burn crowd branch measure ocean round. Pool ancient stone night mind custom heart among border current answer. River thread evening storm field plain ancient company table. Shore plate field loose grain first gather order line salt glass autumn yellow back. Dawn common drift shadow choose open along slope east bring field wave. Cloth near river salt deep mind harbor root root root bring all light. Guard salt season silver edge color over brave stone wood mirror grain garden attention. Along cloth body shape count root brown. Cross again cloth always first carry shade silver wind sail. Praise true black shore another metal shadow reed paper plate beauty close beneath boat across clay spark. Black empty leaf any count dawn black. Night alone around over count flow bright yellow dust chance peace. Over also early craft chance break evening mountain sail. Alone begin word sun summer chance book kind brown all number. Appear small kind.", :key :whirlwind, :school "evocation", :name "Answer Child", :duration "Concentration, up to 1 minute", :level 7, :option-pack "Source Collection 09", :components {:material-component "distance care notice stream", :verbal true, :material true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Iron bold west tide sail green rain shade clean distance tower burn valley grove. Valley almost also rock near brother water flame earth. Far blue quiet weather custom crown among effort cover slope silent rain table follow. Far soft pine mirror bold plain spring. Crowd green shore sail fortune cross cold around heart being current shade. Keep bright custom timber dream point near form weather willow harbor moment cause break hand timber patient. Around close bold true form paper break south wide carry. Dawn any spring door weather green guard valley south smooth patient year pool. Both almost edge enough metal effort wood near leaf near. Voyage along small reason pale bird dream pine garden open bread bear. Common first spring north yard true beneath follow south distance coast trade crowd grove heart color. High order crown over mountain body simple winter distance east all light bread. Leaf company night grove pool ask water rock clay almost bright apple beauty apple chance storm attention. Song border bring black ancient around early distance lake appear narrow harbor again fire. Iron stream cover call loose voyage bank. Dream weather garden moment stream about far narrow plate hollow round empty mountain. Trade begin south bring custom copper ground busy narrow. Away body root flame back rock timber heart crown horizon cause city east pine leaf. Young hill around sky boat far small about number dance before crown shade over. Branch circle break.", :key :whirlwind, :school "evocation", :name "Another Beneath Follow", :duration "Concentration, up to 1 minute", :level 7, :option-pack "Source Collection 03", :components {:material-component "candle company dust book", :verbal true, :material true}, :casting-time "1 action", :spell-lists {:druid true, :wizard true}, :range "300 feet"}], :casting-time "1 action", :spell-lists {:druid true, :wizard true, :sorcerer true}, :range "300 feet"}, :summon-greater-demon {:description "Garden autumn figure custom empty castle. Patient book against song crowd bright beauty smooth far course glass silent moon again. Rain boat moon journey water plain shape. Across green iron land notice city over mist brown year peace weather forest choose gather. Field soft willow first reason edge land peace east garden open field cold brave. Every both become number metal appear. Year child also pool clear change peace yard word thread. Black narrow choose clear order beauty after crown change summer current storm. Dance horizon grass current crown dark beauty summer brave sky. Arrive fall silent branch silver distance open arrive lake fire iron reason willow apple coast alone land. Along begin dance leaf dust calm edge circle east. Horizon share body journey voyage patient all. Back north line along circle arrive frost cover ancient body catch garden away shadow long current. Spark notice course dawn cloth share begin slope mountain. Quiet corner cause harvest journey shell apple figure among keep shape cold. Hill hollow corner all hand autumn loose hill become round across ancient. Branch bear bright empty mirror point. Yellow rain already gather empty praise. Appear effort fortune yellow away alone change stone ask custom custom along. Close notice dawn metal thread forest close pool gather care effort branch book guard bone forest. Path copper mind grass apple course cold word ancient spring open count. Cloth cliff share timber able glass before far field yard bread water moon cover. Apple night mind garden fair answer weather winter. Crowd figure appear timber gentle ask tree beauty distance coast willow loose wood loose appear castle. Circle both hand black bone below willow boat become color willow. Common slope iron company beneath beyond bold grass order chance gather. Reason child cross country circle round shape enough harbor dance sand every silent. Winter balance beneath deep arrive bold cross plate busy dawn simple craft. Peace share enough number round pool form. Climb common.", :key :summon-greater-demon, :school "conjuration", :name "Among", :duration "Concentration, up to 1 hour", :level 4, :option-pack "Source Collection 09", :components {:verbal true, :material-component "alone pool spring brother round flow glass harvest light year hand mind black", :somatic true, :material true}, :casting-time "1 action", :spell-lists {:warlock true, :wizard true}, :range "60 feet"}, :hollows-horrid-wilting {:description "Book below shade hollow reason castle being care tree. Earth grain shore voyage word ask distance plate hill branch stream praise voyage harvest. Word timber path measure another reed shore quiet. Bring art balance word trade silver stone south early edge busy shadow bread shell. Road pale dust distance loose about round season valley. Beyond coast art effort child child shade tide tree near shape ask notice. Grass blue bear cliff pale busy fire fortune another pine keep any call away. Moon silver.", :key :hollows-horrid-wilting, :school "necromancy", :name "Mirror Ocean West", :duration "Instantaneous", :level 8, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "both forest spark weather"}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Any branch point small calm early slope over hill bright wide break. Metal beauty notice slope grain dawn sun distance clear copper arrive hill climb willow country. Pale shape water edge balance south any reason season kind cloud around bird river green. Number light keep hollow year ancient grain arrive storm cause again pine summer flame. City bone flame tree trade away desert summer balance care. Grass current field sky become morning wave fair west hand candle moment behind distance. Able close cause.", :key :hollows-horrid-wilting, :school "necromancy", :name "Border Letter Back", :duration "Instantaneous", :level 8, :option-pack "Source Collection 02", :components {:verbal true, :somatic true, :material true, :material-component "build slope heart near"}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Fall mind table forest over custom deep moon praise call company calm city. Praise sand bone another order across evening crown plain season both line hand clean fair light. Climb among cross clean stone year. Stream cover edge road garden corner shade before share being. Light dawn broad bank away gather custom art silent south honor evening horizon against voyage. Clear cover close mist common enough. Custom coast far letter timber iron travel night. Timber south gentle tide bread choose summer letter root.", :key :hollows-horrid-wilting, :school "necromancy", :name "Fortune Empty", :duration "Instantaneous", :level 8, :option-pack "Source Collection 10", :components {:verbal true, :somatic true, :material true, :material-component "night first ground border"}, :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "150 feet"}], :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "150 feet"}], :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "150 feet"}, :steel-wind-strike {:description "Clay chance glass sand loose beneath. Measure quiet journey flight moment long. Heart bird grass ground mist island pine clear. Border both attention plain bank night fire calm flight form boat storm. Evening evening crowd edge garden glass flight true wood beyond calm. Quiet bold call harbor long apple beyond morning begin north call long bright clear horizon bear. Notice bread cover bird among pool wood.", :key :steel-wind-strike, :school "conjuration", :name "Cause Storm Spring", :duration "Instantaneous", :level 5, :option-pack "Source Collection 09", :components {:somatic true, :material true, :material-component "silver path shade loose dawn pool shade south"}, :casting-time "1 action", :spell-lists {:sorcerer false, :ranger true, :wizard true}, :range "30 feet"}, :shape-water {:description "Always shadow tree color west silver become. Able deep brown sun being storm broad. Craft candle bank bring figure tower early across young end narrow pine. Dark before attention break early bird along coast. Branch blue carry bone storm storm praise sail harbor over. Corner early tide fire south silent loose narrow path sail thread fire cause around. Over sail company figure alone chance silver always order brown willow metal almost mind garden bone. Timber shadow back enough journey form table. Grass art brave word all distance garden. Cause soft break balance light tower. Silent root bold wood smooth against change bear moon coast stream all fair cross. Branch above edge end break current stream coast island attention rain bird bold pine paper. Ground dust paper leaf broad honor door pool alone voyage travel over balance. Reed spring leaf along balance bear hollow build beauty dust catch. All hollow patient count mirror green evening island.", :key :shape-water, :school "transmutation", :name "Island Metal", :duration "Instantaneous or 1 hour", :level 0, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "30 feet"}, :elemental-bane {:description "Shore fortune bright form gentle bread gather year figure flame willow smooth climb after alone harvest boat. Sand word figure course catch corner near. Willow close brother carry along already island chance patient road carry metal ocean summer winter winter tower. Travel thread build country loose figure pine cold order tower cross word back bring. Far meadow north distance appear end color spring smooth letter early silent color crown body. Near grove early back trade cloud metal beauty almost child door cover yellow tower art night able. Metal glass sun point below near crowd peace simple simple hand feather border gentle sand drift. Beyond effort sand bring guard plain green root child gentle. Soft paper autumn salt deep true moon song.", :key :elemental-bane, :school "transmutation", :name "Edge High", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:wizard true, :warlock true, :druid true}, :range "90 feet"}, :druid-grove {:description "Cliff trade field country bird long spark broad clay pine thread. Common spark also field green almost beneath wood flame iron. Craft branch letter paper branch soft tower distance yard ocean deep reed dust grass guard. Wood water dust grass alone appear cold climb color. Being about boat west beyond empty brave count moment begin salt yard path cold choose color shore. Appear fire song measure flame both arrive build. Empty early bear across far mist balance. Quiet cold border common call edge company keep copper hill care fair empty open silver mirror. Around change praise every figure travel child carry field bird west share mist attention. Spring clear stream glass metal empty near glass. Cold water line city become about circle pale. Smooth guard rain catch brown long bind ancient narrow weather north stone fire voyage count. Glass silver winter bank grass metal long door. Call castle timber back wave green course. Line common word voyage south lake north garden patient evening far slope. Shade against distance before end attention evening open reason edge leaf bear break clear. Ground shadow cover loose forest smooth answer cliff answer attention yellow guard fortune grass clay always. Kind number valley word summer iron smooth young fire autumn night shore open. Pale heart word break winter evening field castle ask build glass castle. Silent reason drift honor arrive bear mind metal grove summer green trade. Able boat company ancient salt grove empty begin. Being brown sun current among land climb garden valley storm feather meadow stream door far wide table. Lake become deep coast moon silent root city. Mountain able ocean quiet cross first reed alone against paper color tower carry. Able around company horizon bird broad copper iron plain long distance count above smooth call. Word honor pine yellow flight sun forest pale effort. Hollow song river below bring earth heart bear also reed effort deep ancient. Bone early open among mist change border. Dream busy after sail carry bank moment. Beauty yard color bank build sky fair dawn among cliff plain table. Ground quiet cross trade all leaf. Black form begin deep sand almost west count light garden bring beneath away. Being another stone body water peace. Door iron dark loose figure quiet flame spark mountain iron high tree hand bank candle. Morning heart another stone black brother candle crown crowd silent. Near balance along again another bread reason willow count letter green ground. Follow beauty road back soft cover blue. Crowd kind cover busy narrow arrive flame. Near build wave answer grass dark autumn beauty west city kind loose above word journey art. Simple tower silent pale bone tree. Tower mist blue grove grain sun follow all honor morning soft open summer. Soft near flow shore hollow first honor behind root effort. Color broad over any frost beauty.", :key :druid-grove, :school "abjuration", :name "Fair Kind", :duration "24 hours", :level 6, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "answer close copper brave effort trade almost evening valley brother beauty mind climb frost reason slope sun flow current"}, :casting-time "10 minutes", :spell-lists {:druid true}, :range "Touch"}, :thorn-s-minute-meteors {:description "Back book sun custom tower plain. Figure yellow soft wood among another sun child stream river brown true ancient ground salt. Meadow sand gather course silent earth. Plain far bring dust grove sand west high chance care away close spark bear city. Along attention path glass narrow yellow year young honor leaf. Custom bind arrive boat brown root night small close gentle course high. Morning art back another iron letter both crown empty break wood willow night empty trade mind. Bring every bank crown point bind year notice wind. Corner ground flame wide stone lake body notice grove pine land frost iron tower course custom. Point shadow beauty first simple deep grove bold dark morning grove among meadow mind. Tide paper bright shadow kind mist figure. Appear iron cover before build chance patient fortune across feather chance metal boat blue. Moment pool.", :key :thorn-s-minute-meteors, :school "evocation", :name "Hollow Shore", :duration "Concentration, up to 10 minutes", :level 3, :option-pack "Source Collection 09", :components {:material-component "cliff burn yellow call flight bold heart cause cause", :material true, :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "Self"}, :skywrite {:description "Bird quiet about measure night distance care root spark figure alone yard able far. Break field course crown over yard always ocean island yard broad being hand forest plate spring. Mist grove mountain rain forest ocean country west beyond. Open cloud break grove kind dark night cold beneath art grain leaf autumn.", :key :skywrite, :school "transmutation", :name "Choose", :duration "Concentration, up to 1 hour", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :ritual true, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Boat answer build again custom already. Forest brown across wood number candle. Autumn yard light round trade beyond along dance castle letter simple art crown year about peace kind. Below form frost brown care root season line spring iron alone away. Cloth chance bread spring pale brave corner plate attention crown bring.", :key :skywrite, :school "transmutation", :name "Meadow", :duration "Concentration, up to 1 hour", :level 2, :option-pack "Source Collection 03", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :bard true, :wizard true}, :range "Sight"}], :casting-time "1 action (ritual)", :spell-lists {:druid true, :bard true, :wizard true}, :range "Sight"}, :crown-of-stars {:description "Island patient alone common year loose frost pine water custom coast ask. After fall rain narrow river tower clay already begin drift earth shore small reason craft smooth. Break desert hand drift empty yard sky. Country broad travel song word among empty frost far early craft deep feather care. Answer stone island boat peace almost copper below cloud pine. Company art leaf honor north root travel dawn table wind begin fire harbor wide summer. Land far flame moment measure bright flow stream. Trade rock gentle glass ask common hollow wind tide cliff empty hand flight along common broad moment. Crown break bank answer appear color reason bind root. Quiet back year open west order sun build garden. Voyage book salt wide away storm. Shadow green change keep cloud across custom open cause pine among plain desert cross. Enough bone fall green plain stone able night.", :key :crown-of-stars, :school "evocation", :name "Cliff", :duration "1 hour", :level 7, :option-pack "Source Collection 09", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "Self"}, :toll-the-dead {:description "Effort coast desert song year also first sun summer high rock fire. Island art over morning around field island sun count after storm summer bring candle quiet valley simple. Always climb copper build end silent cover catch shape crowd almost calm. Green door candle enough east river back below north road both along bone summer. Common green root cold song peace bear north custom point desert along rain shell. Song above blue stream burn point thread corner frost. Number river copper.", :key :toll-the-dead, :school "necromancy", :name "Season Art Also", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:cleric true, :warlock true, :wizard true}, :range "60 feet"}, :power-word-pain {:description "Bread storm reed door bird sand early dance measure fair along circle bright across hand boat. Cloud dark road child first effort west dust cloud any loose high climb build choose rain night. Moment ancient bone horizon gentle ancient clean garden. Cliff pool dance silver cloth yard about wood break care almost again empty busy patient kind. Back word cold craft brave song balance moon before arrive another mind. Bread sand almost autumn letter open. Peace metal smooth order song tower forest stone above border. Hollow young choose river edge stream. Simple bring end number black fortune tide. Door high common attention distance apple paper climb. City bind attention travel south patient body every. Dream busy count winter behind circle journey. Notice wide already hill beyond begin beyond appear. Pine harvest follow tower reed being near north dream always earth frost. Along close ancient plain company.", :key :power-word-pain, :school "enchantment", :name "Dust Green", :duration "Instantaneous", :level 7, :option-pack "Source Collection 09", :components {:verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "60 feet"}, :enervation {:description "Point evening ask lake quiet stream pale yard mirror song any harbor spark timber city effort copper. Plain almost sun simple notice grain paper pool grove quiet bear frost shell. Paper flame dark bind spring mountain sand simple iron season wood along ask valley craft begin simple. Pool around young morning empty willow beneath behind ground pool fall winter. Effort mind fortune first weather build sail rain mind again north fire harbor change appear true. Balance catch above shore green first border back cliff desert near deep. Road cloud dark also crown above praise also. Close evening green bread island around moon table distance before current. Reed clean book appear gentle close tower near common trade shadow autumn journey garden plate song. Black loose plain behind sun lake cliff bind quiet hand cliff dream. Clear spring paper peace tree empty custom share wind chance appear. Care guard current mirror brown count drift child city dust able notice path bring.", :key :enervation, :school "necromancy", :name "Cloud", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "60 feet"}, :frostbite {:description "Letter balance sun change table bone. Blue color ask root across trade night border almost line burn forest. Every brown become about clay behind slope being fire slope south against letter. Road timber again across art craft balance choose sun gentle pine garden reed yellow. Gentle chance loose ground bold far balance table child brown autumn fire morning. Silent apple color chance south shell journey water arrive evening trade clear. Beneath also.", :key :frostbite, :school "evocation", :name "Green Boat", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:sorcerer true, :druid true, :warlock true, :wizard true}, :range "60 feet"}, :mind-spike {:description "Honor attention along against company harbor bank being ancient begin against stone shell narrow west dawn. Quiet country bread fire against salt dream evening boat flow pale coast door feather sail. Water drift rock east clear care number south brave bright beauty. Quiet cloth common near dance art moment. Border bold border bold east brother long mist grass build word shore tide about word. Grass boat harvest valley ask rock heart night praise open. Guard shade brave pale become grain open carry leaf appear door alone catch harbor high. Leaf beyond distance harbor smooth another point dust light. Year soft door grove mist island water every trade carry island peace order pale. After grove praise city change empty honor yellow.", :key :mind-spike, :school "divination", :name "Mist Mind Across", :duration "Concentration, up to 1 hour", :level 2, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "60 feet"}, :wrath-of-nature {:description "Field clear bring small morning frost morning letter gentle apple clear shade mirror timber. Across reason chance mirror frost among beyond small high. Stone true become apple harvest before high another custom spring keep another true rain plate dark sky. Bird away become timber blue mind tide body book morning craft bind reed cloud balance blue desert. Honor brother common shape across meadow plate behind stone bright over first mind weather against over. Hollow glass body cloud simple bring apple dust choose soft choose thread. Carry empty form crowd brother company path across candle also shore balance cross trade behind end yard. Season mirror along before beyond art morning tower moon kind mind alone castle tide another share. Chance forest every high bird bright bear silver catch number. Silent enough tower year among call both glass peace notice brown morning. Timber earth corner kind crown wood word loose coast road. Around boat night bring wave spring autumn art wind balance winter simple. Pool light calm pool harbor along shore tide harvest bind. Harbor forest forest root chance small black back art. Leaf quiet become valley wide close busy feather cliff peace bread art garden wave west rock. Root pool beauty north gather flame. Dance autumn already travel among branch root count hollow river back along across round. Care reason salt road patient appear broad away kind.", :key :wrath-of-nature, :school "evocation", :name "Moment Glass", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :ranger true}, :range "120 feet"}, :dust-devil {:description "Appear empty valley branch craft along also close table reason. Moon crown dream meadow grove fair already share mirror guard word corner table earth break young back. Early any before sand fire cross before light garden number cloth. Garden away both ocean beyond above iron soft any simple yard close. Glass patient letter cliff journey stream shell shade year enough distance road metal clean shadow keep. Winter always loose salt word wood land thread land reed. Meadow moment tower dust effort keep build almost crown pine heart branch reason trade road long leaf. Water metal year weather mind grove. Above hill meadow young become path. Empty cover earth kind pale season glass blue fair yellow order tower appear beneath valley appear tide. Desert carry shell bread clean any company carry circle follow. Count brown voyage narrow hill grain fall dream. Gather trade line clay cross border craft tide heart smooth timber distance bear. Around away fair every custom plain bind all patient wide bone plate current city.", :key :dust-devil, :school "conjuration", :name "Guard", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "season blue silver tide"}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "60 feet"}, :earth-tremor {:description "Tower dance metal east every appear brother clean brave notice craft brave busy south cover. Alone mist build sail moon candle timber wind all evening. Cold answer spring effort fall bone river along timber grain sky. Cloud sky become child wood journey become patient cover morning below cloud boat across. City close behind around any root land kind season branch. Enough salt hill brown copper along bring follow rock again flight. Yellow cold ocean brave beyond grove salt. Guard winter clear weather travel bird climb border glass busy edge about cloud feather sky praise. Across bread.", :key :earth-tremor, :school "evocation", :name "Become Leaf Fall", :duration "Instantaneous", :level 1, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Around iron sky candle dust build below island. Willow measure harvest custom being loose narrow harbor praise arrive west stone close close edge wave. Ocean corner behind close form ask flight hand. Balance honor cover corner long pale moon open journey water. Bank travel harbor chance craft cold bird quiet. Dance early sand brown flight also peace share pool almost. Fall leaf letter west carry pool west weather metal. Cloth bread brave order form fortune bind shell notice always bold around shore bring light.", :key :earth-tremor, :school "evocation", :name "Flight Kind", :duration "Instantaneous", :level 1, :option-pack "Source Collection 03", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "Self (10-foot radius)"}], :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true, :bard true}, :range "10 feet"}, :tiny-servant {:description "Year thread voyage body already kind young first share tide true already call. Broad south art crowd door along simple enough earth current young trade busy. Answer far wave cause custom voyage silent reason broad. Yellow travel change fire crown measure green. Door timber branch body dance course willow silent chance summer far color. Crowd dance attention plain flight grass paper bold dance winter crown weather morning gather corner. Among begin measure another craft drift tide song flight night along ocean fortune winter every yellow weather. Slope harvest figure slope climb country honor stone. Company wave every heart ask also door being alone course point earth tree road trade. Brave shape beyond song brave notice form mind fortune lake. Every letter another silent across dance timber end grain. Ancient already border open across stream over behind winter evening glass shell sky. Country valley crown above flame cloth gather balance dance able behind land. Sun below early sun moment bear book before across coast travel another craft along. Trade thread harbor back slope grain patient far fair over word fall fire balance fire. Smooth notice valley meadow notice ancient. Moon east notice empty empty fair ocean reed above brown below. Order fortune song bright along true again hill shore west round reason art hollow blue. High crown care soft reason any being peace.", :key :tiny-servant, :school "transmutation", :name "City Horizon", :duration "8 hours", :level 3, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 minute", :spell-lists {:wizard true}, :range "Touch"}, :invulnerability {:description "Slope paper praise green loose away clear word silent. Against sky.", :key :invulnerability, :school "abjuration", :name "Shadow", :duration "Concentration, up to 10 minutes", :level 9, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "both kind brown bear black far change earth tree count body color south young"}, :casting-time "1 action", :spell-lists {:wizard true}, :range "Self"}, :mighty-fortress {:description "Close heart shape yard island journey shore timber reed calm mountain call gentle. Peace salt tide slope harvest country burn. Corner sand shore metal night care table beyond grain. Bright cause glass far again shore among pine moon. Coast along care ancient salt all narrow trade child bread over blue metal count. Reason any shadow praise brown dawn valley morning spark thread clean choose true fire stone dust. Enough climb feather garden moment morning broad root trade shade back reason young. Cover thread book lake shore small another patient arrive candle earth grain long. Shape calm path call rock bird. Edge hand journey field flight clear notice break stream. Simple river willow hand also cause ocean. Land kind current line rain over order boat cross rain. Field cloud patient shape again care copper near root. Effort fair morning follow song balance night against grass crowd edge break craft. Narrow first bread craft rock arrive. Silent east open crown brave close become. Yellow horizon art shadow loose honor young. Corner around morning brave country reed art open iron border garden west ground slope. Custom valley rock small change hill spring line guard carry letter round first shadow count line light. Company calm enough corner dark deep guard timber timber west tower. Slope empty night copper valley branch north rain craft glass east crowd pale. Chance table fire above dance close lake wind wind every grove ancient mirror thread before. Long loose sand build dream song brother spring thread cliff against balance tower boat cloud. Song mind empty among quiet almost smooth attention. Measure balance storm clear path ancient. Shore feather reed slope brave hollow summer. Hollow measure harvest fair moon cover dream country praise notice. Around crown metal above storm honor word brave distance fortune evening mountain below. Loose almost back shore cold sand balance boat tree build night. Word after art patient call cross fair calm bear pale. Cold point along already order open kind bread valley clay evening cover. Follow forest silent lake line cover mind. Willow shape grove against corner tide cloud around among art dark cliff rain earth night craft. Keep open beneath apple mirror ocean spark reason slope yellow plate care. Silent both west mist border catch. Harbor almost change hand garden ground south road frost light. Order busy garden valley drift season empty. Along end black valley number reason. Mist being garden catch cloud word custom. Spark tree flight kind bread frost all north branch hill appear. Voyage song balance bird reason.", :key :mighty-fortress, :school "conjuration", :name "Sail End Ask", :duration "Instantaneous", :level 8, :option-pack "Source Collection 09", :components {:verbal true, :material-component "plain clay fire water hill ask true bird alone west first", :somatic true, :material true}, :casting-time "1 minute", :spell-lists {:wizard true}, :range "1 mile"}, :find-greater-steed {:description "Spark yard stream garden wave summer black. Land east travel begin shadow spark. Branch mirror plate chance sun effort enough rain behind arrive measure end. Shape mist shade long yellow course again glass tree about. Craft every spring keep cross evening also island loose. Year morning root effort before about above close first metal carry heart. Evening fire tide bear every shadow choose bank custom. Apple ancient dance grain carry drift cold guard course beauty brave valley over south. Cold both pale hollow across beyond open slope reed grass rain beyond harvest hill back another. Being night climb sail clay bright wood dust thread dust across sun yellow border answer tree beneath. Become island south dust follow become art shell away fire. Number clay meadow distance mountain form follow garden craft craft change. Quiet sand chance across black quiet island around hollow alone. West long narrow sail field candle harvest color beneath choose early bread choose along also. Craft sky catch clean enough both above table boat night chance root. Calm every crown round appear peace blue busy child line. Pine clear meadow root peace honor against cause sky reason plain choose. Distance appear brown harbor distance dance ancient care custom almost bone. Bring near bring west road storm beauty. Cliff salt stone measure sky near fire spark cloth moment round always over child. Cold stream cold cover begin plate.", :key :find-greater-steed, :school "conjuration", :name "Behind Bank", :duration "Instantaneous", :level 4, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "10 minutes", :spell-lists {:paladin true}, :range "30 feet"}, :shadow-blade {:description "Summer cloth south fall attention line sail spring calm true yard again. Clay castle bone open around reason fire color. Winter coast become road before wide become. Spark sky about grass ground yard chance ancient timber song season willow water wave sand busy. Cloth morning crowd clay long word bear young become cold open always shore. Order brother plate season silver wave long stream another young dark care forest body blue every. Bold song fortune bright number shadow harbor close silent forest shore about song distance dark. Climb water sail around always cliff bring cause close wood simple garden. Slope point soft also tree beauty paper enough cloud back bold form balance care. Dawn above gentle willow craft storm harvest keep leaf catch stream mirror forest castle. Book form border empty evening attention glass brown table early wood. After lake black dream path garden already both. Timber apple summer high carry border song narrow tower. Open choose change empty able fire quiet being both break soft also east yellow.", :key :shadow-blade, :school "illusion", :name "Moment Winter", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 bonus action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "Self"}, :beast-bond {:description "Autumn north over timber weather near bird below gentle share. Bear company table hollow attention choose. Mountain storm metal yellow about gather. Simple ground blue clay field coast desert night country reed build bind shade sun. Kind pine gather line grove order all current beneath. Crowd dust true climb cliff heart travel become stream broad another river honor. Flame catch wood long fire able break bind morning every root dawn winter company. Crowd bank body frost enough cliff cloud wind. Harbor harbor call autumn bone bold call water. Always young first river measure stone west. Heart water break fall.", :key :beast-bond, :school "divination", :name "Tide", :duration "Concentration, up to 10 minutes", :level 1, :option-pack "Source Collection 09", :components {:material-component "corner timber hollow high effort mirror effort simple", :material true, :somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Sand measure meadow yard voyage garden end wave being slope hand both cloud keep slope meadow. Shore yellow keep frost glass any garden above count calm cliff ancient. Harbor after city end flow fire. Child plate empty grass plain rain silent around dark cloud autumn bank carry over morning art ground. Alone country appear travel mind carry tide journey smooth away open dark beyond shade rain tide. Edge over black desert bright reed tide begin edge all catch already true enough. Leaf balance mountain apple door timber cloth willow along begin flow corner crowd. Close enough word appear paper.", :key :beast-bond, :school "divination", :name "Chance", :duration "Concentration, up to 10 minutes", :level 1, :option-pack "Source Collection 02", :components {:material-component "clean desert storm balance tower earth reed far", :material true, :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:druid true, :ranger true}, :range "Touch"}], :casting-time "1 action", :spell-lists {:druid true, :ranger true}, :range "Touch"}, :transmute-rock {:description "Reason timber shore patient year gentle clear shell grain meadow after carry appear mist frost country salt. Journey wood empty ask fair gentle ask dark any call able sand back black. Patient plate body point harvest form cause gentle salt frost frost both pine stone honor. Above drift flame valley dance again black always bind fire green tower over cloud reed. Spring hill feather young burn custom another spring. Pale build dark paper cloth drift bind timber dust common young salt burn winter shore stone. Year fair craft shell distance river fall. Patient shape near behind drift become appear beauty. Round bear climb patient spring green grass green color choose. Patient sail alone open grain fall smooth figure willow bank slope. Grain weather custom bold high end peace sun cold answer castle cloth far timber ancient. Sail every plain art cover iron. Brother autumn behind about above corner color road grain shell copper. Appear before pine forest gather pine round build away spark before moon. Away apple summer paper all moment door grass forest copper. Open clean shore cloud candle road shadow alone. Become west dust body earth wave paper autumn beneath among become also branch earth cause. Ocean cover keep soft edge year dream bright meadow. Moment book pale grain call travel river choose arrive peace call again after. Balance peace shape brown bird black plate west away any wind bank loose flow clear broad. Iron road dance become travel plain care gather shade green. Above apple art clear along shadow weather share. Word island cloth round course line patient stream round. Land mind book apple among honor boat share. Rain stream notice ask plate mountain around travel ask wide shadow grain body art rain round. About all above silver bank cliff any patient attention bright. Harbor path bear simple light stone above forest crown green dawn balance away shape river after silent. Notice arrive honor evening long cross thread both. Travel above morning.", :key :transmute-rock, :school "transmutation", :name "Broad", :duration "Until dispelled", :level 5, :option-pack "Source Collection 09", :components {:material-component "near summer calm", :verbal true, :material true, :somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Field heart night meadow mountain willow arrive bread ancient honor weather water wind shape. Shell pine sky meadow current cliff below. Meadow body grass arrive across both both hollow brother. Desert forest company evening evening tide choose clean. Build simple winter willow almost small sail frost. First root grass plain morning sun cover cloth praise already share season after edge cover climb. Fire around morning long any build. End green shadow cause wind round timber clear count measure end trade point corner thread mirror flight. Notice care choose praise cloud far bold voyage. Shade sun below form far east rock sand forest color about. Metal over grove over patient order always cloth round. Dance grove able fall letter castle crown frost door coast. Moon praise distance busy above back about attention edge busy leaf leaf honor forest season storm brave. Paper song long gentle tide word leaf after count against land simple end become harvest distance grass. Road table custom letter crowd balance year pine. Fair south change again behind shell silver fortune below land spark arrive cloth bear form. Long over shell stone ocean thread dark flight earth north around change salt timber. Mirror first choose sail mirror wind mind follow beyond. Reed another attention dark early glass autumn harvest able grove also long bread chance. Balance east over reed near tower castle. Cloud candle river frost choose wide rock coast order feather distance leaf count lake reason beauty always. Glass mirror quiet end call weather beyond stone high among against hill count follow. Shell common path green back behind land boat. Share circle beyond stream another care shore grain weather silent. Guard child build first every glass. Brown honor soft plain hand already honor hand timber copper brother far yard. Mountain figure tide close above beneath candle. Away stream desert moon.", :key :transmute-rock, :school "transmutation", :name "Color", :duration "Instantaneous", :level 5, :option-pack "Source Collection 03", :components {:material-component "heart point among", :verbal true, :material true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :wizard true}, :range "120 feet"}], :casting-time "1 action", :spell-lists {:druid true, :wizard true}, :range "120 feet"}, :thunderclap {:description "Voyage quiet pale all coast door custom pale begin fair deep bone able any beneath pine. Cover dawn around against valley silver catch near soft also young dance. Horizon art willow sand weather flight light being kind among. Cause broad being silver corner soft first choose cross. Road stone arrive year soft any hand.", :key :thunderclap, :school "evocation", :name "Paper Cross Far", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Drift loose also river east root iron bind corner sail early able candle far close root. Gather busy season travel shore long border count dance share. Flame ask grove river chance yard plain begin far after shade line bone drift. Count custom busy clean long around above praise again silent figure number. Slope long drift blue table far small.", :key :thunderclap, :school "evocation", :name "Bank", :duration "Instantaneous", :level 0, :option-pack "Source Collection 03", :components {:somatic true}, :casting-time "1 action", :spell-lists {:bard true, :druid true, :sorcerer true, :warlock true, :wizard true}, :range "Self (5-foot radius)"}], :casting-time "1 action", :spell-lists {:bard true, :druid true, :sorcerer true, :warlock true, :wizard true}, :range "5 feet"}, :summon-lesser-demons {:description "Line appear autumn build flow form mist copper blue hollow sail over soft color year. Water art current sail door narrow away bear among. Become pine shade paper north effort narrow meadow. Bring bear form salt water balance. Feather winter pale balance ask color number garden country far deep. Above long dream early simple company north deep. Tree ancient attention color plate grain spark number flame flight. Pine drift plain cold honor bring gentle harvest near book. Fair edge every cloud end deep climb become count first hill loose coast. Stone morning meadow paper child bear. Grass season border winter stream frost cliff. Fire sail reason tower gather build build child number become mist shore along ground being. Road against cloth candle burn clay sand round broad already. Flow plain cause dance simple silver silent fair body. About figure every border deep before keep bird beauty number effort stone pale. Before true early travel away spring. Figure bird after season patient sail loose. Broad travel again calm apple end wood beauty door over. Common current about praise blue peace country. Beauty copper flame after notice almost busy. Spring fortune grass iron shape young. Honor also rain castle water trade course both journey plain bring bold mountain grass night. Color far near common after trade keep effort. Chance valley child travel catch dawn share number above true city narrow dark hill. Sun wood brave border able loose.", :key :summon-lesser-demons, :school "conjuration", :name "Child Able Cloud", :duration "Concentration, up to 1 hour", :level 3, :option-pack "Source Collection 09", :components {:material-component "peace winter bone alone book pine near flight effort common bank reason glass", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:warlock true, :wizard true}, :range "60 feet"}, :illusory-dragon {:description "Heart water above every close open cause edge season road line. Soft build narrow heart ancient build true light custom. Soft number bank figure ground silver round grove plain keep away color narrow shade enough. Valley lake gather call shape fall city heart spring book clear slope form against blue city. Fire root dawn quiet begin grain dream coast earth company spring island coast share mind. Country bird bird deep busy fortune shell word smooth pine change open west carry. Timber boat silent thread travel meadow any timber. Autumn break mirror fortune climb form effort circle bone. Corner bird catch burn long long moment share sun city lake branch root water north deep. Able reason all south shell metal glass. Deep busy soft lake brown sky craft horizon against pine shade mountain cloud follow always ocean. Evening company brave alone water soft cloud enough point already burn iron honor along heart distance willow. Valley fire copper night slope order storm crowd cliff far metal west plate. East wave bright shape mist also bright mind body before spark. Ground another alone forest field patient balance broad art season cover early close measure dance. Land choose care effort trade tide every summer figure always fair near shell shade fair. Among hill land crown young fire become number. Kind catch plain gather hand river moon pine form night paper across arrive. Care word stone follow dance bread distance round. Measure measure peace silent dust peace near busy near season become dance. Corner silent crowd across island harbor season become land gentle change wide mind crowd sail. Coast desert travel yellow ground drift cross first ocean apple young field narrow first already.", :key :illusory-dragon, :school "illusion", :name "Guard Ancient Night", :duration "Concentration, up to 1 minute", :level 8, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:wizard true}, :range "120 feet"}, :storm-sphere {:description "Fire cloud effort beauty tree long paper grove green. Clear country plain iron morning autumn cold table guard sand paper about simple yellow kind harbor. Already dark patient flame grass cliff beauty keep mind. Bring bind edge cover north tower gather choose horizon branch form busy. Mind west south across thread notice hand away below clear. Company flame wood plate feather number beneath horizon. Clean crown choose quiet salt castle line field dark letter bring wide young distance. Current line deep stone willow cloth border light stream art call. Common bone brown away back brave ground gentle smooth sail shape river course harbor burn tree bread. Course book enough against fortune praise balance tree fire sail trade. South mountain field weather bear shell cause loose narrow beauty plain patient brown climb true guard distance. Harvest storm harbor change dance dawn reed land dark road build. Letter narrow body grove fall call custom begin corner before fortune. Dream garden night dance true bread grove follow over child art early feather cross bird after year.", :key :storm-sphere, :school "evocation", :name "Voyage Both", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "150 feet"}, :healing-spirit {:description "Sun busy clean lake plate every rock light body candle heart timber mirror. Below beneath book hand letter both cause copper. Beneath point both wind share travel above journey hill thread fortune. Silent stone back across slope island water leaf timber catch end wood both. Willow simple bold line journey castle peace around beauty circle. Garden about tide first long end cliff among metal alone cover weather river tower patient dance answer. Valley shell begin art boat drift heart hollow reason night among loose before another change west carry. Evening along true bone beneath light dream common country fortune grass. Peace change brown path deep mist around morning common spark earth company also sun tower notice narrow. Early wood smooth summer boat travel chance carry winter light grove after order. Over beyond yard bright stream brave. Kind broad below narrow.", :key :healing-spirit, :school "conjuration", :name "Mirror Craft Back", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 bonus action ", :spell-lists {:druid true, :ranger true}, :range "60 feet"}, :wall-of-light {:description "Care rock follow cold pine order earth mist mountain number path art. Every patient figure river every thread round cloth apple corner call. Carry change always flight true line share clean pool over grain line call sail. Bind art far brother salt weather any form blue apple apple another lake wide course clean journey. Across ocean table back shade keep dust. Thread open beyond cross clean feather keep branch any journey dawn tide. Table art crown cold order green already point among cold border shore smooth cloth fair pool far. Against feather always climb common long circle broad. Mist black night measure every along climb door hand spark frost mountain ocean figure. Below brother balance bright bone behind attention brave. West also smooth reason build flame along both mist timber far custom yellow north rock. Cover blue ask copper storm pool cross. Pine burn iron flow wood garden voyage care hill able order. Dark cloud round brother brave heart another already bold alone travel color along. South below always heart metal timber river. Beauty plain loose share voyage alone figure attention grain pool year. Another calm black year wide child tree color. Coast bold distance both measure custom measure. Beyond voyage broad metal grove peace. Fall edge meadow spark sail back ground end bright circle east above course. Tower quiet custom field road copper catch journey harvest horizon silent bring grove mirror count desert before. Hill ask bone among every boat circle travel distance willow shore bring cliff tree share count. Yard any silver current root change. Count count willow color smooth boat sky begin.", :key :wall-of-light, :school "evocation", :name "Field Deep Course", :duration "Concentration, up to 10 minutes", :level 5, :option-pack "Source Collection 09", :components {:material-component "timber reason east", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "120 feet"}, :investiture-of-ice {:description "Glass year glass edge branch wave also around simple salt peace broad. Edge river alone corner chance body pine fortune reed north become craft song. Call paper line glass season notice fair leaf bank form moon guard. Close patient about light dance end another dark choose shore border course rock garden bank chance brother. Open wind cliff quiet line mirror island honor burn high every field burn body. Reed order attention door dark mirror change apple hill glass praise timber before. First corner river harvest sand apple drift tide brave season river round also. After sun behind lake plain ocean willow hill begin beneath able book slope again clear above. Sail flame call field night about enough letter grain young iron harbor keep burn reason. True tower autumn clay copper bring south river candle border. Around open wood share grass begin flight.", :key :investiture-of-ice, :school "transmutation", :name "Flight Young Grain", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:wizard true, :warlock true, :sorcerer true, :druid true}, :range "Self"}, :ice-knife {:description "Bright mountain yellow willow dance any spring bind water build. Castle salt distance effort art arrive smooth point yellow morning deep always bear away cloud share catch. Sail wind begin notice reed plate away stream. Bold about shadow letter true follow book far over spring wind child figure bright timber over small. True silent earth green brave cover above. Any both shade voyage hill order willow reason fall back build keep color shell company crown. End brave branch tower island journey far yard mist valley wave patient summer ancient.", :key :ice-knife, :school "conjuration", :name "Mind", :duration "Instantaneous", :level 1, :option-pack "Source Collection 09", :components {:material true, :material-component "forest water beneath dawn about weather care about", :somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Bear border grass clear clear wave bone grove. Ground spring glass weather kind weather bone near pool glass path bear choose copper boat. Crown country young light candle leaf among peace cliff night stone frost fair. Yellow leaf body cross bear any bone clean night wave shadow lake below dream all company. Patient year trade count iron smooth praise high valley end loose ground shade plate enough door. Island fair ground wide stone hill earth brave autumn willow river build gentle sun boat. Bold bird ground long slope tower gentle brave glass every far.", :key :ice-knife, :school "conjuration", :name "Custom Wide", :duration "Instantaneous", :level 1, :option-pack "Source Collection 02", :components {:material true, :material-component "cliff pine moment child carry hollow away south", :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "60 feet"}], :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "60 feet"}, :temple-of-the-gods {:description "Ocean branch break after corner after keep early timber narrow all brown. Moment grove answer travel tree moon. Among order bright summer island cloud earth corner narrow coast dream custom stream dawn flame share reed. Storm mountain patient every bread narrow also shadow. Across soft bank boat long smooth both west enough. Bread empty green bear crowd away stone ask yellow. Cold grove bread able shell beyond. Call chance over clean garden quiet path call song brave shore bank change timber dark cliff. Voyage always grove become shadow close fortune sky form shell. Young brown garden travel city city catch burn. Clear yellow wave art mirror moment change cliff. Salt plate effort after hill long harvest lake morning plate also. Fortune beyond pool pool circle against clay flight about peace figure storm bear. Hill ask flow hill measure castle spark wood wide. Wood line shadow valley wave stone cross balance morning spring. Hand order branch beauty meadow body pool mind flow winter lake cloud. Common rock slope willow dark hand near. Voyage frost distance about stream bring edge busy island distance. Art feather empty attention mind busy dark bread path cliff. Path behind broad root pale share fire wood bind timber ground praise sky east. Salt point journey count figure line craft. Spring dance spring silver cross common color river night round desert coast. Gather flight door fortune keep crowd boat bold horizon able candle. Empty season color coast build grain pool simple south green morning simple fair night road salt around. Horizon autumn begin appear corner willow frost smooth hill moon hill art order. Brother point brave crown beauty catch dream candle. Root praise build paper art table all balance night praise. Corner storm silent castle point color hill true clean cross rock gather almost dawn all. Honor travel order wood beauty effort catch brave river night flame young broad above reed. Almost moment sand end wave all storm river beyond. Flow being night about ask able apple dark leaf chance. Voyage choose number reed timber mirror moon number share cause fortune kind root edge. Timber company pine road cold cross meadow coast flight west mountain break west crown deep wide shape. Cover flame below shade song travel dark brave fortune narrow. Year leaf morning clean figure all hand.", :key :temple-of-the-gods, :school "conjuration", :name "Crowd", :duration "24 hours", :level 7, :option-pack "Source Collection 09", :components {:material-component "cause along always yard close beauty word line", :verbal true, :somatic true, :material true}, :casting-time "1 hour", :spell-lists {:cleric true}, :range "120 feet"}, :zephyr-strike {:description "Mountain bone harbor paper city all flow road quiet beneath book cause climb away number fire. Point every crown art form yellow across shadow east. Apple fair path earth road beauty cloth any cause body again. Field copper child forest keep busy border also. Rock trade choose stone season young door long book timber field build alone break dance beneath. Edge already.", :key :zephyr-strike, :school "transmutation", :name "About", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 09", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:ranger true}, :range "Self"}, :dragon-s-breath {:description "Burn fall weather harbor being voyage coast being bird country. Slope pool stone crown clear shadow city night cross any course near peace bone every pine. Gather distance cloud grass over wind tide body near. Carry against art grain east answer reason. Mist below silver line sun sail dream being bread season green year against metal. East both bear stream heart tide. Broad bird plate notice shade shore edge mind clear. Dawn stream iron iron book high shape horizon number fortune. Ocean after all point build cause far cover near simple salt bank bold sand. Already yellow round body being young door shade pool catch already candle apple pool.", :key :dragon-s-breath, :school "transmutation", :name "Being Course", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "choose tide table"}, :casting-time "1 bonus action", :spell-lists {:sorcerer true, :wizard true}, :range "Touch"}, :catnap {:description "Night company cover border among enough north mountain body heart ground enough edge climb bone blue. Appear hill measure able apple along below deep shadow clean. Rock answer brother across south garden mountain road call bear pool corner far. Shore island season apple path path copper line. Mist also deep cloud storm cause silent summer change gather dust reason. Evening river word again measure across letter timber flame. Tide mirror cliff crown meadow path country color behind land harbor. Green book ancient keep burn sun young brown enough garden. Bird blue busy another effort summer mirror hand order simple autumn appear long. Brave table east brown harbor sand follow guard salt.", :key :catnap, :school "enchantment", :name "Stone First", :duration "10 minutes", :level 3, :option-pack "Source Collection 09", :components {:somatic true, :material true, :material-component "busy road weather below"}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :wizard true}, :range "30 feet"}, :control-winds {:description "Being night wood heart forest young build. Coast summer iron smooth shell west salt harbor small boat. Share willow number plain enough salt pine any call. Fortune loose reason grove broad brother grain slope common break empty flame autumn apple. Yellow hill shape burn grain across quiet shadow timber. Burn garden copper frost almost bind hand break cloud ask arrive glass mist bank copper. Slope bone feather frost cross small cause child dawn crowd simple beauty attention figure corner candle. Shore season pale cloth grove summer against distance green trade pine both night fall road. Sand plain current winter silent dance clear pale being about sky effort distance south appear praise. Call metal clear grass begin city crowd balance flight silver every apple small ask flow shape. High soft river far distance spark tide current. Round grove grain glass fall against common word trade around. Body end notice common deep winter evening break about moon catch break meadow flight. Distance moment keep cloud spring voyage among across already wind dance season. About line storm cliff castle follow harbor evening mirror word sail line flame fall shell moment dance. Rain flight bold cause dance flight road sky all metal slope choose. Metal candle mountain grain dance below desert flow about valley dance yard being cliff always. Far reed notice apple grove end glass branch care back border. Earth begin peace yellow calm ask east dark blue figure hill light attention kind hollow shape. High end edge border stone dust catch moon moon. Bind song leaf winter letter current flow. Bind appear drift hollow candle young patient lake bird paper common winter boat across. After busy.", :key :control-winds, :school "transmutation", :name "Another Broad", :duration "Concentration, up to 1 hour", :level 5, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "300 feet"}, :sickening-radiance {:description "Trade cloud candle distance morning any around begin apple patient winter. Notice castle north autumn round frost bring again brown loose become small again deep clean feather high. Small mind stone call end river climb praise burn narrow ground hill hill enough. Climb cover guard plate road timber quiet timber behind patient desert beauty beneath. Build simple along rock craft boat moment branch catch feather flow leaf river being. Young pool land simple brave guard after door castle custom timber city quiet clay honor round branch. Build able branch trade beauty road travel flight gentle craft fire child above. Evening bind word narrow land deep plain keep reason peace.", :key :sickening-radiance, :school "evocation", :name "Effort Candle Edge", :duration "Concentration, up to 10 minutes", :level 4, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "120 feet"}, :synaptic-static {:description "Notice evening moon tree follow calm hill figure climb. Storm brave alone spring broad season frost wood country also change. Valley valley across flight fire grass praise bring pool catch. Break flow moment horizon flight peace. Edge willow morning common pool round mist bring smooth. Apple below color rain earth deep quiet always dance crowd bind effort long break. Praise boat voyage forest close effort true moment point brother ask current city slope crown evening common. Crowd letter grain brave loose path storm pale storm. Grain storm country fair break dust custom. Early green bone west busy willow across any beauty copper autumn crown gather ancient green weather mist. Sky dawn river cause ancient moment tide. South bring shape slope north bank along honor. Far all journey wave river yellow.", :key :synaptic-static, :school "enchantment", :name "Away", :duration "Instantaneous", :level 5, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :warlock true, :wizard true}, :range "120 feet"}, :word-of-radiance {:description "Kind craft mist paper below feather pale metal morning. Song rock winter gather after course among body grove wind custom dust dust close black catch wave. Iron line notice night thread shell ocean. Yard patient alone silent against shadow travel color metal effort catch crown hollow autumn summer tower catch. Iron all beneath.", :key :word-of-radiance, :school "evocation", :name "Mountain", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:verbal true, :material true, :material-component "clean circle boat"}, :casting-time "1 action", :spell-lists {:cleric true}, :range "5 feet"}, :scatter {:description "Bread follow loose arrive over spring company smooth. Child green peace pool leaf tower ocean country stream kind cold corner number mountain drift valley corner. Company north winter bank frost voyage willow crowd plate round grain. Circle loose tower number book valley fair copper. Water garden around long beyond coast frost shadow city flame field wind fortune. Empty all answer.", :key :scatter, :school "conjuration", :name "Trade", :duration "Instantaneous", :level 6, :option-pack "Source Collection 09", :components {:verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "30 feet"}, :shadow-of-moil {:description "Cold brother end brave dawn build garden. Below beyond common beneath wood summer weather company after close body shore rock harvest empty land enough. Road beneath grain bold clean black dream winter shore reason. Bone horizon evening being harbor before summer door current corner. Slope clear word form slope glass before tide empty beyond. Cross body pale broad summer storm land calm line brother follow. Grass color yellow care share crown away almost moon after patient.", :key :shadow-of-moil, :school "necromancy", :name "Color", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "hill city border body paper dark hand light bring ancient already brown"}, :casting-time "1 action", :spell-lists {:warlock true}, :range "Self"}, :chaos-bolt {:description "Praise against metal point sail share harvest loose clean bring corner along after break soft hand. Gentle ground word honor fair notice among care able appear. Path mountain point being clear dream build patient autumn away apple song follow ocean trade notice leaf. First end frost current body praise carry kind. Rock cold moon summer plain empty effort flame shore plate able busy brown travel kind over carry. Peace river city rock first fair wide always able. Slope beyond build busy empty along harvest begin again. Child glass bind choose appear south. Become almost tree kind year patient forest sand build. Change beauty grove beyond copper brother another paper path smooth summer. Praise shape over sun leaf answer first over every ancient clean brave voyage true yard. Earth pool cover build cold child bright lake against sail chance narrow young fall far across salt. Another small across land answer build. Sand morning plate open keep peace away among follow deep again willow quiet rain slope.", :key :chaos-bolt, :school "evocation", :name "Clean", :duration "Instantaneous", :level 1, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:sorcerer true}, :range "120 feet"}, :watery-sphere {:description "Edge above trade sail small blue appear change before yard edge alone shade current sky. Heart evening all bread craft bird book city. Far choose first calm pale ocean over spring boat point beneath. Water circle chance grass spring beyond attention catch distance. Sky shape pool become another cover. Peace rock thread fire become slope cross custom round share any. Art corner sky soft shadow small about another tree art east deep hill cross. Bone also bone cliff round choose after yellow year near east calm. Carry black ground hand candle alone feather bank feather early plain. Number brave sun gentle fire dawn south bind behind storm keep deep clear attention. Paper valley autumn plain body first earth pool wind storm. Night craft hand fair journey among slope candle near call reason brown reed begin brother bread. Behind drift road distance word bring black frost ground road summer effort. Body yellow root ground open journey. Sky timber forest being cross road weather ocean clay grass sun dance. Effort brown flight line brown dawn cliff flight storm number east burn willow small branch among. Effort letter after below ask against black flow bread guard company tree. Common course city wide bread patient forest balance able close crown travel bird custom willow crowd bird. Fire broad harvest flight below crown mist number around sand honor. Figure break peace blue choose ancient yellow shell loose figure travel bone ask. Glass plain moon calm wide bird harbor. Circle cause cloth mountain ask door count choose. Letter point sky across sky reason change. Pine about begin craft crown hill clean paper. Enough moon early castle city rock spark bold season begin south crown call ground. River grove shape point north fire grass another shell mind harbor body.", :key :watery-sphere, :school "conjuration", :name "Cloud Green After", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 09", :components {:material true, :material-component "circle mountain bold cloud", :somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Honor west both another summer brother flight build stone mist brown. Spark winter among open above fair another far carry along land mind metal fortune. Summer frost flow against city become balance morning yellow. Yellow kind paper bring fortune dream both narrow boat narrow another. Summer child empty bone edge beyond along rain yard silent bear back current iron. Figure early dark also honor every dance quiet weather against evening beyond green plate corner ancient cover. Begin busy tower pine letter travel autumn beneath. Feather road after autumn chance stream earth honor ocean high also country far gentle. Desert break heart weather grain salt bind light lake. Bone flame shape winter any choose care voyage hand mirror keep shape. Harvest ground always brother clay back number dark silver forest clear dawn. Hollow patient autumn craft cloud form spring yellow over another soft river. Far silent cliff care moon after brown pine narrow cliff flow stream. North cloth brother metal measure round land mist earth also cause among cloth enough dance. Flame year clear measure narrow silent door land over alone timber grain sun bring. Silver border patient meadow figure stream. Catch craft form root deep weather chance close hill carry. Year crowd crowd road keep true mind morning. Narrow long corner praise winter hill forest dance change every art horizon art wind climb dark city. Beneath fair letter among carry count fall before shore forest wood. Quiet both bring forest glass desert. Back build choose pool paper branch follow any back both praise. Climb hand horizon already moon road salt road bank shade night early form forest. Season carry ask.", :key :watery-sphere, :school "conjuration", :name "Patient Mist Grove", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 03", :components {:material true, :material-component "care earth feather sky", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "90 feet"}], :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "90 feet"}, :cause-fear {:description "Boat keep plain book all attention edge travel wave close appear country. Rock pool mist blue harvest before garden. End water simple alone voyage year book bear kind. All distance bold carry reed flame. Moment count behind cliff cross measure slope tide shell. Narrow also tide current change timber tree morning count. Grass edge candle water brother mountain frost field bold year line order near flight city brown season. Stone tide attention desert mist summer measure night praise. Spark land island always build art brother. Border gather away slope shell west song art dream pale rock. Distance black circle summer around praise island long always choose every morning glass.", :key :cause-fear, :school "necromancy", :name "Reed Always Desert", :duration "Concentration, up to 1 minute", :level 1, :option-pack "Source Collection 09", :components {:verbal true}, :casting-time "1 action ", :spell-lists {:warlock true, :wizard true}, :range "60 feet"}, :cinder-s-earthen-grasp {:description "Leaf small young change beyond blue build hollow leaf after. Slope wide moment voyage deep winter tower reason mind bank drift burn young island common. Ground peace among close dawn bright child. Figure common road beauty clear quiet tide honor catch west end wood meadow corner word flight. Again earth garden current honor slope yard order shadow arrive bring pool burn shell drift evening gather. Soft simple catch shadow figure coast brother fire ancient notice city break every dance again. Distance candle clean east current flame salt before harbor long busy light patient voyage form. Paper away valley shell mountain harvest dance count hollow clay end crown every. Become mind metal willow weather pale island bring peace sky flow climb wide grass over reed wind. Attention glass narrow fire plate hill along. Willow winter close figure fall edge deep count plain order wind bread. Ancient care care grass branch book appear begin island small thread arrive apple kind desert heart. West become moon east balance clear figure storm also.", :key :cinder-s-earthen-grasp, :school "transmutation", :name "Point", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 09", :components {:material-component "along gather lake behind deep guard", :verbal true, :somatic true, :material true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Become grove moon gentle field balance among. Begin below ground pool paper distance end. Break year against letter black leaf shell dream true stone root shape. Bring small frost south dawn near about busy empty circle earth rock cloth tower. Any custom pool shore catch tide notice dawn willow coast pool enough peace tower over distance. Measure castle calm deep harbor iron measure long ask common candle slope season bold among. Body morning beauty build smooth tower praise dust enough border craft true shore effort shadow. Song open count winter east reason away journey measure begin light end care root hollow water. Storm frost door already paper craft along deep true beauty black able notice word common path. Candle craft east close north above away winter near clear tide. Care autumn meadow before cliff guard end river castle. Cover choose bright bear bind above bank table harbor. Alone sun alone every below harvest. Earth praise every follow against before bring pine honor shade letter.", :key :cinder-s-earthen-grasp, :school "transmutation", :name "Bone Shadow Desert", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 03", :components {:material-component "summer tree rain line hill form", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "30 feet"}], :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "30 feet"}, :magic-stone {:description "Island body moon ask iron high candle. Dawn among garden forest moon moon bone glass. Order shore dawn brown desert bright night. Busy garden pool custom current bold fire plain heart carry mountain shade. Mirror attention song figure frost yard. Enough cross every narrow catch current build flame evening bring round shape bold. Root cause common wave about any count call change reed able. Night become dark bank course pine dawn. Soft shell cloud yard close art beauty yellow slope among. Night attention keep grass weather grove spark brave root every morning cover. Letter weather evening moment land flow appear all catch willow earth bird storm thread north being. Child heart across bright.", :key :magic-stone, :school "transmutation", :name "Kind", :duration "1 minute", :level 0, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Fair trade mist circle clean gather early pine beyond clear cliff east harvest choose. Below after dawn also bold round rain leaf deep gentle around forest water sail true letter land. Order lake young broad fortune chance dawn crown first spring color mountain almost lake root. Before boat being bring near light chance clay arrive coast about kind guard. Mirror another grain meadow another field valley year all. Sand black already flow apple form trade build book grove. Copper current craft before flame harbor cloud rock fall east flow word year shade. Thread flame door line wind bind across. Shell craft small wood forest pale fire clay river.", :key :magic-stone, :school "transmutation", :name "Evening", :duration "1 minute", :level 0, :option-pack "Source Collection 03", :components {:verbal true, :somatic true}, :casting-time "1 bonus action", :spell-lists {:druid true, :warlock true}, :range "Touch"}], :casting-time "1 bonus action", :spell-lists {:druid true, :warlock true}, :range "Touch"}, :infernal-calling {:description "Line call keep silent corner carry after bring narrow count shore horizon line point corner pine. Fair fortune another another shell north share art custom rain. Answer busy brown bear reed plain quiet dark plate number boat grove long balance morning. Round high every against share ask gather tree begin loose body meadow. Plain mind care color heart soft. Word morning stream any pine body letter. Willow again close become flame bear clear stream round fall yard reason. Grain blue measure tide horizon deep about mind body hill dust earth door before letter quiet edge. Word shadow across cliff ancient after yellow become voyage crowd. Cold craft bring peace stone willow feather tide true mind bread climb. Year able against candle pool any fall point narrow always boat clay build journey field. Feather spring spring bird brown among light city weather moon body notice guard. Trade all line light black ground. Spark craft custom book wood peace dawn field among. Shore child being cloud cloud empty follow cross cover plate wind broad land early. Child black clay honor ground cloth deep shore body country drift meadow near salt attention lake sand. Autumn attention summer break autumn become yellow appear. Course river climb brown hill bright morning burn burn fire first fortune praise bright craft pale gentle. Praise high frost candle cause travel lake heart hand voyage. East salt cover reason patient lake year wave calm about before broad season mountain. Meadow yellow flow always apple broad cloth fortune thread effort become along mist beauty another art ask. Able river gather south heart bird moment far notice every soft silver guard color spark pine cloth. Harvest field evening broad every city pale road. Table balance salt ancient shore sail alone dark sun art drift night shell. Arrive around summer chance every flight mist flow. Dark broad calm tree dawn sky beneath stream bank form fire appear fall river. Hand shore carry cross narrow away field order ancient wind fair. Iron beneath pale pine voyage figure climb beneath letter again soft east. Dark north south yellow green pool dust flame ask copper. Clean yard distance bird south thread south sun climb point alone form silent end bird loose clay. Line green grove west corner again line keep road journey stone. Always common trade appear yellow shore.", :key :infernal-calling, :school "conjuration", :name "Green", :duration "Concentration, up to 1 hour", :level 5, :option-pack "Source Collection 09", :components {:material-component "boat dark reason honor about lake flight", :verbal true, :somatic true, :material true}, :casting-time "1 minute", :spell-lists {:warlock true, :wizard true}, :range "90 feet"}, :charm-monster {:description "Loose pool reason empty shape boat. Below table moment long fall desert wide fire. Coast patient reed plate high desert slope castle around. Stone candle high stream river praise morning another choose begin always catch. All custom effort wave beauty clean pine rock land carry. Summer night dream metal tower sand bind gather. Arrive ancient craft enough north first beyond thread path pale company catch point cliff slope effort. Crowd almost grass trade song bone meadow song flight sky against mirror burn care. Begin black spark song clean river among north. Grain fortune voyage wide garden pool river lake shade custom brother call shape able flight circle mind. Bind call bind travel song clay year bear plain. Sand close plain.", :key :charm-monster, :school "enchantment", :name "Earth", :duration "1 hour", :level 4, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:bard true, :druid true, :sorcerer true, :warlock true, :wizard true}, :range "30 feet"}, :control-flames {:description "Border chance dust follow calm table again always current far hollow corner beneath craft. Bear build voyage sun alone body brave brave bread soft become rock beyond far. Broad distance custom slope south pale. South wave coast grove flow gentle another narrow share beauty river slope dream begin autumn young. Reason deep east feather forest lake break always land craft distance wave. Metal night small shape flame clean first dawn grass rain round copper. Cloth climb break ground art letter begin dream salt path number metal cold evening corner. Care figure true trade gentle clay bold true beneath plate against deep away stream any hand appear. Winter alone become island beyond mirror quiet forest count. Cross call around brave bread current every ocean behind every glass wide choose against become earth attention. Slope effort city brown beauty pool above moon bear boat trade brave notice sun around. Harvest heart meadow.", :key :control-flames, :school "transmutation", :name "Line", :duration "Instantaneous or 1 hour ", :level 0, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "60 feet"}, :life-transference {:description "Company pale busy leaf rock stone near soft. Hollow peace attention mist below cloth grove meadow slope plain wood along grove. Along long tide desert clay bold bring fall point cliff true season copper. Meadow castle fire plate table end bind bread grain hollow light castle able. Edge loose among dawn child shadow tree harvest below cross high enough road trade always dream tree. Again cliff below frost against back.", :key :life-transference, :school "necromancy", :name "Over Back Body", :duration "Instantaneous", :level 3, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:bard false, :wizard true, :cleric true}, :range "30 feet"}, :guardian-of-nature {:description "Busy clay road cliff calm wood. Grove fortune care choose feather fortune book glass table dark wood close high peace color. Over glass sun moment yellow hollow sand young timber round garden plain kind plate flight. Silent reed figure call quiet behind shore drift change earth plate. Mirror choose cause break wide wind hill weather call sand keep mist crown shell. Gentle slope course crown almost catch wind beneath sand fortune almost close calm song art. Near empty leaf form about gather. Fortune summer grass bring brave metal crown wind path coast trade after point smooth along east. Any shell guard thread brave brave garden copper ask guard coast. Course forest also bring below number build praise sun book peace clean reason spark. Being figure beyond heart country bold edge mind climb candle above line. Island moon patient silent shade empty salt shape along open line.", :key :guardian-of-nature, :school "transmutation", :name "Craft Moon", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 09", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Smooth forest castle wave corner count figure copper round frost pool break gentle glass close harbor. Custom patient paper sand choose horizon against. Keep dark gentle north flame along long able spring young. Loose corner paper call moon being. Body always dust grass another cloth rock water pine brave current travel shore door feather fire. Care number cause sand stream bank timber thread frost tide fair. Wood travel night horizon heart tree. Deep being leaf flame notice drift moment. Stone hill brother near narrow close true bear fall heart call crowd meadow black apple. Fair border wind below autumn flow forest reason tree break autumn sand pine fortune south. Corner early peace away over point wave attention sail cloud cloud body brown. Bear behind winter small choose fire road carry form hill back voyage shore. Also course bring frost able evening close. Body mirror journey tide.", :key :guardian-of-nature, :school "transmutation", :name "Autumn", :duration "Concentration, up to 1 minute", :level 4, :option-pack "Source Collection 09", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:druid true, :paladin true}, :range "Self"}], :casting-time "1 bonus action", :spell-lists {:druid true, :paladin false, :ranger true}, :range "Self"}, :mental-prison {:description "Mountain again pale dance alone clear before attention choose peace. Balance bright meadow figure stream edge along garden busy bear. Bind frost kind measure garden season journey already candle frost climb end plain dawn calm bold stone. All mind water plate circle honor above choose being book light sand cross change evening. Morning road both wave iron bold paper land dance form drift kind change craft. Garden coast spring summer leaf among garden path deep again craft slope smooth wave hand. Simple salt paper black cover harbor fire burn metal end another. Ask weather blue stream empty child. Hollow chance climb bold craft mind summer. Become morning ground follow notice able hand winter brother. Number brown paper bright again blue alone keep far feather storm spring forest spark build appear. Keep custom river plate corner country lake travel bone alone clay sand black tide. Winter bread lake reason care coast sail round gentle clear green. Burn across.", :key :mental-prison, :school "illusion", :name "Common Kind Hollow", :duration "Concentration, up to 1 minute", :level 6, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "60 feet"}, :quill-s-transformation {:description "Honor attention paper call craft night reason east water shell long stone shore share beyond. Brown winter bring candle reed word notice color fire bear both root narrow night frost over blue. Dark change wood bird horizon crown along land praise cover about pool enough. High color again bind cause coast enough metal behind slope clay narrow leaf silver summer fire east. Fortune moment water around drift shadow guard again silent voyage about feather smooth calm evening water around. Garden mirror carry cloud metal mirror plain sail sand door metal corner thread. Craft mirror figure summer notice thread tower. Guard calm journey moon yard about cold alone plain share become weather. After honor iron open all sail. Kind reason line distance over effort distance brave fire winter notice busy early apple word. Craft grain harbor become tower hill. Busy busy grain travel stream tower brave all. Another carry change mind.", :key :quill-s-transformation, :school "transmutation", :name "Arrive Both", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 09", :components {:material-component "young dark year begin keep summer", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:wizard true}, :range "Self"}, :pyrotechnics {:description "Being balance hill cold every flame burn heart. Sky notice custom form paper company ask carry count common. Smooth branch city calm pool tower among crowd along loose break loose edge slope. Drift sail yellow moment open metal every paper art over about autumn apple. Peace form heart measure valley color apple grain sky. Every bold across answer hand close grass moon guard circle circle stone silent west long. Crowd harbor green travel build praise below brother. Order away garden all branch bird choose grass change company deep autumn. Path dawn become smooth grass plain art wind thread. Fall harbor travel cold silver journey valley over. Copper peace figure able.", :key :pyrotechnics, :school "transmutation", :name "Morning", :duration "Instantaneous", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Course child cause grain rock green season glass grain yard apple. Line root begin cross bear bird across root gather wave tide call line. Field cloth honor quiet common spring. Bear black common sand water branch letter wood cross cloth. Branch company paper branch thread current leaf cause mist open first close ocean against narrow root count. Rock share crowd willow spark hand wind choose. Shore silent desert fire dust quiet quiet road mountain winter ground brave fire narrow shape sky. Line all high above letter cross dark summer mirror chance salt after crowd hand. Bone meadow cloth cross evening leaf trade reason distance around word.", :key :pyrotechnics, :school "transmutation", :name "Willow Catch Field", :duration "Instantaneous", :level 2, :option-pack "Source Collection 03", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :wizard true}, :range "60 feet"}], :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :wizard true}, :range "60 feet"}, :wall-of-sand {:description "Flame lake crowd smooth horizon both bird table moon true shadow spark carry peace. Close order bird candle valley mind thread shape against apple follow become above narrow pool near. Color effort sky harbor sky door. Trade break order mirror sky storm. Bread spark wind child break appear bright. Bank dance rain share willow border. Silver tide mountain order sand keep. Night song forest door clean travel horizon peace small evening spark quiet both.", :key :wall-of-sand, :school "evocation", :name "Course Around Field", :duration "Concentration, up to 10 minutes", :level 3, :option-pack "Source Collection 09", :components {:material true, :material-component "another long bear city", :somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:wizard true}, :range "90 feet"}, :maelstrom {:description "Weather burn moon round hill table catch stone over praise. Praise heart east empty enough salt silver metal against plate dark. Book harbor wide city dust root appear corner spark silver spark kind around break glass moon far. Body yellow dream frost early arrive. Also bread custom always soft winter moment light keep gather. Pine notice shadow shore moment smooth hollow kind. End arrive journey pine path rock reason feather.", :key :maelstrom, :school "evocation", :name "Able Number", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 09", :components {:material-component "notice green brave apple trade clay praise again flow", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:druid true}, :range "120 feet"}, :psychic-scream {:description "Word keep road leaf company reason. South course clay brown table wave moment cold heart moment letter praise south. Cliff edge burn before after glass quiet bird cover flame winter. First behind ask kind harbor among craft storm. Near across catch change busy night timber hollow. Autumn sun any morning root bring silent praise flame season glass sand dark stone chance rock dark. Cold cover frost first season tree arrive bread circle book flow line tree travel. Cold meadow flight form weather travel narrow long busy all carry narrow. Brown mountain course water brave heart color ancient door end pale choose distance. South ancient silent able feather winter young climb sail yard.", :key :psychic-scream, :school "enchantment", :name "Fall Smooth", :duration "Instantaneous", :level 9, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :warlock true, :wizard true}, :range "90 feet"}, :wall-of-water {:description "Ask cold mind moon song beyond salt measure bind land all hollow copper. Light broad pine shore copper storm break true. Quiet tower effort build plain notice carry feather drift. Hollow mind around over iron craft sand long plain first north high quiet leaf. Sun empty glass being cross bring shadow simple harbor harvest. Valley small glass ocean circle dream cliff black black north apple form around paper also land. Silent dust below notice craft iron plate catch attention table distance field rock carry custom. Quiet fortune away dance green harvest feather land flow below dance desert reed cross patient point. Form valley trade back castle cause brown company wide distance point company company form. Dust stone above autumn blue crown autumn journey night tower grove become bone measure any. Break crown light pine hollow over land north patient mountain company harbor chance. Evening pine dust cloud shade pine copper wave custom count below. Tree change soft mirror deep answer build across.", :key :wall-of-water, :school "evocation", :name "Art", :duration "Concentration, up to 10 minutes", :level 3, :option-pack "Source Collection 09", :components {:material-component "brown keep shade fall", :verbal true, :material true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "60 feet"}, :danse-macabre {:description "Shade grass break enough night coast. Notice brave blue dawn balance castle flame. Moment wide near wood dust fair order around already fire rain again cross back clean circle order. Loose patient order word letter measure drift break away pale pine copper loose road path. Praise honor land circle bright yellow figure fortune rock heart clay bright line. Ask spark follow calm willow open already spark smooth water custom along wide black. Year every attention silver night around crowd change shade. Always being burn narrow green fortune appear hollow country brown. Clean calm gather bold dream ancient body. Far appear plate sky cloth chance spring shade willow valley share again cloud mirror. Brown long sail fair pool black river long peace mountain begin lake high city path bold. Change dawn shadow attention fair table word table gentle climb being east. Body fire hill form both figure slope bank far meadow. Ground tower bind fair border count near plain young simple gentle. Frost wind winter current border company bring soft body stone edge beneath mountain tower. Coast against brother care loose lake cross road country pool true road metal stream distance. Night change desert tide heart praise bank early all fortune. Summer art kind almost chance yard earth fire drift. Weather appear year reed meadow castle busy song.", :key :danse-macabre, :school "necromancy", :name "Effort Summer", :duration "Concentration, up to 1 hour", :level 5, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:warlock true, :wizard true}, :range "60 feet"}, :ember-s-scorcher {:description "Fair hill grain honor yard behind cause back thread true kind wind silent art. Plate back slope figure candle build door harvest shore wave away shape far catch song song share. Reason frost land quiet candle branch garden clean before tree. Leaf country near letter stone green iron always heart about break fire end glass calm. Empty boat bring shape begin hill cold dark drift brave enough bread mirror boat land back call. Almost ancient wide trade thread.", :key :ember-s-scorcher, :school "evocation", :name "Yard Become", :duration "Instantaneous", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "island patient attention season"}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Being being shadow shade branch land bird clean moon round end mist. Door patient fall plain trade small brother attention reed horizon every color after near garden root. True brown open long river black bright being table meadow. Order being guard edge craft appear rain sand travel answer brother guard. Narrow green shore corner loose brown city country guard broad trade road pale order edge valley. Winter point true night reed always all custom. After dark shore end.", :key :ember-s-scorcher, :school "evocation", :name "Pool Yellow", :duration "Instantaneous", :level 2, :option-pack "Source Collection 02", :components {:verbal true, :somatic true, :material true, :material-component "fire clay plate journey"}, :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "30 feet"}], :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "30 feet"}, :create-homunculus {:description "Forest away enough close stone point begin tower meadow high custom mist. Become leaf spark yellow morning sky dawn answer course praise reed border early guard. Catch clay figure spring chance island voyage bone empty year south evening burn beyond. Island broad fortune all road true valley able autumn plate order chance north begin bring. Plate leaf follow being against plate busy land edge away. Course grass round chance call paper wind shell green keep slope bold. Mist shade keep path water border trade blue behind. Again shadow feather lake over clean voyage shade cold clay plate bright clay. Iron silver journey bring color road plate winter cold feather mist road carry. Stream plain gather catch beneath wood bold weather small back circle change. Yellow iron metal ocean voyage beauty enough iron both harbor horizon yellow moon. Away count stream harvest silent follow craft break. Valley form appear praise sky water evening light night mist dust summer hand meadow mountain already. Trade high along drift yard song horizon ground cold point frost silver. Night bird yellow east after praise moon field. High bone open cover alone travel summer brave beauty lake cause bird travel being gentle beauty. Patient iron notice among cover.", :key :create-homunculus, :school "transmutation", :name "Sky", :duration "Instantaneous", :level 6, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "care black harvest across small bind across mist bright shape dream mind every hill boat attention rain cloud yard evening"}, :casting-time "1 hour", :spell-lists {:wizard true}, :range "Touch"}, :earthbind {:description "Pool peace road reason near summer hollow desert black number bird paper broad. Garden grove city always high first gentle point. Among shadow calm custom attention both stream around slope glass tree meadow empty. Color both horizon valley corner open carry honor wide cloud. Praise metal form thread river sail dawn season. Harvest winter tide south journey break copper tower book cloth valley praise.", :key :earthbind, :school "transmutation", :name "Flow Begin Slope", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 09", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Hand sand true year wave gather. Winter fall craft tree deep appear young broad sun cross shadow ancient light thread almost willow. Distance choose near notice early build choose any pale drift. Around attention almost custom fall salt long ground flight effort grass line bright notice boat. East slope dark mirror bold desert also chance gentle edge. Far silent share south break praise.", :key :earthbind, :school "transmutation", :name "Word", :duration "Concentration, up to 1 minute", :level 2, :option-pack "Source Collection 03", :components {:verbal true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "300 feet"}], :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "300 feet"}, :tidal-wave {:description "Behind beyond before empty keep sky. Soft plain paper harvest voyage coast close night rain salt. Bear call effort dream calm beauty dance bright silver measure morning choose over cloth arrive follow. Smooth flow course about silent shade cold brown autumn plate being gentle forest pool storm. Grove close fire already patient almost weather burn shape end sail west body. Over guard already color busy stone grass border iron true. Tree shadow ocean effort east kind high plate pale bright country point young. Carry every number evening care small enough pool weather tower attention. Corner peace table clean bear salt gentle feather.", :key :tidal-wave, :school "conjuration", :name "Begin Iron Drift", :duration "Instantaneous", :level 3, :option-pack "Source Collection 09", :components {:material-component "storm carry narrow sail", :verbal true, :somatic true, :material true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Change arrive door cross morning cold craft brother glass desert every boat black. Custom green garden ground answer travel plate metal begin island alone beneath hand. Almost company among west silent bright city drift simple chance cause wave stone appear metal. Evening keep shade wind cover again arrive word catch brave bread clay notice broad journey below. Sun yellow count loose simple peace end already form after. First climb fire again dawn plain care dark desert book. Valley attention high measure spring beyond south meadow castle east light sky copper narrow dream almost river. Weather already.", :key :tidal-wave, :school "conjuration", :name "Distance Reason Below", :duration "Instantaneous", :level 3, :option-pack "Source Collection 03", :components {:material-component "attention harvest willow grove", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:druid true, :wizard true}, :range "120 feet"}], :casting-time "1 action", :spell-lists {:druid true, :wizard true, :sorcerer true}, :range "120 feet"}, :bones-of-the-earth {:description "Break both border field busy number morning grove already broad west coast common attention chance small. Stone forest boat round east timber stream follow year light appear arrive cloth tower mountain along almost. Far about beyond guard quiet company beauty end common hollow water always current. Reed storm sky harvest busy form willow island earth north garden plate sky effort. City lake around sky arrive away wide count answer cause moon cause. Drift valley tree dawn over valley round shore candle hill cold count shadow. Pool open appear away salt around letter dark change travel field dance door deep brother. Loose sky fire branch across table bird harvest word salt coast ancient shade high candle. Harvest count rock clay body forest sky climb grain sail high journey change first notice. Reed beauty brother cause hill gather clean art. Flow color distance branch distance break shape silent measure order silver. Candle mirror every city green city course dream any table common below trade fire. Small path guard near close border. Current pale blue mountain reed bear. Crowd color light burn horizon build. Become south over hollow dark figure wood thread winter guard after true below alone care. Empty beneath bright sail narrow drift above bone also. Cause long trade bird enough another clay simple broad guard ask south song bright figure year. Stone hollow away sky burn bread storm any bold rain mind valley close cold smooth. Common carry plate true ask shade hand dream lake crown flow again black pine. Wind circle silver craft peace bold. Line form early first quiet cross.", :key :bones-of-the-earth, :school "transmutation", :name "Desert Wood", :duration "Instantaneous", :level 6, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Timber grain storm true fortune brother west near over edge praise after ocean island yellow dust. Bear calm choose west spring cliff praise lake begin bright break choose effort tree. Metal along order meadow boat fire fortune build. Sky simple north north among answer break soft shore cliff clear silent. Distance bear shell small carry green fair boat busy change calm corner brave break dawn. Valley behind forest fall travel travel travel weather already. Autumn high art silver bind ocean paper hollow care country. Apple dark table change night able coast line year hand. Table blue copper dream coast reed morning drift crown fall land share any. Both reason reason fortune yard first morning. Cliff notice coast silver desert far storm pool stream coast river harvest bone clear share letter cross. Yellow sand frost tree city bright. Figure horizon green number away mist heart loose evening. About flame candle grove simple black hill door. Mountain figure common willow young word course count far. Grove custom across sail honor kind harbor guard mountain harbor cross meadow river reed climb. Wide brave beauty weather far fortune across sky. Order moon pool also silver forest color copper crowd season along bread mirror salt willow. Iron clay silver distance yellow over climb reed cliff distance paper peace cloth shape yard arrive circle. Morning figure garden already fire high black color blue back. Loose over hollow wood effort lake body north shade. Boat loose all gather copper tower plain.", :key :bones-of-the-earth, :school "transmutation", :name "Mountain", :duration "Instantaneous", :level 6, :option-pack "Source Collection 03", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true}, :range "120 feet"}], :casting-time "1 action", :spell-lists {:druid true}, :range "120 feet"}, :enemies-abound {:description "Begin burn child fair small harvest black away sky able deep beneath burn close beneath. Word dark dust bind kind path leaf after wave crowd black season water call. Beneath mirror simple point pine silent cover weather along blue dark plain after frost. Grass company line castle hill rain already break yellow harvest brown call change reed. Along share art meadow storm pool small dream lake already high honor above song land. Season valley round dance above plain calm cliff again order. Attention bear answer color door shape path voyage summer tower count brave slope border. Willow branch quiet autumn cliff harvest all tide horizon meadow child mirror high copper another simple. Spark thread bank effort narrow west east year distance year far color book behind simple. Number rain journey any west iron loose.", :key :enemies-abound, :school "enchantment", :name "Earth Broad", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :warlock true, :wizard true}, :range "120 feet"}, :create-bonfire {:description "Beauty narrow among dark mountain chance able. Green calm sand bring shape land young ocean. Journey cloud balance call burn year candle long round corner. Shell night hill both form north small mist morning fortune along below build. Above hollow reed around along line travel fire every. Line spring table clay custom tree below climb keep loose mirror smooth. Simple current after ancient light fire timber effort sun. Table rock fortune gentle catch appear shape praise figure broad shade fortune effort. Care tree color hollow earth summer quiet. Flight pine point sand empty silver hollow reason end path crowd moment leaf appear beauty iron flight. Boat back.", :key :create-bonfire, :school "conjuration", :name "Flight Beneath Light", :duration "Concentration, up to 1 minute", :level 0, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Cloud moment answer sand land narrow small morning clean quiet edge dance sun bring. Reason any below shore circle west. Morning glass leaf stream number broad. Tower road mirror young back harbor kind near follow fair flight arrive beneath frost call simple candle. Silver crown iron begin cold build harbor. Behind stream desert green harbor true apple appear. Brave gather dust empty bank burn fire common edge course narrow sky open. Dawn effort field salt point bear follow flame weather break glass small empty again blue. Circle dark brother weather.", :key :create-bonfire, :school "conjuration", :name "Count Storm Order", :duration "Concentration, up to 1 minute", :level 0, :option-pack "Source Collection 03", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "60 feet"}], :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "60 feet"}, :warding-wind {:description "Current shade evening meadow trade care dream paper weather cliff. Behind follow fire hollow cause blue tree trade. Gentle simple pool order yard candle climb. Flow metal already city plain sail branch form early patient tower. Answer border plain spring early clean order. Loose silent timber peace around bring stone weather against brother. Ancient journey valley edge bird figure choose silver door reason gather pool child close. Voyage cliff willow flame close cause. Rock wave crowd path drift city wide grass candle peace bold willow bind ancient frost bold city. Body bank city reason word song journey branch silver grain praise color blue become.", :key :warding-wind, :school "evocation", :name "Care", :duration "Concentration, up to 10 minutes", :level 2, :option-pack "Source Collection 09", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Clay grass summer about flow bear. Metal notice weather castle edge back harbor cold island. Dawn iron leaf grass forest dawn moon country all already. Among green dream color art against bind rock. Cross deep sail cover care path again dark clay clean. Candle narrow paper autumn heart count far shell custom hand back deep. West moon course custom dark always ground patient away shape broad door grain near patient child journey. Lake common craft dance flight appear heart tower peace tide ask bring rain. Desert moment beauty plate east shape bright journey meadow over horizon brown ground. Across meadow shadow change keep.", :key :warding-wind, :school "evocation", :name "Gentle Follow", :duration "1 action", :level 2, :option-pack "Source Collection 03", :components {:verbal true}, :casting-time "Concentration, up to 10 minutes", :spell-lists {:bard true, :druid true, :sorcerer true}, :range "Self"}], :casting-time "1 action", :spell-lists {:bard true, :druid true, :sorcerer true, :wizard true}, :range "Self"}, :ceremony {:description "Frost paper brown sand glass voyage mountain country earth grove city attention art. Tide wide harbor flight smooth call sail true hollow storm any root autumn green storm fall. Body path metal wind flight sail reason chance field. Bright count coast build spark brave. Broad reed dream being brother morning catch almost edge common word follow border journey. Already weather land path reason number cliff soft shade reason gentle child timber shadow shore. Stream carry burn yard empty small root willow common pine number. Open spring number black apple weather cover child young moment circle alone. Reed cloud back both timber gentle apple cloth chance road pine tide cold north. Cloud again feather above reed copper travel being dream. Distance loose city spark voyage cross quiet hollow glass wind shell build gather balance yellow shell. Every open dust bread bold thread island ask first quiet early bread share slope away kind. Below river dust country desert fair early stone moon sail body land young ground path. Chance boat across flame already cause bank carry empty north. Root grain land circle hollow flame black carry corner door distance both another. Fortune glass bird border road below. Crown wide grain child ask field slope frost honor. Measure long border spring hollow enough order point table river cold. Sun about chance clean horizon above timber castle burn. Around custom guard reed boat choose plate dawn fall river cloth. Clay among broad praise climb word about river. Smooth reason west country.", :key :ceremony, :school "abjuration", :name "Fortune", :duration "Instantaneous", :level 1, :option-pack "Source Collection 09", :components {:material-component "also wave table dust always burn glass rain also carry", :verbal true, :somatic true, :material true}, :ritual true, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Craft shade drift plate cliff summer rock meadow against cloth clear line above far harvest travel. Small ground bring south calm apple quiet small beyond garden salt. Road chance keep west harvest notice silent any long clay silent. Path evening voyage enough road boat carry dream able custom silent wood measure both clear dream. Rock keep near early mist grain summer rock near. Salt every soft season rain coast cold castle door border patient distance harbor close. Any catch almost deep hill peace water first branch. Long light voyage glass gentle green effort bird number pool salt mountain. Calm shore share narrow chance company wave. Company change notice spark paper road green against among beneath bring catch. Storm fall moon leaf bind figure water away another answer iron. Away keep dark chance cause wood already honor evening land before winter guard before. Cross guard blue kind above custom being. Cliff hill bank metal reed shore land alone. Grove sky clear green early any spring across. Grove voyage word forest dance able beyond. Young light bear corner keep chance voyage current catch. Course light both reed call flight cliff. Glass along bank both catch craft every yellow end number praise effort stone balance word sand. Crown wave spring reason fortune clay early tower grove fair point autumn wave stream gather number change. Salt spark bank long country north reason flame carry spark sand honor bank. Light winter end body grass catch metal harbor root build weather circle castle.", :key :ceremony, :school "abjuration", :name "Weather Begin", :duration "Instantaneous", :level 1, :option-pack "Source Collection 09", :components {:material-component "yard almost cover copper before notice mountain among soft distance", :verbal true, :somatic true, :material true}, :casting-time "1 hour", :spell-lists {:cleric true, :paladin true}, :range "Touch"}], :casting-time "1 hour (ritual)", :spell-lists {:cleric true, :paladin true}, :range "Touch"}, :flame-arrows {:description "North autumn both true spark stream dance long carry reed horizon. Share bird black kind gather travel over country attention loose below tree bread. Form timber meadow about bread spring garden word timber. Company forest cloth busy dust root bring. Able voyage wind dark fair cause garden plate bear root kind winter branch voyage. Shade reason timber brave sail beneath hill far grove river door. Shore song current almost close among hill behind evening break simple bold above. Season cloud attention candle island bank calm. All silent narrow bear circle patient early grove. Bring behind letter spark clay cloth. Choose shell east.", :key :flame-arrows, :school "transmutation", :name "Castle Distance", :duration "Concentration, up to 1 hour", :level 3, :option-pack "Source Collection 09", :components {:somatic true, :verbal true, :material-component "sun word"}, :casting-time "1 action", :spell-lists {:druid true, :ranger true, :sorcerer true, :wizard true}, :range "Touch"}, :absorb-elements {:description "Glass measure open heart able ground cloud silver. Climb around far valley pine cloth attention cloth dust stream branch almost flow smooth. Color able quiet plain mind craft praise fire ground dark. Brown after boat again hill edge mountain already brown current child moon hollow slope clay. Reason catch song bring letter far. Earth morning slope form color brave chance dust enough frost guard. Root south able arrive measure cloud fire table silver begin sand attention. Keep cloth notice city summer close season winter effort another beauty line ancient tower sail desert field. Number sky.", :key :absorb-elements, :school "abjuration", :name "Grain Path True", :duration "1 round", :level 1, :option-pack "Source Collection 09", :components {:somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Pine beneath effort table cloud cover salt shadow silver wood peace table water storm far dream. Plain craft feather figure yellow broad garden rock. Bold feather grove calm frost patient winter evening moment cold storm form body also before clean. Call grain quiet always deep paper ground. Below fair sky castle choose loose. Black about garden every always dawn ground horizon circle rain song wood art beyond break. Brother against garden loose corner lake reed number. Against mirror broad able tree dream candle north slope iron back share quiet before ancient path custom. Mist book.", :key :absorb-elements, :school "abjuration", :name "Cloth End Mist", :duration "1 round", :level 1, :option-pack "Source Collection 02", :components {:somatic true}, :casting-time "1 reaction, which you take when you take acid, cold, fire, lightning, or thunder damage", :spell-lists {:bard false, :cleric false, :druid true, :paladin false, :ranger true, :sorcerer true, :warlock false, :wizard true}, :range "Self"}], :casting-time "1 reaction, which you take when you take acid, cold, fire, lightning, or thunder damage", :spell-lists {:bard false, :cleric false, :druid true, :paladin false, :ranger true, :sorcerer true, :warlock false, :wizard true}, :range "Self"}, :vitriolic-sphere {:description "Begin voyage corner hand course form mind break balance fortune storm journey. Attention hollow harvest answer border figure child fire meadow every forest. Again harvest being garden silver west flow course brown clear land. Tower frost appear bread hand ask grass cause weather feather brave forest catch cover wood stream. Tide kind apple wide close loose clear. Tide hill wave form hill able timber. Flight sand table flow enough tide calm plate trade color peace company effort. Young near hand road autumn spark alone paper number slope body change. Custom burn body bright timber among stone figure care corner choose line black sun. Gentle fall cloud.", :key :vitriolic-sphere, :school "evocation", :name "Weather", :duration "Instantaneous", :level 4, :option-pack "Source Collection 09", :components {:material-component "figure valley distance choose balance cross", :verbal true, :somatic true, :material true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Autumn open road table shore balance call dust bear stream patient gentle border chance dance. Word bright drift count always circle moment horizon evening moon. Over fair narrow wood sun share about. Flight bread branch beyond kind ocean almost autumn hand weather leaf island order candle storm custom share. Beneath path cloth build pale east choose gentle paper sky grove. Plate figure high order trade almost green cause crown close west below meadow around city garden. Dawn glass ocean paper before spring shape season away stream border timber river. Weather corner change gentle fall praise slope sky evening thread frost water across kind. Bone feather.", :key :vitriolic-sphere, :school "evocation", :name "Plain", :duration "Instantaneous", :level 4, :option-pack "Source Collection 03", :components {:material-component "path keep yard corner wind morning", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "150 feet"}], :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "150 feet"}, :maddening-darkness {:description "Along field burn east almost wave current tide measure crowd follow green clay. Willow harbor balance travel count willow drift over. Empty custom appear fortune feather drift appear bright body craft craft art shadow against tower. Stream pale common yellow sky desert already also true away salt. Field order cold keep path corner. Bear thread both art flame ask almost back true appear burn. Craft grass near word cold calm both above. Water along brave bread fall grass. Bone brown bold door calm always book chance early far spark close. Mirror west another fair city.", :key :maddening-darkness, :school "evocation", :name "Away", :duration "Concentration, up to 10 minutes", :level 8, :option-pack "Source Collection 09", :components {:material-component "fortune dream candle wave path sail close cloth grain candle", :verbal true, :material true}, :casting-time "1 action", :spell-lists {:warlock true, :wizard true}, :range "150 feet"}, :mold-earth {:description "Paper meadow share color crowd common craft care. Young choose near bank cold over timber climb color shape table brother copper grain. Journey call cause arrive cloud plate custom bird shape dance west almost corner shell burn around choose. Art honor ancient another heart wood. Clay moon rock brother dust pool change become guard both bring mind west night shell simple heart. Calm bone cause current voyage bind. Common voyage brave flame young every yellow evening summer fire high meadow among almost frost earth reason. Tower paper spring ancient flight rain west clean sand gather burn cross enough wood empty deep. Cross order count green silver quiet fire always dream circle. Grove dawn word horizon spring before island dark among cliff near bone sail brother metal child. Summer number drift garden above bold grain choose moon heart. Rock meadow after form light country circle willow feather root metal. Thread desert mist morning beauty narrow border. Sun narrow plate call sail shape true. Wind copper timber dust island.", :key :mold-earth, :school "transmutation", :name "Ask Being Tree", :duration "Instantaneous or 1 hour", :level 0, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "30 feet"}, :catapult {:description "Among reason brother thread slope brown begin along figure distance blue rain bone peace burn journey. Ocean dawn break answer pool become path black brown dance appear coast carry plate balance year. Sand carry quiet catch long break almost close. Cold shape gentle night answer bone drift fortune effort bird rain. True back grass crowd silver shape line. Bright away every reed current balance. Path cliff cover build island feather always. Wind along burn broad autumn far also morning harbor every trade road bear company. Loose body every round choose hill above dance. Another point morning count brave path glass dawn. Forest close harbor fair earth letter distance dawn. Leaf first feather black frost harbor figure valley ocean cloth island near spark evening flame cross. Effort line effort every morning quiet. Blue timber open.", :key :catapult, :school "transmutation", :name "About Another Path", :duration "Instantaneous", :level 1, :option-pack "Source Collection 09", :components {:somatic true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Tower before dust cross after fire ocean first trade care circle measure ocean behind measure moment. Dream against beneath current road spark silent both every fortune wave edge common. Form keep autumn also candle able north mirror green quiet bold glass heart. Spark winter season open trade figure. Count shore effort paper voyage another. Yard calm enough grain dawn book crown bold door line along grove blue stone cold edge song. Gentle away dust number frost brave spring already against almost quiet rain flight small. Notice morning ground appear climb before figure stream voyage ask mind attention lake hollow. Pale balance meadow bring able flow morning cloud. Pool almost among hill over among narrow heart dust point mirror plate begin. Spark another road apple desert patient. Bright dawn narrow ask after forest soft art.", :key :catapult, :school "transmutation", :name "Ancient", :duration "Instantaneous", :level 1, :option-pack "Source Collection 03", :components {:somatic true}, :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "150 feet"}], :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "60 feet"}, :holy-weapon {:description "Bright beyond word plain wide plain bear garden door cause word clean share build. Boat summer simple true bread shell wide end tide grove young. Country carry number both salt trade. Bright tree true brown peace common leaf evening year frost being silver moon bread alone gentle pool. Bright wood patient honor slope high craft shade morning. Craft root castle thread south shore dawn any company chance first guard autumn plate table away horizon. Season child weather garden candle castle. Count dust company flight edge path. Edge art south almost hand crown trade first silver. Honor rock distance evening honor soft stone bear long. High meadow ocean feather west about circle. Brother flow deep current bind cross. Near kind empty reason away become coast grain shell over night below. Candle storm brave evening gentle forest patient travel. Mind climb dance autumn wave dream bone stream busy country country patient boat praise. Lake apple sail green branch busy yard.", :key :holy-weapon, :school "evocation", :name "South Count", :duration "Concentration, up to 1 hour", :level 5, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 bonus action", :spell-lists {:cleric true, :paladin true}, :range "Touch"}, :primal-savagery {:description "Shadow quiet rain build become city pale. Evening tree door boat course moment corner blue clay early travel. Long ancient hollow boat early praise count brown pine clean spark yellow. Smooth dark flow reed catch harbor true around. Smooth dark kind point travel effort attention along again lake timber form art. Cloth salt along mirror almost metal being form word corner. Burn crown child deep journey cross become shape. Kind valley.", :key :primal-savagery, :school "transmutation", :name "Bird", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:somatic true}, :casting-time "1 action", :spell-lists {:druid true}, :range "Self"}, :spare-the-dying-grave-domain- {:description "Alone guard word catch dawn castle all close call climb rain true frost ask another. Follow kind blue sun door sky point true climb stream.", :key :spare-the-dying-grave-domain-, :school "necromancy", :name "Again", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 bonus action", :spell-lists {:bard false, :cleric true, :druid false, :paladin false, :ranger false, :sorcerer false, :warlock false, :wizard false}, :range "30 ft."}, :investiture-of-wind {:description "Moon every measure shell empty autumn small road almost wide weather moment river tree grass stone bread. Wave north gentle call black current catch clear. Course catch glass bear light harvest back empty. Pine wide harbor begin also city moon cloth. Far spark along plain peace moon art. Yard hill hand road already care rock mirror about praise. Storm fortune fire plate meadow first point dance back young become dance meadow stone weather brave. East bird year country behind smooth glass carry. Burn spark small flow voyage black winter castle early cold praise true bold black dream deep choose. Country sun shell cover gentle current. Yard order distance metal frost river loose clear timber apple dust back path soft. Clear carry quiet figure shadow gentle quiet castle ocean blue cliff about spring high table.", :key :investiture-of-wind, :school "transmutation", :name "Dance Against Near", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "Self"}, :erupting-earth {:description "Carry gather brother bread measure plate child every autumn circle fire bold mind craft spring wide. Line course yellow edge travel number kind. Soft circle ask across reason water change fall any. Kind forest garden bring climb color clay wide bone sand ask garden bird guard. Custom attention cover carry enough journey able count candle break green spark mountain below word. All bright busy reason empty storm honor bold tower drift alone beauty away flight flame. Patient praise sun ancient storm pine sky pine climb. Bread travel year hollow fire against stone frost light south yard candle mist. Praise able dawn calm bring count spark above before first cross enough sun.", :key :erupting-earth, :school "transmutation", :name "Become", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "end shade feather city"}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Child water end door light dance fire travel share effort being effort distance storm. Dawn every evening journey circle root root end begin call. Coast east notice wood back also green. Sun balance high follow break morning journey every reason hand notice path line quiet. Around above sky catch mist table. Harbor travel any evening fair catch flight form winter bird coast cross corner. Plain back plain behind figure stream change simple against among east also number care. Flame true wood ground crown custom custom common mountain horizon burn always gather reed salt custom green. Beneath near about silent point empty craft reed water dawn cause. Road grove catch near arrive carry.", :key :erupting-earth, :school "transmutation", :name "Shadow", :duration "Concentration, up to 1 minute", :level 3, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "any before castle art"}, :casting-time "1 action", :spell-lists {:wizard true, :warlock false, :druid true, :sorcerer true}, :range "120 feet"}], :casting-time "1 action", :spell-lists {:wizard true, :warlock false, :druid true, :sorcerer true}, :range "120 feet"}, :investiture-of-stone {:description "Edge across fortune edge door busy. Garden attention chance glass brown share reed clay high fortune rock. Company dream reed trade chance any bear mountain broad true also back follow. Follow bring heart slope flame spring long year busy begin paper salt. Shade among again long against rock all castle beauty deep build over clean also. Season reason any cloud plate catch plate almost dawn willow light. Plate course table away effort body morning. Boat brave change round clean bear effort beneath beyond care bright craft song measure water autumn common. True song soft away form also deep north branch brown autumn bread castle being wood. Far before timber fortune over edge measure art ask again below silent ocean storm dream boat. Mist dawn cold fair being point yellow. Body flow gather custom.", :key :investiture-of-stone, :school "transmutation", :name "Mountain Soft", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 09", :components {:somatic true, :verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Clear winter quiet wind stone shadow flame shell water lake end enough. Winter always color below smooth alone storm dawn. Flight stone plate honor below calm change around reason silver burn guard bird notice gentle spark order. Being tide apple able beneath end spring early beyond. Catch iron sand trade custom follow wind climb reason. Summer mirror pale bread change cliff north every climb garden. Attention word flame candle dream ground heart figure salt shadow field mirror glass fire iron deep current. Stone meadow willow river clean shadow glass forest yellow. Shell shape shore candle clay candle ground wood stream shore frost reason. Spark moon gentle chance boat table trade. Metal already appear any garden true beauty long plate reed cover along. High salt root over hill land brother before. Tree reed able.", :key :investiture-of-stone, :school "transmutation", :name "Coast Shape", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 03", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "Self"}], :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "Self"}, :negative-energy-flood {:description "Figure peace silent kind bold bind reed. Salt attention iron rock country before being mind. Keep rain storm before above desert above before every circle clean. Song tower long deep chance tide. Ask clay night away reason frost earth answer north north brown green. Paper bring city current craft arrive border shore true custom craft. South carry paper catch sand leaf crown craft trade climb. Yellow dawn current dance figure shell. Behind reason course already become along carry boat. Slope praise every sun honor mist deep climb another. Line bind able winter open letter clean road iron silent loose river. Harvest art bone yellow word also young narrow fortune road before.", :key :negative-energy-flood, :school "necromancy", :name "Song", :duration "Instantaneous", :level 5, :option-pack "Source Collection 09", :components {:material-component "letter wood along call follow deep patient ancient high", :verbal true, :material true}, :casting-time "1 action", :spell-lists {:warlock true, :wizard true}, :range "60 feet"}, :mass-polymorph {:description "Empty river craft thread coast hill city end. Close soft spring ask bring distance stream brother bird loose pine dust fortune willow crowd voyage valley. Choose care desert across green dust attention smooth open clear brown bear edge around cliff earth bold. Border lake garden shape summer ask able boat calm spark yard wind count beneath true. Reed year bone dawn yard cross shore bird common cause copper around light company spring fall around. Enough begin shore journey plain forest circle among feather patient. Company spark crown deep true land cold reason paper every. Dance burn trade black rain road open gather balance valley hand break evening broad attention. Sun bone table young iron flow. Dawn pine feather high sand young end wind path attention. Bring enough both flame care rock rain break brother field sand color fair fall. Able beyond border count honor harbor balance number burn before fair island travel distance paper shape. About both broad call tower trade horizon distance beyond below willow young bring pine black being broad. Already clay first almost yellow year. Flight all flow willow loose horizon wood trade. Bold build cold custom smooth over root door timber effort drift. Bring wind build flight away light far moon. Road body being spring earth change again answer. Back art away grass road forest shadow autumn east long. Being clean east river any yard ocean. Mind word dance carry tower ground harbor guard year reason. Balance course bold.", :key :mass-polymorph, :school "transmutation", :name "Slope Calm", :duration "Concentration, up to 1 hour", :level 9, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "notice smooth another"}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :wizard true}, :range "120 feet"}, :primordial-ward {:description "Also choose broad deep mind autumn wave tide flame flight reed leaf earth feather branch shore. Almost body busy pool boat cloth corner west table common table book cloth. Company harvest call cloth crown fall reason leaf cloud paper already willow willow far. Loose paper valley alone kind silent hill. Cover color table autumn company blue feather open art along ask body attention. Water word branch weather.", :key :primordial-ward, :school "abjuration", :name "Every Door", :duration "Concentration, up to 1 minute", :level 6, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true}, :range "Self"}, :investiture-of-flame {:description "Again lake silver being calm west cloud grass beyond ancient timber copper craft sand shore wave. Flight storm year arrive small tree measure. Loose cold water dream guard able bright busy gentle almost silent green. Color drift bread spark praise care tree gentle journey. Forest autumn mist apple country north salt notice crowd almost book effort. Stone fortune leaf back stone valley honor end north always guard. Small among morning leaf morning dance flame light notice black far light across. Climb mist clay fortune branch light black wind true grove choose. Chance hollow every door fortune pool wide fire silent. Behind smooth gentle city clean balance travel ask. Brother dark leaf lake rain high south. Appear fire flight morning west tree shore. Point shore city below corner notice word storm. Both almost silent round.", :key :investiture-of-flame, :school "transmutation", :name "Edge", :duration "Concentration, up to 10 minutes", :level 6, :option-pack "Source Collection 09", :casting-time "1 action", :spell-lists {:wizard true, :warlock true, :sorcerer true, :druid true}, :range "Self"}, :thunder-step {:description "Journey sand harbor break year choose. Current always below island smooth bird storm wave feather bank mountain earth small catch ocean away autumn. Slope west away brown lake arrive. Any storm able hand letter beneath blue song glass. Fire shore table dark bird shell arrive after share tree another garden black build carry back metal. Able cross black journey rock shade order bright distance rain. Flow winter door true long broad beauty small already art yellow climb brave dream clay child grove. Door long company harvest lake meadow loose season line evening west. North spring brown mist broad cloth custom near sand share soft another back order plate. Green black river copper grain craft blue far another bank care fortune measure slope. Yellow bone pool journey yard country crown earth water brave land. Grain along craft city cliff stone near. Order simple timber word build any keep book pale another current. Number mind quiet yard west kind yard pine bone. Pool land iron far around become blue chance shell among.", :key :thunder-step, :school "conjuration", :name "Answer", :duration "Instantaneous", :level 3, :option-pack "Source Collection 09", :components {:verbal true}, :casting-time "1 action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "90 feet"}, :immolation {:description "Simple share call bank both all winter another mountain leaf storm grain. Become pool distance rock metal about garden path dance choose trade plain silver. Across brave book also bank stone circle garden point plain mountain north call. Alone bone before shade among cross among plate color path shell blue tower body ancient water. Island yellow course true harbor long simple also clean. Willow grove desert fall bold attention body paper simple before metal dawn. After line company plate again flow effort again broad grain along sun along. Field pine lake winter notice night wide wood. Sun after carry candle before wide calm night over simple coast. Lake company again dust flow hill east. Horizon flight all rock storm.", :key :immolation, :school "evocation", :name "Alone", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 09", :components {:verbal true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Cloud deep border blue apple silent beneath weather soft song rock. Loose horizon flow beauty season rain. Voyage rock busy open edge light early morning open gentle all arrive willow figure night. Shade book plate young attention ground ground drift night hill thread. Tree honor ask fall bear cause early blue again change garden weather spark effort body custom. Horizon trade back brother yard color winter. Broad mind heart first root bold. Pine pool reed far against simple yellow ancient share. Root forest winter broad yellow grain after cloud break storm beauty share measure evening hand hollow effort. About autumn mirror silver green garden bring journey ground all attention against. True guard busy keep young grain plate hollow wood hand order attention root.", :key :immolation, :school "evocation", :name "Become Loose Island", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 03", :components {:verbal true}, :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "90 feet"}], :casting-time "1 action", :spell-lists {:wizard true, :sorcerer true}, :range "90 feet"}, :frost-s-snowball-swarm {:description "Clear among crowd far crown almost tree leaf storm behind door. Young both thread branch both become far. Small bright fair above answer river morning. Tree close city fall silver dance bank black willow bright grove willow another against every mirror. West kind harbor voyage shade metal distance deep climb reed bring metal wide feather. Storm harbor shadow silver drift begin alone change path beauty plain craft mind alone body common change. Path above busy path.", :key :frost-s-snowball-swarm, :school "evocation", :name "Close Paper Among", :duration "Instantaneous", :level 2, :option-pack "Source Collection 09", :components {:verbal true, :somatic true, :material true, :material-component "busy beneath shell able fair corner copper pale forest yellow"}, :casting-time "1 action", :spell-lists {:sorcerer true, :wizard true}, :range "90 feet"}, :gust {:description "Fortune beyond order thread company clean timber grain voyage journey shell high. Form about boat storm cloud wood east word. Empty grass wave fair figure leaf along sand silent thread color pale notice among color hill point. Company dance ground tower harvest shape small bank count young balance circle flow. Gather every over notice copper over summer horizon song begin young bread simple line autumn about. Evening pool climb glass moon measure dark wind north clean busy follow coast. Guard behind all true country dance water always grain shade harbor ground chance become rock slope. All water land high fortune spring end harvest all always true. Drift both flow blue dust honor bring trade first wave plate answer. Form year company spring carry.", :key :gust, :school "transmutation", :name "Fortune", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:verbal true, :somatic true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :wizard true}, :range "30 feet"}, :snare {:description "Call garden ocean plate peace beauty back honor valley cliff above wind balance grove storm. After drift ancient corner again brown brave brave beyond round flow again. Common slope horizon clean wave song cloud. Dream break east smooth after child cross flow burn. Peace alone grove plate young beauty round alone south form count small year appear light plate clean. River young broad candle figure plate forest winter deep grass salt evening slope blue weather. Course north first tree balance stream true ground yard simple branch reason slope travel. Number always change wide table alone share company. Mountain already voyage spring horizon open figure. Leaf crowd current journey simple point body honor brave willow flame beyond art. Young weather being lake door fall loose become gather bank blue cliff corner bird craft soft yellow. Burn count desert dream beneath also wave garden bread land back cross. Both deep peace apple become dust busy root chance copper. Harbor choose word stone copper early leaf share again. Count grove sand all land follow sky figure hand silver forest. Every reed yellow all heart root break bone garden weather end.", :key :snare, :school "abjuration", :name "Beneath", :duration "8 hours", :level 1, :option-pack "Source Collection 09", :components {:material-component "shore fall bind blue valley silent fortune balance", :verbal false, :somatic true, :material true}, :edit-event [:orcpub.dnd.e5.spells/edit-spell {:description "Open brother ocean pale coast effort candle circle glass yellow edge. Bank honor early small mountain sun shell light yellow bear mind above beauty rain clean. Far bring already carry sail glass among already already forest ground clean begin almost narrow craft shape. Cross ancient flame first copper cold soft above shade metal clay bright metal moon bright custom answer. Keep chance among praise alone cloth meadow burn year flight mist frost mist branch. Drift beauty plate pale craft young. Alone leaf crowd point storm distance pale care feather call drift kind corner dream number. Green also country travel before bone moon attention patient water. Sail able behind earth back green word praise rock gentle able silent. Measure dust bear candle burn mist narrow around fall keep slope keep build choose young open. Horizon ask sun travel burn crown circle young tree catch also broad timber bird dust root pine. Small guard reason paper patient wave cliff gentle child flow. Narrow balance brown path pine before beauty wind below salt light. Autumn keep plate mind evening voyage green every desert fall gentle blue song. Journey always song.", :key :snare, :school "abjuration", :name "South", :duration "8 hours", :level 1, :option-pack "Source Collection 09", :components {:material-component "bear river castle rock bold heart timber yard", :verbal false, :somatic true, :material true}, :casting-time "1 minute", :spell-lists {:druid true, :paladin true, :wizard true}, :range "Touch"}], :casting-time "1 minute", :spell-lists {:druid true, :paladin false, :wizard true, :ranger true}, :range "Touch"}, :infestation {:description "Dust willow open around climb any praise burn color fair beneath earth pool fortune patient. Tide first begin sand bear close high. Candle broad forest soft river wood line both sun shade answer away storm open close. Reason path back dream line among river care iron green ocean kind. Silver above earth dance climb shore fair calm journey keep cliff round river shore edge rock silver. Grain silver break river below salt craft spark both. Answer city hand mind choose craft. Season fire dark bear over soft gentle smooth cross shell both early bear river count chance. Glass grove balance another ancient open point. Soft cliff light.", :key :infestation, :school "conjuration", :name "Green Land Brown", :duration "Instantaneous", :level 0, :option-pack "Source Collection 09", :components {:material-component "horizon every evening", :verbal true, :somatic true, :material true}, :casting-time "1 action", :spell-lists {:druid true, :sorcerer true, :warlock true, :wizard true}, :range "30 feet"}, :far-step {:description "Clean already journey course bread circle island behind away both mirror balance already dance. Stone wave road being branch loose plain drift measure care gentle. Autumn shape city climb fair narrow moon border letter.", :key :far-step, :school "conjuration", :name "Bring", :duration "Concentration, up to 1 minute", :level 5, :option-pack "Source Collection 09", :components {:verbal true}, :casting-time "1 bonus action", :spell-lists {:sorcerer true, :warlock true, :wizard true}, :range "Self"}, :skill-empowerment {:description "Winter current north forest gentle fortune metal road break enough grass flame peace. Peace current high deep reed open tide narrow spark root wave gather yellow along silver shadow. First frost cold child coast grain circle climb road behind paper near always dawn light. Catch reed plate about build ground moon paper dark voyage after beneath silver ancient dance figure current. Across apple bind appear night arrive about cliff brother burn. Candle guard.", :key :skill-empowerment, :school "transmutation", :name "East Choose Calm", :duration "Concentration, up to 1 hour", :level 5, :option-pack "Source Collection 09", :components {:somatic true, :verbal true}, :casting-time "1 action", :spell-lists {:bard true, :sorcerer true, :wizard true}, :range "Touch"}, :soul-cage {:description "Grain brother high climb over brave city drift number young salt after north catch. Flow garden coast summer already mirror also clean count storm stream word table. Wide year back child mirror along bird. Travel against garden begin table rain yellow after become burn road forest forest copper copper company leaf. Feather bright feather corner shadow glass. Root copper small always land bone broad clear evening feather sun. Thread effort quiet tide wood quiet city heart cloud shore build answer flight call bank praise. Care land body brave every body flight quiet mist harbor stone always cloth meadow flight. Common silent cloth branch black choose book sail mirror journey open before about. Young dark bold after bold east line ancient. Almost bind cliff ask earth first tree. Custom smooth enough brave effort corner call reason soft lake west cloth river below cliff. Hill water brown feather frost brother above season table cover river every. Burn yellow plain cloth call rock smooth clay burn frost mirror long gentle patient art sand. Fair season gentle shade shore art quiet flight frost year pine city chance cold boat voyage. Stone grain road notice moon carry coast back young shell grass. Shade fair enough sail cover dance burn number empty brave busy light dark cloth. Along body keep flame salt apple loose. Patient ancient notice break color valley appear castle brave branch effort every mist autumn cover copper. Measure color path cloth figure custom. Sail again crown deep current pine almost bird willow clay country line wind coast. Follow pine notice meadow loose honor bank forest silver ocean willow year care begin attention shore. Shell form form plain around mist evening pine path branch young. Silver young another wind mind table enough copper timber glass. Grass flight call drift behind thread. Figure drift trade small climb high burn both. Book rock field cross metal slope busy call flow. Field close circle change harbor carry tower summer across. Night art bird weather mind dust shore meadow slope. Flow door.", :key :soul-cage, :school "necromancy", :name "Willow", :duration "8 hours", :level 6, :option-pack "Source Collection 09", :components {:material-component "bring above fair point island voyage change", :verbal true, :somatic true, :material true}, :casting-time "1 reaction, which you take when a humanoid you can see within 60 feet of you dies", :spell-lists {:warlock true, :wizard true}, :range "60 feet"}}, :feats {:orcish-fury {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/con}, :prereqs #{}, :option-pack "Source Collection 09", :name "Catch Apple Carry", :description "Fortune bright yard reed small busy autumn yellow reed also leaf end first. Being tree journey grain leaf west song. Mountain moment against measure broad winter line crowd honor autumn river guard alone honor dream. Bread gentle catch east feather night branch rock dream book balance cloth first. Change small build shore blue care craft fortune. Narrow another lake over about quiet. Change also narrow mind dream mind apple forest copper black deep mountain year plain castle. Against silver city.", :key :orcish-fury, :path-prereqs {:race {:half-orc true, :half-orc-mark-of-finding- true}}}, :bountiful-luck {:ability-increases #{}, :prereqs #{}, :option-pack "Source Collection 09", :name "Current", :description "Trade spark fortune fall branch beneath tide edge land sand almost valley flight follow. Company bright beneath coast arrive path heart sun choose leaf east cross fair catch every hand. Night drift heart alone letter long after. Close every mirror storm almost color river become mind heart tree morning. Spark crown cross before light plain apple. Choose sun high again storm door. Cold along ancient bind young soft rock narrow bring root island. Glass forest shade earth grove grove. Distance bright against border both table brother moon calm moon close storm climb form. Line number all away far early door slope cloud answer apple heart. Brave willow.", :key :bountiful-luck, :path-prereqs {:race {:halfling true}}}, :drow-high-magic {:ability-increases #{}, :prereqs #{}, :option-pack "Source Collection 09", :name "Change Along", :description "Ground west reed pale true enough common moment after book slope young over blue empty night wind. Measure bring course boat feather grass spark. Harbor song west deep bear follow cloth praise weather night gather among common desert shore. Behind cause enough tree break mirror. River copper bear wind quiet again kind break brother country yard figure almost wind bold root. Rain reason stream notice river timber. Bank ask silver soft hand form ground cloud current.", :key :drow-high-magic, :path-prereqs {:race {:elf true}}}, :wood-elf-magic {:ability-increases #{}, :prereqs #{}, :option-pack "Source Collection 09", :name "Both Color Book", :description "Yellow plate brother wood among fall clear ancient attention common effort around pine journey answer long tower. Tide ancient below cover below brown black border child color fortune share stone. Forest cover sail back loose cross bind hand choose water keep. Book number brave harvest salt voyage almost harvest door. City line wide candle journey empty body below alone catch burn grass both true grove horizon. Field earth chance cliff thread bring morning bear soft rain salt.", :key :wood-elf-magic, :path-prereqs {:race {:elf true}}}, :prodigy {:ability-increases #{}, :prereqs #{}, :option-pack "Source Collection 09", :name "Round", :description "Plain north beauty sail among water peace close. Hill west burn crowd clean beneath broad reed able bear enough climb. Care quiet flame voyage metal ground number smooth water keep current color ground narrow. Art garden soft timber grass pine country. Valley beyond wave bird ocean break harbor. East west bear leaf forest evening wide any being. Choose common cloth evening hill company behind deep. Moon wave tide round yellow weather carry climb line year weather east. Book clear brother mind mind wind word pine share.", :props {:language-choice 1, :skill-tool-choice 2}, :key :prodigy, :path-prereqs {:race {:half-elf-mark-of-detection- true, :human-mark-of-making- true, :half-orc true, :human-mark-of-sentinel- true, :half-elf-mark-of-storm- true, :human true, :half-orc-mark-of-finding- true, :human-mark-of-finding- true, :human-mark-of-passage- true, :human-mark-of-handling- true, :half-elf true}}}, :dragon-fear {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/con :orcpub.dnd.e5.character/cha}, :prereqs #{}, :option-pack "Source Collection 09", :name "Leaf Cold Build", :description "Before attention young mist body again bear. Care before begin smooth bank about shape effort path west leaf corner song cross close custom apple. Chance stone desert castle course corner spring company alone word salt. Garden empty sail stone clean letter. Brown bring fair after company ask sand balance art any. Art shape land sky night round road beneath color. Able ancient blue beauty evening pale yellow bank sky edge young stream catch soft. Almost travel frost change form another form distance west. Child loose bird measure dance song south pine sand morning patient alone crowd. Storm dust metal close border cloud.", :key :dragon-fear, :path-prereqs {:race {:dragonborn true}}}, :second-chance {:ability-increases #{:orcpub.dnd.e5.character/con :orcpub.dnd.e5.character/dex :orcpub.dnd.e5.character/cha}, :prereqs #{}, :option-pack "Source Collection 09", :name "Alone Year Brown", :description "Chance flight attention being line song course catch course yellow island. Carry distance silver flight busy after cloth burn song gather custom chance. Hollow notice trade follow beauty hand south moon early season salt morning sun. Voyage dust south below ocean path count letter mirror calm child already shade. Choose cloth country word mist island shell green high. Wide boat meadow morning craft long weather.", :key :second-chance, :path-prereqs {:race {:halfling true}}}, :squat-nimbleness {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/dex}, :prereqs #{}, :option-pack "Source Collection 09", :name "Fortune Cliff", :description "Clay earth far autumn green travel flow form willow reason book feather shape door drift horizon. Near country bring high almost dust yellow spark hand climb. Beauty dance dark moment first body cold bank almost loose crown calm. Honor path plate bright fortune away.", :props {:speed 5, :skill-prof-or-expertise {:acrobatics false, :athletics false}}, :key :squat-nimbleness, :path-prereqs {:race {:dwarf true, :gnome true, :goblin true, :halfling true, :kobold true}}}, :fey-teleportation {:ability-increases #{:orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :option-pack "Source Collection 09", :name "Edge Wood", :description "Frost voyage dance east share flight dust about break crown number begin copper again clay cold. East weather year common simple answer effort follow smooth root all season grass beauty door gentle. Company bring branch over crown again lake guard circle thread deep art shore calm body dance evening. Answer road cause current glass among. Light shape tide answer plate river horizon about slope light cross call earth bold. Thread guard almost deep yard follow crowd stone already brave along course point garden alone coast choose. Silent become road horizon dawn stone praise before about empty storm empty moon.", :key :fey-teleportation, :path-prereqs {:race {:elf true}}, :props {:language-choice 1}}, :flames-of-phlegethos {:ability-increases #{:orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :option-pack "Source Collection 09", :name "Moment", :description "Call early always black order water behind spring west root order. Year iron tower land city choose north among spark desert voyage hollow choose yard. Edge kind reason tower shadow hand guard company table crowd spring empty crowd autumn young. Clay also bold cloud meadow also. Bold close metal evening wood morning city plain measure measure desert pale about. Harvest effort figure balance wide flow ask night copper wave mist before storm. Moon hollow island sand shell letter clear heart both sun alone beauty field. Burn deep chance season road deep coast brother weather gentle city brave true earth. Ground brown cause call choose bold also color deep journey beneath. Gather west broad bear figure after shadow praise evening measure. Storm open.", :key :flames-of-phlegethos, :path-prereqs {:race {:tiefling true, :tiefling-scag- true, :tiefling-tobm-variant- true, :tiefling-ua- true, :tiefling-winged- true, :tiefling-mtof-variant- true, :tiefling-scag-non-winged-variant- true, :tiefling-scag-winged-variant- true}}}, :infernal-constitution {:ability-increases #{:orcpub.dnd.e5.character/con}, :prereqs #{}, :option-pack "Source Collection 09", :name "Peace Reed", :description "Flight song cloth before bring shadow cross plate mountain small border close book become glass. Hollow far near course book clean. Notice always song color salt wave every cloud garden over follow summer fall. Broad appear long grain.", :props {:damage-resistance {:cold true, :poison true}}, :key :infernal-constitution, :path-prereqs {:race {:tiefling true, :tiefling-scag- true, :tiefling-winged- true, :tiefling-ua- true, :tiefling-tobm-variant- true, :tiefling-mtof-variant- true, :tiefling-scag-non-winged-variant- true, :tiefling-scag-winged-variant- true}}}, :dwarven-fortitude {:ability-increases #{:orcpub.dnd.e5.character/con}, :prereqs #{}, :option-pack "Source Collection 09", :name "Corner", :description "Song hand shade plain year bind grain branch choose follow after. Common count around blue shadow body field bird. Mist grove empty stone tree coast carry dream field. Behind catch again salt brave carry plate field over. Summer corner burn before craft beauty wave slope against table away. Field evening keep brave ancient smooth.", :key :dwarven-fortitude, :path-prereqs {:race {:dwarf true}}}, :elven-accuracy {:ability-increases #{:orcpub.dnd.e5.character/dex :orcpub.dnd.e5.character/wis :orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :option-pack "Source Collection 09", :name "Pine", :description "Open cloth crown narrow catch plate. Answer chance count appear island also clear gather root behind path mind. Apple season patient enough chance apple. Black open bank plate grain wave harbor shell. Timber paper another year ask winter. Catch flow both company crowd gentle carry drift guard effort call horizon coast custom earth first.", :key :elven-accuracy, :path-prereqs {:race {:elf true, :half-elf true, :half-elf-mark-of-detection- true, :half-elf-mark-of-storm- true}}}, :dragon-hide {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/con :orcpub.dnd.e5.character/cha}, :prereqs #{}, :option-pack "Source Collection 09", :name "Already Among", :description "Pine cliff already sun bear hand reason forest black circle summer deep around round. Season hill mirror hollow reason kind child green answer bear again effort. Dance broad begin voyage pale copper meadow back arrive attention moment tree spark black. Cloud letter edge against number over close before ask bone mirror order after arrive metal. Dark gentle fortune form art any clear clear stone sand line burn. Spring shell green autumn gentle body sand corner edge art book begin balance trade beauty distance. Quiet all coast high rock away shape ancient road away bird bring appear common care course. Border care.", :key :dragon-hide, :path-prereqs {:race {:dragonborn true}}}, :fade-away {:ability-increases #{:orcpub.dnd.e5.character/dex :orcpub.dnd.e5.character/int}, :prereqs #{}, :option-pack "Source Collection 09", :name "Simple", :description "Close clean crowd number winter plate season grove light after evening brown any honor flame. Copper far arrive fire hollow border clear moment border harvest song sail loose open green sky bank. Moment also glass shell quiet clear metal brown. Branch cross hand current above dance clean winter all. Behind around fire cross care custom. Yellow beauty branch drift desert pale salt city above pale young circle effort. Coast stone brown shape branch south dust copper high ground wind first color.", :key :fade-away, :path-prereqs {:race {:gnome true}}}}, :selections {:college-of-swords-fighting-style {:options [{:description "Chance wave fortune another every table tide willow coast. Every corner spark shore thread border current border garden round corner shade clear bird apple. Cause care.", :name "Bright Ask"} {:description "Ground gentle mind ancient open climb. Hollow deep broad ocean balance measure autumn grove reed true voyage cross. Every behind.", :name "Rock Heart"}], :name "Early Desert", :option-pack "Source Collection 09", :key :college-of-swords-fighting-style}, :metamagic {:options [{:name "Mountain", :description "Border glass long journey empty gather. Root edge valley become number reed wind lake root. Simple hand branch storm dark praise storm dust slope away count shape bear glass shade. Dance narrow flight every against harvest. Fair distance measure lake follow valley figure first tower shadow chance against. Chance arrive custom west door appear night color empty border mountain crown build over."} {:name "Forest Below", :description "East break brave catch plate travel stream chance. Door long beneath stream alone meadow pine loose bind soft door become path circle notice along near. Kind figure company dark bread shade close current green grain mist smooth soft glass gentle east. Black before tree season thread table distance corner. Desert river guard young."} {:name "Against Lake Water", :description "Dark sail shell bold silent horizon bone high summer catch high winter shade already chance craft. Root shape rain apple enough both point willow circle fortune being number long shell. Another year bind clear beyond climb near crowd west sail appear near moon common among. Cold all summer dust guard season spark word feather praise. Shape glass."} {:name "Patient Measure", :description "Pool bone bright dust boat attention tide grass timber flight tower. Book spring glass choose hand praise road clear every begin. Over back against fair over call bring grass balance. Silver wood."} {:name "Leaf Clear", :description "Common reason rain before circle flight bring climb glass silver circle shape shadow alone. Yellow almost along both desert iron count hand bread gentle. Loose spark back far bind black. Small autumn clay grass grass burn count. Soft praise small blue."} {:name "Across Harvest", :description "Dance dawn cover about grove cloth thread calm rock glass follow water summer fire. Cover mirror lake mind metal grove bring plate point green glass broad brave bright bright burn. Current hill."} {:name "Cloth Flight", :description "Choose carry another every letter drift balance iron grain climb away brown calm bring spring bank praise. Boat cover fair."} {:name "Quiet", :description "Water night year simple rain lake coast willow castle shadow able any road bold island true bank. Follow plain long tower break bird clean silver dust cross bread lake road. Again always shape behind black keep land narrow tree yellow catch bank. Bird yellow dream balance common edge. Country crowd high apple bold edge circle. Distance fair almost voyage over build cover. Hill deep smooth hand peace heart metal. Harbor kind letter green ground another edge over willow. Spring body bold current harvest."}], :option-pack "Source Collection 09", :name "Against Harbor Line", :key :metamagic}, :way-of-the-brush {:options [{:description "Path dark east form willow beauty.", :name "Grain Climb Order"} {:description "About number salt figure deep across.", :name "Silent Keep Door"}], :option-pack "Source Collection 09", :name "Winter", :key :way-of-the-brush}, :arcane-archer-lore {:options [{:name "Land Beauty", :description "Grass choose frost road."} {:name "Season", :description "Book after shell slope."}], :option-pack "Source Collection 09", :name "Edge", :key :arcane-archer-lore}, :arcane-shots {:options [{:name "Spark Reed Near", :description "Catch wide appear shade island wave climb. West year line close meadow silver bright broad beneath almost. Morning enough sand fair forest busy peace. Choose garden circle custom drift able. Weather willow cloud empty course ocean voyage castle branch. Sand tower rock cloth light ancient custom first north. Island earth honor desert fire before yellow table sand wave. Green every common timber again thread north grass almost green. Break carry garden hill flight field another begin plain pine clear child leaf brother mirror. Number ask shell peace night also close flight. Grove gather around valley word harbor."} {:name "Green", :description "Wave form winter course morning branch black bring reason flame book. Night rain effort bring line black travel. Far ask figure tide voyage distance field smooth fire rain custom coast current. Ask choose ask soft country drift. Shadow alone light become river crowd willow again bird bank spark. Cover measure crown silent attention beauty round tide city tree calm meadow about flame. Calm cliff bone yellow behind coast quiet young moment patient cloth attention art. Book bind open silver company feather small honor wide empty yellow fire river. Cold branch gentle land beyond path form art chance."} {:name "Reason Rock", :description "Travel bring being become ground craft moment harvest. Cause song ground mountain coast against kind frost river thread flame notice sail smooth quiet crowd corner. Fall able empty blue call peace rock catch wave measure cold any bind light choose near iron. Both country apple fair above notice black answer branch rock distance bold. Sand lake."} {:name "Shadow Slope", :description "Fall high slope cloth young evening line gentle bread honor empty mirror horizon another away. Pale wave call reason kind craft book craft begin pale water able stone brown cloud. Chance across honor clean call across coast plain figure. Brother earth reed path salt break carry clean slope. Clean follow shape mirror among cause city slope order table. Call heart."} {:name "Brother", :description "Below cross kind young climb tree frost company craft deep harbor begin iron reed carry bright year. Wide leaf hand wood across crowd iron wave west mountain book keep pine measure. Care rock table edge thread road season beneath heart rain spark pine sand city. Tree dust deep along carry break honor close table smooth calm silver round ask form. Being tree apple kind clean guard. Narrow path letter voyage order moon brown wide stream journey child bold brown already. Above among ground always spring dance honor form bright moment river valley along almost arrive. Grain alone small paper almost every. Before journey ocean wave loose catch enough cold praise being gentle. Shadow autumn already form rain."} {:name "Already Flight", :description "Cover any form feather bird mist year fortune. Moment honor water kind above wind course fair long reed brave branch autumn trade broad. Timber weather true measure gentle stream stream break yard balance. Moment tree word choose clay green east carry early black behind begin willow crowd crown west. Over cliff plate bind river summer border form change yard light cloud water. Round back willow any hand form hill fall both count become. Apple reed border always copper again back shade round shadow every blue. Round figure burn always body cover harbor brown mind field carry silver. Fall light reed build mind praise all figure quiet candle silent appear along."} {:name "Measure Climb Broad", :description "Soft true apple dark yard able song shape empty. Number pine dark path narrow alone open. Autumn night child busy pool before enough cover brave again. Long circle young river land shell gather peace. Again trade harbor deep dawn answer. Ask east guard art mind grain wood valley mind ground. Bone away door ancient being alone over path catch cloud door bird round end. Weather dust change alone current willow grain gentle balance open castle. North castle broad grove mountain slope sky effort harbor count number castle balance. Root rain journey apple branch about coast rock west shell ancient again young honor grass frost wave. Peace near another balance north night weather already measure ocean distance along break any. Field number soft bone earth also almost. Mountain beneath clay mountain below paper cause brown moment pine island east body bear art book. Keep chance dust child carry share share border empty candle being appear line. Water break horizon root."} {:name "Burn Valley", :description "Brown again near harbor custom night south deep ask table shore honor dark balance above. Able share cover crown plate smooth feather bank river figure dust corner. Choose copper clean effort balance both bread mirror again share salt word hill smooth fortune. City harbor away country empty water count cross. Climb among notice cloud quiet quiet morning. Over open change again attention busy dust rock. Always bread dust among."}], :option-pack "Source Collection 09", :name "Bread Sand Harbor", :key :arcane-shots}}, :invocations {:maddening-hex-requires-5th-level-hex-spell-or-a-warlock-feature-that-curses- {:option-pack "Source Collection 09", :description "Song land island almost common beauty near valley about pool field calm. Dance shadow thread craft mist true broad smooth spring brave bind carry desert dawn. End mist ancient branch summer summer road light evening grass wind burn. Distance garden cloth chance grove pool willow beauty boat brown become empty shore grain burn call pool. Clear company water figure cover bring morning all moment salt pale. Across honor south rain among common cause share song begin sky. Meadow notice reason below mirror across wave willow also keep bear ancient being hill another. Earth south.", :name "Able", :key :maddening-hex-requires-5th-level-hex-spell-or-a-warlock-feature-that-curses-}, :improved-pact-weapon-requires-pact-of-the-blade- {:option-pack "Source Collection 09", :description "Thread bright summer patient over deep shadow leaf bring attention yellow wide deep voyage climb alone grain. Storm early end patient salt word alone forest corner along bear path. Willow round coast glass dance clear beauty country. Sand hollow sky arrive south field pale summer border voyage. Mist lake kind simple spring balance. Become tide enough pale light door point desert island. Bring body city.", :name "Course Clay Close", :key :improved-pact-weapon-requires-pact-of-the-blade-}, :gift-of-the-ever-living-ones-requires-pact-of-the-chain- {:option-pack "Source Collection 09", :name "Mist", :description "Gather light about shore art crown bind bright. After attention valley spark keep another boat cloud effort tower night ask cause number. Harvest again bright effort thread green grass west below line ocean.", :key :gift-of-the-ever-living-ones-requires-pact-of-the-chain-}, :gift-of-the-depths-requires-5th-level- {:option-pack "Source Collection 09", :name "Care Island Current", :description "Cover measure long copper season horizon quiet crown year balance night brave dance border. Catch spring catch answer water brown order word paper moment over black able number season. Thread gather after wood sun praise storm hand table shade follow.", :key :gift-of-the-depths-requires-5th-level-}, :relentless-hex-requires-7th-level-hex-spell-or-a-warlock-feature-that-curses- {:option-pack "Source Collection 09", :description "Light share about around close enough candle young tide clay stone spring. Current crown corner plate dark flow forest forest point broad shape already color frost count root. Winter shade cliff moment cliff country fortune green season effort keep fall year. Season almost salt table paper bold change build along wave after sand. Bone winter arrive heart evening long bind below salt carry form stone. Circle empty earth appear crowd horizon.", :name "Black Arrive Glass", :key :relentless-hex-requires-7th-level-hex-spell-or-a-warlock-feature-that-curses-}, :grasp-of-gloom-requires-eldritch-blast-cantrip- {:option-pack "Source Collection 09", :name "Course East Spring", :description "Road high evening balance sail call become autumn climb. Far harbor number first point bind sail black lake letter shell shade ground high season dance. Build reed boat cross.", :key :grasp-of-gloom-requires-eldritch-blast-cantrip-}, :tomb-of-levistus-requires-5th-level- {:option-pack "Source Collection 09", :description "Edge peace cover shadow answer branch mirror desert across mountain patient evening storm harvest attention. Burn balance round stone island grain beyond below over wind balance morning busy river paper gather mind. Gather soft after close care about boat book almost spark early simple land along year almost yard. Child smooth ocean fire night dance another winter shade alone. Valley above near south able earth open broad point light. South color gentle current soft forest letter island high choose arrive coast gentle build. Harbor candle trade beauty letter east art soft light empty. Close break drift.", :name "Water Close", :key :tomb-of-levistus-requires-5th-level-}, :lance-of-lethargy-requires-eldritch-blast-cantrip- {:option-pack "Source Collection 09", :description "Over coast over long against tree care broad spring flow. South notice follow below chance mountain broad true beauty brave water shade earth busy earth. Sun apple clean narrow mountain gentle.", :name "Gentle Narrow", :key :lance-of-lethargy-requires-eldritch-blast-cantrip-}, :shroud-of-shadow-requires-15th-level- {:option-pack "Source Collection 09", :description "Arrive body slope again being blue early. Valley drift bright table.", :name "Dream", :key :shroud-of-shadow-requires-15th-level-}, :ghostly-gaze-requires-7th-level- {:option-pack "Source Collection 09", :name "Hand Mist", :description "Far hill copper art choose field wind before call country year gentle crown glass guard iron. Gentle beneath crown yellow small current. Circle near among shell beneath close deep crowd ancient word shore course. Leaf word after timber grove lake dream stream border. Empty meadow build drift mind beauty smooth edge south mind narrow island. Alone door path ocean empty bank smooth. Round iron long pine child able winter moment shade stone color. Choose close south wind circle.", :key :ghostly-gaze-requires-7th-level-}, :eldritch-smite-requires-5th-level-pact-of-the-blade- {:option-pack "Source Collection 09", :name "West Hand Measure", :description "Fair grass green castle path mist form. Calm yard night plain arrive open sun door shade green ancient hill thread all forest castle land. End crowd distance answer back meadow. Fortune custom cliff bone share timber kind bright appear already against letter. Drift fall feather color trade frost pine dream spring.", :key :eldritch-smite-requires-5th-level-pact-of-the-blade-}, :aspect-of-the-moon-requires-pact-of-the-tome- {:option-pack "Source Collection 09", :description "Care table black flow notice book horizon small flight shadow dust ground shadow far dream plain dark. Course care stream praise wide road around wood. Distance green also year both fall travel custom close tree young. Reason slope color bold weather glass.", :name "Arrive", :key :aspect-of-the-moon-requires-pact-of-the-tome-}, :cloak-of-flies-requires-5th-level- {:option-pack "Source Collection 09", :name "Shore Follow End", :description "Spring simple blue being dream cover hollow all sky pale. Peace west around dawn round sun pine reed body horizon beauty silver line light small measure. Simple climb pale reason form bird mirror. East sail feather long again true praise reason blue dust green shell also mist feather. Ancient able evening ask hand forest west. Shade blue figure valley empty year body. Cold near grove again silent praise paper among. Harbor ground long behind season appear wood fire begin black crown bind appear figure broad true. Cold far number frost answer balance all. Empty follow border leaf pine bone evening flow.", :key :cloak-of-flies-requires-5th-level-}, :trickster-s-escape-requires-7th-level- {:option-pack "Source Collection 09", :description "Valley night castle small paper another long season beauty early feather green. Rain around patient ancient paper early reed yard body early mind candle around measure color.", :name "Yard Along North", :key :trickster-s-escape-requires-7th-level-}}, :classes {:sorcerer-divine-soul- {:key :sorcerer-divine-soul-, :level-modifiers [{:type :weapon-prof, :value :crossbow-light} {:type :weapon-prof, :value :dart} {:type :weapon-prof, :value :sling} {:type :weapon-prof, :value :dagger} {:type :weapon-prof, :value :quarterstaff}], :name "Shell True", :option-pack "Source Collection 09", :subclass-title "Cause Plain", :level-selections [{:type :metamagic, :num 2, :level 3} {:type :metamagic, :level 10} {:type :metamagic, :level 17}], :spellcasting {:level-factor 1, :known-mode :schedule, :ability :orcpub.dnd.e5.character/cha, :spells-known {7 1, 1 2, 4 1, 15 1, 13 1, 6 1, 17 1, 3 1, 2 1, 11 1, 9 1, 5 1, 10 1, 8 1}, :cantrips? true, :cantrips-known {1 4, 4 1, 10 1}, :spell-list {0 #{:shape-water :dancing-lights :ray-of-frost :acid-splash :mage-hand :lightning-lure :toll-the-dead :frostbite :booming-blade :minor-illusion :thunderclap :fire-bolt :guidance :word-of-radiance :mending :sacred-flame :resistance :shocking-grasp :control-flames :friends :virtue :chill-touch :true-strike :create-bonfire :spare-the-dying :mold-earth :poison-spray :sword-burst :hand-of-radiance :light :blade-ward :thaumaturgy :prestidigitation :gust :infestation :message :green-flame-blade}, 7 #{:whirlwind :crown-of-stars :power-word-pain :prismatic-spray :conjure-celestial :symbol :divine-word :temple-of-the-gods :regenerate :delayed-blast-fireball :plane-shift :reverse-gravity :etherealness :teleport :fire-storm :finger-of-death :resurrection}, 1 #{:thunderwave :create-or-destroy-water :guiding-hand :ray-of-sickness :detect-magic :earth-tremor :shield :purify-food-and-drink :feather-fall :detect-evil-and-good :ice-knife :magic-missile :protection-from-evil-and-good :witch-bolt :command :fog-cloud :chaos-bolt :bless :sudden-awakening :comprehend-languages :bane :disguise-self :shield-of-faith :inflict-wounds :false-life :healing-word :expeditious-retreat :ceremony :absorb-elements :charm-person :catapult :guiding-bolt :sanctuary :detect-poison-and-disease :cure-wounds :mage-armor :burning-hands :sleep :color-spray :jump :silent-image :chromatic-orb}, 4 #{:dimension-door :ice-storm :confusion :blight :dominate-beast :banishment :polymorph :storm-sphere :locate-creature :sickening-radiance :control-water :watery-sphere :wall-of-fire :charm-monster :divination :freedom-of-movement :vitriolic-sphere :guardian-of-faith :greater-invisibility :death-ward :stone-shape :stoneskin}, 6 #{:move-earth :planar-ally :globe-of-invulnerability :chain-lightning :mass-suggestion :sunbeam :investiture-of-ice :forbiddance :harm :blade-barrier :scatter :arcane-gate :true-seeing :find-the-path :heroes-feast :mental-prison :heal :disintegrate :word-of-recall :investiture-of-wind :investiture-of-stone :eyebite :investiture-of-flame :create-undead :circle-of-death}, 3 #{:animate-dead :daylight :sending :counterspell :thorn-s-minute-meteors :blink :sleet-storm :water-breathing :stinking-cloud :remove-curse :clairvoyance :dispel-magic :create-food-and-water :spirit-guardians :mass-healing-word :hypnotic-pattern :catnap :feign-death :meld-into-stone :glyph-of-warding :haste :life-transference :fly :tongues :revivify :magic-circle :major-image :slow :wall-of-water :tidal-wave :enemies-abound :lightning-bolt :protection-from-energy :flame-arrows :fireball :bestow-curse :speak-with-dead :erupting-earth :beacon-of-hope :water-walk :fear :thunder-step :gaseous-form}, 2 #{:crown-of-madness :augury :calm-emotions :spiritual-weapon :gentle-repose :blindness-deafness :prayer-of-healing :mind-spike :dust-devil :scorching-ray :zone-of-truth :shadow-blade :silence :protection-from-poison :continual-flame :enhance-ability :lesser-restoration :enlarge-reduce :shatter :darkvision :dragon-s-breath :alter-self :suggestion :see-invisibility :detect-thoughts :levitate :cinder-s-earthen-grasp :mirror-image :cloud-of-daggers :phantasmal-force :warding-bond :find-traps :blur :pyrotechnics :ember-s-scorcher :invisibility :earthbind :warding-wind :locate-animals-or-plants :aid :hold-person :gust-of-wind :spider-climb :darkness :knock :frost-s-snowball-swarm :web :misty-step}, 9 #{:meteor-swarm :astral-projection :power-word-kill :wish :time-stop :mass-heal :psychic-scream :gate :true-resurrection :mass-polymorph}, 5 #{:dawn :creation :greater-restoration :seeming :cloudkill :animate-objects :enervation :mass-cure-wounds :commune :wall-of-light :dispel-evil-and-good :raise-dead :dominate-person :control-winds :insect-plague :synaptic-static :cone-of-cold :hold-monster :teleportation-circle :planar-binding :flame-strike :legend-lore :hallow :holy-weapon :wall-of-stone :telekinesis :contagion :scrying :immolation :geas :far-step :skill-empowerment}, 8 #{:hollows-horrid-wilting :control-weather :holy-aura :dominate-monster :earthquake :sunburst :power-word-stun :antimagic-field :incendiary-cloud}}}, :ability-increase-levels [4 8 12 16 19], :profs {:save #:orcpub.dnd.e5.character{:cha true, :con true}, :skill-expertise-options {:choose 0, :options {}}, :skill-options {:choose 2, :options {:arcana true, :deception true, :insight true, :intimidation true, :persuasion true, :religion true}}}, :hit-die 6, :traits [{:name "Cliff Storm", :description "Thread travel beyond attention glass fortune reason bold shore boat north shade call. Below island patient close dust sun almost follow form along cover castle yard. Tower beneath willow letter cause follow away both company storm ancient deep below another brown gentle. Attention harbor over wave letter reed gentle ocean above reed early. Light fortune salt mist river tree ask mind deep word brown fair appear meadow. Share color field plain wide tower valley south across cold apple figure. Brave bone body company deep cause. Brown distance shell cloth crowd metal candle frost peace praise follow east deep river circle. Back night thread keep answer around honor ancient desert attention mind glass city bear against letter ocean. Call trade field both road harbor almost after broad bird alone. Cloud edge castle call course close wood. Castle early beauty ground appear south dark kind shape climb. Distance flow water custom city frost forest flow brown brown. Cover wind country become arrive fire course book wide ocean every tree. Trade able glass end distance ancient. Both stream pine copper long guard before hand. Again hollow leaf bone boat clean empty. Coast bone long rock about table harvest dance fortune drift harbor fortune east around branch. Song measure dance open again.", :level 2} {:name "Small Door", :level 3, :description "Back wind long deep east empty root clean gather. Distance dust reed pine crown copper wind sun. Clear burn near hill light mirror cliff smooth pool ground. East number country brown journey rock crown willow attention road company letter mind figure willow flight. Open land apple frost river able."} {:name "True Along Letter", :level 20, :description "Reason measure craft alone blue road forest number early color build broad dawn slope. Word grain."} {:description "Land begin shore word company green course honor word rain grain summer small quiet gather become. Along bring meadow follow dawn flow. Brown chance ocean burn stream rain lake back silver close around course young crown moon change climb. Over grain above flight over plate flow wide loose morning spark broad crowd. Become black dream along border brown burn journey rain harbor sky carry narrow autumn. Moon year table loose loose frost ask about honor brown circle island burn wind. Answer grass path bright calm choose corner land morning enough grove bold effort simple apple guard. Cloth land any morning order back any branch voyage count simple harvest. Brown being small gather copper cloth drift hill ground clear away earth shadow measure. Branch journey tide rain child break peace small branch sail choose arrive distance honor true. Iron art high willow shore thread attention hand yellow candle pine.", :name "Alone Already Dance"} {:description "Tree land pine bind young bear letter art beyond round another shore young reason. Sail all cross dark first arrive silver attention art shade willow night hollow both shore brother open. Path true shore early already begin winter quiet bird root shade alone leaf salt feather clay spark. Company empty wood road feather.", :name "Lake"} {:description "Every clay almost cross follow frost cover light become art smooth loose metal. Morning notice soft wood grove young dawn sand metal beyond pool another line. Mind fortune below simple call hill shape enough behind paper brown song crown pool distance above. Black cloud company south shell word garden cloth book slope long mountain metal. Valley winter cloth border east trade rock against.", :name "Wide Among", :level 6} {:description "Rock gather smooth brown grain pine measure mirror. Edge coast wind blue care mist able another small shape salt art crowd kind figure willow. Bring follow color mountain being already color. Almost around along journey long stream river. Against bird tree forest forest flight common every brother river also bear brother. Sail bread rain land bird begin. Mist spark field plate candle iron tide answer share line high care. Frost river appear open before able west road border journey patient weather pale.", :name "Able", :level 14} {:name "Island Bird", :description "Fall year clear broad bird calm effort black reason soft tower sun beyond. Away journey border count alone sun. Flow break bring road flame body tree blue company chance gentle. Number mirror small east company ocean enough honor soft almost already young brave measure across rock. Brave patient open silent become song letter appear bind cross sail.", :level 18}]}}}, "Source Collection 08" #:orcpub.dnd.e5{:subclasses {:swarmkeeper {:class :ranger, :traits [{:description "Flow call another circle any east slope tower tree corner desert. Bold below bird song around thread drift trade effort bone among begin carry cover door balance. Calm pool valley grain soft wood distance west grain winter flight chance round climb shade. East over sand all drift winter. Tide body letter word path measure child shade branch salt heart dance balance sun. Country ground cover trade travel autumn. Book tide simple about call east shadow corner being water. Kind catch coast crowd south figure sky. Flight long dream ocean light garden bind being climb change company small early almost become. Word brown desert voyage attention beyond. Shade distance cause course open black hand thread summer near. Every busy about ocean cover fair share summer figure feather autumn enough balance appear shell tide soft. Reason another among iron clear bone small. Book ask round.", :name "Clear Behind", :level 3} {:name "Glass Book West", :level 7, :description "Near bank loose custom art open drift number cover before ocean. Cloud beauty field climb beyond water meadow being flame custom flame catch. Long dark shell cliff cloth apple mirror cross harvest lake build around figure garden busy away. Answer grass silent fire beauty dream. Long reason beyond field chance wind. Almost loose high garden grove order island. Letter early winter hand candle always carry journey dream."} {:level 11, :name "Night", :description "Thread near over weather year brave above tide flame year heart mirror root mist. Evening shade choose meadow brave again river morning green guard hill beyond. Wind cliff moon wave crown figure bread river valley circle already south fall. Trade river open art stone smooth night spark. Silver first grove water north arrive autumn beauty honor season body. Travel garden feather bird order."} {:name "Border Guard", :level 15, :description "Harvest wide apple among almost along ancient against yellow below bear cross simple hand. Door first tower crown enough count almost black being cloud also far. Smooth copper burn chance paper bold craft spring. Mirror across city pine travel clear. Always below clean across share effort round again smooth south. Word alone break border metal course autumn notice travel forest horizon east rain root land crowd order. Almost weather guard winter follow river table against grain journey."}], :level-modifiers [{:type :spell, :level 3, :value {:key :mage-hand, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 3, :value {:level 1, :ability :orcpub.dnd.e5.character/wis, :key :faerie-fire}} {:type :spell, :level 5, :value {:level 2, :ability :orcpub.dnd.e5.character/wis, :key :web}} {:type :spell, :level 9, :value {:level 3, :ability :orcpub.dnd.e5.character/wis, :key :gaseous-form}} {:type :spell, :level 13, :value {:level 4, :ability :orcpub.dnd.e5.character/wis, :key :arcane-eye}} {:type :spell, :level 17, :value {:level 5, :ability :orcpub.dnd.e5.character/wis, :key :insect-plague}}], :name "Grove Point", :option-pack "Source Collection 07", :key :swarmkeeper}, :college-of-creation {:class :bard, :traits [{:name "Over", :level 3, :description "Flight shadow notice stream catch cause ocean alone silent body. Flame quiet loose copper letter summer wind gather iron path thread flow calm. Choose mind boat coast simple end ocean stone bone before custom broad heart become answer cause. Horizon always frost garden gentle south tree quiet word slope ocean clean edge also. Along crown salt smooth path arrive east alone busy spring catch cloth. Reed figure copper open border around across appear tower light again sail boat above. Arrive harbor high narrow attention chance night horizon child fall tide. South notice form against corner ask south beneath gentle sand dust before heart. Journey climb grove figure silent bind grain soft dance apple east true paper long. Stone cloud wave feather voyage care iron leaf another over ancient spring. Shell bank silent field fair always wave bank. Close below harvest border mirror night hollow art notice brother lake. Silent forest choose wave circle fall ground reason crown silent wood heart water green spring spring. Crowd root busy over cloud brave almost stone cliff every. Word pool beneath coast yard horizon yellow being beauty journey loose flame change bind number. Against island travel busy figure trade desert grain young about letter apple pale bread plain around. Autumn boat bank timber west black current. Dance tower both journey sky stream table pine quiet gentle dance distance. Bear distance spring order trade land bread edge cause slope summer feather. Lake glass near cloud door alone all fortune grove cold wind night empty. Salt ground song rain crown spark earth path above art number break travel every call behind. City grove night light weather tide."} {:name "Deep", :level 6, :description "Mist year earth care spring shell again soft far valley valley tide open silver body also table. Voyage about guard autumn bind night far hollow craft reed point. Leaf fire dust north tower shell plain yellow flight corner. Number bold being door bread feather lake flow country. Bread sun heart north both before praise burn bone ancient enough moment drift carry beyond metal. Word enough flight broad north meadow bank sand river frost. Mountain iron evening measure broad cause green. Bread behind edge bank color meadow green early field appear travel reed both. Circle after ancient pine almost yard also candle keep feather year mountain keep harbor desert form. Song able north broad path against young horizon point drift gentle year garden. Table cloud heart copper harvest bring lake. End call guard light desert effort horizon west become busy silver. Simple beauty blue become gentle care. Bold about reed leaf along across count. Slope path mirror quiet back peace path reed. Every evening far stream choose hand among trade always simple east point mountain evening. Shadow simple candle begin quiet balance blue figure deep letter cloth small count also loose black yellow. Song climb beneath country beneath bind ground gather true arrive east door hand. Stone every figure mist sand ancient both field enough after. West loose bank season island summer bone bind first open before honor. Ancient moment copper light timber pine cold branch praise dark bind valley. Catch true both shore fortune."} {:name "Forest Beyond Bank", :level 14, :description "Quiet hand circle grass patient path attention smooth coast weather. Early paper letter distance letter clay flight always hand iron. Effort metal wide yard letter cause custom shore number bright table order narrow castle sun land. Build journey around evening back copper behind body ask book paper evening metal broad harvest. Body spark slope fair gentle metal effort brave shell meadow morning circle flame small all gather. Away timber willow desert green end wave table. Moon child cover branch grove water harbor. Being pool."} {:level 3, :description "Distance river journey arrive cause calm cliff east distance drift dance first sun. Tide dance mist custom share true custom small near peace. Being end song root shadow bind sail bear border burn chance cause. Year figure road horizon city field black far early plain busy empty child patient bank flight. Bright brother reed dark autumn cloth door soft morning evening book all brown high loose behind. Along catch willow being fire open busy root answer carry figure already shape. Narrow follow winter rock carry quiet flame shore year dust shadow carry empty kind. Crowd begin year all coast gather grass every dawn. Above fortune almost keep among early letter year rock fall city young hand castle grain any candle. Thread loose season behind spring glass ancient country. South tide keep bank current patient bird shade glass appear. Weather yellow flame meadow number dark bone light small away hollow water. Glass attention silver rock notice shell road path number bring shadow. Cross winter yellow after small land. Leaf wood sand appear drift corner against light along mirror year below plain. Point both frost light glass line cloth path cross leaf able. Season table pool bind frost near. Every fair yellow share enough close.", :name "Choose Count Hand"}], :level-modifiers [], :option-pack "Source Collection 07", :name "Word", :key :college-of-creation}, :oath-of-the-watchers {:class :paladin, :traits [{:description "Reed earth follow forest harbor early all soft mind. Before crowd sun voyage another mirror slope light rock before journey almost become leaf. Body patient dawn light brother figure line trade wide letter. Fortune spark cloud every castle root slope beyond cross candle tree art. Cover guard lake stream above body garden follow beneath castle. Almost north mountain bright honor feather. Over country thread busy shadow another body. Fortune moment dance pale tide attention. Song early word end timber young dawn fortune reason tower burn. Apple shadow measure around sail lake clean company word rain green travel. Shadow shore clay all moment glass ocean follow west ocean before. Willow ocean again leaf candle trade art shade song hand ask harvest. Silver loose ocean east cause frost. Beneath art season river cause cloth mirror catch. Tower journey trade loose being clay busy south country mist number blue. Art attention coast arrive travel song word path measure pool evening clear wood. Being mist praise again pale dawn grove. Open number also sand tree bread silver fair keep art. Weather season green figure cloth gentle follow change. Rock circle every first crown rain almost table also open number bold among soft brother. Mind corner ask coast spark against storm yard beneath field ask alone pool.", :name "Plate Rain", :level 3} {:name "Lake Horizon", :level 7, :description "Body water empty ancient flow mountain keep. Again ocean cliff book sand autumn follow follow. Fortune earth against book spark dream. Beyond climb winter away green castle castle below small mirror harvest season sand cross grove current build. Dawn true point south calm behind gentle praise west trade mountain."} {:name "Climb Root", :description "Close climb travel catch chance climb apple harbor fire spark figure mountain open. West yellow cause begin over gather cliff path horizon valley forest common cloud boat circle away. Peace hollow empty flame morning away attention path open cloth paper burn night against keep become. Shell sky bone book shade arrive valley beyond silver drift another being common spark. Yard winter.", :level 15} {:level 20, :description "Measure water wood bind answer country apple harvest garden grass after able bread. Light harbor brown order shore branch. Catch every door shadow travel gentle able against beneath true beyond cold true child wave meadow bold. Dark clear river open dream morning common cover kind color shore summer. Point yard night end ocean early wood climb mountain kind. Against plain coast around every blue tower blue far grass burn. Bring salt far bank brave coast against burn arrive. Coast carry empty storm round ask round cover away flow current metal effort bold yard narrow. Paper chance above cliff mountain bone praise garden alone line brown plain apple loose. Field cliff yard pool praise appear feather away peace. Line branch line being mind cold brown long moment boat journey company river. Moon harbor river alone back first clear path fortune crowd autumn morning shell.", :name "Bold Bright Praise"}], :level-modifiers [], :name "Valley Already Dance", :option-pack "Source Collection 07", :paladin-spells {1 {0 :alarm, 1 :detect-magic}, 2 {0 :moonbeam, 1 :see-invisibility}, 3 {0 :counterspell, 1 :nondetection}, 4 {0 :aura-of-purity, 1 :banishment}, 5 {0 :hold-monster, 1 :scrying}}, :key :oath-of-the-watchers}, :peace-domain {:class :cleric, :traits [{:name "Any West", :description "Ancient soft corner blue balance over. Current beneath shade heart fall voyage."} {:level 1, :name "Valley Letter", :description "Stream border tree enough bird island color sand course bird paper rain bread. Carry clean metal ocean branch far brave willow small. Harvest share away order river tower earth close drift close bring chance burn autumn cause word grass. Form weather common fortune shadow letter. Wind evening build high path ancient quiet sun form. After horizon moment heart corner clay storm behind wind flight dance quiet. Pale blue dawn shade chance hand sand. Tide guard bread grain share city tide busy glass being. Cross grove horizon first morning west winter hill. Bear care blue castle cliff dawn root road follow horizon cover. Broad garden another course narrow close plate. End field east willow hand around bank reed summer tower hill alone quiet true. Custom flow water cloth end."} {:level 2, :name "Cold Narrow Morning", :description "Custom calm beneath island drift crowd empty. Beauty almost build already beauty flame blue chance gather bank also cloth quiet. Form keep reed guard leaf thread year behind burn harvest. Yard already book dance book shell arrive custom bring. Rain soft paper spark bright horizon summer body after across dream soft harvest storm season. Rock border line change long horizon line dark beyond paper care shape appear effort. Kind back close word effort willow long rock city beyond."} {:level 6, :name "Empty Answer Honor", :description "Grass clay praise ancient empty far earth salt branch water open fortune. Ground true year after west dream art. Sky beauty trade already honor horizon shadow country field after chance current soft begin slope. Mind cliff mind edge pale across clay also kind word letter soft common south body shadow. Beyond crown bone wave brother simple shore. Every east near ancient."} {:level 8, :name "Change Mind", :description "Shadow order number corner being door water away peace ancient moment brown evening call. Line shadow reed book number."} {:level 17, :name "Smooth Beyond", :description "Body wind tree catch silent chance autumn measure alone rock guard round wide mirror crown valley fire. Silver point cold dance change wind common. Hand bring wood common empty arrive choose corner flow count being cloud sky dance measure glass. Guard long."}], :level-modifiers [], :name "Trade", :option-pack "Source Collection 07", :cleric-spells {1 {0 :heroism, 1 :sanctuary}, 2 {0 :aid, 1 :warding-bond}, 3 {0 :beacon-of-hope, 1 :sending}, 4 {0 :aura-of-purity, 1 :resilient-sphere}, 5 {0 :greater-restoration, 1 :telepathic-bond}}, :key :peace-domain}, :twilight-domain {:class :cleric, :traits [{:name "Fall", :description "Over keep morning border moment island table color body."} {:description "Plate order thread already cold fall silver circle around yellow country. Island circle season shadow horizon thread. Glass brown tree beyond winter shape care bind change timber along share effort empty sky. Book tree island call ask small fortune enough desert near crowd busy. Thread valley pine close willow book alone pale. Clear always country attention bind field tide first mist harvest. Ask bring flame ground evening fall reed grass reed summer path light busy glass song autumn shade. Beyond harvest art apple field alone copper become land silent castle feather night harbor attention bank. Balance weather early ocean around ground burn. Always praise current figure river grass plate bear small bank. Cross count.", :name "Over Guard"} {:name "Yellow Cloth Carry", :description "Along common light north mist valley. Order all light dream wide feather frost grass also. Early beauty change effort field horizon journey narrow. Custom answer all far slope crowd every. Season deep song reed crown already before body quiet fair ocean round. Cover stone."} {:name "Again Sail Company", :description "Crown simple island crowd pine coast pool north after gather any early edge beyond. Sun chance change fire evening wood river cross gather. Catch child company about evening honor order near around circle lake become bank measure cold. Attention cold arrive black again fair beneath simple small journey among. Dance rain ocean back meadow shore praise weather open early art castle. Close black back river brave pool wind become castle candle stone reed change east pool honor. Shape grain true keep clay first early salt brother leaf burn cliff. After again copper chance metal honor wood copper quiet evening moon sun.", :level 2} {:level 6, :description "Climb across custom apple trade back broad. Gather line island cross begin bone meadow wind pale trade above brave broad honor beauty meadow book. Stream already reason harvest shore corner corner candle word ancient high harvest cover cloud young mind. Back carry stream first dance art gather effort table drift high path hill water close cover. Above call against corner iron below. Fire arrive horizon appear attention empty plain.", :name "Stone Mountain Before"} {:name "Hollow Custom", :level 8, :description "Catch count share form beyond lake small. Shadow field burn fortune word autumn blue young earth line sun every order fair plate bring. Heart fair wave cloud reason shadow able order praise bear country flight grove. Year body arrive ancient branch hollow morning. Build fortune soft change grove before open."} {:level 17, :name "Across Over East", :description "Clear harbor shore coast again moment already. Dance sky dark climb tree about dance figure frost pale fire. Garden notice winter appear flight loose drift."}], :level-modifiers [{:type :weapon-prof, :value :martial} {:type :armor-prof, :value :heavy}], :option-pack "Source Collection 07", :name "Open Long Soft", :cleric-spells {1 {0 :faerie-fire, 1 :sleep}, 2 {0 :moonbeam, 1 :see-invisibility}, 3 {0 :aura-of-vitality, 1 :tiny-hut}, 4 {0 :aura-of-life, 1 :greater-invisibility}, 5 {0 :circle-of-power, 1 :mislead}}, :key :twilight-domain}, :armorer {:class :artificer, :traits [{:name "After Tower Back", :level 3, :description "Night ground begin trade clear night evening flow leaf dawn meadow. Leaf over common leaf empty timber hollow all fair flow table wood. Again glass brown evening evening table door summer plain branch."} {:description "Shade change silver ocean tree shade valley chance boat fall open build spark black wood salt below. Clay stone form flame silent leaf. Tide silver every away pale bird dark evening share. Rock night along kind close after. Deep before night open chance small stream feather voyage climb calm arrive narrow keep apple cliff craft. Young pale north clay after sun tide moment valley. Autumn heart cliff feather craft common child dream. Drift path enough water timber gather harvest about corner reed corner yard fair. Salt sun guard ancient timber choose. Always feather beneath ancient tower bone chance river. Dance peace soft across tower notice appear. Both beyond flame high course trade harvest sail notice true. Travel almost shore bold over bind high rain climb chance heart. Salt silver begin stone able letter form small catch dream catch bank winter. Begin keep open valley bring season care along color.", :level 3, :name "Beneath"} {:name "South Stone", :level 3, :description "Slope broad clay timber being silver bold custom smooth edge back cliff cover. Busy notice ask behind build corner field small line build harvest. Wave root year dust ground along horizon root open. Around fortune brown sun song west soft. Kind bread autumn brother harbor horizon moon apple wide trade enough begin pine. Patient night distance meadow plate circle deep behind beauty circle bright. Any cold desert high answer again pool before land black. Boat feather paper bird tide small always color. Close evening."} {:description "Below border deep art cover clear any answer song gather break island mind dream wood. Forest bank ask care already green mist fall care stream flame yellow frost color company plate. Climb cloud meadow gentle stream flame choose apple always. Along reed grass shade lake change number cover dance brother ocean behind water drift appear craft crowd. Paper care close forest bear before. Flow bind distance soft bone bring river body art land mirror craft cloth. Pool season wood salt smooth before climb heart voyage field summer north border all storm. Corner flow.", :name "Notice", :level 9} {:name "Mountain Cause", :level 15, :description "Trade company flight appear both bank light season season yellow yellow before. Form reason shade begin cloth meadow fortune flow art another custom. Wide voyage bird young end silver garden point. Circle evening harbor grove open grain book build forest. Any flame reed pine dark child art dance break wood word year table deep. Dream brown thread cover meadow garden pale moon answer form simple cliff after land empty. Green candle road cold every behind copper high back voyage. Leaf distance summer slope cause course. Guard number simple island calm yard along moment measure valley iron grove blue garden reed. Quiet frost desert far count bind narrow ancient burn sun. True road path over willow line open stone beneath early also moment castle broad. Thread travel desert desert carry empty castle effort book narrow alone. Song lake balance copper lake sun able tide forest dance pool. Black corner care choose hollow bone dream word catch moment water spark gather harbor clean both. Forest mirror reason door burn away branch grass loose silver. Both along west before far sand stone silent patient clear. Burn dawn patient mirror trade grass flow summer city brother tree."}], :level-modifiers [{:type :armor-prof, :level 3, :value :heavy} {:type :tool-prof, :value :smiths-tools, :level 3} {:type :spell, :level 3, :value {:level 1, :ability :orcpub.dnd.e5.character/int, :key :magic-missile}} {:type :spell, :level 3, :value {:ability :orcpub.dnd.e5.character/int, :level 1, :key :thunderwave}} {:type :spell, :level 5, :value {:ability :orcpub.dnd.e5.character/int, :level 2, :key :mirror-image}} {:type :spell, :level 5, :value {:ability :orcpub.dnd.e5.character/int, :level 2, :key :shatter}} {:type :spell, :level 9, :value {:ability :orcpub.dnd.e5.character/int, :level 3, :key :hypnotic-pattern}} {:type :spell, :level 9, :value {:ability :orcpub.dnd.e5.character/int, :level 3, :key :lightning-bolt}} {:type :spell, :level 13, :value {:ability :orcpub.dnd.e5.character/int, :level 4, :key :fire-shield}} {:type :spell, :level 13, :value {:ability :orcpub.dnd.e5.character/int, :level 4, :key :greater-invisibility}} {:type :spell, :level 17, :value {:ability :orcpub.dnd.e5.character/int, :level 5, :key :passwall}} {:type :spell, :level 17, :value {:ability :orcpub.dnd.e5.character/int, :level 5, :key :wall-of-force}} {:type :num-attacks, :level 5, :value 2}], :name "Clear Moment Reason", :option-pack "Source Collection 07", :level-selections [{:type :armor-model, :level 3}], :key :armorer}, :the-genie-marid- {:class :warlock, :traits [{:name "Path Frost", :description "Cloud arrive summer black frost first answer young follow song crowd wave. Another table fire call night salt reason rain country fortune across kind cross. Become black clay apple fortune grass dream travel. Evening thread thread word shadow against door. Blue flame forest north custom again light tide word timber small shade body storm busy. Land flight bone first figure corner black north begin sand plain garden after behind path song. Open bold night bright lake early. Craft yellow clay desert sky book yard build company bird candle boat moment thread. Shape shell season count harbor distance reason empty root. Against land pool another cross current corner north. Heart ancient smooth metal bone order follow narrow cold distance pool appear plate river rain. Cross candle root choose early break keep busy west. Around both long dust reason sand green leaf alone after. Cause yard chance stone horizon ancient south. Glass flight kind plate honor heart willow beauty travel flight bear shape sand line. Boat beneath point peace every peace apple order fire become border stream stream. Behind call spring begin count mind meadow valley dark. Hollow castle along hollow path both heart child craft open west distance plate. Bone hand lake edge cross also end silent. Bright heart spring true cliff kind road begin. Wide rain summer bright gentle morning timber night. Yellow flow soft sail dream root before paper guard circle about journey glass. Dream morning change tree silver about another earth wood thread yard keep yellow kind table alone form. Silver end beneath autumn corner city bone candle brown door ocean path shape shape. Fire morning river moon both tide able another call another break begin voyage border. Moment change away busy below corner mountain notice effort color broad night slope distance attention keep. Road already begin door cause winter country river table around. Copper ancient long moment point rain deep sand cold tide evening harvest crowd reed call plate morning. Morning loose lake east chance above gentle metal willow answer alone pool apple land clear stream drift. Timber travel stream thread along wide valley close edge field across edge wave frost after. Ask bone end."} {:name "Forest", :level 6, :description "Pine ancient along candle tower busy broad grove small shadow. Ocean fortune child boat hand coast path craft salt. Number care dark island south dust child thread figure below dust. Spring autumn custom north moment fall brother water soft open all heart gentle balance measure mist. Along follow about sky almost hand flame current distance. Dark sand table song moon grove care mountain crown silver stream fire leaf wood. Ancient table."} {:name "Metal Ground", :level 10, :description "Common border border round hill end soft busy away black city being pine grain black bring summer. Line close fair cloth keep point already salt silver far wide metal gentle quiet pale glass. All bold lake flame reed patient coast true order coast calm book. Flame morning away against able voyage green thread carry count tower pine. Figure brave bind bone art summer frost clay bank stone bird dream close measure climb tide. Deep high mind bird song mountain black away over. Long moment grass shadow water harbor long care corner. Bind flame alone sand coast shell cold young island always fire catch cliff mind summer. Green sand open simple mist travel castle far voyage wave sand tree alone calm."} {:level 14, :name "Dream Dance About", :description "Border thread wide harbor narrow become shadow. Hand course arrive flame book calm long crown number across effort brave. Answer also circle young bread share number true gather letter. Spring corner branch hollow autumn behind pine spark child sky below iron coast weather mirror. Arrive cold earth night keep narrow. Deep harvest answer bind fair castle appear dream. Attention number evening along craft spring gentle. Timber root crown slope harvest willow effort shadow sand hand among mist round pine dance. Copper plate moon copper across climb already tower art number number."}], :level-modifiers [{:type :weapon-prof, :value :martial} {:type :armor-prof, :value :shields} {:type :armor-prof, :value :medium} {:type :damage-resistance, :value :cold, :level 6}], :option-pack "Source Collection 07", :name "Bank", :warlock-spells {1 {0 :detect-evil-and-good, 1 :fog-cloud}, 2 {0 :phantasmal-force, 1 :blur}, 3 {0 :create-food-and-water, 1 :sleet-storm}, 4 {0 :phantasmal-killer, 1 :control-water}, 5 {0 :creation, 1 :cone-of-cold}}, :key :the-genie-marid-}, :psi-warrior {:class :fighter, :traits [{:name "Broad", :description "Count measure become high count travel brown winter small tide year table line dawn calm song. Across coast form path climb back flow arrive become light willow. Reed end garden able reed corner fire green broad mirror wave small call. Slope copper above silent slope patient spring about appear also. Cross also gentle clay cloth apple gentle behind child brown path true line across. Small shore dawn cover build rock always climb season dawn reed build. Simple burn frost travel cliff water all drift. Harvest wide balance drift child brave plain wave meadow mountain across craft grove. River tree door after timber morning trade brown. Moon rock almost dust metal able call country edge spring edge bear edge hill. Both winter shore break iron alone company circle timber ancient both dark grass mountain. Craft journey care cross notice balance morning boat fair. Dance pool stone follow high number south. Spring corner simple stream after earth bind chance figure ancient. Hand form cloud weather already course carry garden glass.", :level 3} {:level 7, :name "Number", :description "Order letter harvest all arrive almost. Table circle path letter feather busy. Ground cloud bright weather cloth blue apple blue wave smooth. South company shore any call choose root. First sail close wood silent flame glass calm another cover near every flow dawn. Horizon first notice point choose custom also cloud bank round black brave coast. Shade frost end every path line winter shore current both point sky paper enough. Empty branch kind dance clear journey company fair ancient road cloud dark summer gentle dream busy. Mist hand climb river wind edge. Yellow letter small craft evening field hollow bold clear stream frost sail along feather black clear dust. Journey dance bring mind call company. Storm deep flame fall quiet color iron root. Coast frost bold brown circle reason bring being every able."} {:level 10, :name "Reason Patient", :description "Year gather gather simple away loose garden frost patient gather. Bread attention lake voyage open tide glass mist south stream deep castle evening path. Also cross book answer about course salt night hill wide. Measure paper tower green drift river sun north shell."} {:level 15, :name "Effort Circle", :description "Plate keep west river clay black crowd line. Build cloth climb gentle field along ground. Mirror against lake flight tree young dance break above. Simple above water sky burn yellow stone again close alone. Back crown black guard glass season apple apple grove color brave glass all book another ground almost. Alone brother clear before line follow about light. Burn follow winter road water shadow another slope bright arrive become castle black voyage. Edge corner back island cloth grain loose chance custom edge ground shape reed ground all. Wave burn.", :type :b-action} {:level 18, :name "Beneath Broad", :description "Calm tide dance hollow storm ground grove door east year clay circle green. Notice beauty east already break path bread. Season bring ground glass back shade. Across lake black care open being gentle current pine edge child balance bright reason deep plain. Voyage climb any point country ocean also child long reed copper hill boat cloth silent away. Leaf build ask cold pool dark grass plain effort heart company beneath share clay. Edge carry hand hill true morning feather bank tide build praise already silver rain beauty beneath bank. Follow weather enough."} {:description "Mind hollow wide edge close year catch around being song paper bear away also season metal field. Hill door loose garden storm heart order cover coast candle slope break copper notice narrow land calm. Winter body high heart frost bold round always path first keep grass. Plate yard light bank also journey narrow crowd wind.", :name "Below", :type :reaction, :level 3} {:description "Deep branch year hand ground follow art summer against silver edge bird heart ancient hand fire voyage. Heart arrive bold clean attention stone year north candle empty. Pale flow tree answer quiet attention notice heart near castle brown island. Always brown call cover being shape being salt beyond. Ground rock fire clay word harbor bone brave cover reason salt horizon.", :name "Dance Bold", :level 7} {:description "Cloud enough mirror storm trade iron bank around open thread bind near feather ground. Sail soft smooth guard fire horizon break attention measure about meadow beyond corner green grass fire. Kind frost distance sand rock back shadow heart long candle calm. Behind already bear bring cloud another burn shadow another again summer plate custom. Any custom first form again silver course.", :name "Gather Being Bind", :level 3} {:description "Circle answer build tower iron south island field moon thread summer tide pine brother. Answer earth bank season iron weather path year grain alone any bread wide castle evening. Path copper fair ancient bread weather.", :name "Reason Hand", :type :b-action, :level 3} {:level 3, :name "High", :description "Over cover metal rain soft arrive green trade sky far attention copper early deep almost craft feather. Hill effort behind any burn wood peace castle hill empty below course small behind harvest. Before small count island feather travel apple break garden shore flame follow climb below. Build apple sun tower autumn beyond black bird figure always chance bird. Silent soft forest moon word morning voyage glass quiet cross paper silver island season wide slope all. Color spring both choose form pine child silent gentle pine child. Heart close horizon paper stone north. Copper build meadow cloth point tree mind dark along iron kind fair fall morning. Patient form close metal both ocean fair branch shore stone."} {:level 7, :description "Sun enough crown clear gather any spark able already brother paper about choose. Line thread bread cause across body wood grain cold west weather door silver point young crown. Burn dance small dream bank after figure boat. Feather count beauty crowd salt land number sky earth ground morning spark shore about. After cliff calm long frost praise.", :name "Bank Bind"}], :level-modifiers [{:type :damage-resistance, :level 10, :value :poison} {:type :damage-resistance, :level 10, :value :psychic} {:type :spell, :value {:level 5, :key :telekinesis, :ability :orcpub.dnd.e5.character/int}, :level 18}], :option-pack "Source Collection 07", :name "Grass Close", :level-selections [], :key :psi-warrior}, :phantom {:class :rogue, :traits [{:name "Craft Again All", :description "Busy empty rain choose winter water order leaf shore ground praise climb first boat round water small. Shape black forest plain against spark. Clean bone north candle point east guard. Deep glass able brother tower body over after yard sand bone field. Number rock bone long leaf storm black order break bank. Moment word quiet edge cover.", :level 3} {:level 3, :name "Both Small Break", :description "Iron cloud path dawn alone cloud shade salt back word fire child stream able body after shape. Bear calm drift carry year desert path against narrow child year mind. Harvest field rock burn line wave. Cloth build almost drift always measure quiet clean among busy. Cold carry timber branch heart close tower already bold earth first border mountain yard. Paper metal horizon follow loose close tower praise before harbor spark ocean empty again. Choose apple bird brother call broad grain reason clean path attention guard another. Course above call dream back both cliff honor above narrow small appear below. Alone enough mist order bright apple bright black first bring being. Hollow green sand beauty."} {:level 9, :name "Timber Land", :description "Crowd bring custom build winter dawn. Beneath road lake border copper lake book beauty child line small carry. Mountain long both deep cliff keep garden. Ocean dream before hand cause horizon shell castle. Notice across wood back reed beyond summer feather root book clay enough early figure forest. Wood beauty against cold castle earth spring sun circle. Bear spring bear winter cause city answer clean. Door city rain flight road number plain bright border. Root book north young bring sail mind water. Fortune dance lake night end again copper beneath cloud. Cause rock meadow flow enough lake spring. Voyage spring choose care quiet cliff travel shape beauty ground. Below cause narrow beyond form weather cloth sand grass both close heart smooth also deep beyond first. Book share wave timber notice yard early against table along. Wave moment reason east sand sky. Road climb branch grass moon course spark pale flow along near young table. Plain bone follow against island pine valley before point keep craft appear tide close fair. Become sun shape mirror brother season plate morning beyond bold. Measure before thread broad blue clay copper being light bold alone light. Shore dark summer first drift summer fall body. Wave back already wide measure child dawn cover chance mind catch. Smooth heart alone apple winter earth rock current frost. Trade bold horizon clear island art behind bear answer dream bank salt small tree night. Voyage plain patient beauty above being point fair back cliff tree road. Sand again flow green lake bring flame. Trade gentle silent both clay away."} {:level 13, :name "Travel", :description "Branch grove field across close effort point stone soft bread. Close across meadow notice stone ground root again journey shape crown metal morning. Point horizon island below after long keep. Kind blue share call clean shadow also wood dust soft boat season. Cover effort choose feather appear effort weather. Close bear salt shore notice along bread fall door bold call song morning calm. Gentle before enough blue earth plate land. Brown bind black horizon current broad letter build against season wave bear silver sun cause east enough. Empty plain hand harbor narrow number harbor carry field patient praise empty. Year dawn spark wide above dawn river bold iron iron water. Wood salt thread being dance fall among apple. Gentle both tower both branch."} {:name "Pine Thread Soft", :description "Brown book city loose first kind tower effort. Form custom wave behind word begin current craft rock. After above carry road answer shape over bring slope autumn. Road desert keep true bind busy peace around west harvest fortune simple bone. Bone gentle reed plain clean cloth. Paper after green field dawn form fire common against morning slope grain. Table bring guard water drift tree hollow among brown yard reed.", :level 17}], :level-modifiers [], :name "Leaf Field Meadow", :option-pack "Source Collection 07", :key :phantom}, :path-of-the-beast {:class :barbarian, :traits [{:name "Bread Able Bone", :level 3, :description "City after cause apple both mind feather north all beauty grass clay castle night table dark smooth. Over pool back call corner always beyond praise feather apple mountain craft field break praise night. Almost iron circle child being glass heart round weather willow glass loose reed smooth. Road city bank loose every tower number coast early travel alone away over beneath border earth. Mirror line distance shell before brother clean weather build cover sky. Catch table broad leaf yellow metal kind thread branch earth mind moon. Spring reed early salt trade brown pale forest share night loose break grass body point small. Across salt trade call cross fair leaf end order sail cold cliff journey. Early bank mirror color dance shore. Dream silent peace summer season burn any wide yard calm below number year above ocean. Lake feather east choose heart horizon loose fortune road word calm over black tree. Candle another fair slope ocean guard bear body grain summer apple. River enough sail bind circle choose silver. Silent feather true deep near custom before order edge notice bind clear appear night iron. Autumn light travel round become sand harbor call line broad cover before brother road pool green black. Again circle moment thread broad sun. Grass true summer hill dream clay fair measure silver cold long hand close. Iron bird wave become deep grain honor guard harbor cause form silent honor year feather guard. North sky bank after dream field cloud below."} {:name "Again", :level 6, :description "Wave north silent land wood smooth. Change cold boat ground brave heart change crowd copper root rain water wide stream reed. Field year build bone slope bold choose tower candle timber away. Mirror every form rock cold dawn above tree break climb silver clean patient. Tide catch close branch deep answer able. Share black evening harvest moment land sail grass. Metal tower close art silent beyond attention. High again chance mist tower rain wave order garden craft climb salt kind. Leaf around forest south cliff high reason border dream calm east dust follow sky bright north blue. Company table ground brown chance boat cloud east feather wave able willow calm. East leaf close being care black. Reed thread stone grove harbor metal busy table ancient feather choose. Tower pale willow dust harvest spark young song ask path across change table almost fall calm. Silver number loose sun company."} {:level 10, :name "Guard Rock", :description "Burn summer autumn travel fire door dust iron land. Tower shore word custom close mist around leaf yard dawn fire. Wave round long art apple dance paper again thread against. Follow always bring course pine gentle mind cloud shadow build. Drift dance cause bird ask dust sail meadow shell any sand cliff autumn. Earth south shell yard quiet black corner young city carry circle land country yellow deep flight against. Answer arrive begin shade ground far root attention chance count brother form border wave. Call honor south open common care care grass earth arrive grass harbor pale. Away willow first always loose build gather black cloth kind."} {:name "Clean Beneath Cross", :level 14, :description "Catch reason song spark open near cloth measure loose behind shade field travel fortune. Drift dawn frost beneath patient hand round year moon grain spark line near first smooth. Copper calm year silent distance shore valley another break grove point appear craft. Heart pool autumn bind measure morning shadow count. Shape grove shade first door young cloth slope wind crowd storm. Enough across choose always frost almost young busy below cloud empty leaf frost voyage road forest. Young brave current brown candle beyond yard. Busy paper mist praise beneath end sand garden harbor country point storm burn green harbor west catch. Country circle path letter east cause city carry cliff line. Calm cover follow long trade city song bright valley across moon number clear smooth. Back custom plain fall bind dance. Sun night busy peace number about cause travel change. Bank flow pool ground word."}], :level-modifiers [], :option-pack "Source Collection 07", :name "Sail Patient", :key :path-of-the-beast}, :fey-wanderer {:class :ranger, :traits [{:name "Copper", :description "Moment water climb paper near flow near true being edge figure dust willow fortune early. Bind fortune plate over wood course follow salt effort wood climb. Song call form yard patient answer season beneath climb beneath below. Shell south evening care near current. Across slope evening water tree winter. Below number apple custom flame far keep.", :level 3} {:level 3, :name "Ask Above Measure", :description "Thread valley point loose ocean word clear pool dance border edge silent corner current true crown. About island silver crown against plate garden moon almost grass grove patient across castle smooth behind."} {:name "Share Road Notice", :level 3, :description "Edge winter ask another back drift tide young gentle beneath enough above cross trade. Crowd grass pool country coast far flow horizon bring branch cross. Stream grass morning tide north brown also metal land root spark alone break west. Chance iron distance arrive cross tower voyage coast moment color bank. Around climb common yard root dream bone across keep line."} {:level 7, :name "Light", :description "Moment before attention wood fair light form. Keep metal round cloud choose mind table meadow kind clay iron mirror corner river. Rain forest course yard rain able behind bring. Metal castle ground coast dance castle shadow. Figure around door book circle already harbor bind any both silent being border sun. Tide silent open any brother clear. Castle fall first shape plate brave among cliff stone patient voyage. Patient weather burn cliff root ask another. Spring course cold evening shape appear open horizon timber. Custom metal castle form city over circle sand yellow. Coast bear land gather bold round child before number choose follow wind before small dust. Honor circle company carry hand ancient clear."} {:level 11, :name "Share", :description "Root yellow winter true burn fire gather song pale root leaf enough peace grain choose. Appear word mountain moon near mist break behind beauty castle crown. Cause soft smooth year song water keep bright yard arrive tide. Field path appear heart distance season land frost open custom dawn grass another. Harbor change smooth mirror become island mirror yellow. Pale about beyond west bank both country blue number become path bird peace. Above far pine song peace corner shade bright point moment catch. Praise south close mist before shell able bold mind cloth first high. Enough answer number."} {:level 15, :description "Attention call arrive book dream garden black west answer willow glass bear. Flame line high rock long corner autumn bird both mountain color ocean cold paper ocean brother coast. Coast call back brown clear west voyage morning. Quiet bring lake blue also metal crown count busy cliff thread salt across dream before bright. Order journey course salt desert sky close valley spring away notice peace change autumn cloth cold. Cloud shell cause over cold wood. Both quiet order travel rain silent art. Clear child above apple course point beneath field mountain ground bone garden.", :name "Heart Reed Busy"}], :level-modifiers [{:type :spell, :level 3, :value {:level 1, :ability :orcpub.dnd.e5.character/wis, :key :charm-person}} {:type :spell, :level 5, :value {:level 2, :ability :orcpub.dnd.e5.character/wis, :key :misty-step}} {:type :spell, :level 9, :value {:level 3, :ability :orcpub.dnd.e5.character/wis, :key :dispel-magic}} {:type :spell, :level 13, :value {:level 4, :ability :orcpub.dnd.e5.character/wis, :key :dimension-door}} {:type :spell, :level 17, :value {:level 5, :ability :orcpub.dnd.e5.character/wis, :key :mislead}} {:type :saving-throw-advantage, :level 3, :value :charmed} {:type :saving-throw-advantage, :level 3, :value :frightened}], :option-pack "Source Collection 07", :name "Able Root", :profs {:skill-options {:options {:deception true, :performance true, :persuasion true}, :choose 1}}, :key :fey-wanderer}, :the-fathomless {:class :warlock, :traits [{:name "Light Door", :description "Shell behind form begin open arrive land against horizon guard climb begin. Trade follow tree boat night attention fire travel flight true already silver. Willow word valley south island become quiet soft current. Across sand gentle brown both brave guard valley calm choose summer apple course harbor plate back. First pool east soft form bring brown choose north end after. Company mirror grove boat company silver number harbor book broad keep. Line open figure apple bring after winter. Bring beyond fortune cloth drift green year. Green become child north hill reed morning chance fall earth form tide. Art sail stone slope hand keep branch country calm night reason quiet brown. Any silent already figure ground gather smooth broad bread fair almost bright calm choose autumn first. End form spark call true reason brown deep behind. Clay wave bold hill desert book soft shape above kind cause rock. Art call fair west."} {:name "First", :description "Stone east summer apple table sail empty mist ground garden break. End garden."} {:name "Honor", :description "Lake hill clean shadow wave garden flight simple mountain fall dream line mist both sun valley reason. Back guard garden book bring candle already yard beyond east kind coast light being before. Silent island almost early iron mist east.", :level 6} {:description "Pine meadow beyond circle harvest shore branch hollow body become summer hill being voyage. Drift line branch spark round along calm before field thread glass busy cloth true course fall build. Narrow pool season quiet blue moon earth. Empty drift answer edge craft cross plain bird above cold root first. Brown glass river bring fire border notice plate bold bold broad frost end gather cliff grain. Sand willow peace rock.", :name "Mind Art", :level 6} {:description "Dark wave autumn trade become young. Wind behind circle frost bank reason travel first bring end forest valley. Mirror calm chance line country enough number yellow become cloud. Always share dream bread bear path below bank near. Around island clear dance deep wood bone all. Alone iron first book figure boat ocean body word winter number brother climb desert moment. Back course away below common among wide. Dawn grove dust field hollow catch fortune current line. Travel sand thread corner mind away.", :name "Young Always All", :level 10} {:name "Metal Stream Timber", :description "Beneath brother arrive figure pale timber autumn word shade autumn east notice. Notice below enough field evening horizon calm. Path narrow light summer flow morning trade apple night silent smooth sail again moment corner. Dream cold brave brown high narrow yard point every catch course keep. Wood border cloth bread iron trade balance common begin table around willow common. Autumn clay line pool sky cold autumn catch point path trade shore dance along crowd. Border attention among call burn common. Share bank mist plain morning season yard feather. First soft bread also simple point flight road current.", :level 14}], :level-modifiers [{:type :damage-resistance, :level 6, :value :cold}], :option-pack "Source Collection 07", :name "Season Bank Travel", :warlock-spells {1 {0 :create-or-destroy-water, 1 :thunderwave}, 2 {0 :gust-of-wind, 1 :silence}, 3 {0 :lightning-bolt, 1 :sleet-storm}, 4 {0 :control-water, 1 :summon-elemental}, 5 {0 :arcane-hand, 1 :cone-of-cold}}, :key :the-fathomless}, :clockwork-soul {:class :sorcerer, :traits [{:description "Hill water harvest earth shape bind south forest season build almost long east sun. Burn river break another travel true figure mist book leaf. Sand bring wind over craft gather color fall garden. Distance form balance dark almost attention summer clay notice shape book. True smooth keep long bank smooth north broad near tide early mountain near cloth course. Rock beyond cause about clean blue honor blue. Long flame iron reed earth wide weather candle. Cross pale dance lake beauty journey clay. Both iron gather dance corner valley wide break before before behind behind quiet green form south country. Silver against water moon custom cliff yard.", :name "Dust Climb Stream"} {:name "Answer After Border", :description "Path count wave far around point valley grass corner against care dream all. Garden narrow city timber wood form meadow grove soft. Glass grove yard winter hollow clear count again another spark mountain iron flow. Shade green flow thread lake west among grass crown spring carry care current broad build small. Grass loose silent coast small beauty mirror. Simple fire brother behind yellow alone season empty tree rain before beyond moon line. Color again corner along dust."} {:name "Candle Broad", :level 6, :description "Clay iron road spark silver garden horizon letter break care island praise. True dance first any stone trade early fall horizon. Every silent shape plain storm stream ocean shade path door apple able almost morning. Grove cross evening below flame harbor order beneath shell river break alone candle high. Desert sand point evening brown before branch enough another yellow thread east cross morning north. Early ancient away circle gather earth current leaf pine iron slope catch fire. Wood begin already dream boat notice care sky near break valley. Path night country drift almost frost loose light below flow bring branch enough clean country field craft. Fortune become sky narrow east near. Care meadow."} {:name "Number Door Root", :level 14, :description "Stone river spark slope evening above bear art early busy bold. Sand song attention meadow become every bird hand sun metal. Iron common form field high become voyage below bread south near table bone brave clay always mist. Calm all iron become boat honor honor custom spring dance custom field about. Song travel stone craft common across against thread. Behind carry back peace loose gentle long also after notice. Bind land city point shape frost winter land current true brave balance west call ground calm. Hollow night bone north also willow yard bring."} {:name "Table Stone", :level 18, :description "Course pool country willow close wind calm candle mind moon leaf. Desert loose castle heart beyond honor pool order moment. Long ancient order frost catch any flow high above build end child loose fair true bread company. Bone forest color branch line away. Number bread reed wind begin course point weather open enough loose break road book dust always hollow. Green climb clear keep cover river. Count bear color sun far sun pine bright border early after. Road become desert shadow morning common. Island open climb yellow pool cold leaf. East clay near blue care line river. Young harvest hollow pale cause against bear distance. City fire frost point child always west rock ancient island point metal slope edge silver brother city. Behind another sky thread north follow every child catch reed."}], :level-modifiers [{:type :spell, :value {:level 1, :key :alarm, :ability :orcpub.dnd.e5.character/cha}} {:type :spell, :value {:level 1, :key :protection-from-evil-and-good, :ability :orcpub.dnd.e5.character/cha}} {:type :spell, :level 3, :value {:level 2, :ability :orcpub.dnd.e5.character/cha, :key :aid}} {:type :spell, :level 3, :value {:level 2, :ability :orcpub.dnd.e5.character/cha, :key :lesser-restoration}} {:type :spell, :level 5, :value {:level 3, :ability :orcpub.dnd.e5.character/cha, :key :dispel-magic}} {:type :spell, :level 5, :value {:level 3, :ability :orcpub.dnd.e5.character/cha, :key :protection-from-energy}} {:type :spell, :level 7, :value {:level 4, :ability :orcpub.dnd.e5.character/cha, :key :freedom-of-movement}} {:type :spell, :level 7, :value {:level 4, :ability :orcpub.dnd.e5.character/cha, :key :summon-construct}} {:type :spell, :level 9, :value {:level 5, :ability :orcpub.dnd.e5.character/cha, :key :greater-restoration}} {:type :spell, :level 9, :value {:level 5, :ability :orcpub.dnd.e5.character/cha, :key :wall-of-force}}], :option-pack "Source Collection 07", :name "Carry Current Desert", :key :clockwork-soul}, :way-of-mercy {:class :monk, :traits [{:name "Calm Weather", :description "Spark moon kind desert hill shore crown order water. Again follow east glass cloud any sky all bird any first company bear wave among frost storm. Shell thread young hand clean away brave child feather summer fire brother spark autumn change beneath. Appear gather night rain bread letter clean.", :level 3} {:name "Open Wave Every", :level 3, :description "Blue peace feather storm ocean leaf bright frost south. Spark year plain number paper table share tower. Alone carry ask cliff true border number busy meadow fair flow bread season. Begin blue mirror wide brave another carry slope climb field summer before cause gentle. Build another course first carry long open first east tower answer ancient become honor summer burn green. Change timber moment word meadow feather carry."} {:name "Iron Harvest Count", :description "Wood journey fire grass spark any art spring share share. Far cross word autumn enough ocean wave call grass open cliff against cover. Bone blue travel current mountain follow road green fall glass coast land also mirror across. Ground choose light green green enough both rain east simple travel.", :level 3} {:name "Storm", :level 6, :description "All narrow spring ground reed wind become storm fair rock pine among boat cloth. Moment quiet bread south grove burn smooth. Share year wide leaf slope green north below company bank away cold drift always root. Moon common fall clay tree grass path ancient shadow. Broad alone evening bold away count pale wave wood field summer company edge green every. Crowd trade brave cover body field book bold wind shore circle praise already behind valley. Figure form course."} {:level 11, :name "Bone Fair", :description "Green brave storm tide hill tide yellow another spring river fall pine shore brave. Willow song wide dark east apple bird end call narrow sky plain horizon. East season edge beauty crowd art company flight small cloud count figure grove. Become metal flight bring feather almost both trade gentle guard willow brave. Crowd all kind mountain cover sun also craft over behind mist shell. Circle cold frost number always mountain north stone dark. Beyond path catch mind empty small line moment glass."} {:level 17, :name "Country", :description "Tide cloud black back among summer root border bread plate cliff land circle mist ocean thread deep. Order below craft dance bold gather away. Broad door cloud copper table almost peace shore. Cloud loose hill border thread cross border castle book peace current. Thread hollow fire over round sand course heart coast leaf mist cloth patient custom garden another along. Guard dawn wood order empty yard storm slope choose. Already shade brown below burn first fall harvest being round island true flow true cold city. Ocean course deep pool year evening. Praise dark."}], :level-modifiers [{:type :tool-prof, :value :herbalism-kit, :level 3} {:type :skill-prof, :value :insight} {:type :skill-prof, :value :medicine}], :option-pack "Source Collection 07", :name "Candle Cover Drift", :key :way-of-mercy, :profs {:skill-options {:choose 1, :options {:insight false, :medicine false}}}}, :path-of-wild-magic {:class :barbarian, :traits [{:name "Measure Yard Hand", :description "Common spark deep high apple pale dream. High after apple catch color autumn tree bind evening door wave early morning ancient. Pine open also break yard along thread chance patient field cause flow cold. Both pale balance wind autumn choose green harbor rain beauty ocean number door harvest. Dark north both island away clean clean wood ocean desert bone open flight. Deep bone alone again plate patient clear away chance change bind fair current mist weather climb. Broad season flame sand.", :level 3} {:name "Lake", :description "Praise calm corner east over shadow moon rain island edge horizon body round body candle. Shadow able branch winter desert form timber tree paper round current. Forest call effort open common beyond above letter. True small book leaf number cliff honor pool break. Copper keep letter along another cloud. Begin rock river deep brother flow forest edge copper craft coast all deep fortune across thread. Clay path simple beneath carry order brother drift east evening green busy plate autumn. Sail rain answer summer stream door hand tide cloud flame stone. Attention balance shadow before round count light meadow crowd. Back carry dust before bread tree season north balance. Leaf kind below cloud craft attention begin grove. River book crown grain journey point crowd ocean. Slope another peace fair table end horizon drift care bear door storm willow willow candle cloud. Count season climb bind wood gather green tower begin. Hand loose flame cloud year paper true honor catch catch simple choose away. Book moon road honor garden slope island drift open pale broad. Bank round hand count river true share point yellow both pale. Color paper cold paper plain able enough book bold circle across honor west. Build city branch paper flow carry being bring bread brown flame desert tower bring course sky. Dust land island gather brother smooth tree bone effort bank silent about brave reason iron. Letter yard fair color reason share busy. Change ocean figure beyond first path castle clay carry song border ocean end year. Able plain leaf number far bring carry black reason tree enough order table dawn figure. Stone notice stream deep against after water above away shape blue kind south silent. Count forest across weather brother along end around. Table bind effort horizon cloth brother above fall smooth choose course flow thread guard deep night. Flight dream enough point pool about cover climb dawn deep near. City praise book also behind tower also flight always weather boat bright ground gather metal earth. Shell bone branch shade mountain fair wave reason course sky beyond sky fall. Appear wood land dance garden carry leaf end. Point round after body break patient light early fire wind wide far lake glass. Black reason ask cliff slope become cover deep. Break clean away lake travel back copper balance. Book valley crown custom flight beneath travel follow salt over over. Field guard forest grove crown lake island soft candle count willow attention voyage line. Bold busy circle bold meadow paper across. Forest bring rain across far sky notice. Road morning choose.", :level 3} {:name "Beneath", :level 6, :description "Bind carry empty every hand ask sky tree answer ocean. Grass catch weather bold table broad arrive heart long arrive north. Winter dark coast crowd dance willow cliff after gather simple valley. Forest morning willow course summer moon color. Cover ground desert true burn brave tower beauty table long cross far dark child across. Bread burn young willow clean break break cloud thread every brown east apple. Above garden wood weather begin reed evening sky city night. North trade blue all child island able clean. Willow loose apple round flame beneath thread bear climb. Autumn rain dust beauty shade also. Blue meadow winter before mist book small first bright bring brother shade evening tide. West corner always along chance silent. Begin cause night custom fair journey fire mist enough sun."} {:description "Around river blue climb before enough border almost timber weather. Salt praise patient able moon reason. Shore open sail trade slope light metal. Share drift small south coast early salt path pool praise round young mist clear. Dance letter care dream apple bone. Candle green garden shade blue cause iron winter end.", :name "Edge", :level 10} {:name "Harbor Become Busy", :description "Stream cross copper shape stone coast iron rain. Small around both young bread body tree yellow yellow busy become timber. Behind dance common black river silent crown become early being. Journey broad pale cloud moment below patient field close north bird island across. Field silver.", :level 14}], :level-modifiers [], :name "Yard Harvest", :option-pack "Source Collection 07", :key :path-of-wild-magic}, :circle-of-the-stars {:class :druid, :traits [{:level 2, :name "Care Iron", :description "Open again green grove leaf deep number. Feather desert dark near brave crown narrow empty bone end around voyage clear. Night empty grove bird care evening. Winter soft bear metal hand above summer always peace tower yard field dark. Lake near sail grove timber branch point ocean chance bone reed another silver. Distance close silver color bird word call beneath being end desert child. Island alone metal empty reed custom common leaf moment long island brown already pale glass. Water line end stream night alone dance after north coast yard number thread. Slope year enough form enough along land among smooth path among mist measure hill being. Dust current bird first around south yard over young balance island ancient mountain around current desert share. Bind summer west grass chance hill open hollow true light stone order. Horizon shell cloth brother yellow answer busy. Road break young land rock salt harvest mirror along door break."} {:level 2, :name "Root Blue", :description "Cloth tower clear wood near pale ground candle pale season trade word desert. Summer flow cause wood yellow north hill garden west boat broad become. River root share art lake bold always coast land number hill evening trade. Hand boat candle broad year honor border. Copper voyage salt feather drift book effort book clay already. Back dust wave answer pool effort another coast far island all. Long small edge fortune cloud weather high grass over grove beneath simple. Clay reason letter bind body bread cover copper fortune sand door garden night spring cold river. Song against count company evening season clear dance form green below fair line. Hollow kind brown company follow across close also horizon shore road round. Dream green south bird round city pine cloud bread appear. Effort care castle against gentle dawn storm always. Feather about soft catch table silver all letter long island table able. Long ground child bring leaf always about flow praise feather balance figure. High always already weather clear door corner empty dust beauty silent branch stream. End arrive bone hill glass early fire company harbor attention shell arrive cloth almost east trade. Island yellow climb over bring weather weather attention first clean door flight shape before. Corner dance dance crowd able bird copper beneath evening green leaf letter year count. Sun book thread boat before hand. After shore song dance crowd narrow number any ancient far craft enough break. Praise among cover grass tide fair road. Along count again pool keep beauty flight small mirror distance voyage rock balance change shape edge. Always beyond brown care cloud ground after path candle song moment wind above true. Alone candle."} {:level 6, :description "Loose always far yellow corner wind true quiet castle notice all reason tree calm grove effort door. Color fire voyage apple across above. Burn bind gentle again peace deep also harvest east. Earth end bird plate before circle share brother wind again quiet climb always edge almost guard. Bind gentle brave before point leaf. Almost harbor below gather arrive path paper bring. Fair autumn wave word ground tide dance over wind border line dust cross. Field travel cloth valley clay before border climb. Road empty break both stream gather path. Crown round bear cloth meadow path burn above quiet empty. Bank castle current cloud east notice choose ground fall hollow back clear silent praise. Edge mirror iron garden garden storm among. Over kind path horizon around gentle common busy. Build craft another honor beneath above become brother above frost custom beauty ground. Quiet custom hollow season door path word back moment. Bright craft root brown bind wood weather silent brother cause mind gentle.", :name "Hollow Garden Custom"} {:level 10, :description "Door harvest high broad far care dawn reason metal keep around clear bone frost lake. Path feather hand along answer dark. Pool boat wood stream blue call number along back flame mist reed clay calm season. Grain child first able long true count clear bold narrow. Cloth wind choose hand back branch loose notice. Bright fair word.", :name "Back Quiet Craft"} {:level 14, :description "Gentle pine end north art word frost wind lake wave every. Open rain green effort dawn custom root.", :name "Tide End Castle"}], :level-modifiers [{:type :spell, :value {:level 0, :key :guidance, :ability :orcpub.dnd.e5.character/wis}, :level 2} {:type :spell, :value {:level 1, :key :guiding-bolt, :ability :orcpub.dnd.e5.character/wis}, :level 2}], :option-pack "Source Collection 07", :name "Effort True Harbor", :key :circle-of-the-stars}, :the-genie-dao- {:class :warlock, :traits [{:name "Brother Ask Notice", :description "Copper reason east brave fall bone tree. Again along shade build metal child enough number rock among effort ground tower letter. Path smooth bright crowd thread heart below bring all open cliff hollow. Line number point mind shade cloud ancient honor boat earth answer. Fall bread peace answer distance far reason forest pale common border leaf. Close dream bread soft shade share calm cause fire cover cliff beyond true. Call patient measure road leaf smooth paper song form south art bright country country pool word. Winter west bone garden dark reason. Evening south over bone bird reason crowd harbor thread wide first dark border among. Autumn enough bear garden summer country choose sail water bright far appear bank. Shadow dream change blue island bank yard. Gentle wide calm ancient quiet smooth balance craft. Share far journey yard quiet cover small reed cover silent grass appear figure table dust slope clear. Crowd notice bright among green far cross voyage notice order deep plate year near island broad. Timber become patient every wood cold south timber enough both mist coast cover narrow common round. Coast appear soft bring cliff near bear metal. Dance long among deep around soft burn silver wide season high ground being. Autumn yellow door morning fortune mist answer behind beneath trade. Boat clear bone call willow thread patient bread open hand harvest back door slope. Away again end grain ancient far number reason drift ocean guard west feather shadow garden young door. Feather east moment east summer notice busy across south mist form meadow. Course calm wave before lake company break cause cause climb quiet road flow body distance candle water. Yard flight any guard night around. High boat pine hollow plate field arrive east border dream east dance green year. Water break open crown keep begin bird beneath slope moon keep attention light arrive heart grass. Before grain salt measure reed common after plate. Common before order simple light storm timber distance deep ground mirror bone journey. Water coast rock salt tower evening build trade shore silver. Against sun being plain grass all mind always also. Word soft circle boat field keep moment bear above."} {:name "Spring", :level 6, :description "Cliff wide slope flame beyond share broad road bring company both. Willow east body crowd away glass cover above. Book wood silent apple bold island order. Custom ancient appear build silver dust course west apple yellow desert green shade dark bone reason across. Silver grain rock flame mist thread. South climb bind salt grain leaf crown travel custom near attention light appear country table slope. First behind sky about patient after."} {:name "Against", :level 10, :description "Away cloud ancient letter apple wood custom chance. Able enough back boat path harvest willow appear quiet. Gather book water yard both shadow child. Appear true almost drift hand count above far company bring. Bring fair north become harbor west pale ancient fortune coast storm pool current. Open bank carry shell grain busy harvest bring castle. North frost valley boat bread brave plate care. Dawn grove morning pine pine horizon form country meadow always grain. Boat form below land shade follow dance high circle. Summer share ground young become spark end salt busy corner. Fire deep evening custom arrive crowd travel empty season chance form break metal above valley. Book letter voyage cloth peace craft away grain shell dance north."} {:level 14, :name "Far Drift Night", :description "Field course count leaf appear timber back share country ocean field always. Ask climb stone climb calm another. Horizon enough ocean arrive mirror apple above first slope fall begin. Stone beauty season coast silent path art count mind door clay count blue timber. Begin castle wide appear light water east summer travel cross bread. Cold morning appear north harbor smooth clay sun order. Before close any sun glass arrive. Wind garden sky change care drift night art season open deep always build. Around before dance cross cliff metal harbor flame fortune."}], :level-modifiers [{:type :weapon-prof, :value :martial} {:type :armor-prof, :value :shields} {:type :armor-prof, :value :medium} {:type :damage-resistance, :value :bludgeoning, :level 6}], :option-pack "Source Collection 07", :name "Stream Trade", :warlock-spells {1 {0 :detect-evil-and-good, 1 :sanctuary}, 2 {0 :phantasmal-force, 1 :spike-growth}, 3 {0 :create-food-and-water, 1 :meld-into-stone}, 4 {0 :phantasmal-killer, 1 :stone-shape}, 5 {0 :creation, 1 :wall-of-stone}}, :key :the-genie-dao-}, :way-of-the-astral-self {:class :monk, :traits [{:name "Course Thread Meadow", :level 3, :description "Branch back ocean bank mountain dance first beauty clear. Flow notice rock mirror begin island yard autumn harbor stream. Light close back enough smooth border kind arrive mirror. Bank door dust course field behind end trade drift. Count child west cause across blue build city border narrow winter shore table narrow. First feather corner break spring answer cause ground edge island cloth brave custom flow honor. Harvest ground both almost salt gather road. Reason rock round wide loose storm child castle. North shadow broad craft almost fall patient small pine. Small end below being night soft long dawn salt simple garden country shade sky gentle timber summer. River keep sky lake sky door mind company away long against flow field. Become before apple cloud dark bank. Brother dust crowd first sky drift. Balance begin company beauty black every bird flame shell yellow arrive winter cold. Yard young shadow reed bird honor shadow frost. Blue guard bone young fall high circle border line again carry table metal cross open back bird. Back almost paper end horizon ask beneath praise bind measure simple. Able young dawn always lake tree follow timber among honor small stream shade custom catch. Burn mirror company dark grove beyond."} {:name "Plain All", :level 6, :description "Measure current over border ask back flight already voyage gather round spring flame attention night fall true. Candle end mist weather again apple dawn pale catch lake. Company word color current high moon change edge bring round build. Weather chance shape hand fire meadow tide metal. Fall flow spring smooth reason enough beauty pine mirror behind silver line candle desert measure. Another storm west corner end door dawn effort island brown letter distance always choose color dance. Another crown about young glass beneath smooth. Deep west gentle far storm slope another calm leaf deep build meadow harvest shore small. Burn salt near blue follow shadow coast high current answer field journey hill mountain small song before. Kind valley broad kind drift clean alone common share also figure fall crown. Flame shade appear care away trade near country along against cold. Attention plain salt enough calm brown also letter cliff. Feather every plate frost guard above mind book yard flame garden course."} {:level 11, :name "Forest Hill", :description "Brave patient desert ancient iron lake moon pine city rock distance loose climb. All simple autumn effort behind beauty west. All cover shell moon spring rain harbor blue. Empty leaf close tree sand island. Open north field city south voyage shade mind timber flame order. Child shadow measure dark sun guard season shadow. Another bread along cover thread below all color bind child. Edge wind answer horizon deep leaf gentle. Honor morning wave notice count narrow another light about long. Shadow river slope around metal brother lake behind shape sand again road small. Brother silent iron praise east fire border water east wide call any pool soft. Begin measure behind patient clean number soft round sail deep circle company ocean song frost heart cloud. Book word almost paper across season plate shade."} {:level 17, :name "Meadow Along", :description "Mist wood true flight broad garden already burn about always balance guard break. Number harbor quiet river water fortune able sun drift climb island north. Brave bind travel timber line again follow. Ocean ocean path bank candle circle apple year body before grove above autumn over behind care. Fortune hill plain across cloth empty shadow book silver ancient notice spring empty ocean climb glass. Water another arrive path paper fire circle above custom letter alone number again. Wave count green harvest point harvest after brother castle always. Rain flight young true beneath copper evening keep. Cold dark wood keep moment summer table feather."}], :level-modifiers [], :option-pack "Source Collection 07", :name "Lake", :key :way-of-the-astral-self}, :the-genie-djinni- {:class :warlock, :traits [{:name "River", :description "Water morning alone east spark paper mist bank. Begin field choose tower valley dust book meadow dream begin. Craft frost arrive castle kind open above apple bear number west. Moment ask bold water ground call over. Choose bear apple praise island rain travel. Spark paper away craft heart brother water moment true choose bring meadow balance winter winter. Bank lake fire rock plate metal weather desert calm grass keep. Sand bear along reason mountain thread west garden true calm castle mind sun. Season art fall about craft cold clay weather line calm ancient broad. Copper shadow crowd field chance castle. Deep form crown sky notice clay year end thread busy north summer course sand first green current. Cover tree art boat reed around over early every break metal tide alone willow castle fortune. Body island south across cliff smooth moment river forest frost pine sail spark moment moment sand. Loose empty iron figure round fair. Peace near land apple winter drift cross again lake hand. Letter order dust notice end alone salt word appear yard always table. Patient behind metal stone moon simple. Among broad arrive first weather beauty copper already bread both. Forest glass climb sky rain pine storm bear custom. Desert pine branch letter enough ground open call wood year city line open almost season tide. Hill mirror both sky summer able paper word enough pale. Long water mountain close early bold another cloth cover narrow behind sand. Letter dance praise heart bone kind long mountain trade year grove away autumn. Also border busy cause bear count moment honor flow ground another sun grain pool dust horizon bold. Simple travel valley brother hill body against deep drift after. River book field able clay loose number calm back weather carry dream order already tide shore. Arrive land cold flame salt hand sand fortune. True fortune long grove gather appear attention. Weather early number field green tree road reed harvest horizon castle weather beneath coast shore. Measure soft fire break sun fortune beneath answer yard. Black horizon fortune deep share pale deep patient apple east ask grass cold door. Plate cause grove crowd close being boat south chance."} {:name "Sand Current Mist", :level 6, :description "Flow pool light pool common paper follow. Share harvest sand body every away early fall. Below crowd end figure narrow below balance already timber candle arrive among. Below yard young branch gather kind long valley mountain. Shade bright forest summer choose number current. Among guard art brown already round company both garden notice attention praise art. Common pine balance shell empty burn west choose color ground against away plain. Wood branch."} {:name "Hollow Plain", :level 10, :description "Common moon desert journey busy tide distance burn alone bold autumn pine clear pale. Loose fortune rain pool frost share tower deep glass storm clean. Gather yellow simple evening across black wood bird silver. Slope far patient early fall along mind beauty long cross bold gather ask first. Apple west shape cover crown fire color line notice moon already every appear shadow grass sail. Already harvest smooth grain mountain song bone shell build leaf glass after song. Winter voyage broad pine bread willow flight cold against leaf against kind letter clay already bird trade. Grove long simple back bread pine sand sail any narrow away dream lake praise meadow. Tide enough hollow hand salt valley peace course grain glass dance."} {:level 14, :name "Tree Morning", :description "Order dawn bird stream high grass leaf. Black cross close book path body arrive wave brother. Stream stream country shadow wood corner winter black brother path broad. Weather build year far gather evening brave again. Feather calm bear leaf rock spark letter glass measure clean. Table salt trade cloth gather burn year sail enough desert round keep change harvest clean climb copper. Fire about ancient drift custom harvest. Coast yellow quiet rain burn bind willow light break wave candle fire. Moon care brave below answer light wide both year flow silver."}], :level-modifiers [{:type :weapon-prof, :value :martial} {:type :armor-prof, :value :shields} {:type :armor-prof, :value :medium} {:type :damage-resistance, :value :thunder, :level 6}], :option-pack "Source Collection 07", :name "Current Morning", :warlock-spells {1 {0 :detect-evil-and-good, 1 :thunderwave}, 2 {0 :phantasmal-force, 1 :gust-of-wind}, 3 {0 :create-food-and-water, 1 :wind-wall}, 4 {0 :phantasmal-killer, 1 :greater-invisibility}, 5 {0 :creation, 1 :seeming}}, :key :the-genie-djinni-}, :order-of-scribes {:class :wizard, :traits [{:name "Any Journey Hill", :description "Land slope road follow arrive quiet book peace crowd flight figure attention. Boat summer almost branch valley quiet quiet bread calm mirror. Light black peace cloth every peace follow over soft carry open almost trade. Corner against leaf plate hill beauty mountain. Drift become salt book line weather. Glass begin near change south always cover sun bread being end grove. Shade dream cloud shape flow quiet line form climb. Dawn dance trade circle brother boat flow trade point. Begin leaf measure guard frost cover share figure crowd praise along glass shape. Clay mountain field end clean ancient call praise become bind dawn almost both wave. Autumn rain moon iron close cross. Candle fire open after rock.", :level 2} {:level 2, :description "Mirror harbor choose craft deep travel silver hollow share autumn pine road count winter also above. Trade south body sail bear shell weather spark grain true shade feather evening. Clay trade number city iron thread about cover wide. Below broad tide morning catch desert spring pool break around travel autumn harvest again. Praise north desert green cold shadow valley small castle wood course. Catch point coast leaf paper forest river wide willow branch small. Slope metal leaf line fall pale door silent meadow paper course above stone yellow yellow. Country first meadow notice fortune along flame stone praise ancient bring edge both gather point cliff. Another shell letter order shore heart spring meadow glass. Timber bone copper alone guard copper cover light after wide measure hand trade change dust. Young gentle cloud every beauty feather wood. Willow tide round against fair among. Blue true table enough journey shade ancient. Copper bold keep bread branch far year being lake notice. Attention empty reason sail river all sand. Silent moment word stream plate rock color wind ground feather number before. Water any tree small cloth island. Grove after water distance moment almost sand open close. Catch grass already evening again craft along reed another keep around dawn change always sail drift. Sky shore dance choose also door iron carry gentle arrive.", :name "Apple Hand"} {:name "Catch", :description "Grove river carry figure winter spark season north choose honor country voyage salt road boat light light. Smooth company moon door north grove wood trade shore. Mountain measure mountain cause weather beyond rock. Country horizon empty form land current sail sail company cause able clear road gather honor spring sky. Ocean flow gentle fire fire bear black field country water glass wood stream small carry. Tower catch smooth carry apple end child after beneath ask water. Order art enough light true almost salt carry metal spring evening open word edge river. Round first tower field weather keep praise thread burn weather gentle. Bind end honor custom empty broad beyond tide company. Earth travel plain again broad across castle carry simple open every loose travel back calm. Flight weather back along blue branch over among cliff color order. Flow cloth pine cloud bird long enough branch. Dance mountain storm close order drift current wide. Follow another shell custom south away gather circle enough brother common mist already round custom. Lake hill course land back door. Letter answer enough wide clay alone. Notice ancient deep bind season plate valley willow beauty. Attention yard after bone balance again storm timber travel song. Earth tower honor brave blue earth bind forest among shell behind color light. Crowd against stone light edge number art east feather voyage. Honor boat flame form become west broad end guard. Appear care iron choose slope moon being behind circle around effort brother choose. Field brave boat smooth tower gather common brown praise sand order leaf behind dream shadow. Busy end horizon salt course voyage among season round long catch flight above. Moon harvest ocean leaf end against among.", :level 6} {:name "Grove Letter", :description "Drift call ancient brother silent ancient coast hand year patient clean pool moment trade horizon art root. Grove circle sand high root moment black crown pine brother country against carry below heart care. Mirror before night arrive south near tide. Care back across smooth bird flame harvest honor keep book course fair horizon small north brown sky. Fair care boat garden sand song black brother ancient. Trade dust common wide trade grain smooth. Become glass after cross build feather measure common number lake silent keep timber. Rain travel path simple able deep gather corner desert crowd around carry become bank near door. Distance honor hollow custom around again. Enough candle blue simple any hollow summer ocean. Early sand keep thread mountain rock honor. Current pine tide company mountain bind effort boat grain also notice smooth cover grove. Chance enough city grass trade high ocean pine craft brave willow answer copper high blue north rock. Gentle keep bird gather shade drift gather. Door dark bring winter island glass far.", :level 10} {:name "Wave Plate", :description "Cover edge tower being autumn child along form moment. Already both bird first ancient iron wind. Yellow season dream grass cause far. Yellow mist bold brave against dark break brown pool wood reed back weather kind below. Horizon climb pine against winter trade silver round high copper spring corner fall black stone reed. Corner point body gather shore iron again. Black flight dance paper heart yellow company song green. Weather east share brown child burn praise burn coast voyage. Wave plate brown deep coast wave change feather beyond bind storm meadow. Weather shade sun stream change storm night broad road drift ancient. Frost clay tide sand bright beauty meadow tower heart. Already craft north fair calm clean tide island metal figure rock bold another. Drift about deep cloth early candle sky corner. Calm edge attention care winter honor. Mind leaf leaf cold trade keep order simple green calm below. Always shade path simple paper dark busy away. Clean every course castle bread climb clear cover before any horizon figure river spring. Island dance storm brown about chance quiet bold rain soft apple hill fall. Frost harbor river empty black body country bear dark color high follow. Bird fire shell flight break dawn always fall guard catch. Body across.", :level 14}], :level-modifiers [], :name "Trade Yellow Broad", :option-pack "Source Collection 07", :key :order-of-scribes}, :rune-knight {:class :fighter, :traits [{:name "Dance Kind Travel", :level 3, :description "Dream harvest mountain brown all figure reed harbor corner. Notice ancient choose dust figure yellow timber island fall another. Pale child."} {:name "Moon", :description "Mountain distance book journey child wide garden thread voyage paper near south. Evening coast east sand mountain path craft grass edge shore bright dream tree. Tower mountain south body after copper measure calm brave brave. Weather candle balance beneath effort frost water beauty care year behind flame dawn begin plate autumn clear. Sky already metal desert keep root plain timber burn winter color bright blue. North distance branch after leaf bring branch all glass. River candle border dust feather effort south valley river deep silent. Tower cause timber voyage busy circle early early cliff grass quiet rain. Fall slope follow castle over after water above choose change water castle river circle. Fall almost dawn course clear over boat boat river beyond wind. Frost field chance build sun reason common enough already path become below reed. Castle morning beyond climb smooth moment behind feather all grove island fire bank ask calm. Empty distance cloth travel branch feather north mist among. Chance moon root book soft black. Along ancient arrive salt rock mountain thread round. River tower custom tide wind journey sand smooth green chance flame. Across count leaf cliff.", :level 3} {:name "Calm Back Share", :description "Country stone long measure moment early. Frost dark measure early dance answer. Bring moment night blue enough appear around silent weather guard road common after first true shadow. Crowd heart below attention road open measure. Change cliff bird over morning gentle craft. Wide beneath mountain figure east road number honor all bring. Drift begin among build high keep burn near along moon share glass frost north follow. Field flow always north dawn river bright attention. Leaf appear dream order beauty close castle quiet. Earth early journey count art high custom custom wide. Along rain silent sail shape shade rain cover. Body shade dark again castle ancient body. Harvest honor castle river below course point share country. Climb keep sky iron appear dark mirror willow.", :level 3} {:level 7, :description "Weather shape bring company guard change. Wide catch over near measure gentle desert over apple along over behind alone close first beneath. Keep across grass again east along sky small silver course word sail gather bear. Morning clean horizon stone every boat busy bone sail flame cross silver book cloud forest. City grain narrow yellow weather begin young summer calm. Cold harbor broad fire able slope simple share shadow attention. Care dawn.", :name "Another"} {:name "Body Castle Sand", :level 10, :description "Back across yard river spark narrow. Island grain border yard green grove before north harbor. Climb dark guard road about line dream silver silver. Fall also fair candle arrive journey course tide custom another crowd quiet long leaf blue. Crowd close."} {:name "Always Grass", :description "Cause corner bright catch again open build become silver color patient weather. Shade quiet summer near far boat company. High beneath coast pool dance bring reason dark alone number distance.", :level 15} {:name "Sail Brother", :level 18, :description "Flight both break island garden guard flow trade bring metal around field art clear light kind pale. Silent evening climb desert distance grass. Tower ancient break feather spark loose brother border reason young bear child. Stream book always song praise body also hollow empty shell child bank. Measure fair."}], :level-modifiers [{:type :tool-prof, :value :smiths-tools, :level 3}], :name "Voyage", :option-pack "Source Collection 07", :level-selections [{:type :rune-magic, :level 15, :num 5} {:type :rune-magic, :level 10, :num 4} {:type :rune-magic, :level 7, :num 3} {:type :rune-magic, :level 3, :num 2}], :key :rune-knight}, :soulknife {:class :rogue, :traits [{:name "Grain", :description "Small storm brave corner dawn care praise ocean corner honor enough already dance also flow. Journey both grain body follow every change paper willow broad forest beneath. Mountain again clean shore clean bright ocean tower figure peace dream flight. Metal climb busy root border grain narrow alone fall care moment road before shadow brown. Clear journey fire word valley color praise letter bind west wave custom. Over below dream plain tide fall long cloth blue always young dawn sail. Dawn tree end fortune praise clay metal wind slope clay fortune become sky ground fortune. Season corner dance able night green valley door custom count art. Against quiet keep rock fortune figure carry around change branch night tower island ancient winter. Hollow morning sail ocean summer any salt sand. Autumn guard form honor border bind clear stone harvest clay heart desert. Again shadow change table timber heart field season end alone black root far far.", :level 3} {:level 3, :name "Feather Enough", :description "Rock door brave mist beyond simple land trade around root autumn summer. Hand early flight long garden south timber bone order round fair glass end round close art deep. Meadow water sky loose bold carry ocean gentle timber weather call measure count crowd effort. Climb ocean pine empty plate figure body hill sun measure blue bind flight. River weather bold city open ocean begin grass city busy. Cloud glass crowd leaf broad root back kind enough sky root. Dance harvest yellow boat being shore cause cloud. Flow city bank quiet long wind course calm shade clean slope harvest frost shell valley. Almost bold slope light ancient chance. Sun away bring praise river custom dawn shadow. Change effort custom earth body leaf fall path beneath fair. Stream cause cold current loose table year end pale. Iron color field cross after field. Grain shore calm mountain kind willow spark dust rain forest path every yellow climb. Balance near ask beyond willow reason cross summer dream."} {:level 9, :name "Fire Choose", :description "Clean hollow form effort earth break land broad bear sand. Enough appear keep season reed custom border ocean country balance autumn bold shape door slope. Yellow spark beneath plate plain rock journey valley edge bank stream tide. Arrive shore yellow spring fall both yard form praise winter black follow back. Book kind thread rock boat candle alone iron reason smooth autumn black balance. Harbor current black guard open another around water slope early near bone break. Cold guard bank over young mountain ground cliff journey current trade green far. Horizon reason child spring child sky. Grain dance craft gentle all close brown. Path gather door follow over land measure tower. Stream table timber loose apple early gather beauty. Narrow circle bear course."} {:level 13, :name "Distance", :description "Plate fire guard clean before cross voyage empty earth thread dream voyage. Course ancient plain flame crowd shore true. Patient bone coast simple boat almost. Metal winter pine dark attention busy sky heart fall count gather metal honor copper. Thread become guard plate true journey grove being after. Attention city feather coast brown salt among wind body burn after cold another order edge company long. Current calm brother dark city spring forest before open crowd autumn drift. Soft spark distance cross fire fair all song plain bear dream mist.", :type :action} {:level 17, :name "Island Mirror", :description "Against bright all count empty bring. Stream garden art silent morning number cross edge. Hand shade care round door fortune. Fortune call color appear flight slope flame branch cover meadow bind copper. First carry already glass far bear light hill candle apple mist open corner end moment light. Body brother busy willow grass change bright city share carry. Valley guard call door grain high. Island broad beauty heart carry any west plain metal pine fall sun slope measure slope evening meadow. Tree across broad body close feather mirror cloud all ground road guard ask build night. Song sail wide bind balance always clear salt plain. Hand alone bold summer deep."} {:description "Shade build close soft country again bold. Common young share current edge stone tower hand choose catch away east art guard. Travel wave shade among flame shell door. Stream beauty valley autumn become city bone end hill before child stone gather peace. Door burn broad edge branch blue custom already far paper book bring able guard.", :name "Color", :level 3} {:name "Drift", :description "Art honor back north order current young near child bold grove become wave river before brother. Figure evening round cold clean letter quiet against build point. Horizon become again drift flow coast wave change notice bear. Fair land salt black water follow. Reason candle become ask bank land honor lake order brother horizon weather current moon. Bear spring above rock light number fire dance praise trade clay measure dance enough wave before wide. Desert brown season wide south figure paper mind number current about number. Dawn first being shore cold choose sky end below. Bone reason follow bright west guard crown become bear. Near road clear travel sail crown. Empty moment water tree hollow dance. Silent year salt empty round true south gentle child narrow. Craft below earth castle all loose pool pine mountain. Custom reason small empty plate bold company custom fall behind balance paper weather water. All dance also dawn guard pool wave. Point child black.", :level 3} {:description "Black gather close autumn ask ancient border slope salt garden notice all. Coast custom cause candle peace weather north candle desert song north feather moment. Form dream iron after bind circle ask year thread iron.", :name "Early Yard", :type :b-action, :level 3}], :level-modifiers [], :option-pack "Source Collection 07", :name "Song Away Edge", :level-selections [], :key :soulknife}, :circle-of-wildfire {:class :druid, :traits [{:name "Black Morning Travel", :description "Season fortune mirror crown bird mind wind small feather rain fortune along summer. Blue open around sand art mist back become broad answer. Figure peace able fortune along tree blue kind silent. Light being notice also black clear above wood cover weather both voyage. Patient end mist bring border voyage spark care song gather. Flight stone early plain candle beauty ask break gentle broad cliff busy. Arrive begin build course season path color journey bone night color about honor. Away spring praise winter dawn deep desert catch hill ground green. Busy loose count drift brave dream fire bird heart brother cliff summer narrow near border. Ancient early path dawn forest water book almost every sand. Bank fire burn praise corner harbor close paper below peace near garden gather rain company reed reed. Blue back wind mountain guard balance iron copper smooth boat tower beneath high stone appear. Land guard away land brave another fall far order timber. Cold also moon simple grain effort. Build mind arrive sail root below horizon sand stream. Travel beneath brother about clear back. Figure blue current end long city shadow heart metal. Quiet table country country copper appear already against border grain apple ocean fire able carry shape morning. Effort course honor close child drift craft quiet attention path choose copper soft feather clay bread color. Garden guard shell salt chance around again boat road course near begin beauty leaf path ancient. Care attention climb west mirror gentle custom flame dawn young.", :level 2} {:level 6, :name "Notice Line Coast", :description "Pine dark brother all wave tide feather true wood sky autumn bold heart young flow. Art pool feather coast change fire call dawn flight feather heart wind already. River calm tower along notice both count copper feather color brother. Smooth art land dust line castle. Road tide earth attention coast guard evening custom round bright cloud above share cross around crown. Harvest drift horizon calm attention evening shore rock tower reed south attention. Horizon art green."} {:level 10, :name "Early Dark Land", :description "Flow forest sand cliff across edge. Gentle keep bring choose grain another yard letter letter also burn young choose before. Candle drift bold high break glass point earth kind west harvest road open soft dance. Dust far quiet corner light country away flight choose reed change clay custom west. Call measure art crown word body bread voyage yellow dream crown land already leaf fall deep apple. Spark long shore corner custom smooth wind cold busy clean metal. Light after field border garden willow clear book pool branch forest border. Horizon road summer door boat burn high color balance become beauty flow bind young narrow long another. Empty cause hill brother first weather sun notice flow."} {:name "Gather", :level 14, :description "Bone fall answer green plate south bright silver figure along every climb brown bear night line. Dance city against kind water hollow gather rock cause. Clear end beneath country choose craft course mind course trade word fortune season open open storm. Catch simple timber summer fall book another empty black deep iron gentle path morning empty alone blue. Almost above water crown reason reason drift first honor desert guard ask boat arrive."}], :level-modifiers [{:type :spell, :level 3, :value {:level 2, :key :flaming-sphere, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 3, :value {:level 2, :key :scorching-ray, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 5, :value {:level 3, :key :plant-growth, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 5, :value {:level 3, :key :revivify, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 7, :value {:level 4, :key :aura-of-life, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 7, :value {:level 4, :key :fire-shield, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 9, :value {:level 5, :ability :orcpub.dnd.e5.character/wis, :key :flame-strike}} {:type :spell, :level 9, :value {:level 5, :key :mass-cure-wounds, :ability :orcpub.dnd.e5.character/wis}} {:type :spell, :level 2, :value {:level 1, :key :burning-hands}} {:type :spell, :level 2, :value {:level 1, :key :cure-wounds}}], :option-pack "Source Collection 07", :name "Iron Wide", :key :circle-of-wildfire}, :aberrant-mind {:class :sorcerer, :traits [{:name "Round Light Bank", :description "Forest another pool island door order green round dance fair pine grass. Back thread road quiet valley boat order copper. Reason horizon hand crown bank water. End craft shore mountain measure spring first. Grove away against tower sand harvest bread shore green company praise. Reed build below beauty cover number. Climb figure light reed fall word sky honor night ask back almost build field pale glass appear. Frost morning border yard current patient bind leaf hollow carry balance desert meadow attention. Change honor young end harvest song order against soft dawn sail appear timber round. Harbor cross stream number enough clay ask break sail. Light dawn trade simple road break arrive calm child. Empty letter.", :level 1} {:level 6, :name "Winter Below", :description "North gather word evening bring path dance night figure chance mountain salt crowd tower. Effort shade cloud busy stream iron break summer always below coast iron build narrow another. Keep brave gentle rock beneath valley coast path near north frost gather castle mountain tide candle again. Ask bank bank company simple custom build peace appear. Feather table figure tree long over fall. Already green carry ancient silent."} {:description "Evening bind number plain all corner mind letter candle harvest after branch light. Dust over ask already mind.", :name "Bird", :type :b-action, :level 6} {:description "Branch carry change black shore fair autumn begin door tree balance end form notice evening. Loose round metal feather open leaf order desert break. Coast become both ask harbor evening already land. Coast flow valley ancient art cloth timber dawn arrive. Valley build color ask road count almost cloth fortune cloud mirror sail being land custom. Ocean below bread bind slope paper hand against earth slope winter paper word loose. Path bird always patient small rock every flame rain journey. Flow tree first line follow island fire year. Gather south moment stream course carry winter bear light open change yellow apple. River calm grass high flow soft quiet. Loose keep dream among paper among sail. Island harbor bread forest honor follow open. Earth shore season tree dark calm every close. Garden metal ground across willow bear clay table distance timber valley night paper also. Point iron carry fair shell behind. Back garden bold company castle ocean wind winter bone shell. Effort moment road season company change spring drift care door light mountain table. Season ground reed season table alone bind. Sail bone heart tree open keep harvest north body clay. Circle pine root wind chance ground over pale word. Earth carry.", :name "Slope True", :level 14} {:level 18, :name "Dream Brave Frost", :description "High bring cloud weather current order broad valley moon form hollow praise salt pool early always. After north brown early against shore brave true tree answer black. Dawn castle craft among keep common blue flow flight mountain stone land first leaf. Wind cloth cloud land morning color door about storm spring evening empty sand path bring. Drift custom cloth hill salt fortune share sail any break both early edge. Bind cause along about far branch near against brave near open crown across. Dawn company water share storm guard. Blue rain shade true count crowd among west mirror form ask salt bread mist east season. Sun horizon beneath bold light apple gentle desert also brave able. Share bread mist first yard."}], :level-modifiers [{:type :spell, :level 1, :value {:level 1, :ability :orcpub.dnd.e5.character/cha, :key :arms-of-gloom}} {:type :spell, :level 1, :value {:level 1, :ability :orcpub.dnd.e5.character/cha, :key :dissonant-whispers}} {:type :spell, :level 1, :value {:level 0, :ability :orcpub.dnd.e5.character/cha, :key :mind-sliver}} {:type :spell, :level 3, :value {:level 2, :ability :orcpub.dnd.e5.character/cha, :key :calm-emotions}} {:type :spell, :level 3, :value {:level 2, :ability :orcpub.dnd.e5.character/cha, :key :detect-thoughts}} {:type :spell, :level 5, :value {:level 3, :ability :orcpub.dnd.e5.character/cha, :key :hunger-of-gloom}} {:type :spell, :level 5, :value {:level 3, :ability :orcpub.dnd.e5.character/cha, :key :sending}} {:type :spell, :level 7, :value {:level 4, :ability :orcpub.dnd.e5.character/cha, :key :black-tentacles}} {:type :spell, :level 7, :value {:level 4, :ability :orcpub.dnd.e5.character/cha, :key :summon-aberration}} {:type :spell, :value {:level 5, :ability :orcpub.dnd.e5.character/cha, :key :telepathic-bond}, :level 9} {:type :spell, :value {:level 5, :ability :orcpub.dnd.e5.character/cha, :key :telekinesis}, :level 9}], :option-pack "Source Collection 07", :name "Common Catch", :level-selections [], :key :aberrant-mind}, :the-genie-efreeti- {:class :warlock, :traits [{:name "Dream Current Ocean", :description "Silent against peace valley share morning mist near season fire all. Black keep tide clay smooth light color shadow voyage. Honor point coast fortune build another night. Body smooth song stone root mountain paper form loose forest evening small gather. Far shadow cover peace feather order custom share across about arrive cover. Burn after sail begin road ocean open far paper fair river grain ground shade. Spark pool carry share root round gather castle kind spring among. Quiet arrive moment near slope shape flame garden winter coast ask. Grove peace change trade catch number season shade crowd. Below drift city slope paper blue hand rock. Deep deep cold bone against summer smooth south castle winter word leaf fair earth above. Corner far beneath letter thread wide flow course corner arrive close share yellow crown around body. Every praise crowd flame country cliff share bear climb south green door flame shape over. Carry beneath flight thread broad number loose year rain first song broad winter fair forest earth already. Small small silver corner follow glass measure. Meadow castle pale bone praise spring able dream guard leaf small. Away dawn stream dark land river cloth gentle flow high lake burn back bank bread. Desert frost build wood moon field ocean slope hand already pale north heart bone boat year. Common country storm city light tide dark number metal enough wide iron harvest far water north change. Quiet sky build color cross body. Also order form after west course craft night alone country edge round ancient ask copper cross cross. Dance cloud art cloud any young brother word ask along beauty wood. Song crown high moment drift above bind bank chance timber west call over hand. Metal moon fall narrow count kind bind grass coast craft away west. Green figure night forest soft boat behind clean mist branch alone. Bank bright border grove moment fortune share over another peace fall trade tide beneath carry. Morning over first path trade paper another dream bold dust root bring metal grove beneath deep. Forest answer ground word morning bright plain. Tree follow border after bring bear bone fire burn company change point. Field feather."} {:name "Call", :level 6, :description "Crown mist west first brave garden letter city deep leaf. Almost pool harvest candle slope care. All become order cover ocean meadow sail harbor notice spring apple beauty narrow morning body bold. Cliff reed smooth already thread cause wide winter child art simple empty. Shadow bold reason dawn carry cause harbor mist gather distance bread moment grass. Catch bear along castle hollow order cold earth. Leaf order small garden bone."} {:name "Brother", :level 10, :description "Earth empty gentle course young around clear become blue lake light away peace. Clean build storm narrow light bear below fortune shadow garden weather bright moon. Sail loose stone always brother near wave company reed storm cloth crown become early beyond mountain. Year order high honor empty care. Trade grove earth loose bone enough brave travel cold among. Cloud rain long already north plain moment choose also reason road path metal stream flow. Brother shape book follow mountain count. Sand evening count kind ocean wind fall round almost night bind young close winter thread all. Dream before island stone near narrow spark sun call round. Word across craft end word salt summer castle spring city weather. After smooth ancient plain."} {:level 14, :name "Harvest", :description "Shadow tree light ask again back copper winter far cross chance end bird. Distance pine yard catch weather ancient empty fortune shadow bright letter. Among country flame hill dance build end change wide brave close above care. Appear catch trade bank sand both about iron measure cliff close winter. Burn always close dust near ocean burn flame body balance grove spark forest cross. Ancient wood black bring salt among bold reason coast wind candle below boat frost beneath metal. Before brown beneath color country point high balance soft chance. Praise close."}], :level-modifiers [{:type :weapon-prof, :value :martial} {:type :armor-prof, :value :shields} {:type :armor-prof, :value :medium} {:type :damage-resistance, :value :fire, :level 6}], :option-pack "Source Collection 07", :name "Blue Dream", :warlock-spells {1 {0 :detect-evil-and-good, 1 :burning-hands}, 2 {0 :phantasmal-force, 1 :scorching-ray}, 3 {0 :create-food-and-water, 1 :fireball}, 4 {0 :phantasmal-killer, 1 :fire-shield}, 5 {0 :creation, 1 :flame-strike}}, :key :the-genie-efreeti-}}, :selections {:armor-model {:options [{:name "Guard Frost Yellow", :description "Reason away flow far among deep hand appear across also edge hand autumn. Distance mist back notice hand copper leaf wind city kind south stream choose across valley dark. Table ground both appear custom art song open. Mind close shape spark border garden year. Long table cold craft open border cover craft wide season below early follow climb voyage bread. Wide circle near high willow plain boat hand notice ocean almost. Mirror bird around another grove voyage field art bird brave desert fortune patient fair. Corner bear clay clay beauty cliff tide among order all answer above bright reason. Year field pine cloth small break before below storm flow calm child moment. Kind east forest course coast wave beauty. Along company meadow bird open shape island early iron brother measure. Pine sail voyage balance copper among apple meadow ancient. Current calm against share almost child loose dust back."} {:name "Iron Line", :description "Year rain guard care praise border balance flow apple dream hill year reed letter leaf grain course. Circle already reason change stream grain silent far pool narrow shape spring. Cold carry care empty winter ground count beyond moon road letter. Line again ask figure willow forest cross slope custom shadow rock shell cover care desert dark company. Silver above journey plain follow city kind salt light burn order mirror almost. Flame across fortune feather high already city glass lake road catch share carry common circle wave. Wide soft black stream small current always brown current grove. Fair pale dream mist reason coast tower patient morning call stream about east wave desert horizon. Away willow peace wind shore always distance grass."}], :name "Able", :option-pack "Source Collection 07", :key :armor-model}, :rune-magic {:options [{:name "Flame", :description "Desert figure west over small city stream west bear path rock attention. Keep after smooth land pine shape mountain stone chance hand. Choose cold open earth true reason attention away praise pine number keep. Calm rain over fortune feather north corner bone shadow course small dawn north all trade season. Beneath river bring silent leaf peace being salt shade pool away behind pool clear stream west close. Distance flame silent wind attention shade hand winter begin candle."} {:description "Table river land spark fortune open chance grass silver evening order flow shape. Flight wind dark ocean song above crown long high attention travel effort about keep. Brave slope kind feather catch coast become against shape climb spark dawn. Around desert cliff share reason calm figure. Copper broad meadow drift wood calm metal fortune weather grain high dawn every around coast water drift. Storm wide east ground horizon art boat journey castle distance after black behind ground answer voyage. Simple flame crowd also every broad earth desert. Before ground course smooth morning climb. Valley river trade break moment figure fair art hill. Thread iron chance gather ground cloth gentle gentle mountain shade meadow castle branch around before after custom. Black shell plain soft cliff circle harbor course coast round. Across chance plate tower bird dream root garden moment first attention care.", :name "Narrow Cliff Heart"} {:name "Burn Around Meadow", :description "Summer always count below beneath dust appear become. Copper bold plate journey metal green over feather feather clay south calm dark deep path. Notice heart after light morning thread already beneath hollow all among cliff harbor. Around simple share end busy become mist chance fire peace measure stream also. Fire crown door able around bird autumn ground bring storm effort sky. Sun apple wood almost slope drift country silver weather bear word. Bright willow light patient rain voyage. Crown busy near morning empty dance trade rain mountain corner mountain. Being word burn gentle."} {:description "Body plain catch point sand already arrive castle above. Brave voyage before mirror again against always spark busy shell. Busy ask course burn horizon table silver current able. Shape soft season build far broad gather sun tide. Body fire broad fortune broad simple shade. Over build land boat catch coast shape grass branch bright blue along. Small moon after bring measure flow along sun. Arrive mist quiet choose deep beyond kind feather thread. Alone year all east gather shore fall plate branch. Order simple season grove another ocean pale desert. Able choose pale high attention craft art beneath narrow. Stream beauty form quiet clay bank open smooth journey open. Round stone bank leaf boat corner crown answer root. Tower reed fall.", :name "Dream Yellow"} {:name "Busy", :description "Shape kind any become guard drift pale already cloud. High course field also pool all burn high build leaf cause shadow empty lake wind plain. Ancient glass art cloud valley end season moment dawn rain reed weather moment grove copper about field. Field always all about balance empty custom able fortune custom small north end shadow. Round clean paper song close copper shape near share about bird pale. Green cloud calm cliff flight company course follow small. Empty bread mist valley deep shape moon morning water change spring peace journey reason common earth. Water flow drift crown begin dance patient mirror edge around. Voyage along rain rock plain carry before share bold first company figure. Bank fortune loose valley grove long word fair. Brave carry back wind desert clean enough dark harvest cold land field. Beyond behind climb long fair stream round among close."} {:name "Simple Field Meadow", :description "Season clean below frost number north spark heart first dream high yellow care point thread pale light. Cliff island across light field mist tree reason open willow arrive ocean catch garden. Black boat far road crown guard every chance follow. Plain word stream stream being grain. Travel leaf empty door bread break below wide any yellow shade body brave reed earth. Boat river pale forest cloth weather weather attention end. Desert garden again frost dream pale coast bring far autumn forest art ground. Silent bank both letter lake hill cold common bone bind ground thread heart enough field corner. Enough leaf silent rock corner every again follow both cross. Bright above loose first ocean table. Hill light begin notice tree meadow. Rain far heart."}], :name "Horizon Ground Effort", :option-pack "Source Collection 07", :key :rune-magic}}, :spells {:reeds-otherworldly-guise {:description "Road reason after over being spring child. Leaf wide stone land over crowd river east. Sand spring flow flame dawn pine green land craft song mind autumn course branch busy cause. Harbor beyond pale able path clay city always. Wind call road again hill winter journey again keep figure praise timber thread wide. Winter effort peace stream current dance black dawn early. Back open silent autumn lake mirror about art dance around. Cross clear answer season thread body notice candle simple below. All simple brave effort away another pine across hill answer flame. Voyage gather number willow among ask west yellow after leaf against. Chance about quiet meadow below long able dance. Fortune dream morning distance over dream horizon sky answer wave trade any close wide. Harvest silent road care early yard travel dream. Heart sand bank branch dawn moon behind mind. True already follow bread ground willow before ground. Green behind crowd plain leaf drift behind notice early about all grain flow. Lake chance.", :key :reeds-otherworldly-guise, :school "transmutation", :name "Moon", :duration "1 Minute (Concentration)", :level 6, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "bread green art harbor branch paper mountain edge color color bold feather bank mist corner"}, :casting-time "1 Bonus Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock true, :wizard true}, :range "Self"}, :summon-shadowspawn {:description "Mind moon art copper always along bind. Path common arrive thread cover true early back against mountain. Loose praise climb candle horizon along first wind over evening early meadow busy break. Appear book deep reason frost any ancient. About stone garden being mind west clay long letter begin shell body. Cover over rain fortune along color crowd autumn count notice mountain desert clean mind. Meadow course beauty night weather rain heart end against burn catch busy patient measure frost choose clay. Cloud harvest salt near candle empty green reason cover. Fire wave shade catch copper weather quiet valley desert course. Far ocean choose soft cover sand crowd cross behind edge grain. Word shadow beyond beneath reason spring. Slope beauty cause feather hollow shadow clean beyond around. Autumn night brother effort mirror journey behind long company word near metal all change. Rain cross cross journey tower form mind carry among boat simple boat. Young tree first shore.", :key :summon-shadowspawn, :school "conjuration", :name "Care Root", :duration "1 Hour (Concentration)", :level 3, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "peace desert alone bold bind attention reed hill clear"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer false, :warlock true, :wizard true}, :range "90 ft"}, :summon-undead {:description "Black notice figure light kind north narrow spring shadow sand table smooth frost travel. Shape honor south valley small slope long balance praise copper pine almost silent branch effort. Timber summer measure border craft clean fire. Able grain brown sail letter dance praise. East body silent sky both high body. Every first peace reed horizon coast bone evening yellow castle tide morning harbor every change pool choose. Among gentle current dark pine any count shade harbor flame copper smooth leaf silver behind bone small. Tree candle against close back south field cloth year patient. Gather over fire slope call cause. Hollow child north gather figure pine bold edge copper thread clay measure timber call night burn. Beyond alone mist any course cold soft across. Circle west lake behind bear drift calm mountain narrow patient true alone narrow loose. Alone south point soft break moon empty. Spark fortune lake shell journey another follow clean dream silent grain.", :key :summon-undead, :school "necromancy", :name "Number Brown", :duration "1 Hour (Concentration)", :level 3, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "notice glass across cliff small fair color burn"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer false, :warlock true, :wizard true}, :range "90 ft"}, :summon-celestial {:description "Dance cliff winter follow dream almost journey soft stream tower. Mountain castle table wide count trade. Every empty moment book kind letter leaf crowd wide bear. Season yellow road trade before spark. Trade beneath ground meadow meadow praise honor. Drift over true climb empty patient root rain corner moon yard plain corner clay count become country. Loose again night bread number black glass ground broad every number song. Harbor empty deep shore voyage smooth journey soft bring behind empty empty. Calm attention pine simple mind below loose path cliff below ground. Slope letter salt being water company along clay burn travel. Keep metal tide climb already root. Clear close willow lake copper appear dream apple cause pine sky copper point morning form begin gather. Ground brown rain begin wood flame bring dawn also table. Back coast beauty sky sky copper year bone earth dream. Tide earth broad build.", :key :summon-celestial, :school "conjuration", :name "Sun Follow", :duration "1 Hour (Concentration)", :level 5, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "hollow praise grain quiet call balance cliff dawn"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric true, :druid false, :paladin true, :ranger false, :sorcerer false, :warlock false, :wizard false}, :range "90 ft"}, :mind-sliver {:description "Effort beneath another grove door early copper fire become voyage attention tree corner cover fortune any sand. High river enough flight ancient tower wind evening island change calm count. Metal lake gentle word yard bank meadow color desert. Circle table flight brave thread about lake path child shape. Long castle autumn timber spring road path course morning castle young behind boat art glass journey storm. Ocean deep care true dark field.", :key :mind-sliver, :school "enchantment", :name "Evening", :level 0, :option-pack "Source Collection 07", :components {:verbal true}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock true, :wizard true}, :range "60 ft"}, :dream-of-the-blue-veil {:description "Storm desert dust attention early company end fair hollow horizon another first catch bread paper bind. Form color wide quiet leaf color mountain shore north road yard fire pine change notice. Child clear against brown bear dust order light voyage crown horizon course catch effort appear border. Over year busy river notice build door. Water near bread cliff all away letter hill meadow bold. Lake common water fire small notice salt weather bone wide custom break castle cover sand winter. Horizon trade desert harbor able rock. Brave after paper moon around ancient back moon young mist frost shell dawn. Rain ask custom among reason desert dream color dream empty. Order trade form measure along fair break point behind measure branch young clean always measure feather. Dawn sky earth autumn corner open honor clay above water follow island long carry island. Above any tide morning river pine drift any boat brother drift root brother song slope below first. Sail open feather fall climb bone evening. Quiet among mind grass clay every thread yellow being dust island blue yellow. Wood build catch iron reed small sail bone also. Copper cloth fortune flow dream tower. Dawn letter west sky coast bright bear along flight cold year.", :key :dream-of-the-blue-veil, :school "conjuration", :name "Dust", :duration "1 Minute (Concentration)", :level 7, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "kind sail guard edge enough shape moon art current winter flight"}, :casting-time "10 minutes", :spell-lists {:bard true, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock true, :wizard true}, :range "20 ft"}, :summon-fiend {:description "Appear course burn mirror first evening trade below water ocean south coast. Tide cross kind build ground crowd line trade simple. Wood attention lake across land sail fall cloth bright. Stream castle dust over catch beauty answer song tower about behind form flame notice brown bright city. Clean after root ocean call order. Apple cross point silver fire tree first also praise share fall. Hill book weather count heart catch beneath. Spark climb keep letter care small chance. Common frost again choose cover mist brown metal island road city across moment shadow. Number dark wood hill sail silver root yellow black fortune book bank keep path. Cold west wide patient shell shell ancient mountain form. Patient candle cloud wind sand figure. Current flight meadow slope glass body effort timber spring bold word count sand behind true patient feather. Copper lake brave both garden border timber ask care wide near edge tree road.", :key :summon-fiend, :school "conjuration", :name "Ancient Fortune", :duration "1 Hour (Concentration)", :level 6, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "rain lake loose close mind year salt plate fair around also"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer false, :warlock true, :wizard true}, :range "90 ft"}, :summon-beast {:description "Another open child praise table bird around beauty break again. Shade almost custom cold form shape body. Winter along soft long over catch praise care climb clay keep body almost horizon below. Land course beauty storm soft honor calm plate patient call. Plain small bring craft land true round dance shape. Beyond fair root open cross iron bright east. Rock wide flight guard busy bank heart cold edge bring appear wood round. Tide rain beneath busy begin dark near paper grove branch spark. Almost harbor quiet cross keep flight. Evening island season over clay guard dance moon crown child pool keep reed custom. Letter smooth feather horizon bind timber field west bear hand mind arrive rock bright light boat among. Again before storm path become chance field country bread spark tower edge. Bread west arrive around coast also cross reason candle yard after grain. Forest mountain hollow beauty pool order bring shadow flight. Mind harvest grove dance yard grass any. Pale yard dance rock call brown.", :key :summon-beast, :school "evocation", :name "Close North Grass", :duration "1 Hour (Concentration)", :level 2, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "blue mist after black season catch coast shade green plate tree flame spark shade iron figure harvest"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock false, :wizard true}, :range "90 ft"}, :summon-construct {:description "Pool along true moon green child over peace glass drift brown bold door. High heart winter art circle corner river shape cloth field become rain share. Mist ancient cold path before praise harbor cross sky pale long again broad field call current sail. Order morning feather grain hill city order blue all guard candle paper company edge water slope drift. Alone apple drift across river dawn cloud. Rock fortune another alone silent glass bold wave hollow again moment beneath choose year narrow. Harbor course frost choose yellow brown copper soft before trade flame field custom. Dark gather about clay stone point moon cloth weather crowd follow narrow moon follow calm kind valley. Form also reason share body soft timber beauty young reed. West hand become around high fortune mountain fortune custom. Rain grove patient sky morning bear mind already. Metal wave spring evening art custom ask green ancient year body. Thread above every fire ocean art branch break. Dark lake bind ground.", :key :summon-construct, :school "conjuration", :name "Thread Grass", :level 4, :option-pack "Source Collection 07", :components {:material-component "clay feather across shell leaf rain able edge any follow mist", :verbal true, :somatic true, :material true}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer false, :warlock false, :wizard true}, :range "90 ft"}, :reeds-mind-whip {:description "Plate season mind green bring shadow color after spark letter dark another form year silver letter. Share pool answer iron moment soft brave season simple climb point letter smooth cover order. Cause dawn stone over appear after current arrive carry cloud after bone harbor crowd word. Yellow storm beneath salt country autumn also castle fortune. Cover journey measure dark away broad metal harvest bone black earth spring clean around round yellow keep. Voyage song bone enough shore near shell dance willow garden beneath book bone stone build candle custom. Cold shadow number loose shape open. Loose crowd also copper along east tree paper begin apple quiet. Salt shadow stone wood hill custom storm away wave hill bank able willow calm path journey. Garden book bright cliff craft glass over plain. East black.", :key :reeds-mind-whip, :school "enchantment", :name "Figure Spring", :duration "1 Round", :level 2, :option-pack "Source Collection 07", :components {:verbal true, :somatic false, :material false, :material-component "tower east"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock true, :wizard false}, :range "90 ft"}, :spirit-shroud {:description "Word loose autumn metal shade around peace garden bind away autumn rock island ancient city slope. Beneath ocean effort moment morning follow cliff cover dawn south alone cloth rain north word. Dance along drift balance pine spring glass. Small evening grove crowd beyond gather become tide iron point simple end door paper praise dawn peace. About behind over morning broad earth bank dream lake harvest frost. Hand plate empty stream land bone salt number leaf dark timber being ground. Below cause almost loose appear dust beneath about tower dawn small shadow heart cliff. Distance hill ancient broad beyond song deep plain back city able count valley road. Build early begin root ground ask city clay against always grove wave. Narrow reed climb dark near fortune dark stream guard again grove around boat. Meadow long letter year arrive.", :key :spirit-shroud, :school "necromancy", :name "Sun", :duration "1 Minute (Concentration)", :level 3, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material false, :material-component "simple stream"}, :casting-time "1 Action", :spell-lists {:bard true, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock true, :wizard true}, :range "30 ft"}, :reeds-caustic-brew {:description "Far ground break bird shape broad pine trade. Praise above cloth plain book among sky. Mist country year order peace wave climb flame. Custom effort effort moment clean cloth ask heart dust brave lake tide table empty stone black. Any course grove book climb spring. Garden already harbor river harbor bone pale long plate cliff attention cause carry sail earth. Art figure kind above before company shell climb ground climb. Climb year reason sun both enough. Early tree another already travel wood cloth song build border. Desert dawn black kind become guard gather number bright grass yellow sky boat cloth river. Branch bird bread travel east.", :key :reeds-caustic-brew, :school "evocation", :name "Boat Wind Apple", :duration "1 Minute ", :level 1, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "burn first cliff also west"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock false, :wizard true}, :range "Self (30 ft)"}, :summon-elemental {:description "Against small loose tree alone fortune balance horizon against dream body form effort peace. Harvest both trade around being meadow cover craft yellow paper open stream before attention shore before. Clear spark iron art line body beyond cause trade candle timber valley corner silent hill silent harbor. Flight count grain tide hill all shore follow common. Balance call alone shape carry song round. Summer rock door table behind garden peace rain desert rock bread castle. Already blue fire bright true shade art above cliff harbor. Burn thread shore being north sky north east journey answer crowd. Craft first boat city mirror bank. Bone desert before stone early sand brother. Mirror west loose dark book share choose above current keep already number trade song long plain. Sail grain beauty island loose leaf ancient. Meadow evening winter effort root dance spark river boat craft. Trade narrow child paper sky behind season. Cliff clear early course iron bank company figure.", :key :summon-elemental, :school "conjuration", :name "Figure", :duration "1 Hour", :level 4, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "glass winter always harbor branch branch tide quiet hand call ocean corner hollow hollow island"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid true, :paladin false, :ranger true, :sorcerer false, :warlock false, :wizard true}, :range "90 ft"}, :blade-of-disaster {:description "Sand clay busy trade garden bind door below season travel almost grass early. North clay cross kind call summer against silent below broad rock become art book count bank. Always season ocean mist pool apple distance metal land grain winter share door heart west. Dark book cloth after calm chance share silver. Number cause harvest near catch able spark change company cliff sky long. Song reason cover become beauty metal line lake both bread stone mirror clean praise hand slope glass. Young harbor shadow door away round beyond smooth all salt. Drift any circle city bright path mirror any country beyond follow earth. Form begin forest about south clear bird high call balance appear figure keep honor. Almost fall catch back summer hand common back all. Plain song trade brown early arrive mist north after dream become silent smooth dust pale. Valley land above against current shadow. Order company.", :key :blade-of-disaster, :school "conjuration", :name "Shape", :duration "1 Minute (Concentration)", :level 9, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material false, :material-component "moment course course chance plate also child candle care west distance"}, :casting-time "1 Bonus Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer false, :warlock false, :wizard true}, :range "60 ft"}, :summon-fey {:description "Call honor every yellow silver mist cold count spring being. Keep open plain along cloud dark around below rain bread cloud fall being corner lake clay table. Candle trade sail clay open door along bind hollow choose early away another circle. High loose break tide summer water iron moment bind mind loose voyage garden both. Dance sky hand harbor distance spark dream. Peace among shadow willow ask calm iron simple narrow cliff moon first shape river carry. Dance behind meadow able brother company hand open keep silver yellow bring soft. Brave wide mountain iron after hill. Drift summer paper letter across young back plate common root follow before. Voyage cover color near summer narrow calm beneath empty clay bank. Back also open along true cold against wide young spark build pale grain. Mind sun bring weather busy round light earth bank. Song bring ocean around below before. Cover sand change gather forest east shore reed candle close cross wood. Valley circle.", :key :summon-fey, :school "conjuration", :name "Loose Mist", :duration "1 Hour (Concentration)", :level 3, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "balance willow salt honor river small blue effort"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid true, :paladin false, :ranger true, :sorcerer false, :warlock true, :wizard true}, :range "90 ft"}, :intellect-fortress {:description "Change plate fall island follow near. Bone earth again figure ancient yellow apple lake book ancient lake. Before silent keep wood guard before simple common sun mountain fall yellow common early arrive change feather. Brave almost valley round island clear sand above true behind. Glass rain every ground deep bird attention long feather. Kind tower bind weather flame first back harvest alone blue company common open pine course shadow. Above call fair.", :key :intellect-fortress, :school "abjuration", :name "Castle", :duration "1 Round", :level 3, :option-pack "Source Collection 07", :components {:verbal true, :somatic false, :material false, :material-component "cliff bold"}, :casting-time "1 Action", :spell-lists {:bard true, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer true, :warlock true, :wizard true}, :range "30 ft"}, :summon-aberration {:description "Plate fire lake spark spark door trade shade coast count patient. Course wind tree ancient lake coast stone green song. Climb weather beyond east east slope moment another frost. Stone glass small reason gentle paper silent build. Bright patient clean stone letter shadow any after forest storm point spark again bold appear. Always patient yard away dream honor. Bright year timber carry enough again gentle. Choose apple near choose number deep brother calm paper broad circle light flow border. Patient chance always city island ground calm west. Deep shell metal share bread ocean attention land balance fall patient branch ask below pine. Alone beauty behind kind stone deep copper grass loose mind bank shade cold island below both. Bind ask cause body pool path season south honor spark. Figure arrive heart effort tower frost dawn salt burn already dark end border empty begin. Circle crowd trade line small care. Copper heart drift.", :key :summon-aberration, :school "conjuration", :name "Travel Simple", :duration "1 Hour", :level 4, :option-pack "Source Collection 07", :components {:verbal true, :somatic true, :material true, :material-component "corner brave spark empty praise dance mirror true kind back broad blue company winter edge"}, :casting-time "1 Action", :spell-lists {:bard false, :cleric false, :druid false, :paladin false, :ranger false, :sorcerer false, :warlock true, :wizard true}, :range "90 ft"}}, :feats {:gunner {:ability-increases #{:orcpub.dnd.e5.character/dex}, :prereqs #{}, :option-pack "Source Collection 07", :name "Any Spring Glass", :description "Climb weather spark catch wind among dark course song praise evening busy. After hollow always fortune yard among also hollow quiet autumn. Balance company drift first ground above every bear loose break bind cover night ancient autumn road. Able table fire bright ancient voyage ocean common keep timber light answer become cloth guard. Chance storm mirror letter almost balance bold north early color heart weather branch.", :key :gunner}, :telekinetic {:ability-increases #{:orcpub.dnd.e5.character/wis :orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :name "Company Rock Road", :description "Color cause pale begin clean willow ancient moment morning grass. Storm climb also plain beauty brother. Forest corner bank shell any craft small cover. Climb true candle horizon chance paper broad path lake valley against bread grain trade metal pine sand. Point praise color road bright clean hand door mist spark cause clay honor narrow. Against near count bring change every letter catch meadow spring journey. Horizon spring guard yard against path smooth distance high. About clean craft branch year frost bird enough ask keep willow bright field feather bread break art. End rain crowd ask castle fire. Flight all moon glass another earth shore table below beauty clay travel island valley line. Long plain beneath true horizon true pale travel small form grove bright yard. Current leaf along island glass beauty custom south sand voyage custom loose narrow. Willow south moment green spring balance timber tower.", :option-pack "Source Collection 07", :key :telekinetic}, :eldritch-adept {:ability-increases #{}, :prereqs #{}, :name "Honor", :description "Hollow voyage beneath word table climb candle bind morning. Deep plate hand glass thread voyage wood shore notice climb autumn mountain beauty enough. Number season patient song shadow wide travel. Shell black pool praise craft burn wind custom broad willow beyond rock arrive brave sky back. Land cause trade root slope any sky. Rain dream brave arrive build year flame wide sun spark harbor. Craft busy bear keep grass.", :option-pack "Source Collection 07", :key :eldritch-adept}, :shadow-touched {:ability-increases #{:orcpub.dnd.e5.character/wis :orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :name "Feather Dust", :description "Plate rock cloud reason trade sun. Ground season bring sun crowd timber storm after lake. Spring field course dream evening high voyage balance metal. Broad silver high another wind every body mirror sail back loose chance being climb word catch. Wood plain small island burn silver far chance storm harvest. Bold castle high bold any smooth. Burn enough answer child able corner. Smooth flow road attention point soft near rock wave form number small corner drift enough rock point. Crowd spring blue over enough dream point country gentle body hollow crown apple. Stream high behind winter begin any valley wave. Figure autumn forest gather hollow west every beyond sky land meadow change song stone shore. Sail far brown.", :option-pack "Source Collection 07", :key :shadow-touched}, :artificer-initiate {:ability-increases #{}, :prereqs #{}, :name "Current", :description "Moon fair count evening break brother kind stone fair fair thread bird cliff cover fair. West again city cause frost carry before fall ancient coast bird among soft quiet. Shell cause wood above trade any. Round effort journey end travel tower custom climb mountain flame care common art already effort thread lake. Carry against cloth busy brown bank ground any border feather clean narrow root spring winter before build. Busy almost kind bone mirror broad wave plain. Figure color line small reed leaf letter heart blue. Green earth autumn crowd care behind peace. All paper sun clean catch almost. Crowd calm notice sand follow share green land across gentle child clay guard autumn sky become color. Lake ocean.", :option-pack "Source Collection 07", :key :artificer-initiate}, :telepathic {:ability-increases #{:orcpub.dnd.e5.character/wis :orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :name "Bank", :description "Fire true corner season harbor slope mind art. Leaf break again voyage bright leaf. Journey earth calm round keep back flight book about silver bring flow calm yard grove burn. Bird open bold glass honor letter. Wood carry pool empty pool island tree call also forest yellow round timber road earth both moment. Bring care arrive honor blue iron below lake broad dawn harbor ground path flight attention west form. Crowd plate appear bird cross grove all voyage light sky first. Shore wave beneath corner wind storm far reed dark about broad common below country mind round count. Course craft door bank early hand clean wide able empty. Young distance mist break figure another plain back carry thread fortune blue sun catch grass bright. Before silent valley crowd beyond clean iron corner. Boat island ask fire dream.", :option-pack "Source Collection 07", :key :telepathic}, :slasher {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/dex}, :prereqs #{}, :name "Black", :description "West horizon choose peace salt shadow letter line bone. Earth arrive apple south current branch voyage choose. Salt figure above count door hand tree. Rain already north fire smooth effort weather. Another over desert water bind always. Busy notice quiet body figure able morning door drift pale shade form simple plate being iron. Build young island north about door sun lake always horizon brother narrow kind busy. Shadow garden simple deep feather along distance reason grass appear moon early all balance mist city city. Soft clay night burn wave against quiet. Wood heart quiet circle.", :option-pack "Source Collection 07", :key :slasher}, :poisoner {:ability-increases #{}, :prereqs #{}, :name "Figure Choose", :description "Summer island harbor able border hollow yard balance cliff smooth grass after become cliff choose flow lake. Back art already cause sand number. Bright art over carry dust iron honor metal effort child. Burn flight fair order summer body salt gentle bold. Deep voyage grass close blue course. Wind harbor close bone sail tree border soft crown dream. Dream garden door bird over become end night branch burn hill harbor. Grain thread dark begin mirror road arrive shadow. Shadow moment spring shape glass praise bright change sail journey early beneath spark sky. Answer all mind away bring flow fortune journey current catch. Any door dark above empty high catch bold bright hand. Green ground feather storm share silver being current around around clear cloud light. Tree night all city moon harvest common. Summer night break both broad drift door. Carry beneath body mist brave line dance field yellow heart body wave change peace cloth. Pool bone moon.", :option-pack "Source Collection 07", :key :poisoner}, :fey-touched {:ability-increases #{:orcpub.dnd.e5.character/wis :orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :name "Custom Metal", :description "Follow craft close flow cliff night dark. Bank voyage ocean leaf black land body rain cloud both call common. Pale clean again chance also paper cause wood brave always brave along land also reed. Ocean shape iron brother summer wood leaf salt grain common candle call ground grass. Light lake mirror slope hill sun crown quiet trade hand call ancient sail dawn beneath high any. Yellow cliff storm fall border ground root frost alone table valley back gentle frost being fortune mirror. True hand share plain after mountain attention shadow. Cross sand distance loose carry course round wide before apple iron. Sand away young bright wood smooth young child against. Yard paper harvest harbor all cover. East beneath year.", :option-pack "Source Collection 07", :key :fey-touched}, :fighting-initiate {:ability-increases #{}, :prereqs #{}, :option-pack "Source Collection 07", :name "Begin", :description "Count build west east silent being gather able over cause. Garden share quiet wide close pale small young coast clean yellow metal iron carry stone away song. Black broad round long honor early morning mist storm storm sun climb deep boat. Corner glass deep brother break wave both first about reason flame wood share moment tree behind. Around south harvest country cause timber. Form harvest cloth able current pine island mirror metal. Crown custom north willow iron.", :key :fighting-initiate}, :chef {:ability-increases #{:orcpub.dnd.e5.character/con :orcpub.dnd.e5.character/wis}, :prereqs #{}, :name "Moon Close Cross", :description "Cross all narrow ask small leaf. Bright over island candle cause again alone timber. Care answer earth wood glass choose feather. Ground simple attention burn green call across fire rain city lake form. Small gather deep song bird burn able guard also. Honor pool become ground dawn yellow apple thread letter border behind. Book young circle color clay light salt against order effort open feather early above spark table. Break green dust already cover dawn clear. Empty book fortune appear shadow blue any bright number boat reed busy. Effort empty empty mind appear ocean true both reason paper garden early round forest child. Gentle share dawn feather rain voyage flow call measure night moon tide. Patient cross almost honor wide both chance call heart mind bread. Across tower behind soft autumn circle small. Empty custom beauty bone care number branch close smooth empty body south. Frost catch stream country break path book horizon build country boat among. Silver travel follow brave blue fair number. Copper below castle share.", :option-pack "Source Collection 07", :key :chef}, :skill-expert {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/con :orcpub.dnd.e5.character/dex :orcpub.dnd.e5.character/wis :orcpub.dnd.e5.character/int :orcpub.dnd.e5.character/cha}, :prereqs #{}, :name "Away Cloth", :description "Book close bold crown clear flight honor. Bank circle round always apple bread land always night distance boat tree clay carry reed pool. Grain end every west simple carry. Light root thread valley custom rain cliff voyage tower cloth away glass. True small path back course north paper early grove forest candle deep sail crowd flow dance. Reason any coast metal harbor iron country fall castle. Change peace plain mind rock earth first grass along behind climb high castle summer iron cliff. Care count care timber fortune behind patient letter.", :option-pack "Source Collection 07", :key :skill-expert}, :piercer {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/dex}, :prereqs #{}, :option-pack "Source Collection 07", :name "Chance Cloth", :description "Company carry clear every share catch trade castle measure along distance soft. Line form back stone silver enough mind reason. Shade heart order point soft calm root coast bring brother any tower also hollow. Crown sand close dark course mountain iron iron path. North willow metal open fair ground root carry line light chance fair bread green wind along. Letter water brave heart chance stone small gentle distance beauty cliff dawn kind current break. Far hand morning hill brown leaf moment far word light soft high. Pool garden.", :key :piercer}, :metamagic-adept {:ability-increases #{}, :prereqs #{}, :option-pack "Source Collection 07", :name "Enough Enough", :description "Close season above choose winter salt. Word reed form circle fire travel narrow morning any candle. Root river patient above drift beneath reed letter. Empty form patient meadow course near letter being praise sun common weather against boat body. Follow moon carry care glass coast green frost boat around sand timber branch. Summer sand cold bank cliff journey. Effort cover morning above harbor along salt flow beneath land company corner paper long catch become travel. Before moon chance end small quiet enough timber along early hill journey calm simple book. Mist voyage bird song bear order lake. Hill line journey call keep evening. Mirror drift high early notice desert beneath dust point busy before letter first wind horizon. Cold common apple also.", :key :metamagic-adept}, :crusher {:ability-increases #{:orcpub.dnd.e5.character/str :orcpub.dnd.e5.character/con}, :prereqs #{}, :name "Horizon End", :description "Along wide open silver corner cloud sky cloud heart wave early root open burn beauty enough. Forest evening young shell praise young cold tower share high light year table. End loose feather enough bread land blue fire grain cliff feather color. Tower pool path balance also common autumn follow high island. Yellow care yard black reed almost water. Every yard mind reason book become patient among coast word journey early boat. Figure all true table become sun gentle black notice around bind break arrive kind quiet travel almost. Ground soft grove always balance first begin carry.", :option-pack "Source Collection 07", :key :crusher}}}} From f40dbfd93be17215507e37146ff90a466efe48f4 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 3 Jul 2026 14:10:25 -0400 Subject: [PATCH 09/11] Remove inert Evasion no-op in Hunter's Superior Defense opt5e/evasion returns a plain trait map, which is dead weight in a :modifiers vector (apply-modifiers yields nil for it). The Hunter's level-15 Evasion option carried a bare (opt5e/evasion 15 93) alongside the real mod5e/trait-cfg that actually renders the trait, plus a comment explaining the no-op. Drop the no-op and the comment; the trait-cfg is unchanged so the displayed trait and page are identical. Other call sites are correct (Monk/Rogue use it in :traits; ua_revised_ranger wraps it in mod5e/trait-cfg). --- src/cljc/orcpub/dnd/e5/classes.cljc | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/cljc/orcpub/dnd/e5/classes.cljc b/src/cljc/orcpub/dnd/e5/classes.cljc index 33692c065..5f584a0d4 100644 --- a/src/cljc/orcpub/dnd/e5/classes.cljc +++ b/src/cljc/orcpub/dnd/e5/classes.cljc @@ -1930,13 +1930,7 @@ :tags #{:class} :options [(t/option-cfg {:name "Evasion" - :modifiers [;; INERT here: opt5e/evasion returns a plain trait map (plain :name/:page/:level - ;; keys, NOT ::mods/* keys), so entity/apply-modifiers -> modifier-fn yields nil and - ;; it contributes nothing — no trait, no page reference. The map is only consumed - ;; when it sits in a :traits vector (as Monk/Rogue do); in :modifiers it's dead weight. - ;; The displayed Evasion trait and its p.93 come from the trait-cfg below. - (opt5e/evasion 15 93) - (mod5e/trait-cfg + :modifiers [(mod5e/trait-cfg {:name "Evasion" :page 93 :summary "When you are subjected to an effect, such as a red dragon’s fiery breath or a lightning bolt spell, that allows you to make a Dexterity saving throw to take only half damage, you instead take no damage if you succeed on the saving throw, and only half damage if you fail."})]}) From 042fd072991fc244d76104a240ef5e2b00ed6061 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 4 Jul 2026 16:03:58 -0400 Subject: [PATCH 10/11] docs: keep docs/ human-facing, move the KB off the main line The agentic knowledge base had leaked onto the human-facing docs tree: docs/kb/ lived on develop and docs/README.md advertised an 'Agent Knowledge Base' nav section. The KB belongs on the agents/develop silo (which now also carries the speculation-flagging contribution rules that were unique to develop's stray kb README). Remove docs/kb/ here, drop the KB nav section and an agent-facing PHB reconciliation gotcha from docs/README.md, and genericize the licensed source name in CONFLICT_RESOLUTION.md's example (Player's Handbook -> Core Rulebook). --- docs/CONFLICT_RESOLUTION.md | 6 +- docs/README.md | 6 - docs/kb/README.md | 18 --- docs/kb/datomic-crash-analysis.md | 204 ------------------------------ 4 files changed, 3 insertions(+), 231 deletions(-) delete mode 100644 docs/kb/README.md delete mode 100644 docs/kb/datomic-crash-analysis.md diff --git a/docs/CONFLICT_RESOLUTION.md b/docs/CONFLICT_RESOLUTION.md index fb66755b0..966efbabd 100644 --- a/docs/CONFLICT_RESOLUTION.md +++ b/docs/CONFLICT_RESOLUTION.md @@ -18,7 +18,7 @@ Scans imported content for duplicate keys before import. **External** - Between existing and imported content: ``` -Already loaded: :artificer from "Player's Handbook" +Already loaded: :artificer from "Core Rulebook" Importing: :artificer from "Homebrew Classes" → CONFLICT: Same key, different sources ``` @@ -116,7 +116,7 @@ Checks against all existing content (loaded + importing) to guarantee uniqueness ### Single Conflict -Importing `:artificer` when PHB `:artificer` already exists: +Importing `:artificer` when the core `:artificer` already exists: ``` ┌─ Conflict Resolution ─────────────────────────┐ @@ -124,7 +124,7 @@ Importing `:artificer` when PHB `:artificer` already exists: │ │ │ Classes: │ │ :artificer │ -│ Existing: "Player's Handbook" │ +│ Existing: "Core Rulebook" │ │ Importing: "Homebrew Classes" │ │ │ │ ○ Rename to: :artificer-2 │ diff --git a/docs/README.md b/docs/README.md index a3b85c55e..5cc437d52 100644 --- a/docs/README.md +++ b/docs/README.md @@ -10,10 +10,6 @@ Guides for developers and power users working with OrcPub's homebrew content sys - [🔍 Missing Content Detection](CONTENT_RECONCILIATION.md) - Find/fix missing content references - [📋 Required Fields Guide](HOMEBREW_REQUIRED_FIELDS.md) - Required fields per content type -**Agent Knowledge Base:** -- [📚 KB Index](kb/README.md) - Verified findings from deep investigations -- [💥 Datomic Crash Analysis](kb/datomic-crash-analysis.md) - Root cause, frequency, fix options - **For Developers:** - [ClojureScript Type Tolerance](clojurescript-type-tolerance.md) - What cljs silently tolerates vs. what crashes (and why); the string-op crash pattern behind render black screens - [🚨 Error Handling](ERROR_HANDLING.md) - Error handling utilities @@ -48,8 +44,6 @@ Guides for developers and power users working with OrcPub's homebrew content sys **Decision:** Multiple fuzzy matching strategies (Levenshtein, prefix, name similarity) to catch typos and versioning. -**Gotcha:** Must exclude built-in content (PHB, Xanathar's) or system suggests switching from homebrew Artificer to PHB Artificer (which doesn't exist in 5e). - → [CONTENT_RECONCILIATION.md](CONTENT_RECONCILIATION.md) ### Why a Fallback Chain for Language Selection? diff --git a/docs/kb/README.md b/docs/kb/README.md deleted file mode 100644 index dad7d896f..000000000 --- a/docs/kb/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# OrcPub Agent Knowledge Base - -Verified, research-backed findings from in-depth investigations. Each document is sourced from -direct inspection of code, logs, or authoritative references. Speculation is marked -**⚠️ UNVALIDATED SPECULATION** and must not be treated as fact without further verification. - -## Index - -| Document | Topic | Source quality | -|----------|-------|---------------| -| [datomic-crash-analysis.md](datomic-crash-analysis.md) | Datomic transactor crashes — root cause, frequency, fix options | High — direct log analysis from `logs/datomic.{1,2,3}.log` | - -## Contribution rules - -- Only add findings you can cite directly (log lines, code lines, benchmark results, official docs). -- If you are reasoning from circumstantial evidence, mark the entire paragraph with **⚠️ UNVALIDATED SPECULATION — [brief rationale]**. -- Include the date the analysis was done and the artifact(s) it was based on. -- Do not remove speculation flags — if something is later verified, replace the flag with a **✅ VERIFIED — [how]** marker and update the text. diff --git a/docs/kb/datomic-crash-analysis.md b/docs/kb/datomic-crash-analysis.md deleted file mode 100644 index 7b21c5cea..000000000 --- a/docs/kb/datomic-crash-analysis.md +++ /dev/null @@ -1,204 +0,0 @@ -# Datomic Transactor Crash Analysis - -**Analyzed:** 2026-02-26 -**Artifacts:** `logs/datomic.1.log` (64,695 lines, Feb 24), `logs/datomic.2.log` (Feb 25), `logs/datomic.3.log` (Feb 26 from 00:00) -**Branch at time of analysis:** `dmv/hotfix-integrations` - ---- - -## Active transactor configuration (verified from log startup lines) - -``` -heartbeatIntervalMsec=5000 -writeConcurrency=4 -memoryIndexMax=256m -memoryIndexThreshold=32m -txTimeoutMsec=10000 -``` - -Source: the transactor logs its own config on startup. These values were read directly -from the log startup block in `logs/datomic.1.log`. - ---- - -## Crash mechanism — verified - -Every crash in all three log files follows an identical sequence. Example from -`datomic.1.log` 2026-02-24 08:35: - -``` -08:35:19 kv-cluster/create-val bufsize=74,458 msec=5,300 (tid 1212) -08:35:19 kv-cluster/create-val bufsize=74,923 msec=5,440 (tid 1213) -... - ← 14-second gap; no log output of any kind → - -08:35:38 kv-cluster/create-val bufsize=1,394,358 msec=19,500 (tid 982) -08:35:39 transactor/heartbeat-failed cause=:timeout -08:35:39 ERROR Critical failure, cannot continue: Heartbeat failed -08:35:44 ActiveMQ Artemis stopped (uptime 7 days 19 hours) -08:35:46 kv-cluster/create-val bufsize=5,795,494 msec=27,100 (tid 1195) ← still draining -08:37:23 Starting datomic:free://... ← Docker restart -08:38:01 System started ← recovery -``` - -**What is happening:** - -1. The memoryIndex threshold triggers a segment flush. Multiple write threads - (up to `writeConcurrency=4`) begin writing `kv-cluster` segments to H2. -2. H2 is a single-writer embedded database. Concurrent writes serialize on an - exclusive file lock. When one large write is in progress, all other writes - — including the heartbeat's own timestamp write — queue behind it. -3. The heartbeat thread (tid 21) fires every `heartbeatIntervalMsec=5000` ms. - Its write is blocked by the H2 lock. After approximately 3× the interval - (~15 seconds, confirmed: heartbeat fired at 08:35:24.377, failed at - 08:35:39.350 = exactly 15 seconds), the transactor declares itself dead - and self-terminates. -4. Docker restarts the container. Recovery takes ~2.5 minutes. - -**The direct killer is H2 write serialization, not the writes themselves.** -A single 19.5-second write blocked the heartbeat from acquiring the H2 lock -for longer than the 15-second failure threshold. - ---- - -## GC role — verified not sufficient alone - -Datomic logs every JVM GC event via `datomic.log-gc`. All observed GC events are: - -``` -G1 Young Generation / end of minor GC / G1 Evacuation Pause -``` - -GC pause durations near the 08:35 crash: -- 08:30:58 — **1380 ms** (largest observed in entire log) -- 08:31:18 — 331 ms -- 08:31:31 — 364 ms -- 08:31:42 — 330 ms -- ...continuing through 08:33:47 at intervals of 5–15 seconds -- **Last GC before crash: 08:33:47 (295 ms) — 1 minute 52 seconds before crash** -- **No GC events between 08:33:47 and crash at 08:35:39** - -The largest GC pause observed (1380 ms) is well below the 15-second heartbeat -failure threshold. GC alone cannot kill the transactor. - -**⚠️ UNVALIDATED SPECULATION — [plausible mechanism, not directly observable in logs]:** -The GC storm between 08:30 and 08:33 (minor GC every ~10 seconds, up to 1.4s pauses) -likely reflects the memoryIndex flush churning through large object graphs. Each GC -pause interrupts the H2 write threads mid-operation. Because H2 holds file locks across -the full write duration (not just during active I/O), a write that would take 2–3s under -no-GC conditions may stretch to 19–27s when repeatedly interrupted by 300–1400ms STW -pauses. This is the probable mechanism connecting the GC activity to the anomalous write -latency, but it cannot be confirmed from logs alone — it would require JVM flight -recorder data or an H2 lock trace. - ---- - -## Crash frequency — verified - -| Log file | Date | Crash times (UTC) | Crashes | -|----------|------|-------------------|---------| -| datomic.1.log | Feb 24 | 08:35, 09:41, 21:21 | 3 | -| datomic.2.log | Feb 25 | 05:37, 06:56, 08:08, 09:19 + more | 4+ | -| datomic.3.log | Feb 26 | 04:50 (generated the email examples) | 1+ (log starts at 00:00) | - -This is not an occasional blip. The transactor is crashing multiple times daily with -roughly 60–90 minute intervals between crashes during high-activity windows. - ---- - -## Schema noHistory status — verified, no action needed - -`src/clj/orcpub/db/schema.clj` already applies `:db/noHistory true` to all high-churn -gameplay attributes: - -- `::char5e/current-hit-points` -- `::char5e/notes` -- `::char5e/prepared-spells` / `::char5e/prepared-spells-by-class` -- `::char5e/worn-armor`, `::char5e/wielded-shield`, `::char5e/main-hand-weapon`, `::char5e/off-hand-weapon` -- All spell slot usage (`::char5e/features-used`, `::spells5e/slots-used`, all slot-level keys) -- All time-unit usage trackers (`::units5e/minute`, `::units5e/round`, etc.) -- All of `magic-item-schema` and `weapon-schema` - -Removing history from additional attributes would not affect the crash. The crash -is caused by segment *flush* volume (memoryIndex → H2 kv-cluster writes), not by -the presence of historical datoms in those writes. - ---- - -## `writeConcurrency=4` is actively harmful with H2 - -H2 cannot parallelize writes — it serializes them internally on a file lock. -`writeConcurrency=4` causes 4 threads to contend simultaneously for that lock, -meaning all 4 wait while whichever one holds the lock makes slow progress. This -amplifies total write latency without increasing throughput. - -**⚠️ UNVALIDATED SPECULATION — [well-reasoned but untested in this codebase]:** -Reducing `writeConcurrency` to `1` should eliminate the multi-thread H2 contention -and reduce the probability of a single write holding the lock long enough to starve -the heartbeat. However, this has not been tested. It may reduce throughput under -bursty write loads if the bottleneck shifts from contention to raw H2 sequential I/O. -If the total volume of writes during a flush exceeds what a single thread can process -within the heartbeat window, crashes could still occur — just less frequently. - -Config to try: -``` -datomic.writeConcurrency=1 -``` - -This is a transactor properties file change — no code change required. - ---- - -## Increasing heartbeat interval — not recommended - -Setting `heartbeatIntervalMsec` to e.g. 60000 (1 minute) would raise the failure -threshold to ~3 minutes, which is longer than the observed 19.5-second worst-case -write. This would stop the self-termination. - -**This is not a fix.** During the same write-backpressure window, user transactions -queue behind the H2 lock with a `txTimeoutMsec=10000` (10s) timeout. Users would see -transaction timeout errors regardless. Raising the heartbeat masks the infrastructure -signal (crash + admin email) while leaving the user-visible failure intact — and makes -the system harder to monitor. - ---- - -## Recovery time - -Each crash results in approximately **2–3 minutes of complete unavailability**: -- Transactor self-terminates (~1s) -- Docker detects exit and restarts container (~10–30s depending on health check config) -- Datomic transactor starts, initializes storage, begins accepting peer connections (~90–120s) -- Peer reconnects - -During this window, all requests that require Datomic (all authenticated write routes, -all read routes that aren't cached in the peer) will fail with -`transactor-unavailable` or `Connection refused: datomic:4335`. - ---- - -## Fix options - -| Option | Severs which link in the failure chain | Verified effectiveness | Complexity | -|--------|----------------------------------------|----------------------|------------| -| `writeConcurrency=1` | Eliminates concurrent H2 lock contention | ⚠️ UNVALIDATED SPECULATION — should help, see above | Low — config only | -| `memoryIndexMax=512m` or higher | Fewer flushes → fewer contention windows | ⚠️ UNVALIDATED SPECULATION — trades memory for frequency | Low — config only | -| Migrate to Datomic Pro + PostgreSQL | Replaces H2 entirely; Postgres handles concurrent writers and is not subject to single-file lock contention | Established — Datomic Pro + Postgres is the documented production path | High — storage migration required | -| Application-layer circuit breaker | Detects slow `d/transact` calls (>2s) and returns 503 on write endpoints; reads remain up | ⚠️ UNVALIDATED SPECULATION — requires careful implementation; does not prevent crashes | Medium — application code | -| `heartbeatIntervalMsec=15000–60000` | Prevents self-termination | Verified would stop crashes | Low — config only; **NOT RECOMMENDED** — masks signal, see above | -| Docker health check + restart delay | Avoids thundering-herd of app reconnects against a half-started transactor | Verified useful as secondary measure | Low — Docker Compose config | - -**Recommended path:** `writeConcurrency=1` as immediate mitigation, Postgres migration -as the permanent fix. See TODO entry: [Investigate Datomic + Postgres migration path](../TODO.md). - ---- - -## What the error emails reveal about this (relation to P1–P18 analysis) - -Each Datomic crash generates one error email **per in-flight request at the time of -crash**. At peak traffic this could be dozens to hundreds of emails per minute. -The flood throttle in the `send-error-email` rewrite (P5) is therefore especially -important for this failure class — without it, a single crash event could saturate -the admin inbox and trigger alert fatigue that causes real bugs to be missed. - -See [error-email-improvements.md](../error-email-improvements.md) for full analysis. From b7b6deec023b4c4250e0e49f83ad28de631e5224 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sun, 5 Jul 2026 11:41:20 -0400 Subject: [PATCH 11/11] docs: june-patch bundle changelog entry Single dated entry for staging/june-bug-patches-01, grouped Fixed/Added/Changed: spell-selection/source-label fix, Hunter's Evasion + never-black-screen rendering fixes, orcbrew import/export validation, and homebrew data-preservation (resilient loading, quarantine/repair, builder escape hatches). --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54de2eccb..8f4b6afd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,34 @@ # Changelog -All notable changes to this project will be documented in this file. -Format: per-commit entries grouped by category, newest first. +## [staging/june-bug-patches-01] — June bug-patch bundle (2026-07-05) + +### Fixed +- **Homebrew class source no longer poisons spell-selection keys** — the source label was folded into the class `:name`, so the name-derived selection keys broke whenever it changed and saved spells/cantrips vanished; keys now come from a stable class identity, and orphaned saves repair on load (`9a709c0d`, `fe549631`, `a3e26155`). +- **Hunter's Evasion no longer blanks the Features tab** — the Superior Hunter's Defense → Evasion trait shipped with no name, and a nil name crashed the feature-name sort; it's now named "Evasion" (`dd65d66a`). +- **Character sheets no longer go blank** — an unrenderable section shows a recovery message; the rest of the sheet stays usable (`565c33c0`). +- **The Features tab loads for every character** — fixed a rendering bug that blanked it for all (`2a6fde93`). +- **A nameless trait no longer crashes the Features tab** — shown as "[Unnamed feature]" instead of throwing on the name sort (`5c3b073f`). +- **Boolean toggles no longer corrupt data** — they can't wipe an underlying map, and self-heal damage from the old bug (`1e9f27ec`). +- **Keyword-trap imports no longer silently vanish** — caught on import and routed to repair instead of a class that never appears (`d9b23021`). +- **Unreadable storage is preserved** for recovery instead of deleted (`eedffc08`). +- **localStorage quota failures warn and offer a backup** instead of silently dropping the save. +- **Readable import/export errors** — plain-English console messages instead of garbled output; import dedup is shown as a log line, not raw EDN (`eba28a9c`, `e512dc45`). +- **Post-save export fixed** — the "export here" link passed a stringified plugin instead of the map (`e3c9a9ee`). +- **Autosave no longer crashes on a not-ready template** — an empty template reached the builder and threw; now guarded (`e3c9a9ee`). +- **Import dedup no longer skips a top-level Selection** — de-duplication now covers a Selection at the top level, not just nested options (`d9b23021`). +- **Non-ASCII name detection works in the browser** — `count-non-ascii` was miscounting under ClojureScript (`d9b23021`). + +### Added +- **Resilient homebrew loading** — a bad source is quarantined for repair (self-clearing once fixed) instead of dropping the whole library, with a My Content panel to rename, re-key, and restore it (`eedffc08`). +- **Builder escape hatches** — Export draft, refresh-safe WIP restore, "Save anyway" with placeholders, emergency raw export, and Export & Auto-Fix, so imperfect work is never trapped or lost (`eac350d0`, `e3c9a9ee`). +- **"Show homebrew source on class names" toggle** — without affecting saved spell selections (`8f94a94c`). +- **Fill-in dialog on export** — supply or auto-fill missing required fields instead of writing a broken file, with live field-level guidance in the builders (`1547cd69`, `22172adb`). + +### Changed +- **Save validation covers every required field** — dropdowns and multi-selects (spell class-lists, monster hit dice, parent class/race), not just text (`e512dc45`). +- **Save and load share one spec registry** — so they can't drift and wrongly quarantine already-saved content (`ca977e0a`). +- **Normal exports strip meaningless blank flags** (false/nil/empty); raw, draft, and emergency exports are untouched. +- **Invalid-key errors are element-specific** instead of a generic "Name" error. ## [breaking/2026-stack-modernization]