diff --git a/module/actor.js b/module/actor.js
index faa060a5..a21e2410 100644
--- a/module/actor.js
+++ b/module/actor.js
@@ -408,19 +408,18 @@ export class RdDActor extends RdDBaseActorSang {
 
   /* -------------------------------------------- */
   async remiseANeuf() {
-    ChatMessage.create({
-      whisper: ChatUtility.getOwners(this),
-      content: 'Remise à neuf de ' + this.name
-    });
-    await this.supprimerBlessures(it => true);
-    await this.removeEffects(e => e.id != STATUSES.StatusDemiReve);
-    const updates = {
+    await this.update({
       'system.sante.endurance.value': this.system.sante.endurance.max,
       'system.sante.vie.value': this.system.sante.vie.max,
       'system.sante.fatigue.value': 0,
       'system.compteurs.ethylisme': { value: 1, nb_doses: 0, jet_moral: false }
-    };
-    await this.update(updates);
+    })
+    await this.removeEffects(e => e.id != STATUSES.StatusDemiReve);
+    await this.supprimerBlessures(it => true);
+    await ChatMessage.create({
+      whisper: ChatUtility.getOwners(this),
+      content: 'Remise à neuf de ' + this.name
+    });
   }
 
   /* -------------------------------------------- */
@@ -524,7 +523,7 @@ export class RdDActor extends RdDBaseActorSang {
         jet_moral: false,
         value: value
       }
-    });
+    })
   }
 
   /* -------------------------------------------- */
@@ -1891,8 +1890,8 @@ export class RdDActor extends RdDBaseActorSang {
     }
     rollData.tache.system.tentatives = rollData.tache.system.nb_jet_succes + rollData.tache.system.nb_jet_echec;
 
