diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin
index fbbec4bc8173cedc3afbb4b7ab14acb0997cbb50..f10fd04142434519de6368f2e833b6702350f0ae 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ
diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock
index 98093e015bf73252d37edf85423197b5ea764caa..e4f51e9faead07a0f1f83c5970079a354f89b994 100644
Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin
index ba6fa9175ae3eaaad41652ce0faab1d37466bfcf..1b22c4c04236ef28508582721ff483d20c89209a 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ
diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock
index 6a4ef9dcc1250cfe5c5414c2a5ada998cf6bca97..428592d54cd6781c1f8877ddd9406a7b01da33b7 100644
Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ
diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin
index e6c74ff88440a2ff33bb4e0843527d65ea3ab492..b586e8df05334b794db6a4112fc7f256a1c7430b 100644
Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 4f01d48e5400a253886033ccfa8fd4dacb0c21af..dbf9367bd91aea24327359fb883ea40ecc894897 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class
index 727feaf679c59fc947283e1a9e98fc8f9760413b..fca1aceeefd58a020e52c53c7a879dadb8f147ed 100644
Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ
diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class
index de853c12783d647992fcf4e7ca958c1a6377670b..9eb1bc490d02495ed5a13b135b23e4e02aa9327b 100644
Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ
diff --git a/build/classes/java/main/model/BoardFireFighterBehavior.class b/build/classes/java/main/model/BoardFireFighterBehavior.class
index 9151be9a956136fe5fe3a0fd07783409fd570deb..07204c3c3f123f9b13f3a54f72d36e3148c48a95 100644
Binary files a/build/classes/java/main/model/BoardFireFighterBehavior.class and b/build/classes/java/main/model/BoardFireFighterBehavior.class differ
diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class
index 1705f8be13c2665ff1c36c425c8182c0e8943fe3..dfcfecbdaae1ba217fa185d9de40690d2b2a8d44 100644
Binary files a/build/classes/java/main/model/FirefighterBoard.class and b/build/classes/java/main/model/FirefighterBoard.class differ
diff --git a/build/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class
index bb1c39d028cb3e62caebe67d080cf68269b12ae6..c05e30406fdf683dec6eff659e3688f0078e4faf 100644
Binary files a/build/classes/java/main/view/ViewElement.class and b/build/classes/java/main/view/ViewElement.class differ
diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 0fdd7c3d56d8dacd1766eb2295a3b168273368b0..6edad65d0af5f26b7273ec9d559b16a75bf8eb89 100644
Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ
diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 8449ea1b5a6ed6f62d3a552b74f5f6c6c07ec895..280ec62c05c645c8291c85f8ec2d7c08b8bc4da4 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -21,6 +21,7 @@ public class SimulatorApplication extends javafx.application.Application {
   public static final int INITIAL_FIREFIGHTER_COUNT = 3;
   public static final int INITIAL_CLOUD_COUNT = 3;
   public static final int INITIAL_MOTORIZED_COUNT = 3;
+  public static final int INITIAL_ROCKY_COUNT = 3;
 
   private Stage primaryStage;
   private Parent view;
@@ -46,7 +47,7 @@ public class SimulatorApplication extends javafx.application.Application {
     view = loader.load();
     Controller controller = loader.getController();
     controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
-            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT,INITIAL_MOTORIZED_COUNT);
+            INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT,INITIAL_MOTORIZED_COUNT,INITIAL_ROCKY_COUNT);
   }
 
   private void showScene() {
diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java
index c306d799ca76c731d7415dd67bfec1969e1cd756..32501c7095444f795c4727ab1732f414ac010071 100644
--- a/src/main/java/controller/Controller.java
+++ b/src/main/java/controller/Controller.java
@@ -101,6 +101,10 @@ public class Controller {
       {
         return ViewElement.ROAD;
       }
+      if (element instanceof Rocky)
+      {
+        return ViewElement.ROCKY;
+      }
 
     }
     return ViewElement.EMPTY;
@@ -140,9 +144,9 @@ public class Controller {
   }
 
   public void initialize(int squareWidth, int squareHeight, int columnCount,
-                                int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud,int initialMotorized) {
+                                int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud,int initialMotorized,int initialRocky) {
     grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
-    this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloud,initialMotorized));
+    this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloud,initialMotorized,initialRocky));
     repaintGrid();
   }
 
