From 71b40496fbdd96f17a9c15fac28fb16f52e23e37 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Sat, 22 Feb 2025 23:11:08 +0100 Subject: [PATCH] Fix interrupts in interactions --- .../Controller/Steps/Interactions/Interact.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Questionable/Controller/Steps/Interactions/Interact.cs b/Questionable/Controller/Steps/Interactions/Interact.cs index 0073349b..2e44caf3 100644 --- a/Questionable/Controller/Steps/Interactions/Interact.cs +++ b/Questionable/Controller/Steps/Interactions/Interact.cs @@ -96,6 +96,12 @@ internal static class Interact private EInteractionState _interactionState = EInteractionState.None; private DateTime _continueAt = DateTime.MinValue; + /// + /// A slight delay when we think an interaction has ended, to make sure that we're processing "Action cancelled" + /// prior to the next step (in case we're attacked). + /// + private bool delayedFinalCheck; + public Quest? Quest => Task.Quest; public EInteractionType InteractionType { get; set; } @@ -179,7 +185,14 @@ internal static class Interact return ETaskResult.StillRunning; else if (ProgressContext.WasSuccessful() || _interactionState == EInteractionState.InteractionConfirmed) - return ETaskResult.TaskComplete; + { + if (delayedFinalCheck) + return ETaskResult.TaskComplete; + + _continueAt = DateTime.Now.AddSeconds(0.2); + delayedFinalCheck = true; + return ETaskResult.StillRunning; + } } IGameObject? gameObject = gameFunctions.FindObjectByDataId(Task.DataId);