using HarmonyLib; using UnityEngine; using UnityEngine.InputSystem; namespace LaunchConfirm; [HarmonyPatch(typeof(StartMatchLever))] public class LeverPatch { private static LungProp? _cachedApparatus; [HarmonyPostfix] [HarmonyPatch("Update")] private static void UpdatePostfix(StartMatchLever __instance) { // prevent weird null references if (__instance == null || __instance.triggerScript == null) return; if (StartOfRound.Instance == null || RoundManager.Instance == null) return; if (StartOfRound.Instance.inShipPhase) { __instance.triggerScript.hoverTip = "Pull lever : [Land Ship]"; _cachedApparatus = null; // clear api for next round return; } // caching the apparatus to prevent polling it EVERY FUCKING FRAME if (_cachedApparatus == null) { _cachedApparatus = Object.FindObjectOfType(); } // Checking if its actually been pulled. bool isApparatusPulled; if (_cachedApparatus != null) { isApparatusPulled = _cachedApparatus.isInShipRoom; } else { isApparatusPulled = true; // cant find the apparatus } if (!isApparatusPulled) { __instance.triggerScript.hoverTip = "Pull lever : [Start Ship]\nWARNING: Launching without Apparatus in the Ship!"; } else { __instance.triggerScript.hoverTip = "Pull lever : [Start Ship]"; } } }