3.3 KiB
3.3 KiB
Fate Accelerated + One Page Solo Engine
Roll 4dF
Characters
PC
CHARACTER NAME
CHARACTER DESCRIPTION
Stress
- 1
- 2
- 3
Aspects
- High Concept:
- Trouble:
- Aspect 1:
Consequences
- Consequence 1:
- Consequence 2:
- Consequence 3:
Approaches
| +x | Approach |
|---|---|
| +2 | Careful |
| +0 | Clever |
| +8 | Flashy |
| +3 | Forceful |
| +0 | Quick |
| +0 | Sneaky |
Stunts
Log
Code
(progn (org-babel-goto-named-src-block "fae")
(org-babel-execute-src-block))
(define-minor-mode srpg-mode
"Minor mode for solo RPG gameplay."
:init-value nil
:keymap (make-keymap))
(define-key srpg-mode-map (kbd "M-r") 'fae/take-action)
(alist-get target
(mapcar #'(lambda (x) (cons (replace-regexp-in-string "\\(\\[\\[.*\\]\\[\\)\\(.*\\)\\]\\]" "\\2" (cadr x)) (car x)))
(cl-remove-if (lambda (x) (not (listp x))) lookup))
nil
nil
(lambda (x y) (let ((z (string-search x y)))
(and z (= 0 z)))))
Fate Accelerated
(defun fae/roll-fate-die ()
"Rolls a single fate die, returning either 1, 0, or -1."
(interactive)
(- (random 3) 1))
(defun fae/roll-ndF (n)
"Rolls `n' fate dice, and returns the result."
(interactive)
(defun roll (i acc)
(if (= i n)
acc
(roll (+ 1 i)
(+ acc (fae/roll-fate-die)))))
(roll 0 0))
(defun fae/get-approach-modifier (approach)
"Get approach value."
(let ( (table (read-string "For which approach table? ")))
(or (org-babel-execute-src-block nil (org-babel-lob-get-info `(babel-call (:call "prop-tbl-lookup" :arguments ,(format "%s, \"%s\"" table approach))))) 0)))
(defun fae/roll-approach (table approach)
"Get careful approach value."
(+ (fae/roll-ndF 4)
(or (org-babel-execute-src-block nil (org-babel-lob-get-info `(babel-call (:call "prop-tbl-lookup" :arguments ,(format "%s, \"%s\"" table approach))))) 0)
(if (y-or-n-p "Any other modifiers?")
(read-minibuffer "+? ")
0)))
(defun fae/take-action ()
"Say what you're trying to do and insert a roll outcome."
(interactive)
(let* ((action (read-string "What are you trying to do? "))
(dice-roll (fae/roll-ndF 4))
(approach (completing-read
"Select approach: "
'("Careful" "Clever" "Flashy" "Forceful" "Quick" "Sneaky")))
(app-mod (fae/get-approach-modifier approach))
(add-mod (if (y-or-n-p "Any other modifiers?")
(read-minibuffer "+? ")
0)))
(insert (format "%s (Approach %s, Rolled %s+%s+%s=%s)\n" action approach dice-roll app-mod add-mod (+ dice-roll app-mod add-mod)))))