summaryrefslogtreecommitdiff
path: root/src/votann_battle_simulator/util.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/votann_battle_simulator/util.clj')
-rw-r--r--src/votann_battle_simulator/util.clj46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/votann_battle_simulator/util.clj b/src/votann_battle_simulator/util.clj
new file mode 100644
index 0000000..1292bf2
--- /dev/null
+++ b/src/votann_battle_simulator/util.clj
@@ -0,0 +1,46 @@
+(ns votann-battle-simulator.util)
+
+(defn roll-d6 [n]
+ (loop [i 0
+ rolls ()]
+ (if (>= i n)
+ (vec rolls)
+ (recur (+ i 1) (conj rolls (+ 1 (rand-int 6)))))))
+
+(defn roll-d3 [n]
+ (mapv #(int (Math/ceil (double (/ % 2)))) (roll-d6 n)))
+
+(defn d+ [n rolls]
+ (vec (filter #(>= % n) rolls)))
+
+(defn resolve-stat-count [stat]
+ (if (int? stat)
+ stat
+ (let [add-num (re-find #"\+\d+" stat)
+ num (if (nil? add-num)
+ 0
+ (Integer/parseInt add-num))]
+ (cond
+ (re-find #"D6" stat)
+ (+ num (first (roll-d6 1)))
+
+ (re-find #"D3" stat)
+ (+ num (first (roll-d3 1)))))))
+
+(defn modifier-cap [modifier]
+ (cond
+ (< modifier 0) -1
+ (> modifier 0) 1
+ :else 0))
+
+(defn dice-cap [dice]
+ (cond
+ (< dice 1) 1
+ (> dice 6) 6
+ :else dice))
+
+(defn mod+1 [modifier]
+ (+ modifier 1))
+
+(defn mod-1 [modifier]
+ (- modifier 1))