From b89dd3845a79f426f220b30c6b528596b0cd6073 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 10 Jul 2026 18:07:08 +0200 Subject: [PATCH] =?UTF-8?q?Visibilit=C3=A9=20des=20jets=20/rdd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 1 + module/actor.js | 33 ++------------------------------- module/actor/base-actor-reve.js | 6 ++++-- module/actor/base-actor.js | 6 +++--- module/rdd-commands.js | 8 ++++---- module/rdd-resolution-table.js | 4 ++-- module/rdd-roll-result.js | 2 +- 7 files changed, 17 insertions(+), 43 deletions(-) diff --git a/changelog.md b/changelog.md index 97bdd61f..c0854232 100644 --- a/changelog.md +++ b/changelog.md @@ -3,6 +3,7 @@ ## 13.0.48 - Les vagabondages d'Illisys - suppression du type de TMR "Inconnu" des feuilles de création de signes draconiques (ce type sert uniquement pour le cas où une case saisie à la main est incorrecte) +- les jets de dés /rdd utilisent le mode de visibilité sélectionné ## 13.0.47 - Les goûts et les couleurs d'Illisys diff --git a/module/actor.js b/module/actor.js index e05a15d9..e60ceba3 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1570,9 +1570,10 @@ export class RdDActor extends RdDBaseActorSang { /* -------------------------------------------- */ async ajoutExperience(rollData, hideChatMessage = 'show') { + const rollMode = rollData.current?.rollmode?.key ?? game.settings.get("core", "rollMode") if (!rollData.rolled.isPart || rollData.finalLevel >= 0 || - game.settings.get("core", "rollMode") == 'selfroll' || + rollMode == 'selfroll' || !Misc.hasConnectedGM()) { return } @@ -1795,36 +1796,6 @@ export class RdDActor extends RdDBaseActorSang { } } - /** - * Méthode pour faire un jet prédéterminer sans ouvrir la fenêtre de dialogue - * @param {*} caracName - * @param {*} compName - * @param {*} diff - * @param {*} options - * @returns - */ - async doRollCaracCompetence(caracName, compName, diff, options = { title: "" }) { - const carac = this.getCaracByName(caracName); - if (!carac) { - ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`) - return; - } - const competence = this.getCompetence(compName); - let rollData = { - alias: this.getAlias(), - caracValue: Number(carac.value), - selectedCarac: carac, - competence: competence, - diffLibre: diff, - show: { title: options?.title ?? '' } - }; - RollDataAjustements.calcul(rollData, this); - await RdDResolutionTable.rollData(rollData); - this.ajoutExperience(rollData); - await RdDRollResult.displayRollData(rollData, this) - return rollData.rolled; - } - /* -------------------------------------------- */ async creerTacheDepuisLivre(item, options = { renderSheet: true }) { const nomTache = "Lire " + item.name; diff --git a/module/actor/base-actor-reve.js b/module/actor/base-actor-reve.js index 74598c0f..02b0bd88 100644 --- a/module/actor/base-actor-reve.js +++ b/module/actor/base-actor-reve.js @@ -347,7 +347,8 @@ export class RdDBaseActorReve extends RdDBaseActor { }); } /** - * Méthode pour faire un jet prédéterminer sans ouvrir la fenêtre de dialogue + * Méthode pour faire un jet prédéterminé sans ouvrir la fenêtre de dialogue + * * @param {*} caracName code ou label de la caractéristique. On peut utiliser 'intel' pour Intellect. * @param {*} compName nom de compétence ou nom abrégé. * @param {*} diff difficulté (0 si undefined) @@ -367,12 +368,13 @@ export class RdDBaseActorReve extends RdDBaseActor { selectedCarac: carac, competence: competence, diffLibre: diff ?? 0, + current: { rollmode: { key: game.settings.get("core", "rollMode") } }, show: { title: options?.title ?? '' } } RollDataAjustements.calcul(rollData, this); await RdDResolutionTable.rollData(rollData); this.ajoutExperience(rollData); - await RdDResolutionTable.displayRollData(rollData, this) + await RdDRollResult.displayRollData(rollData, this) return rollData.rolled; } diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 544b63b1..e5c908db 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -147,8 +147,6 @@ export class RdDBaseActor extends Actor { return this.name } - isPersonnageJoueur() { return false } - getCarac() { return foundry.utils.duplicate(this.system.carac) } @@ -267,6 +265,7 @@ export class RdDBaseActor extends Actor { return game.users.players.find(player => player.active && player.character?.id == this.id); } + isPersonnageJoueur() { return false } isCreatureOuEntite() { return this.isCreature() || this.isEntite() } isCreature() { return false } isEntite() { return false } @@ -899,7 +898,8 @@ export class RdDBaseActor extends Actor { actionImpossible(action) { ui.notifications.info(`${this.getAlias()} ne peut pas faire cette action: ${action}`) } - + async doRollCaracCompetence(caracName, compName, diff, options = { title: "" }) { + } ajoutExperience(rollData) { } isAlcoolise() { return false } async jetEthylisme() { this.actionImpossible("jet d'éthylisme") } diff --git a/module/rdd-commands.js b/module/rdd-commands.js index 1e061fdd..6ca105de 100644 --- a/module/rdd-commands.js +++ b/module/rdd-commands.js @@ -340,11 +340,11 @@ export class RdDCommands { const caracName = params[0]; let competence = length > 1 ? actors[0].getCompetence(Misc.join(params.slice(1, length), ' ')) : { name: undefined }; if (competence) { - for (let actor of actors) { - await actor.doRollCaracCompetence(caracName, competence.name, diff); - } + await Promise.all( + actors.map(it => it.doRollCaracCompetence(caracName, competence.name, diff)) + ) } - return; + return } else { ui.notifications.warn("Sélectionnez au moins un personnage pour lancer les dés") diff --git a/module/rdd-resolution-table.js b/module/rdd-resolution-table.js index ed6f69f6..c239a5d7 100644 --- a/module/rdd-resolution-table.js +++ b/module/rdd-resolution-table.js @@ -98,7 +98,7 @@ export class RdDResolutionTable { /* -------------------------------------------- */ static async rollData(rollData) { rollData.rolled = await this.roll(rollData.caracValue, rollData.finalLevel, rollData); - return rollData; + return rollData } /* -------------------------------------------- */ @@ -107,7 +107,7 @@ export class RdDResolutionTable { this._updateChancesWithBonus(chances, rollData.bonus, finalLevel); this._updateChancesFactor(chances, rollData.diviseurSignificative); chances.showDice = rollData.showDice; - chances.rollMode = rollData.rollMode; + chances.rollMode = rollData.current?.rollmode?.key ?? game.settings.get("core", "rollMode") let rolled = await this.rollChances(chances, rollData.diviseurSignificative, rollData.forceDiceResult); rolled.caracValue = caracValue; diff --git a/module/rdd-roll-result.js b/module/rdd-roll-result.js index 3e244258..9c842888 100644 --- a/module/rdd-roll-result.js +++ b/module/rdd-roll-result.js @@ -6,7 +6,7 @@ export class RdDRollResult { static async displayRollData(rollData, actor = undefined, template = 'chat-resultat-general.hbs') { return await ChatMessage.create(ChatUtility.adaptVisibility( { content: await RdDRollResult.buildRollDataHtml(rollData, template) }, - { actor: actor, rollMode: rollData.current?.rollmode?.key } + { actor: actor, rollMode: rollData.current?.rollmode?.key ?? game.settings.get("core", "rollMode") } )) }