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>
|
/// <param name="rewardPool">Pool to add items to</param>
|
||||||
protected void AddTaskItemRequirementsToRewardPool(PmcData pmcData, HashSet<MongoId> itemRewardBlacklist, HashSet<MongoId> rewardPool)
|
protected void AddTaskItemRequirementsToRewardPool(PmcData pmcData, HashSet<MongoId> itemRewardBlacklist, HashSet<MongoId> rewardPool)
|
||||||
{
|
{
|
||||||
var activeTasks = pmcData.Quests.Where(quest => quest.Status == QuestStatusEnum.Started);
|
var activeTasks = pmcData.Quests?.Where(quest => quest.Status == QuestStatusEnum.Started);
|
||||||
foreach (var task in activeTasks)
|
foreach (var task in activeTasks ?? [])
|
||||||
{
|
{
|
||||||
var questData = questHelper.GetQuestFromDb(task.QId, pmcData);
|
var questData = questHelper.GetQuestFromDb(task.QId, pmcData);
|
||||||
var handoverConditions = questData.Conditions.AvailableForFinish.Where(condition => condition.ConditionType == "HandoverItem");
|
if (questData is null)
|
||||||
foreach (var condition in handoverConditions)
|
|
||||||
{
|
{
|
||||||
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))
|
if (itemRewardBlacklist.Contains(neededItem) || !itemHelper.IsValidItem(neededItem))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user