From: Liza Carvelli Date: Sat, 8 Mar 2025 01:56:13 +0000 (+0100) Subject: Fix StartSingleQuest IPC, part 2 X-Git-Tag: v4.24~2 X-Git-Url: https://git.jacobcasper.com/?a=commitdiff_plain;h=275d6867df100fa545004af41af18e0a593d6b2d;p=Questionable.git Fix StartSingleQuest IPC, part 2 --- diff --git a/Questionable/Controller/QuestController.cs b/Questionable/Controller/QuestController.cs index 5f874f12..0a0366d3 100644 --- a/Questionable/Controller/QuestController.cs +++ b/Questionable/Controller/QuestController.cs @@ -325,7 +325,8 @@ internal sealed class QuestController : MiniTaskController .Select(x => ((ElementId?, byte)?)(x.Id, _questFunctions.GetQuestProgressInfo(x.Id)?.Sequence ?? 0)) .FirstOrDefault() ?? - _questFunctions.GetCurrentQuest(); + _questFunctions.GetCurrentQuest(allowNewMsq: AutomationType != EAutomationType.SingleQuestB); + if (currentQuestId == null || currentQuestId.Value == 0) { if (_startedQuest != null) @@ -411,7 +412,7 @@ internal sealed class QuestController : MiniTaskController { questToRun.SetSequence(currentSequence); CheckNextTasks( - $"New sequence {questToRun == _startedQuest}/{_questFunctions.GetCurrentQuestInternal()}"); + $"New sequence {questToRun == _startedQuest}/{_questFunctions.GetCurrentQuestInternal(true)}"); } var q = questToRun.Quest; diff --git a/Questionable/Functions/QuestFunctions.cs b/Questionable/Functions/QuestFunctions.cs index 6107e257..fc906e00 100644 --- a/Questionable/Functions/QuestFunctions.cs +++ b/Questionable/Functions/QuestFunctions.cs @@ -56,9 +56,9 @@ internal sealed unsafe class QuestFunctions _gameGui = gameGui; } - public (ElementId? CurrentQuest, byte Sequence) GetCurrentQuest() + public (ElementId? CurrentQuest, byte Sequence) GetCurrentQuest(bool allowNewMsq = true) { - var (currentQuest, sequence) = GetCurrentQuestInternal(); + var (currentQuest, sequence) = GetCurrentQuestInternal(allowNewMsq); PlayerState* playerState = PlayerState.Instance(); if (currentQuest == null || currentQuest.Value == 0) @@ -110,7 +110,7 @@ internal sealed unsafe class QuestFunctions return (currentQuest, sequence); } - public (ElementId? CurrentQuest, byte Sequence) GetCurrentQuestInternal() + public (ElementId? CurrentQuest, byte Sequence) GetCurrentQuestInternal(bool allowNewMsq) { var questManager = QuestManager.Instance(); if (questManager != null) @@ -122,7 +122,12 @@ internal sealed unsafe class QuestFunctions msqQuest = default; if (msqQuest.CurrentQuest != null && !IsQuestAccepted(msqQuest.CurrentQuest)) - return msqQuest; + { + if (allowNewMsq) + return msqQuest; + else + msqQuest = default; + } // Use the quests in the same order as they're shown in the to-do list, e.g. if the MSQ is the first item, // do the MSQ; if a side quest is the first item do that side quest.