diff --git a/src/main/java/model/BoardFireFighterBehavior.java b/src/main/java/model/BoardFireFighterBehavior.java
index 5daf21cf6daf7f26d2cbbc44b13b89e5cf803de1..ccd6b9a2d245c0b596ba670e20b16a72557f4b39 100644
--- a/src/main/java/model/BoardFireFighterBehavior.java
+++ b/src/main/java/model/BoardFireFighterBehavior.java
@@ -10,23 +10,26 @@ public class BoardFireFighterBehavior implements BoardBehavior{
     private final Map<Position, List<Position>> neighbors;
     private List<Position> firefighterPositions;
     private List<Position> motorizedFighters;
+    private List<Position> rocky;
     private Set<Position> firePositions;
     private final ElementFactory<FireFighter> firefighterFactory;
     private final ElementFactory<Fire> fireFactory;
     private final ElementFactory<Cloud> cloudFactory;
     private final ElementFactory<MotorizedFireFighter> motorizedFactory;
+    private ElementFactory<Rocky> rockyFactory;
     private List<Position> cloudPositions;
     private final Map<Position, Terrain> terrainMap = new HashMap<>();
     private int step;
 
     public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory ,ElementFactory<FireFighter> firefighterFactory,
-                                    ElementFactory<Cloud> cloudFactory,ElementFactory<MotorizedFireFighter> motorizedFactory) {
+                                    ElementFactory<Cloud> cloudFactory,ElementFactory<MotorizedFireFighter> motorizedFactory,ElementFactory<Rocky> rockyFactory) {
         this.step=0;
         this.neighbors = neighbors;
         this.firefighterFactory = firefighterFactory;
         this.fireFactory = fireFactory;
         this.cloudFactory=cloudFactory;
         this.motorizedFactory=motorizedFactory;
+        this.rockyFactory=rockyFactory;
     }
 
     public void initializeElements(int rowCount, int columnCount) {
@@ -44,6 +47,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
             firefighterPositions.add(firefighter.getPosition());
         }
 
+
         // Nuages
         cloudPositions = new ArrayList<>();
         List<Cloud> clouds = cloudFactory.createElements(rowCount, columnCount);
@@ -56,6 +60,13 @@ public class BoardFireFighterBehavior implements BoardBehavior{
         for (MotorizedFireFighter motorizedFirefighter : motorizedFirefighters) {
             motorizedFighters.add(motorizedFirefighter.getPosition());
         }
+        // Rocky
+        rocky = new ArrayList<>();
+        List<Rocky> rockies = rockyFactory.createElements(rowCount, columnCount);
+        for (Rocky rockyElement : rockies) {
+            rocky.add(rockyElement.getPosition());
+        }
+
         generateMountainBlocks(rowCount, columnCount);
         generateRoads(rowCount,columnCount);
 
@@ -330,6 +341,10 @@ public class BoardFireFighterBehavior implements BoardBehavior{
         if (terrainMap.get(position) != null && !cloudPositions.contains(position)) {
             return false;  // Impossible de franchir une montagne, sauf pour un nuage
         }
+        if(rocky.contains(position))
+        {
+            return Rocky.canFirePropagate();
+        }
 
         return true;  // La position est traversable
     }
@@ -374,9 +389,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
         }
     }
 
-
-
-
-
-
+    public List<Position> getRocky() {
+        return rocky;
+    }
 }
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index 887afb218a5f7c5097f98cefbcf9daa688a624cb..cf8e4e0631f8cf29a6c92ba9d77fa11de177166b 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -11,12 +11,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
 
   private final Random randomGenerator = new Random();
 
