about summary refs log tree commit diff stats
path: root/loot.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'loot.lsp')
-rw-r--r--loot.lsp49
1 files changed, 25 insertions, 24 deletions
diff --git a/loot.lsp b/loot.lsp
index e5e9e81..4dfb2c8 100644
--- a/loot.lsp
+++ b/loot.lsp
@@ -1,4 +1,5 @@
 ;;; Port of https://en.wikipedia.org/wiki/ModernPascal#Code_Sample[3].
+;;; And then to CL and ISLisp.
 ;;; I prefer my version.
 (defconstant +max-probability+ 1000)
 ;; Because this is a simple enum and not a full sum/product type,
@@ -10,31 +11,31 @@
 (defclass <looter> () ((probabilities :accessor probabilities)))
 (defgeneric choose (self))
 (defmethod choose ((self <looter>))
-  (let ((random-value (random (- +max-probability+ 1))))
-    (for ((loop 0 (+ loop 1)))
-	((>= (elt (probabilities self) (mod loop 13)) random-value) (elt +loot-type+ (mod loop 13))))))
+   (let ((random-value (random (- +max-probability+ 1))))
+	(for ((loop 0 (+ loop 1)))
+	     ((>= (elt (probabilities self) (mod loop 13)) random-value) (elt +loot-type+ (mod loop 13))))))
 (defmethod initialize-object :after ((self <looter>) initargs)
-  (setf (probabilities self) (vector 10 77 105 125 142 159 172 200 201 202 216 282 +max-probability+)))
+   (setf (probabilities self) (vector 10 77 105 125 142 159 172 200 201 202 216 282 +max-probability+)))
 (defun as-string (l)
-  ;; Could use assoc here, but this is closer to the original.
-  ;; Also saves translating nil to "".
-  (case l
-    ((bloodstone) "Bloodstone")
-    ((copper) "Copper")
-    ((emeraldite) "Emeraldite")
-    ((gold) "Gold")
-    ((heronite) "Heronite")
-    ((platinum) "Platinum")
-    ((shadownite) "Shadownite")
-    ((silver) "Silver")
-    ((soranite) "Soranite")
-    ((umbrarite) "Umbrarite")
-    ((cobalt) "Cobalt")
-    ((iron) "Iron")
-    (t "")))
+   ;; Could use assoc here, but this is closer to the original.
+   ;; Also saves translating nil to "".
+   (case l
+	 ((bloodstone) "Bloodstone")
+	 ((copper) "Copper")
+	 ((emeraldite) "Emeraldite")
+	 ((gold) "Gold")
+	 ((heronite) "Heronite")
+	 ((platinum) "Platinum")
+	 ((shadownite) "Shadownite")
+	 ((silver) "Silver")
+	 ((soranite) "Soranite")
+	 ((umbrarite) "Umbrarite")
+	 ((cobalt) "Cobalt")
+	 ((iron) "Iron")
+	 (t "")))
 (defun main ()
-  (let ((loot (create (class <looter>))))
-    (for ((n 0 (+ n 1)))
-	((> n 99))
-	(format (standard-output) "~A~%" (as-string (choose loot))))))
+   (let ((loot (create (class <looter>))))
+	(for ((n 0 (+ n 1)))
+             ((> n 99))
+	     (format (standard-output) "~A~%" (as-string (choose loot))))))
 (main)