@@ 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)