-  public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud,int initialMotorized) {
+  public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloud,int initialMotorized,
+                          int initialRocky) {
     Map<Position, List<Position>> neighbors = initializeNeighbors(rowCount, columnCount);
 
     this.properties = new BoardFirefighterProperties(rowCount, columnCount);
     this.behavior = new BoardFireFighterBehavior(neighbors,new FireFactory(randomGenerator,initialFireCount),new FirefighterFactory(randomGenerator,initialFirefighterCount),
-            new CloudFactory(randomGenerator,initialCloud),new MotorizedFactory(randomGenerator,initialMotorized));
+            new CloudFactory(randomGenerator,initialCloud),new MotorizedFactory(randomGenerator,initialMotorized),new RockyFactory(randomGenerator,initialRocky));
 
     behavior.initializeElements( properties.rowCount(), properties.columnCount());
   }
@@ -74,6 +75,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
         result.add((Road) value); // Ajouter uniquement un objet Mountain
       }
     });
+    // Filtrage des éléments Rocky
+    behavior.getRocky().stream()
+            .filter(pos -> pos.isAtPosition(position))
+            .forEach(pos -> result.add(new Rocky(pos)));
 
     return result;
   }
@@ -97,7 +102,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
       behavior.getCloudPositions().add(position);
     } else if (element instanceof MotorizedFireFighter) {
       behavior.getMotorizedFighters().add(position);
-
+    }else if(element instanceof Rocky)
+    {
+      behavior.getRocky().add(position);
     }
   }
 
diff --git a/src/main/java/model/Rocky.java b/src/main/java/model/Rocky.java
index 1ed23605cb5480b9337c3a0e041708b8449b3605..099fabac4708e5e6ebf7b6acce1c117aa2dd05eb 100644
--- a/src/main/java/model/Rocky.java
+++ b/src/main/java/model/Rocky.java
@@ -3,10 +3,19 @@ package model;
 import util.Position;
 
 public class Rocky extends BoardElement{
-    private final int fireDelay=4;
+    private  static int firePropagationCounter;
     public Rocky(Position position) {
         super(position);
     }
+    public static boolean canFirePropagate() {
+        // Le feu ne peut se propager que tous les 4 tours
+        if (firePropagationCounter >= 4) {
+            firePropagationCounter = 0;  // Reset le compteur
+            return true;
+        }
+        firePropagationCounter++;
+        return false;
+    }
 
     @Override
     public String getType() {
@@ -17,4 +26,8 @@ public class Rocky extends BoardElement{
     public String toString() {
         return null;
     }
+
+    public static int getFirePropagationCounter() {
+        return firePropagationCounter;
+    }
 }
diff --git a/src/main/java/model/RockyFactory.java b/src/main/java/model/RockyFactory.java
index 4c324b802365ea3f652b40ee397377b8dc8ce960..f1f323f7e620babf91dfd76a9911438d2f46f86b 100644
--- a/src/main/java/model/RockyFactory.java
+++ b/src/main/java/model/RockyFactory.java
@@ -1,4 +1,40 @@
 package model;
 
-public class RockyFactory {
+import util.Position;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class RockyFactory implements ElementFactory<Rocky>,PositionGenerator{
+    private final Random random;
+    private int count;
+
+
+    public RockyFactory(Random random, int count) {
+        this.random = random;
+        this.count = count;
+    }
+
+    @Override
+    public List<Rocky> createElements(int rowCount, int columnCount) {
+        List<Rocky> rocky = new ArrayList<>();
+        for (int i = 0; i < count; i++) {
+            Position randomPosition = generateRandomPosition(rowCount, columnCount);
+            rocky.add(new Rocky(randomPosition));
+        }
+        return rocky;
+    }
+
+    @Override
+    public int getCount() {
+        return count;
+    }
+
+    @Override
+    public Position generateRandomPosition(int rowCount, int columnCount) {
+        int row = random.nextInt(rowCount);
+        int column = random.nextInt(columnCount);
+        return new Position(row, column);
+    }
 }
diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java
index ae5bb575a728aaa4a5e946c8b064213dc8b401e1..065b1a2e8fc2b380a06924d0251acbf48590e026 100644
--- a/src/main/java/view/ViewElement.java
+++ b/src/main/java/view/ViewElement.java
@@ -3,7 +3,7 @@ package view;
 import javafx.scene.paint.Color;
 
 public enum ViewElement {
-  FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) ,  CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BLACK),
+  FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) ,  CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BISQUE),
   ROAD(Color.BROWN);
   final Color color;
   ViewElement(Color color) {