-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
 using Dalamud.Game.Text;
 using Dalamud.Plugin.Services;
     private bool _revisitTriggered;
     private Queue<EAction>? _actionQueue;
 
-    public ITask With(GatheringController.GatheringRequest currentRequest, GatheringNode currentNode, bool revisitRequired)
+    private bool? _expectedScrutiny;
+
+    public ITask With(GatheringController.GatheringRequest currentRequest, GatheringNode currentNode,
+        bool revisitRequired)
     {
         _currentRequest = currentRequest;
         _currentNode = currentNode;
         if (nodeCondition == null)
             return ETaskResult.TaskComplete;
 
+        if (_expectedScrutiny != null)
+        {
+            if (nodeCondition.ScrutinyActive != _expectedScrutiny)
+                return ETaskResult.StillRunning;
+
+            // continue on next frame
+            _expectedScrutiny = null;
+            return ETaskResult.StillRunning;
+        }
+
         if (_actionQueue != null && _actionQueue.TryPeek(out EAction nextAction))
         {
             if (gameFunctions.UseAction(nextAction))
             {
+                _expectedScrutiny = nextAction switch
+                {
+                    EAction.ScrutinyMiner or EAction.ScrutinyBotanist => true,
+                    EAction.ScourMiner or EAction.ScourBotanist or EAction.MeticulousMiner
+                        or EAction.MeticulousBotanist => false,
+                    _ => null
+                };
                 logger.LogInformation("Used action {Action} on node", nextAction);
                 _actionQueue.Dequeue();
             }
                 MaxCollectability: atkValues[14].UInt,
                 CurrentIntegrity: atkValues[62].UInt,
                 MaxIntegrity: atkValues[63].UInt,
-                ScrutinyActive: atkValues[80].Bool,
+                ScrutinyActive: atkValues[54].Bool,
                 CollectabilityFromScour: atkValues[48].UInt,
                 CollectabilityFromMeticulous: atkValues[51].UInt
             );
     private Queue<EAction> GetNextActions(NodeCondition nodeCondition)
     {
         uint gp = clientState.LocalPlayer!.CurrentGp;
+        logger.LogTrace(
+            "Getting next actions (with {GP} GP, {MeticulousCollectability}~ meticulous, {ScourCollectability}~ scour)",
+            gp, nodeCondition.CollectabilityFromMeticulous, nodeCondition.CollectabilityFromScour);
+
         Queue<EAction> actions = new();
 
         uint neededCollectability = nodeCondition.CollectabilityToGoal(_currentRequest.Collectability);
         if (neededCollectability <= nodeCondition.CollectabilityFromMeticulous)
         {
+            logger.LogTrace("Can get all needed {NeededCollectability} from {Collectability}~ meticulous",
+                neededCollectability, nodeCondition.CollectabilityFromMeticulous);
             actions.Enqueue(PickAction(EAction.MeticulousMiner, EAction.MeticulousBotanist));
             return actions;
         }
 
         if (neededCollectability <= nodeCondition.CollectabilityFromScour)
         {
+            logger.LogTrace("Can get all needed {NeededCollectability} from {Collectability}~ scour",
+                neededCollectability, nodeCondition.CollectabilityFromScour);
             actions.Enqueue(PickAction(EAction.ScourMiner, EAction.ScourBotanist));
             return actions;
         }
         // neither action directly solves our problem
         if (!nodeCondition.ScrutinyActive && gp >= 200)
         {
+            logger.LogTrace("Still missing {NeededCollectability} collectability, scrutiny inactive",
+                neededCollectability);
             actions.Enqueue(PickAction(EAction.ScrutinyMiner, EAction.ScrutinyBotanist));
             return actions;
         }
 
         if (nodeCondition.ScrutinyActive)
         {
+            logger.LogTrace("Scrutiny active, need {NeededCollectability} and we expect {Collectability}~ meticulous",
+                neededCollectability, nodeCondition.CollectabilityFromMeticulous);
             actions.Enqueue(PickAction(EAction.MeticulousMiner, EAction.MeticulousBotanist));
             return actions;
         }
         else
         {
+            logger.LogTrace("Scrutiny active, need {NeededCollectability} and we expect {Collectability}~ scour",
+                neededCollectability, nodeCondition.CollectabilityFromScour);
             actions.Enqueue(PickAction(EAction.ScourMiner, EAction.ScourBotanist));
             return actions;
         }
     }
 
     public override string ToString() =>
-        $"DoGatherCollectable({SeIconChar.Collectible.ToIconString()} {_currentRequest.Collectability}){(_revisitRequired ? " if revist" : "")}";
+        $"DoGatherCollectable({SeIconChar.Collectible.ToIconString()}/{_expectedScrutiny} {_currentRequest.Collectability}){(_revisitRequired ? " if revist" : "")}";
 
     [SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Local")]
     private sealed record NodeCondition(