diff --git a/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs b/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs index 7acf0a6f..a9f96a2c 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/RepeatableQuestController.cs @@ -415,7 +415,7 @@ public class RepeatableQuestController( var questTypePool = GenerateQuestPool(repeatableConfig, pmcData.Info.Level); // Add repeatable quests of this loops sub-type (daily/weekly) - for (var i = 0; i < GetQuestCount(repeatableConfig, pmcData); i++) + for (var i = 0; i < GetQuestCount(repeatableConfig, fullProfile); i++) { var quest = new RepeatableQuest(); var lifeline = 0; @@ -780,9 +780,10 @@ public class RepeatableQuestController( /// Get count of repeatable quests profile should have access to /// /// + /// /// Player profile /// Quest count - protected int GetQuestCount(RepeatableQuestConfig repeatableConfig, PmcData pmcData) + protected int GetQuestCount(RepeatableQuestConfig repeatableConfig, SptProfile fullProfile) { var questCount = repeatableConfig.NumQuests.GetValueOrDefault(0); if (questCount == 0) @@ -791,7 +792,7 @@ public class RepeatableQuestController( } // Add elite bonus to daily quests - if (string.Equals(repeatableConfig.Name, "daily", StringComparison.OrdinalIgnoreCase) && _profileHelper.HasEliteSkillLevel(SkillTypes.Charisma, pmcData)) + if (string.Equals(repeatableConfig.Name, "daily", StringComparison.OrdinalIgnoreCase) && _profileHelper.HasEliteSkillLevel(SkillTypes.Charisma, fullProfile.CharacterData.PmcData)) // Elite charisma skill gives extra daily quest(s) { questCount += _databaseService @@ -805,13 +806,8 @@ public class RepeatableQuestController( .GetValueOrDefault(0); } - // Prestige level 2 gives additional daily and weekly - // do the logic for all other than "daily_savage" - // use bigger than or equal incase modders add more - if (repeatableConfig.Name.ToLower() != "daily_savage" && pmcData.Info.PrestigeLevel >= 2) - { - questCount++; - } + // Add any extra repeatable quests the profile has unlocked + questCount += (int)fullProfile.SptData.ExtraRepeatableQuests.GetValueOrDefault(repeatableConfig.Id, 0); return questCount; } diff --git a/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs index a3746be6..19cfc4e8 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/PrestigeHelper.cs @@ -150,7 +150,7 @@ namespace SPTarkov.Server.Core.Helpers } case RewardType.ExtraDailyQuest: { - _logger.Info("additional quests will be added when generating repeatables"); + _profileHelper.AddExtraRepeatableQuest(newProfile, reward.Target, (double)reward.Value); break; } default: diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs index 6ee1735a..9c3ba8d4 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs @@ -730,4 +730,20 @@ public class ProfileHelper( fullProfile.CustomisationUnlocks.Add(rewardToStore); } } + + /// + /// Add the given number of extra repeatable quests for the given type of repeatable to the users profile + /// + /// Profile to add the extra repeatable to + /// The ID of the type of repeatable to increase + /// The number of extra repeatables to add + public void AddExtraRepeatableQuest(SptProfile fullProfile, string repeatableId, double rewardValue) + { + fullProfile.SptData.ExtraRepeatableQuests ??= new Dictionary(); + + if (!fullProfile.SptData.ExtraRepeatableQuests.TryAdd(repeatableId, 0)) + { + fullProfile.SptData.ExtraRepeatableQuests[repeatableId] += rewardValue; + } + } } diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Profile/SptProfile.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Profile/SptProfile.cs index c1db3aaa..ceaa522c 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Profile/SptProfile.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Profile/SptProfile.cs @@ -779,6 +779,13 @@ public record Spt get; set; } + + [JsonPropertyName("extraRepeatableQuests")] + public Dictionary? ExtraRepeatableQuests + { + get; + set; + } } public record AcceptedCultistReward