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
This commit is contained in:
Chomp
2025-03-28 18:00:36 +00:00
parent 2423a66f40
commit 3a75febcdb
@@ -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;
}