From 4a28c8c1b095175f21d3ed2b2372ce01f1dbd59b Mon Sep 17 00:00:00 2001 From: Lemongrass3110 Date: Wed, 9 Aug 2017 00:45:51 +0200 Subject: [PATCH] Follow up to 8310253 Achievement code now matches the Quest code. Fixed a few small typos and removed some leftovers by @aleos89 Thanks to @CairoLee and @Tokeiburu --- src/map/achievement.c | 11 ++++++----- src/map/achievement.h | 2 -- src/map/script.c | 1 - 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/map/achievement.c b/src/map/achievement.c index 0fe30c178e..177e7aff3a 100644 --- a/src/map/achievement.c +++ b/src/map/achievement.c @@ -134,9 +134,9 @@ bool achievement_remove(struct map_session_data *sd, int achievement_id) if (i != sd->achievement_data.count - 1) memmove(&sd->achievement_data.achievements[i], &sd->achievement_data.achievements[i + 1], sizeof(struct achievement) * (sd->achievement_data.count - 1 - i)); - aFree(&sd->achievement_data.achievements[sd->achievement_data.count-1]); sd->achievement_data.count--; if( sd->achievement_data.count == 0 ){ + aFree(sd->achievement_data.achievements); sd->achievement_data.achievements = NULL; }else{ RECREATE(sd->achievement_data.achievements, struct achievement, sd->achievement_data.count); @@ -212,7 +212,7 @@ static int achievement_check_groups(DBKey key, DBData *data, va_list ap) return 0; ARR_FIND(0, sd->achievement_data.count, i, sd->achievement_data.achievements[i].achievement_id == ad->achievement_id); - if (i == sd->achievement_data.count) { // Achievment isn't in player's log + if (i == sd->achievement_data.count) { // Achievement isn't in player's log if (achievement_check_dependent(sd, ad->achievement_id) == true) { achievement_add(sd, ad->achievement_id); achievement_update_achievement(sd, ad->achievement_id, true); @@ -496,8 +496,9 @@ int *achievement_level(struct map_session_data *sd, bool flag) if (flag == true && old_level != sd->achievement_data.level) { int achievement_id = 240000 + sd->achievement_data.level; - achievement_add(sd, achievement_id); - achievement_update_achievement(sd, achievement_id, true); + if( achievement_add(sd, achievement_id) ){ + achievement_update_achievement(sd, achievement_id, true); + } } return info; @@ -533,7 +534,7 @@ static int achievement_update_objectives(DBKey key, DBData *data, va_list ap) memset(objective_count, 0, sizeof(objective_count)); // Current objectives count ARR_FIND(0, sd->achievement_data.count, i, sd->achievement_data.achievements[i].achievement_id == ad->achievement_id); - if (i == sd->achievement_data.count) { // Achievment isn't in player's log + if (i == sd->achievement_data.count) { // Achievement isn't in player's log if (achievement_check_dependent(sd, ad->achievement_id) == false) // Check to see if dependents are complete before adding to player's log return 0; isNew = true; diff --git a/src/map/achievement.h b/src/map/achievement.h index c3b3b0eb13..e1e6caeaf2 100644 --- a/src/map/achievement.h +++ b/src/map/achievement.h @@ -99,8 +99,6 @@ struct achievement_db { struct map_session_data; struct block_list; -struct config_setting_t; -enum _sp; struct achievement_db achievement_dummy; ///< Dummy entry for invalid achievement lookups diff --git a/src/map/script.c b/src/map/script.c index 099d4cf072..269aea4c13 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -23392,7 +23392,6 @@ BUILDIN_FUNC(achievementcomplete) { script_pushint(st, false); return SCRIPT_CMD_FAILURE; } - if( !sd->state.pc_loaded ){ if( !running_npc_stat_calc_event ){