From ace1a591e5740b38dfbef8b3d3e9b4413c5bb4c6 Mon Sep 17 00:00:00 2001 From: otavepto <153766569+otavepto@users.noreply.github.com> Date: Sun, 23 Jun 2024 00:33:05 +0300 Subject: [PATCH] in `Steam_User_Stats::ResetAllStats()` reset `progress` only if it was defined in the original schema --- dll/steam_user_stats.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/dll/steam_user_stats.cpp b/dll/steam_user_stats.cpp index e0ede21f..1d9b5bfb 100644 --- a/dll/steam_user_stats.cpp +++ b/dll/steam_user_stats.cpp @@ -1391,8 +1391,23 @@ bool Steam_User_Stats::ResetAllStats( bool bAchievementsToo ) item["earned"] = false; item["earned_time"] = static_cast(0); - item["progress"] = static_cast(0); + try { + auto defined_ach_it = defined_achievements_find(name); + if (defined_achievements.end() != defined_ach_it) { + auto defined_progress_it = defined_ach_it->find("progress"); + if (defined_ach_it->end() != defined_progress_it) { // if the schema had "progress" + uint32 val = 0; + try { + auto defined_min_val = defined_progress_it->value("min_val", std::string("0")); + val = std::stoul(defined_min_val); + } catch(...){} + item["progress"] = val; + } + } + }catch(...){} + + // this won't actually trigger a notification, just updates the data overlay->AddAchievementNotification(name, item, false); } catch(const std::exception& e) { PRINT_DEBUG("ERROR: %s", e.what());