diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4110eeb..955f4ab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -298,7 +298,7 @@ add_executable(my_rpg
include/components/attack_component.h
src/systems/combat_methods.c
src/combat/attacks.c
- src/player_utilities.c include/player_utilities.h src/systems/inventory.c include/systems/inventory.h src/systems/game_over.c include/systems/game_over.h src/npc/mia.c lib/gamacon/src/scene/scene_constructor.c src/npc/fisherman.c src/npc/lumberjack.c)
+ src/player_utilities.c include/player_utilities.h src/systems/inventory.c include/systems/inventory.h src/systems/game_over.c include/systems/game_over.h src/npc/mia.c lib/gamacon/src/scene/scene_constructor.c src/npc/fisherman.c src/npc/lumberjack.c src/npc/smith.c)
add_compile_options(-W -Wall -Wextra -Wshadow)
diff --git a/Makefile b/Makefile
index dd5e272..13f6036 100644
--- a/Makefile
+++ b/Makefile
@@ -44,7 +44,8 @@ SRC = src/main.c \
src/systems/game_over.c \
src/npc/mia.c \
src/npc/fisherman.c \
- src/npc/lumberjack.c
+ src/npc/lumberjack.c \
+ src/npc/smith.c
OBJ = $(SRC:%.c=%.o)
diff --git a/include/setup.h b/include/setup.h
index 2dd336e..63be7e1 100644
--- a/include/setup.h
+++ b/include/setup.h
@@ -79,5 +79,8 @@ gc_vector2 pos, enum gc_mousekeys key);
bool lumberjack_yes(gc_engine *engine, gc_entity *entity, \
gc_vector2 pos, enum gc_mousekeys key);
+bool smith_chest(gc_engine *engine, gc_entity *entity, \
+gc_vector2 pos, enum gc_mousekeys key);
+
void load_data(gc_scene *scene, const gc_data *datas);
extern const struct gc_data game_data[];
\ No newline at end of file
diff --git a/prefabs/game.gcprefab b/prefabs/game.gcprefab
index 23c4556..9c6f6b4 100644
--- a/prefabs/game.gcprefab
+++ b/prefabs/game.gcprefab
@@ -119,6 +119,7 @@
+
@@ -317,6 +318,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/game_loader.c b/src/game_loader.c
index a71807f..8c9fb6d 100644
--- a/src/game_loader.c
+++ b/src/game_loader.c
@@ -61,6 +61,7 @@ const struct gc_data game_data[] = {
{"input", "fisherman_next", &fisherman_next, NULL},
{"dialog_callback", "fisherman_setup", &fisherman_setup, NULL},
{"input", "lumberjack_yes", &lumberjack_yes, NULL},
+ {"dialog_callback", "smith_chest", &smith_chest, NULL},
{NULL, NULL, NULL, NULL}
};
diff --git a/src/npc/smith.c b/src/npc/smith.c
new file mode 100644
index 0000000..6cc5fca
--- /dev/null
+++ b/src/npc/smith.c
@@ -0,0 +1,31 @@
+/*
+** EPITECH PROJECT, 2020
+** my_rpg
+** File description:
+** smith.c
+*/
+
+#include
+#include
+#include "engine.h"
+
+bool smith_chest(gc_engine *engine, gc_entity *entity, \
+gc_vector2 pos, enum gc_mousekeys key)
+{
+ struct dialog_holder *dialog = dialog_get_current(engine);
+ gc_entity *player = engine->scene->get_entity(engine->scene, 50);
+ struct player_component *inv;
+
+ if (!player)
+ return (false);
+ inv = GETCMP(player, player_component);
+ if (!inv)
+ return (false);
+ dialog->text[1] = NULL;
+ if (inv->inventory_upgrades[3])
+ dialog_add_line(dialog, NULL, "This chest is empty.", NULL);
+ else
+ dialog_add_line(dialog, NULL, "You found the shield upgrade!", NULL);
+ inv->inventory_upgrades[3] = true;
+ return (true);
+}
\ No newline at end of file