private static bool CheckAndEndGameForSabotageWin(ShipStatus __instance) { if (__instance.Systems == null) { return(false); } ISystemType systemType = __instance.Systems.ContainsKey(SystemTypes.LifeSupp) ? __instance.Systems[SystemTypes.LifeSupp] : null; if (systemType != null) { LifeSuppSystemType lifeSuppSystemType = systemType.TryCast <LifeSuppSystemType>(); if (lifeSuppSystemType != null && lifeSuppSystemType.GPBBPGOINOF < 0f) { EndGameForSabotage(__instance); lifeSuppSystemType.GPBBPGOINOF = 10000f; return(true); } } ISystemType systemType2 = __instance.Systems.ContainsKey(SystemTypes.Reactor) ? __instance.Systems[SystemTypes.Reactor] : null; if (systemType2 == null) { systemType2 = __instance.Systems.ContainsKey(SystemTypes.Laboratory) ? __instance.Systems[SystemTypes.Laboratory] : null; } if (systemType2 != null) { ICriticalSabotage criticalSystem = systemType2.TryCast <ICriticalSabotage>(); if (criticalSystem != null && criticalSystem.GPBBPGOINOF < 0f) { EndGameForSabotage(__instance); criticalSystem.ClearSabotage(); return(true); } } return(false); }
public static bool Prefix(ShipStatus __instance) { if (__instance.CheckTaskCompletion()) { return(true); } if (__instance.Systems.ContainsKey(SystemType.Reactor)) { if (__instance.GetIl2CppType() == AirshipStatus.Il2CppType) { HeliSabotageSystem Reactor = __instance.Systems[SystemType.Reactor].Cast <HeliSabotageSystem>(); if (Reactor.LEJABJDEHPE & Reactor.GPBBPGOINOF <= 0) { return(true); } } else { ReactorSystem Reactor = __instance.Systems[SystemType.Reactor].Cast <ReactorSystem>(); if (Reactor.LEJABJDEHPE & Reactor.GPBBPGOINOF <= 0) { return(true); } } } if (__instance.Systems.ContainsKey(SystemType.LifeSupp)) { OxygenSystem oxygen = __instance.Systems[SystemType.LifeSupp].Cast <OxygenSystem>(); if (oxygen.LEJABJDEHPE & oxygen.GPBBPGOINOF <= 0) { return(true); } } if (__instance.Systems.ContainsKey(SystemType.Laboratory)) { ReactorSystem Reactor = __instance.Systems[SystemType.Laboratory].Cast <ReactorSystem>(); if (Reactor.LEJABJDEHPE & Reactor.GPBBPGOINOF <= 0) { return(true); } } EndReason reason = Love.CheckWin(); if (reason == EndReason.IgnoreEndReason) { return(true); } if (reason == EndReason.NoWin) { return(false); } if (reason == EndReason.LoveWin) { MessageWriter writer = AmongUsClient.Instance.StartRpc(InnerPlayerControl.LocalPlayer.NetId, (byte)CustomRPC.LoveWin, Hazel.SendOption.Reliable); writer.Write((byte)reason); writer.EndMessage(); PlayerControlPatch.LoveCoupleWins(); ShipStatus.EABBNOODFGL(AMGMAKBHCMN.ImpostorByVote, true); return(false); } return(true); }