Harden AddTaskItemRequirementsToRewardPool against NullReferenceExceptions (#729)
* Sanitize AddTaskItemRequirementsToRewardPool * add log --------- Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
This commit is contained in:
@@ -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))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user