Don't stop Questionable/AD if dying in an AD-run dungeon
authorLiza Carvelli <liza@carvel.li>
Sun, 2 Mar 2025 21:06:39 +0000 (22:06 +0100)
committerLiza Carvelli <liza@carvel.li>
Sun, 2 Mar 2025 21:06:39 +0000 (22:06 +0100)
Questionable/Controller/QuestController.cs

index c10d160..0fc2d41 100644 (file)
@@ -199,7 +199,11 @@ internal sealed class QuestController : MiniTaskController<QuestController>
 
         UpdateCurrentQuest();
 
-        if (!_clientState.IsLoggedIn || _condition[ConditionFlag.Unconscious])
+        if (!_clientState.IsLoggedIn)
+        {
+            StopAllDueToConditionFailed("Logged out");
+        }
+        if (_condition[ConditionFlag.Unconscious])
         {
             if (_condition[ConditionFlag.Unconscious] &&
                 _condition[ConditionFlag.SufferingStatusAffliction63] &&
@@ -207,22 +211,20 @@ internal sealed class QuestController : MiniTaskController<QuestController>
             {
                 // ignore, we're in the lahabrea fight
             }
+            else if (_taskQueue.CurrentTaskExecutor is Duty.WaitAutoDutyExecutor)
+            {
+                // ignoring death in a dungeon if it is being run by AD
+            }
             else if (!_taskQueue.AllTasksComplete)
             {
-                Stop("HP = 0");
-                _movementController.Stop();
-                _combatController.Stop("HP = 0");
-                _gatheringController.Stop("HP = 0");
+                StopAllDueToConditionFailed("HP = 0");
             }
         }
         else if (_configuration.General.UseEscToCancelQuesting && _keyState[VirtualKey.ESCAPE])
         {
             if (!_taskQueue.AllTasksComplete)
             {
-                Stop("ESC pressed");
-                _movementController.Stop();
-                _combatController.Stop("ESC pressed");
-                _gatheringController.Stop("ESC pressed");
+                StopAllDueToConditionFailed("ESC pressed");
             }
         }
 
@@ -509,6 +511,14 @@ internal sealed class QuestController : MiniTaskController<QuestController>
         }
     }
 
+    private void StopAllDueToConditionFailed(string label)
+    {
+        Stop(label);
+        _movementController.Stop();
+        _combatController.Stop(label);
+        _gatheringController.Stop(label);
+    }
+
     private void CheckNextTasks(string label)
     {
         if (AutomationType == EAutomationType.Automatic)