diff --git a/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs
index f34a817a..6a5838fa 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/QuestRewardHelper.cs
@@ -81,30 +81,23 @@ public class QuestRewardHelper(
);
}
- /**
- * Get quest by id from database (repeatables are stored in profile, check there if questId not found)
- * @param questId Id of quest to find
- * @param pmcData Player profile
- * @returns IQuest object
- */
- protected Quest GetQuestFromDb(string questId, PmcData pmcData)
+ ///
+ /// Get quest by id from database (repeatable quests are stored in profile, check there if questId not found)
+ ///
+ /// Id of quest to find
+ /// Player profile
+ /// IQuest object
+ protected Quest? GetQuestFromDb(string questId, PmcData pmcData)
{
- // May be a repeatable quest
- var quest = _databaseService.GetQuests().FirstOrDefault(x => x.Key == questId).Value;
- if (quest == null)
- // Check daily/weekly objects
+ // Look for quest in db
+ if (_databaseService.GetQuests().TryGetValue(questId, out var quest))
{
- foreach (var repeatableQuest in pmcData.RepeatableQuests)
- {
- quest = repeatableQuest.ActiveQuests.FirstOrDefault(r => r.Id == questId);
- if (quest != null)
- {
- break;
- }
- }
+ return quest;
}
- return quest;
+ // Group daily/weekly/scav repeatable subtypes into one collection and find first that matched desired quest id
+ return pmcData.RepeatableQuests?.SelectMany(repeatableQuestSubType => repeatableQuestSubType.ActiveQuests)
+ .FirstOrDefault(repeatableQuest => repeatableQuest.Id == questId);
}
///