mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-18 16:09:03 +01:00
Fixed advantage/disadvantage reroll counting on d20s
This commit is contained in:
parent
72491891ed
commit
d04a43c038
1 changed files with 28 additions and 31 deletions
|
|
@ -182,35 +182,9 @@ export default class D20Roll extends DHRoll {
|
||||||
return (this._formula = this.constructor.getFormula(this.terms));
|
return (this._formula = this.constructor.getFormula(this.terms));
|
||||||
}
|
}
|
||||||
|
|
||||||
static async reroll(rollString, target, message) {
|
static async reroll(rollString, _target, message) {
|
||||||
let parsedRoll = game.system.api.dice.D20Roll.fromData({ ...rollString, evaluated: false });
|
let parsedRoll = game.system.api.dice.D20Roll.fromData(rollString);
|
||||||
|
parsedRoll = await parsedRoll.reroll();
|
||||||
const term = parsedRoll.terms[0];
|
|
||||||
await term.reroll(`/r1=${term.total}`);
|
|
||||||
|
|
||||||
if (game.modules.get('dice-so-nice')?.active) {
|
|
||||||
const diceSoNiceRoll = {
|
|
||||||
_evaluated: true,
|
|
||||||
dice: [
|
|
||||||
new foundry.dice.terms.Die({
|
|
||||||
...term,
|
|
||||||
faces: term._faces,
|
|
||||||
results: term.results.filter(x => !x.rerolled)
|
|
||||||
})
|
|
||||||
],
|
|
||||||
options: { appearance: {} }
|
|
||||||
};
|
|
||||||
|
|
||||||
const diceSoNicePresets = getDiceSoNicePresets();
|
|
||||||
const type = target.dataset.type;
|
|
||||||
if (diceSoNicePresets[type]) {
|
|
||||||
diceSoNiceRoll.dice[0].options = { appearance: diceSoNicePresets[type] };
|
|
||||||
}
|
|
||||||
|
|
||||||
await game.dice3d.showForRoll(diceSoNiceRoll, game.user, true);
|
|
||||||
}
|
|
||||||
await parsedRoll.evaluate();
|
|
||||||
|
|
||||||
const newRoll = game.system.api.dice.D20Roll.postEvaluate(parsedRoll, {
|
const newRoll = game.system.api.dice.D20Roll.postEvaluate(parsedRoll, {
|
||||||
targets: message.system.targets,
|
targets: message.system.targets,
|
||||||
roll: {
|
roll: {
|
||||||
|
|
@ -219,7 +193,30 @@ export default class D20Roll extends DHRoll {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
newRoll.extra = newRoll.extra.slice(1);
|
if (game.modules.get('dice-so-nice')?.active) {
|
||||||
return { newRoll, parsedRoll };
|
await game.dice3d.showForRoll(parsedRoll, game.user, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const rerolled = {
|
||||||
|
any: true,
|
||||||
|
rerolls: [
|
||||||
|
...(message.system.roll.dice[0].rerolled?.rerolls?.length > 0
|
||||||
|
? [message.system.roll.dice[0].rerolled?.rerolls]
|
||||||
|
: []),
|
||||||
|
rollString.terms[0].results
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
newRoll: {
|
||||||
|
...newRoll,
|
||||||
|
dice: [
|
||||||
|
{
|
||||||
|
...newRoll.dice[0],
|
||||||
|
rerolled: rerolled
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
parsedRoll
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue