mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-21 18:09:54 +02:00
Some checks are pending
Project CI / build (24.x) (push) Waiting to run
* Initial rework * Removed unneeded method * Removed outcommented code * Added migration * Fixed DamageActions * Semi-corrected reroll of one of multiple results on a die * Code improvement * Added aseDie.rerollResult method to specifically reroll a specific result die in a grouping * TagTeamDialog somewhat working * Added migration for TagTeamData * Fix for mean tagTeamDialog.finish * . * Improved migration * Internalised ChatDamageData.prepareRolls to its own constructor * Moved DamageTypes to roll.options * TagTeamDialog fixes to accomodate new flat damage.types structure * Changed so all default rolls become BaseRolls to access convenience functions and getters * . * Fixed so that party.tagTeam now uses a declared damageRollData(ChatDamageData) field. rollData.options.damage is retired. * Critical damage fixes * Corrected TagTeamDialog rerender logic when selecting a roll * Fixed so that DamageTypes are retained and joined together throughout TagTeamDialog * Removed some remaining types.<>.roll references * [Rework] Damage and Damage Resource split (#2094) * Changed the label of ActionSheet damage.resources to Mark Resources * Fix assigning includeBase * Localize add resource * Maybe simplify API * Fix onRollSimple * Handle erroring action update differently --------- Co-authored-by: Carlos Fernandez <cfern1990@gmail.com>
53 lines
1.9 KiB
JavaScript
53 lines
1.9 KiB
JavaScript
import BaseDie from './baseDie.mjs';
|
|
import { updateResourcesForDualityReroll } from '../helpers.mjs';
|
|
|
|
export default class DualityDie extends BaseDie {
|
|
constructor(options) {
|
|
super(options);
|
|
|
|
this.modifiers = [];
|
|
}
|
|
|
|
#getDualityState(roll) {
|
|
if (!roll) return null;
|
|
return roll.withHope ? 1 : roll.withFear ? -1 : 0;
|
|
}
|
|
|
|
async reroll(modifier, options) {
|
|
const oldDuality = this.#getDualityState(options.liveRoll.roll);
|
|
await super.reroll(modifier, options);
|
|
|
|
if (options?.liveRoll) {
|
|
/* Can't currently test since DiceSoNice is not v14. Might need to set the appearance earlier if a roll is triggered by super.reroll */
|
|
if (game.modules.get('dice-so-nice')?.active) {
|
|
const diceSoNiceRoll = {
|
|
_evaluated: true,
|
|
dice: [this],
|
|
options: { appearance: {} }
|
|
};
|
|
|
|
const diceAppearance = await this.getDiceSoNiceAppearance(options.liveRoll.roll);
|
|
diceSoNiceRoll.dice[0].options.appearance = diceAppearance.appearance;
|
|
diceSoNiceRoll.dice[0].options.modelFile = diceAppearance.modelFile;
|
|
diceSoNiceRoll.dice[0].results = diceSoNiceRoll.dice[0].results.filter(x => x.active);
|
|
|
|
await game.dice3d.showForRoll(diceSoNiceRoll, game.user, true);
|
|
} else {
|
|
foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
|
|
}
|
|
|
|
await options.liveRoll.roll._evaluate();
|
|
if (options.liveRoll.isReaction) return;
|
|
|
|
const newDuality = this.#getDualityState(options.liveRoll.roll);
|
|
updateResourcesForDualityReroll(oldDuality, newDuality, options.liveRoll.actor);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Overridden by extending classes HopeDie and FearDie
|
|
*/
|
|
async getDiceSoNiceAppearance() {
|
|
return {};
|
|
}
|
|
}
|