Browse Source

Fixed titles only being added on relog (#2945)

Fixes #2944

Thanks to @admkakaroto
Lemongrass3110 7 years ago
parent
commit
a7df035854
3 changed files with 5 additions and 11 deletions
  1. 5 9
      src/map/achievement.cpp
  2. 0 1
      src/map/pc.cpp
  3. 0 1
      src/map/pc.hpp

+ 5 - 9
src/map/achievement.cpp

@@ -292,11 +292,6 @@ bool achievement_update_achievement(struct map_session_data *sd, int achievement
 	clif_achievement_update(sd, &sd->achievement_data.achievements[i], sd->achievement_data.count - sd->achievement_data.incompleteCount);
 	sd->achievement_data.save = true; // Flag to save with the autosave interval
 
-	if (sd->achievement_data.sendlist) {
-		clif_achievement_list_all(sd);
-		sd->achievement_data.sendlist = false;
-	}
-
 	return true;
 }
 
@@ -329,15 +324,16 @@ void achievement_get_reward(struct map_session_data *sd, int achievement_id, tim
 
 	// Only update in the cache, db was updated already
 	sd->achievement_data.achievements[i].rewarded = rewarded;
+	sd->achievement_data.save = true;
 
 	run_script(adb->rewards.script, 0, sd->bl.id, fake_nd->bl.id);
 	if (adb->rewards.title_id) {
 		sd->titles.push_back(adb->rewards.title_id);
-		sd->achievement_data.sendlist = true;
+		clif_achievement_list_all(sd);
+	}else{
+		clif_achievement_reward_ack(sd->fd, 1, achievement_id);
+		clif_achievement_update(sd, &sd->achievement_data.achievements[i], sd->achievement_data.count - sd->achievement_data.incompleteCount);
 	}
-
-	clif_achievement_reward_ack(sd->fd, 1, achievement_id);
-	clif_achievement_update(sd, &sd->achievement_data.achievements[i], sd->achievement_data.count - sd->achievement_data.incompleteCount);
 }
 
 /**

+ 0 - 1
src/map/pc.cpp

@@ -1534,7 +1534,6 @@ void pc_reg_received(struct map_session_data *sd)
 		sd->achievement_data.total_score = 0;
 		sd->achievement_data.level = 0;
 		sd->achievement_data.save = false;
-		sd->achievement_data.sendlist = false;
 		sd->achievement_data.count = 0;
 		sd->achievement_data.incompleteCount = 0;
 		sd->achievement_data.achievements = NULL;

+ 0 - 1
src/map/pc.hpp

@@ -607,7 +607,6 @@ struct map_session_data {
 		int total_score;                  ///< Total achievement points
 		int level;                        ///< Achievement level
 		bool save;                        ///< Flag to know if achievements need to be saved
-		bool sendlist;                    ///< Flag to know if all achievements should be sent to the player (refresh list if an achievement has a title)
 		uint16 count;                     ///< Total achievements in log
 		uint16 incompleteCount;           ///< Total incomplete achievements in log
 		struct achievement *achievements; ///< Achievement log entries