From 229ea9643c248d42558d8b170ada225acf392cbc Mon Sep 17 00:00:00 2001 From: sosofaitsonshow Date: Thu, 13 Nov 2025 20:40:00 +0100 Subject: [PATCH] bubble --- code/include/global.h | 1 + code/src/jeu.c | 30 +++++++++++++++++++++++++++++- code/src/zones.c | 28 ++++++++++++++++++---------- 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/code/include/global.h b/code/include/global.h index 4c9750f..c87aa7e 100644 --- a/code/include/global.h +++ b/code/include/global.h @@ -115,6 +115,7 @@ ZONE_BOSS, ZONE_MONSTER, ZONE_MERCHANT, + ZONE_BUBBLE, LENGTH_ZoneType } ZoneType; diff --git a/code/src/jeu.c b/code/src/jeu.c index f440e7a..1046d57 100644 --- a/code/src/jeu.c +++ b/code/src/jeu.c @@ -540,6 +540,34 @@ int runGame(Sauvegarde *actualSave, short isNewSave) { continue; } + case ZONE_BUBBLE: { + printf("\n🫧 Zone de bulles apaisantes !\n"); + + // Fatigue restaurée = 5 + palier + int amount = 5 + playerProgress->tier; + + int before = player->fatigue; + player->fatigue += amount; + + // On évite de dépasser le maximum + if (player->fatigue > player->fatigue_max) + player->fatigue = player->fatigue_max; + + int real_gain = player->fatigue - before; + + printf("✨ Vous respirez profondément dans les bulles.\n"); + printf("💤 Fatigue +%d (Actuel: %d / %d)\n", + real_gain, player->fatigue, player->fatigue_max); + + // Nettoyage de la zone + target_zone->type = ZONE_PATH; + mark_cell_as_cleared(playerProgress, playerProgress->row, playerProgress->col); + playerProgress->zone_actuelle = ZONE_PATH; + + pressEnterToContinue(); + continue; + } + case ZONE_MONSTER: { int dangerosityLevel = 1; @@ -597,7 +625,7 @@ int runGame(Sauvegarde *actualSave, short isNewSave) { int dangerosityLevel = 5; if (!actualSave->etat_combat) { - // Initialisation de l'état de combat + printf("\n👹 Boss atteint !\n"); pressEnterToContinue(); diff --git a/code/src/zones.c b/code/src/zones.c index ffdc3a1..69bb84a 100644 --- a/code/src/zones.c +++ b/code/src/zones.c @@ -91,10 +91,12 @@ TierMap *build_tier(int tier, unsigned seed, PlayerProgress *p, short isNewTier) p->cleared_count = 0; } - // Taux qui scalent avec le palier - int blocked_rate = 15 + tier*5; if(blocked_rate>60) blocked_rate=60; // bloqué plus fréquents - int treasure_rate = 20 - tier*2; if(treasure_rate<5) treasure_rate=5; // trésor plus rares - int merchant_rate = 3 + tier; if(merchant_rate>10) merchant_rate=10; // 🆕 marchands rares + int blocked_rate = 15 + tier*5; if(blocked_rate>60) blocked_rate=60; + int treasure_rate = 20 - tier*2; if(treasure_rate<5) treasure_rate=5; + int merchant_rate = 3 + tier; if(merchant_rate>10) merchant_rate=10; + + int bubble_rate = 5 + tier; if(bubble_rate>15) bubble_rate=15; + // 1) Remplissage aléatoire initial for(int r=0;rbiome); int stars = 1 + (z->tier/2); if(stars>5) stars=5; for(int i=0;i