ds4/src/module/rolls/roll-data.ts

44 lines
1.2 KiB
TypeScript
Raw Normal View History

export interface RollOptions {
2021-01-08 23:18:01 +01:00
maxCritSuccess: number;
minCritFailure: number;
useSlayingDice: boolean;
slayingDiceRepetition: boolean;
}
export class DefaultRollOptions implements RollOptions {
2021-01-08 23:18:01 +01:00
public maxCritSuccess = 1;
public minCritFailure = 20;
public useSlayingDice = false;
public slayingDiceRepetition = false;
mergeWith(other: Partial<RollOptions>): RollOptions {
2021-02-05 02:52:55 +01:00
return { ...this, ...other };
}
}
export class RollResult {
constructor(
2021-01-07 02:26:09 +01:00
public result: number,
public status: RollResultStatus,
public dice: Array<number>,
public active: boolean = true,
public exploded: boolean = false,
2021-01-07 02:26:09 +01:00
) {
if (this.status == RollResultStatus.CRITICAL_FAILURE) {
this.failure = true;
} else if (this.status == RollResultStatus.CRITICAL_SUCCESS) {
this.success = true;
}
}
public failure: boolean | void = undefined;
public success: boolean | void = undefined;
}
export enum RollResultStatus {
2021-01-07 02:33:22 +01:00
FAILURE = "FAILURE",
SUCCESS = "SUCCESS",
CRITICAL_FAILURE = "CRITICAL_FAILURE",
CRITICAL_SUCCESS = "CRITICAL_SUCCESS",
}