From 83f629b407ce13f9436e051bdd3242cf8941537e Mon Sep 17 00:00:00 2001 From: Jesse Date: Tue, 10 Jun 2025 21:36:13 +0200 Subject: [PATCH] Fix up AchievementController (#389) * Stop blacklisted achievement profiles from counting up to total profile count * Properly calculate percentage of profiles having achievements --- .../Controllers/AchievementController.cs | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Controllers/AchievementController.cs b/Libraries/SPTarkov.Server.Core/Controllers/AchievementController.cs index e912f080..48a1ef6f 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/AchievementController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/AchievementController.cs @@ -37,19 +37,16 @@ public class AchievementController( public virtual CompletedAchievementsResponse GetAchievementStatics(string sessionId) { var stats = new Dictionary(); - var profiles = profileHelper.GetProfiles(); + var profiles = profileHelper.GetProfiles() + .Where(kvp => !coreConfig.Features.AchievementProfileIdBlacklist.Contains(kvp.Value.ProfileInfo.ProfileId)) + .ToDictionary(); var achievements = databaseService.GetAchievements(); foreach (var achievementId in achievements.Select(achievement => achievement.Id).Where(achievementId => !string.IsNullOrEmpty(achievementId))) { - var percentage = 0; + var profilesHaveAchievement = 0; foreach (var (profileId, profile) in profiles) { - if (coreConfig.Features.AchievementProfileIdBlacklist.Contains(profileId)) - { - continue; - } - if (profile.CharacterData?.PmcData?.Achievements is null) { continue; @@ -60,10 +57,15 @@ public class AchievementController( continue; } - percentage++; + profilesHaveAchievement++; + } + + var percentage = 0; + if (profiles.Count > 0) + { + percentage = (int)Math.Round((double)profilesHaveAchievement / profiles.Count * 100); } - percentage = percentage / profiles.Count * 100; stats.Add(achievementId, percentage); }