From 3a75febcdbf9b003b21d4d16c1814500f7aec19b Mon Sep 17 00:00:00 2001 From: Chomp Date: Fri, 28 Mar 2025 18:00:36 +0000 Subject: [PATCH] Fix issue that caused standard edition to get free daily replacing Currently all editions end up with free daily replacement after the first round of daily quests. This fixes that --- .../Controllers/RepeatableQuestController.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs b/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs index 1713b066..7acf0a6f 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs @@ -470,8 +470,7 @@ public class RepeatableQuestController( } // Reset free repeatable values in player profile to defaults - generatedRepeatables.FreeChanges = repeatableConfig.FreeChanges; - generatedRepeatables.FreeChangesAvailable = repeatableConfig.FreeChanges; + generatedRepeatables.FreeChangesAvailable = generatedRepeatables.FreeChanges; returnData.Add( new PmcDataRepeatableQuest @@ -483,7 +482,7 @@ public class RepeatableQuestController( InactiveQuests = generatedRepeatables.InactiveQuests, ChangeRequirement = generatedRepeatables.ChangeRequirement, FreeChanges = generatedRepeatables.FreeChanges, - FreeChangesAvailable = generatedRepeatables.FreeChanges + FreeChangesAvailable = generatedRepeatables.FreeChangesAvailable } ); } @@ -504,10 +503,11 @@ public class RepeatableQuestController( var repeatableQuestDetails = pmcData.RepeatableQuests.FirstOrDefault( repeatable => repeatable.Name == repeatableConfig.Name ); + var hasAccess = _profileHelper.HasAccessToRepeatableFreeRefreshSystem(pmcData); + if (repeatableQuestDetails is null) { // Not in profile, generate - var hasAccess = _profileHelper.HasAccessToRepeatableFreeRefreshSystem(pmcData); repeatableQuestDetails = new PmcDataRepeatableQuest { Id = repeatableConfig.Id, @@ -523,6 +523,14 @@ public class RepeatableQuestController( pmcData.RepeatableQuests.Add(repeatableQuestDetails); } + // There is a chance an invalid number of free changes was assigned to the profile in earlier versions + // reset the number if the user doesn't have access + if (!hasAccess) + { + repeatableQuestDetails.FreeChanges = 0; + repeatableQuestDetails.FreeChangesAvailable = 0; + } + return repeatableQuestDetails; }