From 573de371815d1bc7012ecf13dc6408304de49e9d Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Sat, 5 Jan 2019 10:30:56 +0000 Subject: New defcustom, `org-d20-letter-monsters` Signed-off-by: Sean Whitton --- NEWS.md | 5 +++++ TODO.md | 1 - org-d20.el | 18 ++++++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index 9b45016..d3d5950 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +0.3 (unreleased) +---------------- + +- New defcustom, `org-d20-letter-monsters` + 0.2 (2018-12-31) ---------------- diff --git a/TODO.md b/TODO.md index 8bddb2e..edd713c 100644 --- a/TODO.md +++ b/TODO.md @@ -2,7 +2,6 @@ Soon ---- - Dice expression roller shows results for each die -- Option to use letters, rather than digits, to individuate monsters - Option to continue numbering/lettering between types of monsters - So there is exactly one monster with a given digit/letter - [Submit to MELPA](https://github.com/melpa/melpa/blob/master/CONTRIBUTING.org#making-your-package-ready-for-inclusion) diff --git a/org-d20.el b/org-d20.el index 69b7def..935329b 100644 --- a/org-d20.el +++ b/org-d20.el @@ -55,6 +55,10 @@ (defcustom org-d20-dice-sound nil "Path to a sound file that `play-sound-file' can play.") +(defcustom org-d20-letter-monsters nil + "Individuate up to 26 monsters/NPCs with letters, rather than + with digits.") + (defvar org-d20-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "") 'org-d20-initiative-dwim) @@ -122,7 +126,9 @@ the best N of them, e.g., 4d6k3." (while (>= monster 1) (let ((hp (int-to-string (org-d20--roll hd-input)))) (push (list - "" (concat name-input " " (int-to-string monster)) + "" (concat name-input + " " + (org-d20--monster-number monster)) (org-d20--num-to-term init-input) init hp "0") rows)) (setq monster (1- monster))))) @@ -281,7 +287,7 @@ the best N of them, e.g., 4d6k3." (org-table-next-field) (insert name-input) (insert " ") - (insert (int-to-string monster)) + (insert (org-d20--monster-number monster)) (org-table-next-field) (insert (org-d20--num-to-term init-input)) (org-table-next-field) @@ -302,6 +308,14 @@ the best N of them, e.g., 4d6k3." (concat "+" (int-to-string k)) (int-to-string k)))) +(defun org-d20--monster-number (n) + (if (and org-d20-letter-monsters (>= 26 n)) + (seq-elt + (list "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" + "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z") + n) + (int-to-string n))) + (defun org-d20-roll-at-point () "Roll the dice expression at point and display result in minibuffer." (interactive) -- cgit v1.2.3