From 35cbdca9c50715d9e683c57a6b7336c4dde58b5b Mon Sep 17 00:00:00 2001 From: bgiraudr Date: Thu, 17 Feb 2022 01:04:45 +0100 Subject: [PATCH] Add +/- 5 levels diff --- assets-cg/capacites/capacites.txt | 8 ++++---- assets-cg/converters.py | 2 +- assets-cg/maps/testCarte.tmx | 2 +- include/capacite.h | 1 + include/player.h | 3 ++- src/battle.c | 18 +++++++++++------- src/capacite.c | 2 ++ src/monster.c | 14 +++++++++++++- src/player.c | 7 +++++++ 9 files changed, 42 insertions(+), 15 deletions(-) diff --git a/assets-cg/capacites/capacites.txt b/assets-cg/capacites/capacites.txt index 176475c..3e029ee 100644 --- a/assets-cg/capacites/capacites.txt +++ b/assets-cg/capacites/capacites.txt @@ -1,4 +1,4 @@ -Test capacité;5;3 -Deuxième;100;11 -Charge;25;15 -Cheat;25;45 +Test capacité;5;5;3 +Deuxième;100;100;11 +Charge;25;25;15 +Cheat;25;25;45 diff --git a/assets-cg/converters.py b/assets-cg/converters.py index 2c5af47..744f8ff 100644 --- a/assets-cg/converters.py +++ b/assets-cg/converters.py @@ -189,7 +189,7 @@ def parseZone(layer): try: zone += fxconv.u32(i["properties"][0]["value"]) except KeyError: - print("parseZone() : Zone sans niveau de référence, passage automatique à -1") + print(f"parseZone() : Zone {origin};{to} sans niveau de référence, passage automatique à -1") zone += fxconv.u32(-1) return zone diff --git a/assets-cg/maps/testCarte.tmx b/assets-cg/maps/testCarte.tmx index 9a7016a..8d3030a 100644 --- a/assets-cg/maps/testCarte.tmx +++ b/assets-cg/maps/testCarte.tmx @@ -1,5 +1,5 @@ - + diff --git a/include/capacite.h b/include/capacite.h index c69fc36..d2778ef 100644 --- a/include/capacite.h +++ b/include/capacite.h @@ -3,6 +3,7 @@ struct Move { char *name; + int init_pp; int pp; int atk; }; diff --git a/include/player.h b/include/player.h index 1463a22..08bd25e 100644 --- a/include/player.h +++ b/include/player.h @@ -37,4 +37,5 @@ void add_move(struct Player *player, struct Move move); void draw_player_moves(struct Player *player); void replace_capacities(struct Player *player, struct Move move); void draw_ui(struct Player *player); -int get_nb_moves(struct Player *player); \ No newline at end of file +int get_nb_moves(struct Player *player); +void reset_pp(struct Player *player); \ No newline at end of file diff --git a/src/battle.c b/src/battle.c index f264c96..82f16cc 100644 --- a/src/battle.c +++ b/src/battle.c @@ -9,7 +9,6 @@ #include "monster.h" #include #include -#include extern bopti_image_t img_dialogue; @@ -18,6 +17,7 @@ extern bopti_image_t img_dialogue; */ void create_battle(struct Game *game) { game->player->stats.pv = game->player->stats.max_pv; + reset_pp(game->player); struct Monster *monster = generate_monster(game); int status = battle(game->player, monster); @@ -87,7 +87,7 @@ void finish_battle(int status, struct Game *game, struct Monster *monster) { dimage(42,DHEIGHT-75,&img_dialogue); - dprint(50,DHEIGHT-75/2-10, C_BLACK, "Vous remportez %d points d'experience", xp); + dprint(50,DHEIGHT-47, C_BLACK, "Vous remportez %d points d'experience", xp); dupdate(); wait_for_input(KEY_SHIFT); @@ -98,7 +98,7 @@ void finish_battle(int status, struct Game *game, struct Monster *monster) { for(int i = game->player->stats.level; i < calc_level; i++) { draw_battle(game->player, monster); dimage(42,DHEIGHT-75,&img_dialogue); - dprint(50,DHEIGHT-75/2-10,C_BLACK,"Vous passez au niveau %d !", i+1); + dprint(50,DHEIGHT-47,C_BLACK,"Vous passez au niveau %d !", i+1); dupdate(); wait_for_input(KEY_SHIFT); } @@ -106,6 +106,11 @@ void finish_battle(int status, struct Game *game, struct Monster *monster) { set_stats_level_from(&game->player->base_stats, &game->player->stats); } else if(status == LOSE) { + draw_battle(game->player, monster); + dimage(42,DHEIGHT-75,&img_dialogue); + dprint(50,DHEIGHT-47,C_BLACK,"%s a eu raison de vous !", monster->name); + dupdate(); + wait_for_input(KEY_SHIFT); game->player->stats.pv = 0; } @@ -139,7 +144,6 @@ int select_move(struct Player *player, struct Monster *monster, int prec_selecte else break; } if(keydown(KEY_EXIT)) { - player->stats.pv--; break; } while(keydown_any(KEY_RIGHT, KEY_LEFT, KEY_SHIFT, 0)) clearevents(); @@ -190,13 +194,13 @@ void draw_battle(struct Player *player, struct Monster *monster) { void draw_executed_move(struct Move *move, struct Monster *monster, int is_monster) { dimage(42,DHEIGHT-75,&img_dialogue); if(is_monster) { - dprint(50,DHEIGHT-75/2-10, C_BLACK, "%s lance %s !", monster->name, move->name); + dprint(50,DHEIGHT-47, C_BLACK, "%s lance %s !", monster->name, move->name); } else { - dprint(50,DHEIGHT-75/2-10, C_BLACK, "Vous lancez %s !", move->name); + dprint(50,DHEIGHT-47, C_BLACK, "Vous lancez %s !", move->name); } } void draw_crit() { dimage(42,DHEIGHT-75,&img_dialogue); - dprint(50,DHEIGHT-75/2-10, C_BLACK, "Coup critique !"); + dprint(50,DHEIGHT-47, C_BLACK, "Coup critique !"); } \ No newline at end of file diff --git a/src/capacite.c b/src/capacite.c index b34ed2f..f417c3f 100644 --- a/src/capacite.c +++ b/src/capacite.c @@ -25,6 +25,8 @@ struct Move *get_move_id_pointer(int id) { struct Move *copy_move(struct Move move) { struct Move *copyMove = malloc(sizeof(struct Move)); copyMove->name = move.name; + copyMove->init_pp = move.init_pp; + copyMove->pp = move.pp; copyMove->atk = move.atk; diff --git a/src/monster.c b/src/monster.c index 4aa8fa2..f7ed096 100644 --- a/src/monster.c +++ b/src/monster.c @@ -1,11 +1,13 @@ #include #include +#include #include "monster.h" #include "stats.h" #include "capacite.h" #include "player.h" #include "map.h" +#include "util.h" struct Monster *generate_monster(struct Game *game) { @@ -13,14 +15,24 @@ struct Monster *generate_monster(struct Game *game) { struct Monster *monster = copyMonster(&monster_test); + srand(rtc_ticks()); int level_zone = get_level_zone(game->player, game->map); //En cas d'erreur / aucune zone trouvée if(level_zone == -1) { level_zone = game->player->stats.level; } - monster->stats->level = level_zone; + int signe = rand_range(0,2); + signe = signe ? -1 : 1; + + int variation = signe*rand_range(0,6); + int level = level_zone + variation; + if(level > 100) level = 100; + if(level < 1) level = 1; + + monster->stats->level = level; set_stats_level(monster->stats); + monster->stats->pv = monster->stats->max_pv; return monster; } diff --git a/src/player.c b/src/player.c index 491d6ca..23dfb39 100644 --- a/src/player.c +++ b/src/player.c @@ -123,4 +123,11 @@ void draw_ui(struct Player *player) { for(int i = 0; i < index; i++) { draw_classic_move(2+132*i,DHEIGHT-70, player->moves[i]); } +} + +void reset_pp(struct Player *player) { + int index = get_nb_moves(player); + for(int i = 0; i < index; i++) { + player->moves[i]->pp = player->moves[i]->init_pp; + } } \ No newline at end of file