mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-21 18:09:54 +02:00
Merge branch 'main' into feature/reload-check
This commit is contained in:
commit
e2414b167a
496 changed files with 4622 additions and 5735 deletions
|
|
@ -1,7 +1,8 @@
|
|||
import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs';
|
||||
import { triggerChatRollFx } from '../helpers/utils.mjs';
|
||||
import BaseRoll from './baseRoll.mjs';
|
||||
|
||||
export default class DHRoll extends Roll {
|
||||
export default class DHRoll extends BaseRoll {
|
||||
baseTerms = [];
|
||||
constructor(formula, data = {}, options = {}) {
|
||||
super(formula, data, foundry.utils.mergeObject(options, { roll: [] }, { overwrite: false }));
|
||||
|
|
@ -33,11 +34,17 @@ export default class DHRoll extends Roll {
|
|||
|
||||
if (config.skips?.createMessage) config.messageRoll = roll;
|
||||
|
||||
await this.buildEvaluate(roll, config, (message = {}));
|
||||
if (config.evaluate !== false) {
|
||||
await this.buildEvaluate(roll, config, (message = {}));
|
||||
}
|
||||
await this.buildPost(roll, config, (message = {}));
|
||||
return config;
|
||||
}
|
||||
|
||||
static createRollInstance(config) {
|
||||
return new this(config.roll.formula, config.data, config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Partial<RollConfig>} config
|
||||
* @returns {Promise<RollConfig>}
|
||||
|
|
@ -55,7 +62,7 @@ export default class DHRoll extends Roll {
|
|||
|
||||
this.temporaryModifierBuilder(config);
|
||||
|
||||
let roll = new this(config.roll.formula, config.data, config);
|
||||
let roll = this.createRollInstance(config);
|
||||
if (config.dialog.configure !== false) {
|
||||
// Open Roll Dialog
|
||||
const DialogClass = config.dialog?.class ?? this.DefaultDialog;
|
||||
|
|
@ -72,27 +79,14 @@ export default class DHRoll extends Roll {
|
|||
return roll;
|
||||
}
|
||||
|
||||
/**
|
||||
* Evaluates the roll and assigns roll data into the config.
|
||||
* This is only called if config.evaluate is not set to false
|
||||
* @protected
|
||||
*/
|
||||
static async buildEvaluate(roll, config = {}, message = {}) {
|
||||
if (config.evaluate !== false) {
|
||||
await roll.evaluate();
|
||||
config.roll = this.postEvaluate(roll, config);
|
||||
}
|
||||
}
|
||||
|
||||
static async buildPost(roll, config, message) {
|
||||
for (const hook of config.hooks) {
|
||||
if (Hooks.call(`${CONFIG.DH.id}.postRoll${hook.capitalize()}`, config, message) === false) return null;
|
||||
}
|
||||
|
||||
if (config.skips?.createMessage) {
|
||||
await triggerChatRollFx([roll]);
|
||||
} else if (!config.source?.message) {
|
||||
config.message = await this.toMessage(roll, config);
|
||||
}
|
||||
}
|
||||
|
||||
static postEvaluate(roll, config = {}) {
|
||||
return {
|
||||
await roll.evaluate();
|
||||
config.roll = {
|
||||
...roll.options.roll,
|
||||
total: roll.total,
|
||||
formula: roll.formula,
|
||||
|
|
@ -105,6 +99,22 @@ export default class DHRoll extends Roll {
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs any post configuration events that need to happen towards the end, such as hooks and dice so nice
|
||||
* @protected
|
||||
*/
|
||||
static async buildPost(roll, config, message) {
|
||||
for (const hook of config.hooks) {
|
||||
if (Hooks.call(`${CONFIG.DH.id}.postRoll${hook.capitalize()}`, config, message) === false) return null;
|
||||
}
|
||||
|
||||
if (config.skips?.createMessage) {
|
||||
await triggerChatRollFx([roll]);
|
||||
} else if (!config.source?.message) {
|
||||
config.message = await this.toMessage(roll, config);
|
||||
}
|
||||
}
|
||||
|
||||
static async toMessage(roll, config) {
|
||||
const item = config.data.parent?.items?.get?.(config.source.item) ?? null;
|
||||
const actions = item ? [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue