m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-08-22 16:58:42 -0400
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2017-08-22 16:58:42 -0400
commit1ae29437d03ea010da1b87dc12fd155d414e9c1f (patch)
tree9f31aea7741c7e4cd7bae1512886a9b927137933 /src
parent9fcc2b892602f7a964d9c260680b4faab6ee81a4 (diff)
Implment keepLow
Diffstat (limited to 'src')
-rw-r--r--src/dice.js20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/dice.js b/src/dice.js
index 14addd4..becf7dc 100644
--- a/src/dice.js
+++ b/src/dice.js
@@ -75,6 +75,25 @@ const keepHigh = (die1, die2) => {
}
}
+const keepLow = (die1, die2) => {
+ return () => {
+ const numberToKeep = roll(die1)
+ let rolls = die2().map(die => [die, die()])
+ rolls.sort((a, b) => (a[1] - b[1]))
+ return rolls.slice(0, numberToKeep).map(pair => {
+ let returnedOriginal = false
+ return () => {
+ if (!returnedOriginal) {
+ returnedOriginal = true
+ return pair[1]
+ } else {
+ return pair[0]()
+ }
+ }
+ })
+ }
+}
+
const bonusAdd = (die1, die2) => {
return () => {
return die1().map(die => {
@@ -92,4 +111,5 @@ exports.subtract = subtract
exports.negative = negative
exports.explode = explode
exports.keepHigh = keepHigh
+exports.keepLow = keepLow
exports.bonusAdd = bonusAdd