Refactor LeverPatch to improve apparatus handling and add debug teleportation features
This commit is contained in:
@@ -8,9 +8,6 @@ namespace LaunchConfirm;
|
||||
[HarmonyPatch(typeof(StartMatchLever))]
|
||||
public class LeverPatch
|
||||
{
|
||||
private static LungProp? _cachedApparatus;
|
||||
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch("Update")]
|
||||
private static void UpdatePostfix(StartMatchLever __instance)
|
||||
@@ -23,25 +20,70 @@ public class LeverPatch
|
||||
if (StartOfRound.Instance.inShipPhase)
|
||||
{
|
||||
__instance.triggerScript.hoverTip = "Pull lever : [Land Ship]";
|
||||
_cachedApparatus = null; // clear api for next round
|
||||
return;
|
||||
}
|
||||
|
||||
LungProp[] allApparatuses = Object.FindObjectsOfType<LungProp>();
|
||||
|
||||
// caching the apparatus to prevent polling it EVERY FUCKING FRAME
|
||||
if (_cachedApparatus == null)
|
||||
// ==========================================
|
||||
// QUICK DEBUG MACROS
|
||||
// ==========================================
|
||||
if (Keyboard.current != null)
|
||||
{
|
||||
_cachedApparatus = Object.FindObjectOfType<LungProp>();
|
||||
// Press Numpad Minus (-) to Teleport to the UNSECURED Apparatus
|
||||
if (Keyboard.current[Key.NumpadMinus].wasPressedThisFrame)
|
||||
{
|
||||
LungProp targetApparatus = null;
|
||||
|
||||
// Find the core that is actually out in the wild, not the one on the ship
|
||||
foreach (LungProp apparatus in allApparatuses)
|
||||
{
|
||||
if (!apparatus.isInShipRoom)
|
||||
{
|
||||
targetApparatus = apparatus;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: If they are all secured, just grab any of them
|
||||
if (targetApparatus == null && allApparatuses.Length > 0)
|
||||
{
|
||||
targetApparatus = allApparatuses[0];
|
||||
}
|
||||
|
||||
if (targetApparatus != null && GameNetworkManager.Instance?.localPlayerController != null)
|
||||
{
|
||||
GameNetworkManager.Instance.localPlayerController.TeleportPlayer(targetApparatus.transform.position + Vector3.up);
|
||||
HUDManager.Instance.DisplayTip("Debug", "Teleported to Apparatus!");
|
||||
}
|
||||
}
|
||||
|
||||
// Press Numpad Plus (+) to Teleport back to the Ship Lever
|
||||
if (Keyboard.current[Key.NumpadPlus].wasPressedThisFrame)
|
||||
{
|
||||
if (GameNetworkManager.Instance?.localPlayerController != null)
|
||||
{
|
||||
GameNetworkManager.Instance.localPlayerController.TeleportPlayer(__instance.transform.position);
|
||||
HUDManager.Instance.DisplayTip("Debug", "Teleported back to Ship!");
|
||||
}
|
||||
}
|
||||
}
|
||||
// ==========================================
|
||||
// END QUICK DEBUG MACROS
|
||||
// ==========================================
|
||||
|
||||
|
||||
// Checking if its actually been pulled.
|
||||
bool isApparatusPulled;
|
||||
bool isApparatusPulled = true;
|
||||
|
||||
if (_cachedApparatus != null)
|
||||
foreach (LungProp apparatus in allApparatuses)
|
||||
{
|
||||
isApparatusPulled = _cachedApparatus.isInShipRoom;
|
||||
} else {
|
||||
isApparatusPulled = true; // cant find the apparatus
|
||||
// if any of the Lungs are NOT in the ship, that means theres still 1 (or more) in the facility.
|
||||
if (!apparatus.isInShipRoom)
|
||||
{
|
||||
isApparatusPulled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isApparatusPulled)
|
||||
|
||||
Reference in New Issue
Block a user