Fix: ne pas utiliser DsN sans canvas

dice3d n'est pas dispo si on n'a pas de canvas dans dice-so-nice 3.4.0
Du coup, plantage et aucun jet dans le système RdD pour un joueur
qui n'a pas de scène.

Accessoirement, dice-so-nice 3.4.0 plante à l'init, mais ça on n'y peut
rien (Issue raised)
This commit is contained in:
Vincent Vandemeulebrouck 2021-06-02 16:14:41 +02:00
parent 15c07674bc
commit 93b8f15df0
2 changed files with 31 additions and 22 deletions

View File

@ -123,8 +123,15 @@ export class RdDDice {
CONFIG.Dice.terms[DeDraconique.DENOMINATION] = DeDraconique; CONFIG.Dice.terms[DeDraconique.DENOMINATION] = DeDraconique;
CONFIG.Dice.terms[DeHeure.DENOMINATION] = DeHeure; CONFIG.Dice.terms[DeHeure.DENOMINATION] = DeHeure;
} }
static onReady() {
if (game.modules.get("dice-so-nice")?.active) {
if (game.settings.get("core", "noCanvas")) {
ui.notifications.warn("Dice So Nice! n'affichera pas de dés car vous avez coché l'option de Foundry 'Scène de jeu désactivé' 'Disable Game Canvas' ");
}
}
}
static async roll(formula, options = { showDice: false, rollMode: undefined}) { static async roll(formula, options = { showDice: false, rollMode: undefined }) {
const roll = new Roll(formula); const roll = new Roll(formula);
await roll.evaluate({ async: true }); await roll.evaluate({ async: true });
if (options.showDice) { if (options.showDice) {
@ -141,7 +148,7 @@ export class RdDDice {
static async rollOneOf(array) { static async rollOneOf(array) {
const roll = await RdDDice.rollTotal(`1d${array.length}`); const roll = await RdDDice.rollTotal(`1d${array.length}`);
return array[roll-1]; return array[roll - 1];
} }
static diceSoNiceReady(dice3d) { static diceSoNiceReady(dice3d) {
@ -153,7 +160,7 @@ export class RdDDice {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async show(roll, rollMode = undefined) { static async show(roll, rollMode) {
if (roll.showDice || game.settings.get(SYSTEM_RDD, "dice-so-nice") == true) { if (roll.showDice || game.settings.get(SYSTEM_RDD, "dice-so-nice") == true) {
await this.showDiceSoNice(roll, rollMode); await this.showDiceSoNice(roll, rollMode);
} }
@ -161,25 +168,27 @@ export class RdDDice {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async showDiceSoNice(roll, rollMode = undefined) { static async showDiceSoNice(roll, rollMode) {
if (game.modules.get("dice-so-nice") && game.modules.get("dice-so-nice").active) { if (game.modules.get("dice-so-nice")?.active) {
let whisper = null; if (game.dice3d) {
let blind = false; let whisper = null;
rollMode = rollMode ?? game.settings.get("core", "rollMode"); let blind = false;
switch (rollMode) { rollMode = rollMode ?? game.settings.get("core", "rollMode");
case "blindroll": //GM only switch (rollMode) {
blind = true; case "blindroll": //GM only
case "gmroll": //GM + rolling player blind = true;
whisper = ChatUtility.getUsers(user => user.isGM); case "gmroll": //GM + rolling player
break; whisper = ChatUtility.getUsers(user => user.isGM);
case "roll": //everybody break;
whisper = ChatUtility.getUsers(user => user.active); case "roll": //everybody
break; whisper = ChatUtility.getUsers(user => user.active);
case "selfroll": break;
whisper = [game.user.id]; case "selfroll":
break; whisper = [game.user.id];
break;
}
await game.dice3d.showForRoll(roll, game.user, true, whisper, blind);
} }
await game.dice3d.showForRoll(roll, game.user, true, whisper, blind);
} }
} }
} }

View File

@ -214,7 +214,7 @@ Hooks.once("ready", function () {
StatusEffects.onReady(); StatusEffects.onReady();
RdDHerbes.initializeHerbes(); RdDHerbes.initializeHerbes();
RdDDice.onReady();
/* -------------------------------------------- */ /* -------------------------------------------- */
/* Affiche/Init le calendrier */ /* Affiche/Init le calendrier */
let calendrier = new RdDCalendrier(); let calendrier = new RdDCalendrier();