diff --git a/dice.ts b/dice.ts index df6b02a..a91d5ac 100644 --- a/dice.ts +++ b/dice.ts @@ -32,6 +32,7 @@ interface DiceResult { olddice?: Array; reroll?: boolean; outcome?: Outcomes; + balance?: number; } @@ -121,6 +122,18 @@ class Asphodice extends D10 { return ((checkDice.filter(die => die >= this.successCutOff).length == 0)); } + countOutcomeBalance (resultDice: Array): number{ + // Return a positive / negative number representing + // the overall outcomes: each failure (eg < 6) is -1 + // while each success (eg >= 6) is +1 + + // fun with ternary operators + return resultDice.reduce( + (acc: number, curr: number) => + { return (curr < this.successCutOff) ? acc - 1 : acc + 1 }, + 0); + } + roll (numToRoll: number): DiceResult { let results: DiceResult = { total: 0, dice: [] }; @@ -172,6 +185,7 @@ class Asphodice extends D10 { } } + results.balance = this.countOutcomeBalance(results.dice); results.total = results.dice.reduce((acc: number, curr: number) => acc + curr); return results; }