m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/dice.js
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-08-30 16:25:34 -0400
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-08-30 16:25:34 -0400
commit7efea0582dda35cd7dc0c370ef3b56c84b2f2291 (patch)
treeb6c3560651564cb335a52b3980c8e28b4e78326b /src/dice.js
parentca6103457d9a4bb7e11a406f689ed1de46720781 (diff)
Implement explode under
Diffstat (limited to 'src/dice.js')
-rw-r--r--src/dice.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/dice.js b/src/dice.js
index 9bc53d7..e96aca9 100644
--- a/src/dice.js
+++ b/src/dice.js
@@ -73,6 +73,21 @@ const explode = (die1, die2) => {
}
}
+const explodeUnder = (die1, die2) => {
+ return () => {
+ const explodeOn = roll(die1)
+ return die2().map(die => () => {
+ let lastRoll = die()
+ let total = lastRoll
+ while (lastRoll <= explodeOn) {
+ lastRoll = die()
+ total += lastRoll
+ }
+ return total
+ })
+ }
+}
+
const keepHigh = (die1, die2) => {
return () => {
const numberToKeep = roll(die1)
@@ -174,6 +189,7 @@ exports.bonusAdd = bonusAdd
exports.bonusSubtract = bonusSubtract
exports.negative = negative
exports.explode = explode
+exports.explodeUnder = explodeUnder
exports.keepHigh = keepHigh
exports.keepLow = keepLow
exports.again = again