diff --git a/assets-cg/items/item.png b/assets-cg/items/item.png index dddee94..8794f38 100644 Binary files a/assets-cg/items/item.png and b/assets-cg/items/item.png differ diff --git a/assets-cg/items/item2.png b/assets-cg/items/item2.png index cdf65a7..573b5b8 100644 Binary files a/assets-cg/items/item2.png and b/assets-cg/items/item2.png differ diff --git a/include/player.h b/include/player.h index 0b0c13e..d797b71 100644 --- a/include/player.h +++ b/include/player.h @@ -58,11 +58,12 @@ void reset_pp(struct Player *player); void check_level(struct Player *player, int prec_level); void add_xp(struct Player *player, int xp); int select_capacity(struct Player *player, char* context, bool allow_back); -void add_pp(struct Player *player, int amount); +bool add_pp(struct Player *player, int amount); void change_type(struct Player *player, struct Type type); bool has_move(struct Player *player, struct Move move); int get_nb_eventzone(struct Player *player); bool check_eventzone(struct Player *player, int id); int get_nb_eventdialog(struct Player *player); bool check_eventdialog(struct Player *player, int id); -void player_step_back(struct Player *player); \ No newline at end of file +void player_step_back(struct Player *player); +bool has_pp_left(struct Player *player); \ No newline at end of file diff --git a/src/event.c b/src/event.c index ba96a40..286c9f7 100644 --- a/src/event.c +++ b/src/event.c @@ -48,8 +48,7 @@ bool handle_event(struct Game *game, char const *event) } else if(!strncmp(event, "pp:", 3)) { event += 3; - add_pp(game->player, atoi(event)); - return true; + return add_pp(game->player, atoi(event)); } else if(!strncmp(event, "type:", 5)) { event += 5; diff --git a/src/player.c b/src/player.c index 907c023..2e93c3c 100644 --- a/src/player.c +++ b/src/player.c @@ -233,13 +233,25 @@ void add_xp(struct Player *player, int xp) { check_level(player, prec); } -void add_pp(struct Player *player, int amount) { - int selection = select_capacity(player, "Choisir une capacité", false); - player->moves[selection]->pp += amount; - if(player->moves[selection]->pp > player->moves[selection]->init_pp) player->moves[selection]->pp = player->moves[selection]->init_pp; - draw_text(50, DHEIGHT-47, C_BLACK, "Vous regagnez %d PPs sur %s", amount, player->moves[selection]->name); - dupdate(); - wait_for_input(KEY_SHIFT); +bool has_pp_left(struct Player *player) { + int index = get_nb_moves(player); + for(int i = 0; i < index; i++) { + if(player->moves[i]->pp < player->moves[i]->init_pp) return true; + } + return false; +} + +bool add_pp(struct Player *player, int amount) { + if(has_pp_left(player)) { + int selection = select_capacity(player, "Choisir une capacité", false); + player->moves[selection]->pp += amount; + if(player->moves[selection]->pp > player->moves[selection]->init_pp) player->moves[selection]->pp = player->moves[selection]->init_pp; + draw_text(50, DHEIGHT-47, C_BLACK, "Vous regagnez %d PPs sur %s", amount, player->moves[selection]->name); + dupdate(); + wait_for_input(KEY_SHIFT); + return true; + } + return false; } void change_type(struct Player *player, struct Type type) {