Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 1x 1x 1x 1x 1x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 15x 12x 12x 15x 15x 15x 15x 15x 2x 2x 2x 2x 6x 6x 2x 2x 2x 15x | import { random } from "@jga/algorithms";
import { DiceAsymmetricMethod, DiceInterface } from "./diceInterface";
export abstract class DiceBase implements DiceInterface {
/**
* @inheritdoc
*/
public readonly sides: number;
/**
* Constructor
*
* @param sides number Dice sides number
*/
public constructor(sides: number) {
this.sides = sides;
}
/**
* @inheritdoc
*/
public roll(): number {
return random(1, this.sides);
}
/**
* @inheritdoc
*/
public asymmetricRoll(method: DiceAsymmetricMethod, rerolls: number): number {
const rolls: number[] = [];
// eslint-disable-next-line no-loops/no-loops
for (let index = 0; index < rerolls; index++) {
rolls.push(this.roll());
}
return DiceAsymmetricMethod.MIN === method ? Math.min(...rolls) : Math.max(...rolls);
}
}
|