Fixes
This commit is contained in:
parent
b1d514844e
commit
54323bd300
4 changed files with 47 additions and 1 deletions
18
README.md
18
README.md
|
@ -1,6 +1,22 @@
|
|||
# Risk Dice
|
||||
|
||||
An implementation of Risk Dice as found for example in the Splittermond game system.
|
||||
An implementation of risk dice as found for example in the Splittermond game
|
||||
system.
|
||||
|
||||
This module provides a new dice type which represents a risk die. Rolling a risk
|
||||
die ist just rolling 4 10 sided dice. The total result is calculated by:
|
||||
- If there are either two `1`s or a `1` and a `2` in the results, the total sum
|
||||
is `1 + 1` or `1 + 2` respectively.
|
||||
- Otherwise, the total result is the sum of the 2 highest results.
|
||||
|
||||
|
||||
```
|
||||
/roll dr # Roll a risk die.
|
||||
```
|
||||
|
||||
![Risk Dice](./risk-dice.png)
|
||||
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
BIN
risk-dice.png
Normal file
BIN
risk-dice.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
30
src/module/risk-dice.ts
Normal file
30
src/module/risk-dice.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
class RiskDie extends DiceTerm {
|
||||
constructor() {
|
||||
super({ number: 4, faces: 10 });
|
||||
}
|
||||
|
||||
get total() {
|
||||
if (!this._evaluated) return null;
|
||||
let total;
|
||||
if (this.values.includes(1) && this.values.includes(2)) {
|
||||
total = 3;
|
||||
} else if (this.values.filter((res) => res === 1).length > 1) {
|
||||
total = 2;
|
||||
} else {
|
||||
total = this.values
|
||||
.sort((a, b) => b - a)
|
||||
.slice(0, 2)
|
||||
.reduce((acc, e) => acc + e, 0);
|
||||
}
|
||||
return total;
|
||||
}
|
||||
}
|
||||
|
||||
function registerRiskDie() {
|
||||
CONFIG.Dice.types.push(RiskDie);
|
||||
CONFIG.Dice.terms.r = RiskDie;
|
||||
}
|
||||
|
||||
Hooks.once('init', () => {
|
||||
registerRiskDie();
|
||||
});
|
Reference in a new issue