diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dice.js | 38 | ||||
-rw-r--r-- | src/parser.js | 4 |
2 files changed, 21 insertions, 21 deletions
diff --git a/src/dice.js b/src/dice.js index 58467c4..6f3b7da 100644 --- a/src/dice.js +++ b/src/dice.js @@ -41,6 +41,23 @@ const subtract = (die1, die2) => { } } +const bonusAdd = (die1, die2) => { + return () => { + return die1().map(die => { + return () => die() + roll(die2) + }) + } +} + +const bonusSubtract = (die1, die2) => { + const negative2 = negative(die2) + return () => { + return die1().map(die => { + return () => die() + roll(negative2) + }) + } +} + const explode = (die1, die2) => { return () => { const explodeOn = roll(die1) @@ -94,32 +111,15 @@ const keepLow = (die1, die2) => { } } -const bonusAdd = (die1, die2) => { - return () => { - return die1().map(die => { - return () => die() + roll(die2) - }) - } -} - -const bonusSubtract = (die1, die2) => { - const negative2 = negative(die2) - return () => { - return die1().map(die => { - return () => die() + roll(negative2) - }) - } -} - exports.pool = pool exports.roll = roll exports.constant = constant exports.d = d exports.add = add exports.subtract = subtract +exports.bonusAdd = bonusAdd +exports.bonusSubtract = bonusSubtract exports.negative = negative exports.explode = explode exports.keepHigh = keepHigh exports.keepLow = keepLow -exports.bonusAdd = bonusAdd -exports.bonusSubtract = bonusSubtract diff --git a/src/parser.js b/src/parser.js index 344fb7d..a4665ac 100644 --- a/src/parser.js +++ b/src/parser.js @@ -57,7 +57,7 @@ newSymbol('d', (parser) => { return { type: 'd', left: { type: 'constant', value: 1 }, - right: parser.expression(29) + right: parser.expression(dieBindingPower - 1) } }) newDieOperation('E') @@ -65,9 +65,9 @@ newDieOperation('K') newDieOperation('k') newInfix('bigPlus', 20, { type: 'add' }) +newInfix('bigMinus', 20, { type: 'subtract' }) newInfix('plus', 25, { type: 'bonusAdd' }) newInfix('minus', 25, { type: 'bonusSubtract' }) -newInfix('bigMinus', 20, { type: 'subtract' }) newSymbol('minus', (parser) => { return { type: 'negative', |