Re-roll the same dice expression.

Yes, I got that idea from d20, and at some point, we need to figure out
how to play better together.
This commit is contained in:
Howard Abrams 2021-03-23 13:56:03 -07:00
parent a61dfcc201
commit 520f74cc66
2 changed files with 14 additions and 1 deletions

View file

@ -32,6 +32,10 @@
;; ;;
;;; Code: ;;; Code:
(defvar rpgdm-previous-roll-expression nil
"Whenever we roll a dice from an expression, we remember it
here, so that we can re-roll it again.")
;; The basics of a dice roll is a random number from a given range. Note that if ;; The basics of a dice roll is a random number from a given range. Note that if
;; we give a 6-sided die to the random number, we will end up with a range of 0 ;; we give a 6-sided die to the random number, we will end up with a range of 0
;; to 5, so we need to increase this value by 1. ;; to 5, so we need to increase this value by 1.
@ -282,9 +286,18 @@ Unless the point is on a dice roll description, e.g 2d12+3."
(interactive (list (if (looking-at rpgdm-roll-regexp) (interactive (list (if (looking-at rpgdm-roll-regexp)
(match-string-no-properties 0) (match-string-no-properties 0)
(read-string "Dice Expression: ")))) (read-string "Dice Expression: "))))
(setq rpgdm-previous-roll-expression expression)
(let ((roll-results (rpgdm--roll-expression expression))) (let ((roll-results (rpgdm--roll-expression expression)))
(rpgdm-message "Rolled: %s" (rpgdm--display-roll roll-results expression)))) (rpgdm-message "Rolled: %s" (rpgdm--display-roll roll-results expression))))
(defun rpgdm-roll-again ()
"Roll the previous expression ... again.
Never rolled before? No problem, we'll query for the expression
if we need too."
(interactive)
(if rpgdm-previous-roll-expression
(rpgdm-roll rpgdm-previous-roll-expression)
(call-interactively 'rpgdm-roll)))
;; ---------------------------------------------------------------------- ;; ----------------------------------------------------------------------
;; ADVANTAGE and DISADVANTAGE ROLLS ;; ADVANTAGE and DISADVANTAGE ROLLS

View file

@ -43,7 +43,7 @@
_d_: Roll Dice _z_: Flip a coin _r_: Dashboard _s_: d20 Skill _m_: Moderate _o_: Links -l: Last Results _d_: Roll Dice _z_: Flip a coin _r_: Dashboard _s_: d20 Skill _m_: Moderate _o_: Links -l: Last Results
_b_: Previous _f_: Next Dice Expr _t_: Load Tables _e_: Easy check _h_: Hard check _J_/_K_: Page up/dn -k: Previous _b_: Previous _f_: Next Dice Expr _t_: Load Tables _e_: Easy check _h_: Hard check _J_/_K_: Page up/dn -k: Previous
_a_/_A_: Advantage/Disadvantage _c_: Choose Item _v_: Difficult _i_: Impossible _N_/_W_: Narrow/Widen -j: Next " _a_/_A_: Advantage/Disadvantage _c_: Choose Item _v_: Difficult _i_: Impossible _N_/_W_: Narrow/Widen -j: Next "
("d" rpgdm-roll) ("d" rpgdm-roll) ("D" rpgdm-roll-again)
("f" rpgdm-forward-roll) ("b" rpgdm-forward-roll) ("f" rpgdm-forward-roll) ("b" rpgdm-forward-roll)
("a" rpgdm-roll-advantage) ("A" rpgdm-roll-disadvantage) ("a" rpgdm-roll-advantage) ("A" rpgdm-roll-disadvantage)
("z" rpgdm-yes-and-50/50) ("z" rpgdm-yes-and-50/50)