From 396f73ec22b924dae0a8c488e31f208be5c571b3 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Mon, 15 Mar 2021 00:10:29 +0100 Subject: [PATCH] Fix appel au moral MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Maintenant géré pour les cas autres qu'un jet de compétence pur: - attaque/défense - tâches - carac pure - arts - jeu Message à la 2ème personne, la 3eme est utilisée juste pour le "titre" des messages --- module/actor.js | 15 ++++++---- module/rdd-combat.js | 3 ++ module/rdd-roll.js | 2 +- templates/chat-info-appel-au-moral.html | 12 +++++--- templates/chat-resultat-alchimie.html | 1 + templates/chat-resultat-attaque.html | 31 ++++++++++----------- templates/chat-resultat-chant.html | 1 + templates/chat-resultat-danse.html | 1 + templates/chat-resultat-esquive.html | 1 + templates/chat-resultat-general.html | 1 + templates/chat-resultat-jeu.html | 1 + templates/chat-resultat-musique.html | 1 + templates/chat-resultat-oeuvre.html | 1 + templates/chat-resultat-parade.html | 1 + templates/chat-resultat-recettecuisine.html | 20 +++++++------ templates/chat-resultat-tache.html | 1 + 16 files changed, 58 insertions(+), 35 deletions(-) diff --git a/module/actor.js b/module/actor.js index 92afa55d..ce68b6a4 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1708,7 +1708,7 @@ export class RdDActor extends Actor { createCallbackAppelAuMoral() { /* Si l'appel au moral est utilisé, on l'affiche dans le chat et on diminue éventuellement le moral */ return { condition: r => r.use.appelAuMoral && game.settings.get("core", "rollMode") != 'selfroll', - action: r => { this.displayAppelAuMoral ; this._appliquerAppelMoral(r, game.settings.get("core", "rollMode") != 'blindroll') } + action: r => this._appliquerAppelMoral(r) }; } @@ -1786,9 +1786,10 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async _appliquerAppelMoral(rollData, display = true) { if (!this.isPersonnage()) return; - if (!rollData.rolled.isEchec) return; - this.moralIncDec(-1); /* L'appel au moral a échoué. Le personnage perd un point de moral */ - rollData.jetEchouerMoralDiminuer = true; + 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; + } } /* -------------------------------------------- */ @@ -2013,6 +2014,7 @@ export class RdDActor extends Actor { label: 'Jet ' + Grammar.apostrophe('de', rollData.selectedCarac.label), callbacks: [ this.createCallbackExperience(), + this.createCallbackAppelAuMoral(), { action: r => this._onRollCaracResult(r) } ] } @@ -2049,7 +2051,7 @@ export class RdDActor extends Actor { label: 'Jet ' + Grammar.apostrophe('de', name), callbacks: [ this.createCallbackExperience(), - this.createCallbackAppelAuMoral(), + this.createCallbackAppelAuMoral(), { action: r => this._competenceResult(r) } ] }); @@ -2096,6 +2098,7 @@ export class RdDActor extends Actor { label: 'Jet de Tâche ' + tache.name, callbacks: [ this.createCallbackExperience(), + this.createCallbackAppelAuMoral(), { condition: r => r.rolled.isETotal, action: r => this._tacheETotal(r) }, { action: r => this._tacheResult(r) } ] @@ -2144,6 +2147,7 @@ export class RdDActor extends Actor { height: 600, callbacks: [ this.createCallbackExperience(), + this.createCallbackAppelAuMoral(), { action: r => callBackResult(r) } ] }); @@ -2982,6 +2986,7 @@ export class RdDActor extends Actor { label: 'Tache Alchimique', callbacks: [ this.createCallbackExperience(), + this.createCallbackAppelAuMoral(), { action: r => this._alchimieResult(r, false) } ] } diff --git a/module/rdd-combat.js b/module/rdd-combat.js index b338adb1..db85f5c1 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -700,6 +700,7 @@ export class RdDCombat { label: 'Attaque: ' + (arme?.name ?? competence.name), callbacks: [ this.attacker.createCallbackExperience(), + this.attacker.createCallbackAppelAuMoral(), { action: r => this.removeChatMessageActionsPasseArme(r.passeArme) }, { condition: r => arme && !RdDCombat.isParticuliere(r), action: r => this.attacker.incDecItemUse(arme._id) }, { condition: r => (RdDCombat.isReussite(r) && !RdDCombat.isParticuliere(r)), action: r => this._onAttaqueNormale(r) }, @@ -936,6 +937,7 @@ export class RdDCombat { label: 'Parade: ' + (arme ? arme.name : rollData.competence.name), callbacks: [ this.defender.createCallbackExperience(), + this.defender.createCallbackAppelAuMoral(), { action: r => this.removeChatMessageActionsPasseArme(r.passeArme) }, { condition: r => !RdDCombat.isParticuliere(r), action: r => this.defender.incDecItemUse(armeParadeId) }, { condition: RdDCombat.isReussite, action: r => this._onParadeNormale(r) }, @@ -1039,6 +1041,7 @@ export class RdDCombat { label: 'Esquiver', callbacks: [ this.defender.createCallbackExperience(), + this.defender.createCallbackAppelAuMoral(), { condition: r => !RdDCombat.isParticuliere(r), action: r => this.defender.incDecItemUse(esquive._id) }, { action: r => this.removeChatMessageActionsPasseArme(r.passeArme) }, { condition: RdDCombat.isReussite, action: r => this._onEsquiveNormale(r) }, diff --git a/module/rdd-roll.js b/module/rdd-roll.js index 079fc277..fb25994d 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -54,7 +54,7 @@ export class RdDRoll extends Dialog { useMalusSurenc: false, appelAuMoralPossible : false, /* Est-ce que l'appel au moral est possible ? Variable utisé pour l'affichage ou non de la ligne concernant le moral */ appelAuMoralDemander :false, /* Est-ce que le joueur demande d'utiliser le moral ? Utile si le joueur change plusieurs fois de carac associée. */ - jetEchouerMoralDiminuer : false, /* Pour l'affichage dans le chat */ + perteMoralEchec : false, /* Pour l'affichage dans le chat */ use: { libre: true, conditions: true, surenc: false, encTotal: false, appelAuMoral : false /* Le jet se fait ou non en utilisant l'appel au moral */}, isMalusEncombrementTotal: RdDItemCompetence.isMalusEncombrementTotal(rollData.competence), useMalusEncTotal: false, diff --git a/templates/chat-info-appel-au-moral.html b/templates/chat-info-appel-au-moral.html index df0f2282..fceb6eff 100644 --- a/templates/chat-info-appel-au-moral.html +++ b/templates/chat-info-appel-au-moral.html @@ -1,4 +1,8 @@ -{{#if use.appelAuMoral}}
- {{alias}} fait appel {{#if (gt moral 0)}}au moral{{else}}à l'énergie du déspoir{{/if}} {{#if jetEchouerMoralDiminuer}}et échoue, diminuant son moral.{{else}} et réussit.{{/if}} - {{^jetEchouerMoralDiminuer}} Son moral reste inchangé à {{moral}}.{{/jetEchouerMoralDiminuer}} -
{{/if}} +{{#if use.appelAuMoral}} + + 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}}. + {{else}}et réussi, votre moral reste de {{moral}}. + {{/if}} + +{{/if}} diff --git a/templates/chat-resultat-alchimie.html b/templates/chat-resultat-alchimie.html index 38273c82..e76696fe 100644 --- a/templates/chat-resultat-alchimie.html +++ b/templates/chat-resultat-alchimie.html @@ -10,4 +10,5 @@ {{else}} {{alias}} a raté son opération alchimique ! Sa recette est un echec. {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
diff --git a/templates/chat-resultat-attaque.html b/templates/chat-resultat-attaque.html index 3f3ed617..5c29754e 100644 --- a/templates/chat-resultat-attaque.html +++ b/templates/chat-resultat-attaque.html @@ -17,25 +17,24 @@
{{/if}}
- {{#if rolled.isSuccess}} - {{show.cible}} doit se défendre à {{diffLibre}}, ou encaisser à - {{~#if (eq dmg.mortalite 'non-mortel')}} - ({{numberFormat dmg.total decimals=0 sign=true}}) (dommages non-mortel) - {{else if (eq dmg.mortalite 'mortel')}} - {{numberFormat dmg.total decimals=0 sign=true}} - {{else}} - {{numberFormat dmg.total decimals=0 sign=true}} (entités de cauchemar) - {{~/if}}. - {{#if show.isRecul}}Si votre adversaire n'esquive pas, il devra résister à l'impact ou reculer sous le choc!{{/if}} - -
+ {{#if rolled.isSuccess}} + {{show.cible}} doit se défendre à {{diffLibre}}, ou encaisser à + {{~#if (eq dmg.mortalite 'non-mortel')}} + ({{numberFormat dmg.total decimals=0 sign=true}}) (dommages non-mortel) + {{else if (eq dmg.mortalite 'mortel')}} + {{numberFormat dmg.total decimals=0 sign=true}} + {{else}} + {{numberFormat dmg.total decimals=0 sign=true}} (entités de cauchemar) + {{~/if}}. + {{#if show.isRecul}}Si votre adversaire n'esquive pas, il devra résister à l'impact ou reculer sous le choc!{{/if}} + {{#if (eq particuliere 'rapidite')}} -

Votre attaque rapide vous permet une deuxième attaque, ou défense supplémentaire!
{{/if}} - {{else}} - Votre attaque a échoué! - {{/if}} +{{else}} + Votre attaque a échoué! +{{/if}} +{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
\ No newline at end of file diff --git a/templates/chat-resultat-chant.html b/templates/chat-resultat-chant.html index 6af6e9d6..4ebcacbc 100644 --- a/templates/chat-resultat-chant.html +++ b/templates/chat-resultat-chant.html @@ -10,5 +10,6 @@ {{else}} {{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}. {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}} diff --git a/templates/chat-resultat-danse.html b/templates/chat-resultat-danse.html index 9d12528b..50a5cc2c 100644 --- a/templates/chat-resultat-danse.html +++ b/templates/chat-resultat-danse.html @@ -10,5 +10,6 @@ {{else}} {{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}. {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}} diff --git a/templates/chat-resultat-esquive.html b/templates/chat-resultat-esquive.html index e6aab0f0..9d350499 100644 --- a/templates/chat-resultat-esquive.html +++ b/templates/chat-resultat-esquive.html @@ -13,6 +13,7 @@ {{else}} Votre esquive a échoué! {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{#if attackerRoll.tactique}} diff --git a/templates/chat-resultat-general.html b/templates/chat-resultat-general.html index 2bc62cb6..830c7e4f 100644 --- a/templates/chat-resultat-general.html +++ b/templates/chat-resultat-general.html @@ -12,6 +12,7 @@
{{#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}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
{{~#if show.explications}}
diff --git a/templates/chat-resultat-jeu.html b/templates/chat-resultat-jeu.html index 6b8c01f3..2dc5247e 100644 --- a/templates/chat-resultat-jeu.html +++ b/templates/chat-resultat-jeu.html @@ -10,5 +10,6 @@ {{else}} {{alias}} a perdu ... {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}} diff --git a/templates/chat-resultat-musique.html b/templates/chat-resultat-musique.html index 0b0a6d0b..eaf9096d 100644 --- a/templates/chat-resultat-musique.html +++ b/templates/chat-resultat-musique.html @@ -10,5 +10,6 @@ {{else}} {{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}. {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}} diff --git a/templates/chat-resultat-oeuvre.html b/templates/chat-resultat-oeuvre.html index d7e349e5..447f7897 100644 --- a/templates/chat-resultat-oeuvre.html +++ b/templates/chat-resultat-oeuvre.html @@ -11,5 +11,6 @@ {{else}} {{alias}} est peu inspiré(e) et son interprétation a une qualité de {{qualiteFinale}}. {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}} diff --git a/templates/chat-resultat-parade.html b/templates/chat-resultat-parade.html index e6638f0e..2bc336a5 100644 --- a/templates/chat-resultat-parade.html +++ b/templates/chat-resultat-parade.html @@ -12,6 +12,7 @@ La parade a échoué! {{/if}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{#if (eq show.recul 'encaisse')}}
{{alias}} ne recule pas malgré la violence du coup.
diff --git a/templates/chat-resultat-recettecuisine.html b/templates/chat-resultat-recettecuisine.html index 5eb098fd..f775caf3 100644 --- a/templates/chat-resultat-recettecuisine.html +++ b/templates/chat-resultat-recettecuisine.html @@ -4,16 +4,18 @@ {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
- -{{#if rolled.isSuccess}} + + {{#if rolled.isSuccess}} {{alias}} réussit sa recette, avec un plat de qualité {{qualiteFinale}} pour {{oeuvre.data.sust}} Points de Sustentation. -{{else}} + {{else}} {{alias}} fait un piètre cuisinier(e), et obtient {{#if (lt qualiteFinale 0)}}un plat à l'exotisme certain{{else}}un plat de qualité {{qualiteFinale}}{{/if}}. Selon la décision du MJ, le plat peut fournir {{oeuvre.data.sust}} Points de Sustentation -{{/if}} - -{{#if (lt exotismeFinal 0)}} -
Au vu de l'exotisme du plat, les convives devront réussir un jet de Volonté / Cuisine à {{exotismeFinal}}. -En cas d'échec, ils peuvent se forcer pour faire plaisir au Maître Queux, mais devront faire un jet de moral Malheureux. -{{/if}} + {{/if}} + + {{#if (lt exotismeFinal 0)}} +
Au vu de l'exotisme du plat, les convives devront réussir un jet de Volonté / Cuisine à {{exotismeFinal}}. + En cas d'échec, ils peuvent se forcer pour faire plaisir au Maître Queux, mais devront faire un jet de moral Malheureux. + {{/if}} +
+{{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} {{> "systems/foundryvtt-reve-de-dragon/templates/chat-poesie.html" oeuvre.data}} diff --git a/templates/chat-resultat-tache.html b/templates/chat-resultat-tache.html index b9792039..a5049bed 100644 --- a/templates/chat-resultat-tache.html +++ b/templates/chat-resultat-tache.html @@ -10,4 +10,5 @@ votre avancement est de {{tache.data.points_de_tache_courant}} sur {{tache.data.points_de_tache}} point{{~#if (gt tache.data.points_de_tache_courant 1)}}s{{/if}} de tâche. {{#if tache.data.fatigue}}
Vous vous êtes fatigué de {{tache.data.fatigue}} case{{~#if (gt tache.data.fatigue 1)}}s{{/if}}.{{/if}} {{#if rolled.isETotal}}
Votre échec total augmente de 1 la difficulté de la tâche!{{/if~}} + {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}}