Last active
January 3, 2019 22:55
-
-
Save emdeesee/cbf26b5dc9e658e668d8a798d54c09fd to your computer and use it in GitHub Desktop.
Beginning of an action resolver for FUDGE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defparameter *outcomes* '(terrible poor mediocre fair good great superb)) | |
(defun build-outcome-alist () | |
(loop for n from 0 for o in *outcomes* collect (cons n o))) | |
(defparameter *outcome-table* (build-outcome-alist)) | |
(defparameter *superb-value* (car (rassoc 'superb *outcome-table*))) | |
(defparameter *terrible-value* (car (rassoc 'terrible *outcome-table*))) | |
(let ((random-state (make-random-state t))) | |
(defun df (&optional (times 1) (random-state random-state)) | |
(flet ((1df () (1- (random 3 random-state)))) | |
(loop repeat times sum (1df))))) | |
(defmacro trait-value (trait) | |
`(car (rassoc (quote ,trait) *outcome-table*))) | |
(defun trait-description (value) | |
(cdr (assoc value *outcome-table*))) | |
(defun describe-resolution (value) | |
(cond | |
((< value *terrible-value*) 'worse-than-terrible) | |
((> value *superb-value*) 'better-than-superb) | |
(t (cdr (assoc value *outcome-table*))))) | |
(defun resolve-fn (base) | |
(+ base (df 4))) | |
(defmacro resolve (trait-adjective) | |
`(resolve-fn (trait-value ,trait-adjective))) | |
(defmacro resolve-opposed (trait opposing-trait) | |
`(- (resolve ,trait) (resolve ,opposing-trait))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment