diff --git a/MAVENProject/PlanUML.puml b/MAVENProject/PlanUML.puml
index 420778b6492ea7ce870b8872cf465efe05bed5cf..410976e1efd1675073f0aff6ccb0c7fd88a9649a 100644
--- a/MAVENProject/PlanUML.puml
+++ b/MAVENProject/PlanUML.puml
@@ -172,6 +172,18 @@ class entity.Kunai(){
 + public int getHeight()
 }
 
+class entity.Hearth{
+    - HitBox hitBox
+    - Coordonnees coord
+    - int width
+    - int height
+    - void heal
+    - HitBox getHitBox
+    - int getWidth
+    - int getHeight
+    + static void evolveHearths
+}
+
 class environment.Obstacle{
 }
 
diff --git a/MAVENProject/src/main/java/entity/Boss.java b/MAVENProject/src/main/java/entity/Boss.java
index 7f9ff086c09b826d2d7d8d5ff0a10a085c3827dc..eed2e60823fff0a62d555b1f034d0c7bb36eac15 100644
--- a/MAVENProject/src/main/java/entity/Boss.java
+++ b/MAVENProject/src/main/java/entity/Boss.java
@@ -42,7 +42,6 @@ public class Boss extends Monster{
         if (impulsionSaut != 0){
             
             newZ = newZ - impulsionSaut/2*delta*delta;
-            System.out.println(newZ-coord.getZ());
             vitesseActuZ = vitesseActuZ - 8*impulsionSaut*delta;
         }
 
@@ -76,7 +75,6 @@ public class Boss extends Monster{
             for (int i=0;i<collisionsPresentes.size();i++){
                 //si on trouve on sort de la boucle (pas besoin d'aller plus loin), on n'étudie qui si on ne donne pas de commande
                 if (impulsionSaut != 0){
-                    System.out.println("coucou");
                     break;
                 }
                 if (collisionsPresentes.get(listeObstaclesInVoisinage.get(i)) == BAS){
diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java
index 5c2ccb170c4c15306abbd68583411b706da69cba..780eb6f52b031e5041c055e23f23fcd280523b8f 100644
--- a/MAVENProject/src/main/java/entity/Entity.java
+++ b/MAVENProject/src/main/java/entity/Entity.java
@@ -18,7 +18,7 @@ public abstract class Entity {
     final double vitesseMax;
     HitBox hitBox;
     int attackStat; // nb de pv enleves par attaque
-    int maxLifePoints = 10;
+    int maxLifePoints = 5;
     int nbLifePoints = maxLifePoints;
     final double entityWIDTH;
     final double entityHEIGHT;
diff --git a/MAVENProject/src/main/java/entity/ShootingCharacter.java b/MAVENProject/src/main/java/entity/ShootingCharacter.java
index dbf6a1057e980a2044d32fddd7d9c4ca9539827e..d7f547c9913ef0b30deedf85bd57c8781b1cf878 100644
--- a/MAVENProject/src/main/java/entity/ShootingCharacter.java
+++ b/MAVENProject/src/main/java/entity/ShootingCharacter.java
@@ -8,16 +8,20 @@ import jeu.Jeu;
 public class ShootingCharacter extends Character{
 
     private int hasAttacked = 0; //varialbe disant si il a deja attaque, il ne peut attaque que toutes les deux frames, ainsi il ne peut attaquer que si = 0
+    private int stockMaxKunai = 10;
+    private int stockKunai = stockMaxKunai;
+    private int kunaiReloading = 0; //temps de rechargement des kunais
     public ShootingCharacter(Coordonnees c, double vitesseMax, double m, double impSaut){
         super(c, vitesseMax, m, impSaut);
     }
 
     public void attaque(){
-        if (this.getTableCommande().get("CommandAttack") != 0 && hasAttacked == 0){ //on ajoute un kunai dans la liste
+        if (this.getTableCommande().get("CommandAttack") != 0 && hasAttacked == 0 && stockKunai > 0){ //on ajoute un kunai dans la liste
             List<Kunai> temp = Jeu.getKunaiList();
             Coordonnees coordKunai = new Coordonnees(coord.getX() + (direction * (double) Kunai.getWidth() / 2) + ((direction * this.getEntityWIDTH()) / 2), coord.getZ());
             temp.add(new Kunai(direction, attackStat, coordKunai));
             Jeu.setKunaiList(temp);
+            stockKunai--;
             hasAttacked++;
         }
     }
@@ -28,5 +32,12 @@ public class ShootingCharacter extends Character{
             hasAttacked++;
             if (hasAttacked > 50)hasAttacked = 0; 
         }
+        if (kunaiReloading == 299){//si on a passe les temps de rechargement d un kunai
+            stockKunai = Math.min(stockKunai+1, stockMaxKunai);
+        }
+        kunaiReloading = (kunaiReloading+1)%300;
+        if (stockKunai == stockMaxKunai) { //pour apprecier la duree de rechargement totale
+            System.out.println("yo");
+        }
     }
 }