diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java
index 1f093b8de20671832653822cfb788f12046a3b3c..34adf3169dfb57b371aa6db5a32c0d04d3336d5a 100644
--- a/src/main/java/model/Fire.java
+++ b/src/main/java/model/Fire.java
@@ -25,10 +25,10 @@ public class Fire implements Entity{
     @Override
     public List<Position> nextTurn(Board<Square> board) {
         if(board.getStepNumber() % 2 == 0)return new ArrayList<Position>();
-        List<Position> positions = PositionUtil.generateAdjacentPositions(position, board);
+        List<Position> positions = PositionUtil.generateAdjacentPositions(position, board); 
         for(Position p : positions){
             if(b.getStates(p).isEmpty()){
-                if(b.getStates(p).getMaxAge() < b.getStepNumber()){
+                if(b.getStates(p).getMaxAge() < b.getStepNumber() && PositionUtil.getManhattanDistance(position, p) == 1){
                     board.addEntityAtSquare(new Fire(p, board), p);
 
                 }
diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java
index 16f0d7d4bf2be7529069ef15acce971ac62689c1..83dc27c0434222d93dccbbdfd49defc848857778 100644
--- a/src/main/java/model/FireFighter.java
+++ b/src/main/java/model/FireFighter.java
@@ -26,22 +26,21 @@ public class FireFighter implements Entity{
     
         // Générer les positions adjacentes
         List<Position> adjacentPositions = PositionUtil.generateAdjacentPositions(position, b);
-    
+        
         // Vérifier s'il y a du feu dans une des positions adjacentes
         boolean hasFire = adjacentPositions.stream()
                                            .anyMatch(p -> b.doesSquareContainEntity(p, Fire.class));
-    
+        
         if (hasFire) {
             // Si du feu est trouvé, on éteint les feux adjacents
             positions.addAll(extinguish(adjacentPositions, b));
         } else {
             // Chercher la position du feu le plus proche
             Position nearestFirePos = b.getNearestEntity(position, Fire.class);
-    
+            
             if (nearestFirePos != null && !nearestFirePos.equals(position)) {
                 // Trouver la meilleure position pour se rapprocher du feu
                 Position nextPos = getNextPositionTowards(position, nearestFirePos, b);
-    
                 if (nextPos != null) {
                     // Mettre à jour la position du pompier
                     b.clearCase(position); // Vider l'ancienne case
@@ -62,11 +61,15 @@ public class FireFighter implements Entity{
     private List<Position> extinguish(List<Position> adjacentPositions, Board<Square> b) {
         List<Position> extinguishedPositions = new ArrayList<>();
         for (Position p : adjacentPositions) {
-            Square s = (Square)b.getStates(p);
-            if (s.getEntities().stream().anyMatch(e -> e instanceof Fire)) {
-                b.clearCase(p);
-                extinguishedPositions.add(p); // Ajouter la position où le feu a été éteint
+            b.getStates(p).getEntities().removeIf(element -> element instanceof Fire);
+            List<Entity> entities = b.getStates(p).getEntities();
+            for(Entity e : entities){
+                if(e instanceof EmptyEntity){
+                    e.setAge(age+1);
+                }
             }
+            extinguishedPositions.add(p); // Ajouter la position où le feu a été éteint
+            
         }
         return extinguishedPositions;
     }