diff --git a/module/actor/base-actor-sang.js b/module/actor/base-actor-sang.js index 69dda7e2..cff30d81 100644 --- a/module/actor/base-actor-sang.js +++ b/module/actor/base-actor-sang.js @@ -130,7 +130,7 @@ export class RdDBaseActorSang extends RdDBaseActorReve { let result = { sonne: false, }; - + let perteEndurance = 0 let minValue = name == "vie" ? -this.getSConst() - 1 : 0; result.newValue = Math.max(minValue, Math.min(compteur.value + inc, compteur.max)); @@ -145,16 +145,10 @@ export class RdDBaseActorSang extends RdDBaseActorReve { if (inc > 0) { // le max d'endurance s'applique seulement à la récupération result.newValue = Math.min(result.newValue, this._computeEnduranceMax()) } - const perte = compteur.value - result.newValue; - result.perte = perte; - if (perte > 1) { - // Peut-être sonné si 2 points d'endurance perdus d'un coup - foundry.utils.mergeObject(result, await this.jetEndurance(result.newValue)); - } else if (inc > 0) { - await this.setSonne(false); - } + perteEndurance = compteur.value - result.newValue; + result.perte = perteEndurance if (sante.fatigue && inc < 0) { // Each endurance lost -> fatigue lost - fatigue = perte; + fatigue = perteEndurance; } } compteur.value = result.newValue; @@ -163,6 +157,14 @@ export class RdDBaseActorSang extends RdDBaseActorReve { sante.fatigue.value = Math.max(sante.fatigue.value + fatigue, this.getFatigueMin()); } await this.update({ "system.sante": sante }, { render: true }) + + if (perteEndurance > 1) { + // Peut-être sonné si 2 points d'endurance perdus d'un coup + foundry.utils.mergeObject(result, await this.jetEndurance(result.newValue)); + } else if (name == "endurance" && inc > 0) { + await this.setSonne(false); + } + if (this.isDead()) { await this.setEffect(STATUSES.StatusComma, true); }