-    this.updateEmbeddedDocuments('Item', [rollData.tache]);
-    this.santeIncDec("fatigue", rollData.tache.system.fatigue);
+    await this.updateEmbeddedDocuments('Item', [rollData.tache]);
+    await this.santeIncDec("fatigue", rollData.tache.system.fatigue);
 
     await RdDResolutionTable.displayRollData(rollData, this, 'chat-resultat-tache.html');
     if (options?.onRollAutomate) {
@@ -2590,7 +2589,7 @@ export class RdDActor extends RdDBaseActorSang {
     for (const armure of armures) {
       protection += await RdDDice.rollTotal(armure.system.protection.toString());
       if (dmg > 0 && attackerRoll.dmg.encaisserSpecial != "noarmure") {
-        armure.deteriorerArmure(dmg);
+        await armure.deteriorerArmure(dmg)
         dmg = 0;
       }
     }
diff --git a/module/item/armure.js b/module/item/armure.js
index 14096a8b..03f011ec 100644
--- a/module/item/armure.js
+++ b/module/item/armure.js
@@ -11,7 +11,7 @@ export class RdDItemArmure extends RdDItem {
     return "systems/foundryvtt-reve-de-dragon/icons/armes_armures/armure_plaques.webp";
   }
 
-  deteriorerArmure(dmg) {
+  async deteriorerArmure(dmg) {
     if (!ReglesOptionnelles.isUsing('deteriorationArmure') || this.system.protection == '0') {
       return;
     }
@@ -23,12 +23,10 @@ export class RdDItemArmure extends RdDItem {
       protection = this.calculProtectionDeterioree();
       ChatMessage.create({ content: `Votre armure ${this.name} s'est détériorée, elle protège maintenant de ${protection}` });
     }
-    this.update({
-      system: {
-        deterioration: deterioration,
-        protection: protection
-      }
-    });
+    await this.update({
+      'system.deterioration': deterioration,
+      'system.protection': protection
+    })
   }
 
   calculProtectionDeterioree() {
diff --git a/module/item/blessure.js b/module/item/blessure.js
index d58eb4f0..d028a745 100644
--- a/module/item/blessure.js
+++ b/module/item/blessure.js
@@ -30,7 +30,7 @@ export class RdDItemBlessure extends RdDItem {
 
   prepareDerivedData() {
     super.prepareDerivedData();
-    this.system.label = this.getLabelGravite()
+    this.system.label = RdDItemBlessure.getLabelGravite(this.system.gravite)
   }
 
   static prepareTacheSoin(gravite) {
@@ -43,29 +43,32 @@ export class RdDItemBlessure extends RdDItem {
   }
 
   static async applyFullBlessure(actor, gravite) {
-    const definition = RdDItemBlessure.getDefinition(gravite)
-    
-    let lostEndurance = 0
-    let lostVie = 0
-    if (definition.endurance) {
-      lostEndurance = new Roll(definition.endurance)
-      await lostEndurance.roll();
-      actor.santeIncDec("endurance", -Number(lostEndurance.total));
-    }
+    const definition = foundry.utils.duplicate(RdDItemBlessure.getDefinition(gravite))
+
     if (definition.vie) {
-      lostVie = definition.vie
-      actor.santeIncDec("vie", definition.vie)
+      await actor.santeIncDec("vie", definition.vie)
+    }
+    const lostEndurance = await RdDItemBlessure.rollLostEndurance(definition.endurance)
+    if (lostEndurance) {
+      await actor.santeIncDec("endurance", -Number(lostEndurance));
     }
-    
     await this.createBlessure(actor, gravite)
 
     ChatMessage.create({
-      content: `Blessure ${definition.label} appliquée à ${actor.name}`+
-        `
Perte d'endurance : ${lostEndurance}`+
-        `
Perte de Vie : ${lostVie}`,
+      //TODO: hbs
+      content: `Blessure ${definition.label} appliquée à ${actor.name}
Perte d'endurance : ${lostEndurance} (${definition.endurance})
Perte de Vie : ${definition.vie}`,
       whisper: ChatUtility.getOwners(actor)
     });
+    actor.sheet?.render()
+  }
 
+  static async rollLostEndurance(formula) {
+    if (formula) {
+      const roll = new Roll(formula)
+      await roll.evaluate()
+      return roll.total
+    }
+    return 0
   }
 
   static async createBlessure(actor, gravite, localisation = '', attackerToken) {
@@ -125,10 +128,10 @@ export class RdDItemBlessure extends RdDItem {
     }
     if (this.system.gravite > 0) {
       const update = { system: { premierssoins: { bonus: 0 }, soinscomplets: { bonus: 0 } } }
-      const gravite = this.system.gravite;
-      const graviteMoindre = gravite - 2;
+      const gravite = this.system.gravite
+      const graviteMoindre = gravite - 2
       const moindres = blessures.filter(it => it.system.gravite == graviteMoindre, 'blessures').length
-      const label = this.getLabelGravite();
+      const label = RdDItemBlessure.getLabelGravite(this.system.gravite)
 
       let rolled = await actor.jetRecuperationConstitution(this.system.soinscomplets.bonus, message);
 
@@ -158,7 +161,7 @@ export class RdDItemBlessure extends RdDItem {
   }
 
   peutRetrograder(graviteMoindre, moindres) {
-    return moindres < RdDItemBlessure.getDefinition(graviteMoindre).max
+    return moindres < RdDItemBlessure.maxBlessures(graviteMoindre)
   }
 
   async calculerFinPeriodeTemporel(debut) {
@@ -182,16 +185,16 @@ export class RdDItemBlessure extends RdDItem {
     return `systems/foundryvtt-reve-de-dragon/icons/sante/${soins ? 'blessure-soins' : img}.webp`
   }
 
-  getLabelGravite() {
-    return RdDItemBlessure.getDefinition(this.system.gravite).label
+  static getLabelGravite(gravite) {
+    return definitionsBlessures.find(it => it.gravite >= gravite).label
   }
 
   static getDefinition(gravite) {
-    return definitionsBlessures.sort(Misc.ascending(it => it.gravite))
-      .find(it => it.gravite >= gravite);
+    return definitionsBlessures.find(it => it.gravite >= gravite)
   }
+
   static maxBlessures(gravite) {
-    return RdDItemBlessure.getDefinition(gravite).max
+    return definitionsBlessures.find(it => it.gravite >= gravite).max
   }
 
   isContusion() {
@@ -216,7 +219,7 @@ export class RdDItemBlessure extends RdDItem {
       `Heure et Date: ${new RdDTimestamp(this.system.temporel.debut).formatDateHeure()}`,
       RdDItem.propertyIfDefined('Blessé', this.parent?.name, this.parent),
       `Localisation: ${this.system.localisation}`,
-      `Gravité: ${RdDItemBlessure.getDefinition(this.system.gravite).label}`,
+      `Gravité: ${this.system.label}`,
       `Difficulté des soins: ${this.system.difficulte}`,
       (this.system.soinscomplets.done ?
         `Bonus soins complets: ${this.system.soinscomplets.bonus}` :
diff --git a/templates/actor/header-compteurs.html b/templates/actor/header-compteurs.html
index 89904278..8d86aa34 100644
--- a/templates/actor/header-compteurs.html
+++ b/templates/actor/header-compteurs.html
@@ -1,41 +1,47 @@