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"}}