~earneson/org-dnd5eapi

1591ea8e7b291c1e0ea9feaf97c6abefcf5beb67 — Erik L. Arneson 5 months ago 1155463
The monster stat block is mostly finished

We will see how it goes.
1 files changed, 25 insertions(+), 13 deletions(-)

M org-dnd5eapi.el
M org-dnd5eapi.el => org-dnd5eapi.el +25 -13
@@ 54,7 54,8 @@
(defun dnd5eapi-insert-monster (monster-name)
  "Insert a stat block for a monster called MONSTER-NAME."
  (interactive
   (list (completing-read "Pick a monster: " (dnd5eapi-list-monsters) nil t)))
   (list (completing-read "Pick a monster: " (dnd5eapi-list-monsters) nil t))
   org-mode)
  (let ((monster-lookup-data (assoc-default monster-name dnd5eapi-monster-table)))
    (request (concat dnd5eapi-url (assoc-default 'url monster-lookup-data))
      :parser 'json-read


@@ 92,17 93,11 @@
     (dnd5eapi--filter-proficiencies (assoc-default 'proficiencies monster-data))
     "\n"
     (if (< 0 (length (assoc-default 'damage_vulnerabilities monster-data)))
         (concat "- Damage Vulnerabilities :: "
                 (join  (assoc-default 'damage_vulnerabilities monster-data)
                        ", ")))
         (concat "- Damage Vulnerabilities :: " (string-join  (assoc-default 'damage_vulnerabilities monster-data) ", ")))
     (if (< 0 (length (assoc-default 'damage_resistances monster-data)))
         (concat "- Damage Resistances :: "
                 (join  (assoc-default 'damage_resistances monster-data)
                        ", ")))
         (concat "- Damage Resistances :: " (string-join  (assoc-default 'damage_resistances monster-data) ", ")))
     (if (< 0 (length (assoc-default 'damage_immunities monster-data)))
         (concat "- Damage Immunities :: "
                 (join  (assoc-default 'damage_immunities monster-data)
                        ", ")))
         (concat "- Damage Immunities :: " (string-join  (assoc-default 'damage_immunities monster-data) ", ")))
     (if (assoc-default 'senses monster-data)
         (concat "\n- Senses :: "
                 (mapconcat (lambda (s)


@@ 117,16 112,33 @@
     (concat (assoc-default 'languages monster-data) ", ")
     "\n- Challenge :: " (format "%d (%d XP)" (assoc-default 'challenge_rating monster-data) (assoc-default 'xp monster-data))
     (if (assoc-default 'special_abilities monster-data)
         "\n- present"
         )
         (concat "\n"
                 (mapconcat (lambda (sa)
                              (let ((usage (assoc-default 'usage sa)))
                                (format "- %s (%d %s) :: %s"
                                        (assoc-default 'name sa)
                                        (assoc-default 'times usage)
                                        (assoc-default 'type usage)
                                        (assoc-default 'desc sa))))
                            (assoc-default 'special_abilities monster-data)
                            "\n")))
     "\n*** Actions\n"
     ;; @TODO Recharge and legendary actions?
     ;; @TODO Recharge
     (mapconcat (lambda (action)
                  (format "- %s :: %s"
                          (assoc-default 'name action)
                          (assoc-default 'desc action)))
                (assoc-default 'actions monster-data)
                "\n")
     (if (assoc-default 'legendary_actions monster-data)
         (concat
          "\n*** Legendary Actions\n"
          (mapconcat (lambda (action)
                  (format "- %s :: %s"
                          (assoc-default 'name action)
                          (assoc-default 'desc action)))
                (assoc-default 'legendary_actions monster-data)
                "\n")))
     )))

(defun dnd5eapi--ability-string (score)