From 633638a9abfc3577965ee1bfafac10ffb093d936 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 4 Mar 2025 22:04:52 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20r=C3=A9cup=C3=A9ration=20sommeil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les différentsq updates pouvaient ne pas être visibles lors du sommeil En forçant un render 20ms après la fin des actions qui impliquent un sommeil, les mises à jour sont correctes --- module/actor.js | 63 +++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/module/actor.js b/module/actor.js index 65d50a2f..4fff86e3 100644 --- a/module/actor.js +++ b/module/actor.js @@ -243,7 +243,7 @@ export class RdDActor extends RdDBaseActorSang { } await this.resetInfoSommeil() ChatMessage.create(message); - this.sheet.render(true); + setTimeout(() => this.sheet.render(), 20) } async _recuperationSante(message) { @@ -299,7 +299,7 @@ export class RdDActor extends RdDBaseActorSang { ChatMessage.create(message); } await this.resetInfoSommeil(); - this.sheet.render(true); + setTimeout(() => this.sheet.render(), 20) } } @@ -442,10 +442,9 @@ export class RdDActor extends RdDBaseActorSang { message.content += 'Vous ne trouvez pas le sommeil'; } else { - 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 ? '0 (réveil)' : it).reduce(Misc.joining("+"))} Points de rêve. `; + let dormi = await this.$dormirDesHeures(message, heures, options); + if (dormi.jetsReve.length > 0) { + message.content += `Vous récupérez ${dormi.jetsReve.map(it => it < 0 ? '0 (réveil)' : it).reduce(Misc.joining("+"))} Points de rêve. `; } if (dormi.etat == 'eveil') { await this.reveilReveDeDragon(message, dormi.heures); @@ -461,7 +460,7 @@ export class RdDActor extends RdDBaseActorSang { await this.dormirChateauDormant(); } else { - this.sheet.render(true); + setTimeout(() => this.sheet.render(), 20) } } @@ -472,18 +471,18 @@ export class RdDActor extends RdDBaseActorSang { } } - async dormirDesHeures(jetsReve, message, heures, options) { - const dormi = { heures: 0, etat: 'dort' }; + async $dormirDesHeures(message, heures, options) { + const dormi = { heures: 0, etat: 'dort', jetsReve: [] }; for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) { - await this._recupererEthylisme(message); + await this.$recupererEthylisme(message); if (options.grisReve) { - await this.recupererFatigue(message); + await this.$recupererFatigue(message); } else if (!this.system.sommeil?.insomnie) { - await this.recupererFatigue(message); - dormi.etat = await this.jetRecuperationReve(jetsReve, message); + await this.$recupererFatigue(message); + await this.$jetRecuperationReve(dormi, message); if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) { - dormi.etat = await this.jetRecuperationReve(jetsReve, message); + dormi.etat = await this.$jetRecuperationReve(dormi, message); } } } @@ -491,35 +490,36 @@ export class RdDActor extends RdDBaseActorSang { } /* -------------------------------------------- */ - async jetRecuperationReve(jetsReve, message) { + async $jetRecuperationReve(dormi, message) { if (this.getReveActuel() < this.system.reve.seuil.value) { - let reve = await RdDDice.rollTotal("1dr"); + const reve = await RdDDice.rollTotal("1dr") if (reve >= 7) { // Rêve de Dragon ! message.content += `Vous faites un Rêve de Dragon de ${reve} Points de rêve qui vous réveille! `; await this.combattreReveDeDragon(reve); - jetsReve.push(-1); - return 'eveil'; + dormi.jetsReve.push(-1); + dormi.etat = 'eveil' + return } else { if (!ReglesOptionnelles.isUsing("recuperation-reve")) { ChatMessage.create({ whisper: ChatUtility.getOwners(this), content: `Pas de récupération de rêve (${reve} points ignorés)` - }); - jetsReve.push(0); + }) + dormi.jetsReve.push(0) } else { - await this.reveActuelIncDec(reve); - jetsReve.push(reve); + await this.reveActuelIncDec(reve) + dormi.jetsReve.push(reve) } } } - return 'dort'; + dormi.etat = 'dort' } /* -------------------------------------------- */ - async _recupererEthylisme(message) { + async $recupererEthylisme(message) { if (!ReglesOptionnelles.isUsing("recuperation-ethylisme")) { return; } let value = Math.min(Number.parseInt(this.system.compteurs.ethylisme.value) + 1, 1); if (value <= 0) { @@ -549,18 +549,15 @@ export class RdDActor extends RdDBaseActorSang { } /* -------------------------------------------- */ - async recupererFatigue(message) { + async $recupererFatigue(message) { if (ReglesOptionnelles.isUsing("appliquer-fatigue")) { - let fatigue = this.system.sante.fatigue.value; - const fatigueMin = this.getFatigueMin(); + let fatigue = this.system.sante.fatigue.value + const fatigueMin = this.getFatigueMin() if (fatigue <= fatigueMin) { - return; + return } - fatigue = Math.max(fatigueMin, this._calculRecuperationSegment(fatigue)); - setTimeout( // On attend un peu pour que le message de récupération de r - async () => { - await this.update({ 'system.sante.fatigue.value': fatigue }); - }, 200); + fatigue = Math.max(fatigueMin, this._calculRecuperationSegment(fatigue)) + await this.update({ 'system.sante.fatigue.value': fatigue }); if (fatigue == 0) { message.content += "Vous êtes complêtement reposé. "; }