From 4b1381e53553e436630d0888daec7cf1656c5783 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sat, 24 Jun 2023 01:41:12 +0200 Subject: [PATCH] =?UTF-8?q?Decompte=20des=20heure=20en=20cas=20de=20r?= =?UTF-8?q?=C3=A9veil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Si le gardien gère la durée des nuits, en cas de rêve de dragon, les heures restant à dormir sont mises à jour. --- module/actor.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/module/actor.js b/module/actor.js index 0bddf01e..3ce87a7e 100644 --- a/module/actor.js +++ b/module/actor.js @@ -622,7 +622,7 @@ export class RdDActor extends RdDBaseActor { content: this.name + ': ' }; const insomnie = this.system.sommeil?.insomnie || heures == 0; - await this.recupereEndurance({message:message, demi:insomnie}); + await this.recupereEndurance({ message: message, demi: insomnie }); if (insomnie) { message.content += 'Vous ne trouvez pas le sommeil'; } @@ -630,10 +630,10 @@ export class RdDActor extends RdDBaseActor { let jetsReve = []; let dormi = await this.dormirDesHeures(jetsReve, message, heures, options); if (jetsReve.length > 0) { - message.content += `Vous récupérez ${jetsReve.map(it => it <0 ? '(dragon)' : it).reduce(Misc.joining("+"))} Points de rêve. `; + message.content += `Vous récupérez ${jetsReve.map(it => it < 0 ? '(dragon)' : it).reduce(Misc.joining("+"))} Points de rêve. `; } if (dormi.etat == 'eveil') { - message.content += 'Vous êtes réveillé par un Rêve de Dragon.' + await this.reveilReveDeDragon(message, dormi.heures); } options.chateauDormant = options.chateauDormant && dormi.heures >= heures; message.content += `Vous avez dormi ${dormi.heures <= 1 ? 'une heure' : (dormi.heures + ' heures')}. `; @@ -650,6 +650,14 @@ export class RdDActor extends RdDBaseActor { } } + async reveilReveDeDragon(message, heures) { + message.content += 'Vous êtes réveillé par un Rêve de Dragon.'; + const restant = Math.max(this.system.sommeil?.heures - heures, 0) + if (restant > 0) { + await this.update({ 'system.sommeil': { heures: restant } }); + } + } + async dormirDesHeures(jetsReve, message, heures, options) { const dormi = { heures: 0, etat: 'dort' }; for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) { @@ -703,10 +711,10 @@ export class RdDActor extends RdDBaseActor { } /* -------------------------------------------- */ - async recupereEndurance({message, demi}) { + async recupereEndurance({ message, demi }) { let max = this._computeEnduranceMax(); if (demi) { - max = Math.floor(max/2); + max = Math.floor(max / 2); } const manquant = max - this.system.sante.endurance.value;