diff --git a/MiraAPI/Events/Vanilla/Player/CompleteHnsTaskEvent.cs b/MiraAPI/Events/Vanilla/Player/CompleteHnsTaskEvent.cs index a719bdc..7d8f71d 100644 --- a/MiraAPI/Events/Vanilla/Player/CompleteHnsTaskEvent.cs +++ b/MiraAPI/Events/Vanilla/Player/CompleteHnsTaskEvent.cs @@ -1,9 +1,9 @@ namespace MiraAPI.Events.Vanilla.Player; /// -/// The event that is invoked when a player completes a task within Hide and Seek. Task cannot be cancelled, but timer changes can. +/// The event that is invoked when a player completes a task within Hide and Seek. Non-cancelable. /// -public class CompleteHnsTaskEvent : MiraCancelableEvent +public class CompleteHnsTaskEvent : MiraEvent { /// /// Gets the instance of the . diff --git a/MiraAPI/Patches/Events/HnsFinishTaskPatch.cs b/MiraAPI/Patches/Events/HnsFinishTaskPatch.cs index 300fd40..41b193f 100644 --- a/MiraAPI/Patches/Events/HnsFinishTaskPatch.cs +++ b/MiraAPI/Patches/Events/HnsFinishTaskPatch.cs @@ -1,5 +1,4 @@ - -using HarmonyLib; +using HarmonyLib; using MiraAPI.Events; using MiraAPI.Events.Vanilla.Player; @@ -8,36 +7,11 @@ namespace MiraAPI.Patches.Events; [HarmonyPatch(typeof(HideAndSeekManager))] public static class HnsFinishTaskPatch { - [HarmonyPrefix] + [HarmonyPostfix] [HarmonyPatch(nameof(HideAndSeekManager.FinishTask))] - public static bool FinishTask(HideAndSeekManager __instance, PlayerTask task) + public static void FinishTaskPostfix(HideAndSeekManager __instance, PlayerTask task) { - NormalPlayerTask normalPlayerTask = task as NormalPlayerTask; - if (normalPlayerTask != null) - { - var completeTaskEvent = new CompleteHnsTaskEvent(__instance, task.Owner, task); - MiraEventManager.InvokeEvent(completeTaskEvent); - if (completeTaskEvent.IsCancelled) - { - return false; - } - switch (normalPlayerTask.Length) - { - case NormalPlayerTask.TaskLength.None: - case NormalPlayerTask.TaskLength.Common: - __instance.LogicFlowHnS.OnTaskComplete(__instance.LogicOptionsHnS.GetCommonTaskTimeValue()); - break; - case NormalPlayerTask.TaskLength.Short: - __instance.LogicFlowHnS.OnTaskComplete(__instance.LogicOptionsHnS.GetShortTaskTimeValue()); - break; - case NormalPlayerTask.TaskLength.Long: - __instance.LogicFlowHnS.OnTaskComplete(__instance.LogicOptionsHnS.GetLongTaskTimeValue()); - break; - } - - SoundManager.Instance.PlaySoundImmediate(__instance.TaskFinishedSound, false, 1f, 1f, null); - } - - return false; + var completeTaskEvent = new CompleteHnsTaskEvent(__instance, task.Owner, task); + MiraEventManager.InvokeEvent(completeTaskEvent); } }