diff --git a/src/main/java/re/forestier/edu/rpg/Goblin.java b/src/main/java/re/forestier/edu/rpg/Goblin.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ef5e07fb81b47931612007d6d55abac18dc23d5
--- /dev/null
+++ b/src/main/java/re/forestier/edu/rpg/Goblin.java
@@ -0,0 +1,44 @@
+package re.forestier.edu.rpg;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class Goblin extends Player {
+
+    public Goblin (String playerName, String avatar_name, int money, ArrayList<String> inventory) {
+        super(playerName, avatar_name, money, inventory);
+        levelUp();
+    }
+
+    @Override
+    protected void levelUp() {
+        super.levelUp();
+        final List<Map<String, Integer>> ADVENTURER_ABILITIES = List.of(
+                Map.of("INT", 2, "ATK", 2, "ALC", 1),     // Niveau 1
+                Map.of("ATK", 3, "ALC", 4),                                        // Niveau 2
+                Map.of("VIS", 1),                                       // Niveau 3
+                Map.of("DEF", 1),                                                        // Niveau 4
+                Map.of("ATK", 4, "DEF", 2)                                      // Niveau 5
+        );
+
+        if (getLevel() <= ADVENTURER_ABILITIES.size()) {
+            Map<String, Integer> newAbilities = ADVENTURER_ABILITIES.get(getLevel() - 1);
+            abilities.putAll(newAbilities); // Remplace ou ajoute les stats
+
+        }
+    }
+
+    @Override
+    public void majFinDeTour() {
+        super.majFinDeTour();
+
+        if (currentHealthPoints < healthPoints / 2) {
+            currentHealthPoints +=1;
+        }
+
+        super.maxHealth();
+    }
+
+}
+
diff --git a/src/test/java/re/forestier/edu/UnitTests.java b/src/test/java/re/forestier/edu/UnitTests.java
index ad22b741c2f54b0dc472b677a2676a8285c29672..0ccccf85c244ecc49fc78c61ed2fc768d91d24f5 100644
--- a/src/test/java/re/forestier/edu/UnitTests.java
+++ b/src/test/java/re/forestier/edu/UnitTests.java
@@ -186,4 +186,26 @@ public class UnitTests {
         assertThat(player.abilities.get("ATK"), is(4));
     }
 
+    @Test
+    @DisplayName("Test Goblin class")
+    void testGoblin() {
+        Goblin player = new Goblin("Florian", "Gnognak le Barbare", 200, new ArrayList<>());
+        player.addXp(500);
+        assertThat(player.level, is(7));
+        assertThat(player.abilities.get("ATK"), is(4));
+    }
+
+    @Test
+    @DisplayName("Test Goblin End of Turn")
+    void testGoblinEndOfTurn() {
+        Goblin player = new Goblin("Florian", "Gnognak le Barbare", 200, new ArrayList<>());
+        player.currentHealthPoints = 49;
+        player.healthPoints = 100;
+        player.majFinDeTour();
+        assertThat(player.currentHealthPoints, is(50));
+
+        player.majFinDeTour();
+        assertThat(player.currentHealthPoints, is(50));
+    }
+
 }