diff --git a/icons/moral-heureux.svg b/icons/moral-heureux.svg new file mode 100644 index 00000000..60be4967 --- /dev/null +++ b/icons/moral-heureux.svg @@ -0,0 +1,56 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/icons/moral-malheureux.svg b/icons/moral-malheureux.svg new file mode 100644 index 00000000..d4b32e93 --- /dev/null +++ b/icons/moral-malheureux.svg @@ -0,0 +1,57 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/icons/moral-neutre.svg b/icons/moral-neutre.svg new file mode 100644 index 00000000..e9361418 --- /dev/null +++ b/icons/moral-neutre.svg @@ -0,0 +1,57 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 5792026f..d0f05218 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -450,6 +450,18 @@ export class RdDActorSheet extends ActorSheet { this.actor.stressTest(); this.render(true); }); + html.find('#moral-malheureux').click((event) => { + this.actor.jetDeMoral('malheureuse'); + this.render(true); + }); + html.find('#moral-neutre').click((event) => { + this.actor.jetDeMoral('neutre'); + this.render(true); + }); + html.find('#moral-heureux').click((event) => { + this.actor.jetDeMoral('heureuse'); + this.render(true); + }); html.find('#ethylisme-test').click((event) => { this.actor.ethylismeTest(); this.render(true); diff --git a/module/actor.js b/module/actor.js index d2375ce2..1dcc6314 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1189,6 +1189,45 @@ export class RdDActor extends Actor { this.update( { "data.blessures": blessures } ); } + async jetDeMoral(situation) { + let jetMoral = new Roll("1d20").roll(); + RdDDice.show(jetMoral); + let compteurs = duplicate(this.data.data.compteurs); + compteurs.moral.value = Misc.toInt(compteurs.moral.value); + const succes = jetMoral.total <= 10 + compteurs.moral.value; + let ajustementMoral = this._calculAjustementMoral(succes, compteurs.moral, situation); + if (ajustementMoral != 0) { + compteurs.moral.value += ajustementMoral; + if (compteurs.moral.value>3) { + // exaltation + compteurs.moral.value --; + compteurs.exaltation.value = Misc.toInt(compteurs.exaltation.value) + 1; + } + if (compteurs.moral.value<-3) { + // dissolution + compteurs.moral.value ++; + compteurs.dissolution.value = Misc.toInt(compteurs.dissolution.value) + 1; + } + await this.update( { 'data.compteurs': compteurs} ); + } + ChatMessage.create({ + whisper: ChatMessage.getWhisperRecipients(game.user.name), + content: "Jet de moral ("+ jetMoral.total + ")" + (succes? "réussi": "manqué") + " en situation "+situation+", vous "+(ajustementMoral>0? "gagnez du moral":ajustementMoral<0? "perdez du moral": "gardez votre moral") + }); + } + + _calculAjustementMoral(succes, moral, situation) + { + switch (situation) { + case 'heureuse': return succes ? 1 : 0; + case 'malheureuse':return succes ? 0 : -1; + case 'neutre': + if (succes && moral <= 0) return 1; + if (!succes && moral > 0) return -1; + } + return 0; + + } /* -------------------------------------------- */ async ethylismeTest() { let rollData = { @@ -1648,7 +1687,7 @@ export class RdDActor extends Actor { // Cas de désir lancinant, pas d'expérience sur particulière if ( this.checkDesirLancinant() ) { ChatMessage.create( { content: `Vous souffrez au moins d'un Désir Lancinant, vous ne pouvez pas gagner d'expérience sur une Particulière tant que le désir n'est pas assouvi`, - whisper: ChatMessage.getWhisperRecipients(game.user.name) } ).create(); + whisper: ChatMessage.getWhisperRecipients(game.user.name) } ); return { result:false, xpcarac:0, xpCompetence: 0 }; } @@ -1672,7 +1711,7 @@ export class RdDActor extends Actor { await this.update( {"data.carac": carac } ); } else { ChatMessage.create( { content: `Vous avez ${xpCarac} à répartir pour la caractérisque dérivée ${caracName}. Vous devez le faire manuellement.`, - whisper: ChatMessage.getWhisperRecipients(game.user.name) } ).create(); + whisper: ChatMessage.getWhisperRecipients(game.user.name) } ); } return { result:true, xpcarac:xpCarac, xpCompetence: xpComp }; //XP } diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 61c7b8f8..e868b0e2 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -133,7 +133,7 @@
  • Chance actuelle - Utiliser + Utiliser
  • {{#each data.compteurs as |compteur key|}} {{#if compteur.isChance}} @@ -141,15 +141,19 @@
  • {{compteur.label}} - {{#if compteur.isStress}} + + {{#if compteur.isStress}} Transformer - {{else}} - {{#if (eq compteur.label 'Ethylisme')}} + {{else if (eq compteur.label 'Ethylisme')}} Jet d'Ethylisme + {{else if (eq compteur.label 'Moral')}} + Jet de moral situation malheureuse + Jet de moral situation neutre + Jet de moral situation heureuse {{else}} - {{/if}} {{/if}} +
  • {{/if}} {{/each}}