Fix: jets d'encaissement forcés par le Gardien

Les jets d'encaissement forcés par le gardien ne peuvent plus donner
le deuxième d10 négatif si le MJ force un résultat inférieur à 11
This commit is contained in:
Vincent Vandemeulebrouck 2023-11-20 00:37:43 +01:00
parent bfd3b0d74a
commit c1a5bd6eb3
1 changed files with 14 additions and 37 deletions

View File

@ -164,7 +164,7 @@ export class RdDDice {
if (options.showDice == HIDE_DICE || !game.modules.get("dice-so-nice")?.active || !game.dice3d) { if (options.showDice == HIDE_DICE || !game.modules.get("dice-so-nice")?.active || !game.dice3d) {
return; return;
} }
let { whisper, blind } = RdDDice._getWhisperBlind(options); let { whisper, blind } = RdDDice._getWhisperBlind(options);
if (options.forceDiceResult?.total) { if (options.forceDiceResult?.total) {
let terms = await RdDDice._getForcedTerms(options); let terms = await RdDDice._getForcedTerms(options);
@ -197,48 +197,25 @@ export class RdDDice {
function terms1d100(total) { function terms1d100(total) {
const unites = total % 10; const unites = total % 10;
const dizaines = Math.floor(total / 10); const dizaines = Math.floor(total / 10);
return [{ return [
resultLabel: dizaines * 10, { type: "d100", result: dizaines, resultLabel: dizaines * 10, vectors: [], options: {}, d100Result: total },
d100Result: total, { type: "d10", result: unites, resultLabel: unites, vectors: [], options: {}, d100Result: total }
result: dizaines, ];
type: "d100",
vectors: [],
options: {}
},
{
resultLabel: unites,
d100Result: total,
result: unites,
type: "d10",
vectors: [],
options: {}
}];
} }
async function terms2d10(total) { async function terms2d10(total) {
if (total>20 || total<2) { return undefined } if (total > 20 || total < 2) { return undefined }
let first = await RdDDice.d10(); const first = await RdDDice.fakeD10(Math.min(10, total - 1));
let second = Math.min(total-first, 10); const second = total - first;
first = Math.max(first, total-second); return [
return [{ { type: "d10", result: first, resultLabel: first, vectors: [], options: {} },
resultLabel:first, { type: "d10", result: second, resultLabel: second, vectors: [], options: {} }
result: first, ];
type: "d10",
vectors: [],
options: {}
},
{
resultLabel: second,
result: second,
type: "d10",
vectors: [],
options: {}
}];
} }
} }
static async d10() { static async fakeD10(faces) {
let roll = new Roll('1d10'); let roll = new Roll(`1d${faces}`);
await roll.evaluate({ async: true }); await roll.evaluate({ async: true });
return roll.total; return roll.total;
} }