From a44904ebc0956293fd557e6d9bf764c31f7bb44b Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 18 Mar 2021 00:41:26 +0100 Subject: [PATCH] Fix moral sur dissolution --- module/actor.js | 11 +++++++---- module/rdd-roll.js | 2 +- templates/chat-info-appel-au-moral.html | 5 +++-- templates/chat-resultat-competence.html | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/module/actor.js b/module/actor.js index d7ac680c..8b046d36 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1535,6 +1535,7 @@ export class RdDActor extends Actor { } await this.update({ 'data.compteurs': compteurs }); } + return compteurs.moral.value; } /* -------------------------------------------- */ @@ -1625,7 +1626,7 @@ export class RdDActor extends Actor { content: "Décidément, vous avez l'alcool triste, vous perdez finalement un point de moral!", whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name) }); - this.moralIncDec(-1); + await this.moralIncDec(-1); } } } @@ -1789,9 +1790,11 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async _appliquerAppelMoral(rollData, display = true) { if (!this.isPersonnage()) return; - if (rollData.rolled.isEchec || (rollData.rolled.roll * rollData.ajustements.diviseurSignificative > rollData.score)) { - this.moralIncDec(-1); /* L'appel au moral a échoué. Le personnage perd un point de moral */ - rollData.perteMoralEchec = true; + if (!rollData.useMoral) return; + if (rollData.rolled.isEchec || + (rollData.ajustements.diviseurSignificative && (rollData.rolled.roll * rollData.ajustements.diviseurSignificative > rollData.score))) { + rollData.perteMoralEchec = rollData.moral<=-3? 'dissolution' : 'perte'; + rollData.moral = await this.moralIncDec(-1); /* L'appel au moral a échoué. Le personnage perd un point de moral */ } } diff --git a/module/rdd-roll.js b/module/rdd-roll.js index be625be5..07462460 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -125,7 +125,7 @@ export class RdDRoll extends Dialog { if (action.callbacks) for (let callback of action.callbacks) { if (callback.condition == undefined || callback.condition(this.rollData)) { - callback.action(this.rollData); + await callback.action(this.rollData); } } } diff --git a/templates/chat-info-appel-au-moral.html b/templates/chat-info-appel-au-moral.html index fceb6eff..e4c3605d 100644 --- a/templates/chat-info-appel-au-moral.html +++ b/templates/chat-info-appel-au-moral.html @@ -1,7 +1,8 @@ -{{#if use.appelAuMoral}} +{{#if useMoral}} Vous avez fait appel {{#if (gt moral 0)}}au moral{{else}}à l'énergie du déspoir{{/if}} - {{#if perteMoralEchec}}et échoué, votre moral baisse à {{moral}}. + {{#if (eq perteMoralEchec 'dissolution')}}et échoué, cous marquez un point de dissolution!. + {{else if (eq perteMoralEchec 'perte')}}et échoué, votre moral baisse à {{moral}}. {{else}}et réussi, votre moral reste de {{moral}}. {{/if}} diff --git a/templates/chat-resultat-competence.html b/templates/chat-resultat-competence.html index 8a46b0a8..c28065b5 100644 --- a/templates/chat-resultat-competence.html +++ b/templates/chat-resultat-competence.html @@ -10,7 +10,7 @@ {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
- {{#if rolled.ptTache}}{{rolled.ptTache}} points de tâche{{/if}}{{#if rolled.ptQualite}}{{#if rolled.ptTache}},{{/if}} ajustement Qualité {{numberFormat rolled.ptQualite decimals=0 sign=true}}{{/if}} + {{#if rolled.ptTache}}{{rolled.ptTache}} points de tâche{{/if}}{{#if rolled.ptQualite}}{{#if rolled.ptTache}},{{/if}} Qualité ajustée de {{numberFormat rolled.ptQualite decimals=0 sign=true}}{{/if}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{~#if show.explications}}