Harden AddTaskItemRequirementsToRewardPool against NullReferenceExceptions (#729)

* Sanitize AddTaskItemRequirementsToRewardPool

* add log

---------

Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
This commit is contained in:
rootdarkarchon
2026-01-15 20:56:05 +01:00
committed by GitHub
parent d8881d1329
commit b12c7ddbd0
@@ -683,14 +683,19 @@ public class CircleOfCultistService(
/// <param name="rewardPool">Pool to add items to</param>
protected void AddTaskItemRequirementsToRewardPool(PmcData pmcData, HashSet<MongoId> itemRewardBlacklist, HashSet<MongoId> rewardPool)
{
var activeTasks = pmcData.Quests.Where(quest => quest.Status == QuestStatusEnum.Started);
foreach (var task in activeTasks)
var activeTasks = pmcData.Quests?.Where(quest => quest.Status == QuestStatusEnum.Started);
foreach (var task in activeTasks ?? [])
{
var questData = questHelper.GetQuestFromDb(task.QId, pmcData);
var handoverConditions = questData.Conditions.AvailableForFinish.Where(condition => condition.ConditionType == "HandoverItem");
foreach (var condition in handoverConditions)
if (questData is null)
{
foreach (var neededItem in condition.Target.List)
logger.Warning($"Could not get quest data for QId {task.QId}.");
continue;
}
var handoverConditions = questData.Conditions.AvailableForFinish?.Where(condition => condition.ConditionType == "HandoverItem");
foreach (var condition in handoverConditions ?? [])
{
foreach (var neededItem in condition?.Target?.List ?? [])
{
if (itemRewardBlacklist.Contains(neededItem) || !itemHelper.IsValidItem(neededItem))
{