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
This commit is contained in:
parent
71421a4268
commit
4a28c8c1b0
@ -134,9 +134,9 @@ bool achievement_remove(struct map_session_data *sd, int achievement_id)
|
|||||||
if (i != sd->achievement_data.count - 1)
|
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));
|
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--;
|
sd->achievement_data.count--;
|
||||||
if( sd->achievement_data.count == 0 ){
|
if( sd->achievement_data.count == 0 ){
|
||||||
|
aFree(sd->achievement_data.achievements);
|
||||||
sd->achievement_data.achievements = NULL;
|
sd->achievement_data.achievements = NULL;
|
||||||
}else{
|
}else{
|
||||||
RECREATE(sd->achievement_data.achievements, struct achievement, sd->achievement_data.count);
|
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;
|
return 0;
|
||||||
|
|
||||||
ARR_FIND(0, sd->achievement_data.count, i, sd->achievement_data.achievements[i].achievement_id == ad->achievement_id);
|
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) {
|
if (achievement_check_dependent(sd, ad->achievement_id) == true) {
|
||||||
achievement_add(sd, ad->achievement_id);
|
achievement_add(sd, ad->achievement_id);
|
||||||
achievement_update_achievement(sd, ad->achievement_id, true);
|
achievement_update_achievement(sd, ad->achievement_id, true);
|
||||||
@ -496,9 +496,10 @@ int *achievement_level(struct map_session_data *sd, bool flag)
|
|||||||
if (flag == true && old_level != sd->achievement_data.level) {
|
if (flag == true && old_level != sd->achievement_data.level) {
|
||||||
int achievement_id = 240000 + sd->achievement_data.level;
|
int achievement_id = 240000 + sd->achievement_data.level;
|
||||||
|
|
||||||
achievement_add(sd, achievement_id);
|
if( achievement_add(sd, achievement_id) ){
|
||||||
achievement_update_achievement(sd, achievement_id, true);
|
achievement_update_achievement(sd, achievement_id, true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return info;
|
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
|
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);
|
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
|
if (achievement_check_dependent(sd, ad->achievement_id) == false) // Check to see if dependents are complete before adding to player's log
|
||||||
return 0;
|
return 0;
|
||||||
isNew = true;
|
isNew = true;
|
||||||
|
@ -99,8 +99,6 @@ struct achievement_db {
|
|||||||
|
|
||||||
struct map_session_data;
|
struct map_session_data;
|
||||||
struct block_list;
|
struct block_list;
|
||||||
struct config_setting_t;
|
|
||||||
enum _sp;
|
|
||||||
|
|
||||||
struct achievement_db achievement_dummy; ///< Dummy entry for invalid achievement lookups
|
struct achievement_db achievement_dummy; ///< Dummy entry for invalid achievement lookups
|
||||||
|
|
||||||
|
@ -23393,7 +23393,6 @@ BUILDIN_FUNC(achievementcomplete) {
|
|||||||
return SCRIPT_CMD_FAILURE;
|
return SCRIPT_CMD_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if( !sd->state.pc_loaded ){
|
if( !sd->state.pc_loaded ){
|
||||||
if( !running_npc_stat_calc_event ){
|
if( !running_npc_stat_calc_event ){
|
||||||
ShowError( "buildin_achievementcomplete: call was too early. Character %s(CID: '%u') was not loaded yet.\n", sd->status.name, sd->status.char_id );
|
ShowError( "buildin_achievementcomplete: call was too early. Character %s(CID: '%u') was not loaded yet.\n", sd->status.name, sd->status.char_id );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user