AddonJournalResult* addon = (AddonJournalResult*)args.Addon;
string questName = addon->AtkTextNode250->NodeText.ToString();
- if (_questController.CurrentQuest != null &&
+ if (_questController.CurrentQuest is { Quest.Id: LeveId } &&
GameFunctions.GameStringEquals(_questController.CurrentQuest.Quest.Info.Name, questName))
addon->FireCallbackInt(0);
else
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Linq;
using FFXIVClientStructs.FFXIV.Common.Math;
using LLib.GameData;
public void AddQuestSteps(LeveInfo leveInfo, QuestRoot questRoot)
{
- LeveStepData leveStepData = Leves.Single(x => x.IssuerDataId == leveInfo.IssuerDataId);
+ LeveStepData leveStepData = Leves.SingleOrDefault(x => x.IssuerDataId == leveInfo.IssuerDataId)
+ ?? throw new InvalidOperationException(
+ $"No leve location for issuer data id {leveInfo.IssuerDataId} found");
QuestSequence? startSequence = questRoot.QuestSequence.FirstOrDefault(x => x.Sequence == 0);
if (startSequence == null)
if (quest.Id is SatisfactionSupplyNpcId)
yield break;
- var questAccepts = FindQuestStepsWithInteractionType(quest, EInteractionType.AcceptQuest)
- .Where(x => x.Step.PickUpQuestId == null)
- .ToList();
+ var questAccepts =
+ FindQuestStepsWithInteractionType(quest, [EInteractionType.AcceptQuest, EInteractionType.AcceptLeve])
+ .Where(x => x.Step.PickUpQuestId == null)
+ .ToList();
foreach (var accept in questAccepts)
{
if (accept.Sequence.Sequence != 0 || accept.StepId != quest.FindSequence(0)!.Steps.Count - 1)
};
}
- var questCompletes = FindQuestStepsWithInteractionType(quest, EInteractionType.CompleteQuest)
- .Where(x => x.Step.TurnInQuestId == null)
- .ToList();
+ var questCompletes =
+ FindQuestStepsWithInteractionType(quest, [EInteractionType.CompleteQuest, EInteractionType.CompleteLeve])
+ .Where(x => x.Step.TurnInQuestId == null)
+ .ToList();
foreach (var complete in questCompletes)
{
if (complete.Sequence.Sequence != 255 || complete.StepId != quest.FindSequence(255)!.Steps.Count - 1)
}
private static IEnumerable<(QuestSequence Sequence, int StepId, QuestStep Step)> FindQuestStepsWithInteractionType(
- Quest quest, EInteractionType interactionType)
- => quest.AllSteps().Where(x => x.Step.InteractionType == interactionType);
+ Quest quest, List<EInteractionType> interactionType)
+ => quest.AllSteps().Where(x => interactionType.Contains(x.Step.InteractionType));
}