diff --git a/code/include/global.h b/code/include/global.h index 5d52c30..bc2aa5f 100644 --- a/code/include/global.h +++ b/code/include/global.h @@ -116,6 +116,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 daafeef..277ab3d 100644 --- a/code/src/jeu.c +++ b/code/src/jeu.c @@ -553,6 +553,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; @@ -612,7 +640,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 2537405..94fe91c 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