From 5383bd228d1544b6346999083499ed039b5ef7a7 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 30 Mar 2021 23:01:09 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20r=C3=A9cup=C3=A9ration=20chance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/actor.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/module/actor.js b/module/actor.js index 0a01966f..98c55c03 100644 --- a/module/actor.js +++ b/module/actor.js @@ -343,13 +343,11 @@ export class RdDActor extends Actor { async _recupereChance() { // On ne récupère un point de chance que si aucun appel à la chance dans la journée - if (this.getFlag('foundryvtt-reve-de-dragon', 'utilisationChance')) { - // Nouveau jour, suppression du flag - await this.unsetFlag('foundryvtt-reve-de-dragon', 'utilisationChance'); - } - else { - await this.chanceActuelleIncDec(1); + if (this.getChanceActuel() < this.getChance() && !this.getFlag('foundryvtt-reve-de-dragon', 'utilisationChance')) { + await this.chanceActuelleIncDec(1); } + // Nouveau jour, suppression du flag + await this.unsetFlag('foundryvtt-reve-de-dragon', 'utilisationChance'); } /* -------------------------------------------- */ @@ -651,14 +649,14 @@ export class RdDActor extends Actor { return; } } - const actorData = Misc.data(this); + const tplData = Misc.templateData(this); if (caracName == "reve") { - if (caracValue > Misc.toInt(actorData.data.reve.seuil.value)) { + if (caracValue > Misc.toInt(tplData.reve.seuil.value)) { this.setPointsDeSeuil(caracValue); } } if (caracName == "chance") { - if (caracValue > Misc.toInt(actorData.data.compteurs.chance.value)) { + if (caracValue > Misc.toInt(tplData.compteurs.chance.value)) { this.setPointsDeChance(caracValue); } } @@ -2260,9 +2258,6 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async rollAppelChance(onSuccess = () => { }, onEchec = () => { }) { // Stocke si utilisation de la chance - await this.unsetFlag('foundryvtt-reve-de-dragon', 'utilisationChance'); - await this.setFlag('foundryvtt-reve-de-dragon', 'utilisationChance', true); - let rollData = { selectedCarac: this.getCaracByName('chance-actuelle'), surprise: '' }; const dialog = await RdDRoll.create(this, rollData, { html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-carac.html' }, @@ -2282,6 +2277,7 @@ export class RdDActor extends Actor { async _appelChanceResult(rollData, onSuccess = () => { }, onEchec = () => { }) { await RdDResolutionTable.displayRollData(rollData, this, 'chat-resultat-appelchance.html') if (rollData.rolled.isSuccess) { + await this.setFlag('foundryvtt-reve-de-dragon', 'utilisationChance', true); await this.chanceActuelleIncDec(-1); onSuccess(); } @@ -2291,11 +2287,8 @@ export class RdDActor extends Actor { } /* -------------------------------------------- */ - async chanceActuelleIncDec(value, limit = true) { - chance = Math.max(Misc.templateData(this).compteurs.chance.value + value, 0); - if (limit) { - chance = Math.min(chance.value, this.getChance()) - } + async chanceActuelleIncDec(value) { + const chance = Math.min(this.getChance(), Math.max(this.getChanceActuel() + value, 0)); await this.updateCompteurValue("chance", chance); }