diff --git a/module/actor-sheet.js b/module/actor-sheet.js index ad95fb49..dd0ccfab 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -389,6 +389,11 @@ export class RdDActorSheet extends ActorSheet { this.actor.ethylismeTest(); this.render(true); }); + + html.find('#jet-vie').click((event) => { + this.actor.jetVie(); + this.render(true); + }); html.find('#vie-plus').click((event) => { this.actor.santeIncDec("vie", 1); diff --git a/module/actor.js b/module/actor.js index 6079c2a5..5be795d4 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1055,6 +1055,32 @@ export class RdDActor extends Actor { { return blessuresListe.filter(b => b.active).length } + + /* -------------------------------------------- */ + async jetVie() { + let myRoll = new Roll("1d20").roll(); + myRoll.showDice = true; + await RdDDice.show(myRoll); + + let msgText = "Jet de Vie : " + myRoll.total + " / " + this.data.data.sante.vie.value + "
"; + if ( myRoll.total <= this.data.data.sante.vie.value ) { + msgText += "Jet réussi, pas de perte de point de vie (prochain jet dans 1 round pour 1 critique, SC minutes pour une grave)"; + if ( myRoll.total == 1) { + msgText += "La durée entre 2 jets de vie est multipliée par 20 (20 rounds pour une critique, SCx20 minutes pour une grave)"; + } + } else { + msgText += "Jet échoué, vous perdez 1 point de vie"; + await this.santeIncDec("vie", -1); + if ( myRoll.total == 20) { + msgText += "Votre personnage est mort !!!!!"; + } + } + const message = { + content: msgText, + whisper: ChatMessage.getWhisperRecipients(game.user.name) + }; + ChatMessage.create(message); + } /* -------------------------------------------- */ async santeIncDec(name, inc, isCritique = false) { diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 4d3889df..c0b12d6d 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -11,7 +11,7 @@