diff options
Diffstat (limited to 'src/votann_battle_simulator/util.clj')
| -rw-r--r-- | src/votann_battle_simulator/util.clj | 46 |
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)) |