static bool Prefix(MapRoom __instance, float DCEFKAOFGOG) { if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { return(false); } return(true); }
static void Prefix() { if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { DestroyableSingleton <HudManager> .Instance.ShowMap((Action <MapBehaviour>) delegate(MapBehaviour m) { m.ShowInfectedMap(); m.ColorControl.baseColor = EngineerRole.sabotageActive ? Color.gray : EngineerConfig.engineerColor; }); } }
static bool Prefix(MapRoom __instance) { if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer) && EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).canRepair&& EngineerRole.sabotageActive) { EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).lastRepair = DateTime.UtcNow; ShipStatus.Instance.RpcRepairSystem(SystemTypes.Reactor, 16); return(false); } else if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { return(false); } return(true); }
static void Postfix(IntroCutscene.CoBegin__d __instance) { foreach (EngineerPlayer engineer in EngineerPlayer.allEngineers) { engineer.lastRepair = DateTime.UtcNow; } if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { __instance.__this.Title.Text = "Engineer"; __instance.__this.Title.Color = EngineerConfig.engineerColor; __instance.__this.ImpostorText.Text = "Maintain important systems on the ship"; __instance.__this.BackgroundBar.material.color = EngineerConfig.engineerColor; } }
static void Postfix(MapBehaviour __instance) { if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { if (__instance.IsOpen && __instance.infectedOverlay.gameObject.active) { if (!EngineerRole.sabotageActive) { __instance.ColorControl.baseColor = Color.gray; } else { __instance.ColorControl.baseColor = EngineerConfig.engineerColor; } long lastRepairTicks = EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).lastRepair.Ticks; long dateTimeNowTicks = DateTime.UtcNow.Ticks; float perc = (dateTimeNowTicks - lastRepairTicks) / (TimeSpan.TicksPerSecond * EngineerConfig.engineerCooldown); if (perc > 1f) { EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).canRepair = true; } foreach (MapRoom room in __instance.infectedOverlay.rooms) { if (room.special != null) { if (!EngineerRole.sabotageActive) { room.special.material.SetFloat("_Desat", 1f); } else { room.special.material.SetFloat("_Desat", 0f); } room.special.enabled = true; room.special.gameObject.SetActive(true); room.special.gameObject.active = true; if (!PlayerControl.LocalPlayer.Data.IsDead) { room.special.material.SetFloat("_Percent", 1f - perc); } else { room.special.material.SetFloat("_Percent", 1f); } } } } } }
public static bool Prefix(Vent __instance, ref float __result, [HarmonyArgument(0)] GameData.PlayerInfo pc, [HarmonyArgument(1)] out bool canUse, [HarmonyArgument(2)] out bool couldUse) { float num = float.MaxValue; PlayerControl localPlayer = pc.Object; couldUse = (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer) || localPlayer.Data.IsImpostor) && !localPlayer.Data.IsDead; canUse = couldUse; if ((DateTime.UtcNow - PlayerVentTimeExtension.GetLastVent(pc.Object.PlayerId)).TotalMilliseconds > 1000) { num = Vector2.Distance(localPlayer.GetTruePosition(), __instance.transform.position); canUse &= num <= __instance.UsableDistance; } __result = num; return(false); }
static bool Prefix(MapRoom __instance) { if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer) && EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).canRepair&& EngineerRole.sabotageActive) { System.Console.WriteLine(EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).canRepair); EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).lastRepair = DateTime.UtcNow; ShipStatus.Instance.RpcRepairSystem(SystemTypes.LifeSupp, 0 | 64); ShipStatus.Instance.RpcRepairSystem(SystemTypes.LifeSupp, 1 | 64); return(false); } else if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { return(false); } return(true); }
static bool Prefix(MapRoom __instance) { if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer) && EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).canRepair&& EngineerRole.sabotageActive) { System.Console.WriteLine(EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).canRepair); EngineerPlayer.GetEngineerFromPlayer(PlayerControl.LocalPlayer).lastRepair = DateTime.UtcNow; SwitchSystem switchSystem = ShipStatus.Instance.Systems[SystemTypes.Electrical].Cast <SwitchSystem>(); switchSystem.ActualSwitches = switchSystem.ExpectedSwitches; MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)RPC.CustomRPC.FixLights, Hazel.SendOption.None, -1); AmongUsClient.Instance.FinishRpcImmediately(writer); return(false); } else if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { return(false); } return(true); }
static void Postfix(MapBehaviour __instance) { if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer)) { if (__instance.IsOpen) { __instance.ColorControl.baseColor = EngineerConfig.engineerColor; foreach (MapRoom room in __instance.infectedOverlay.rooms) { if (room.door != null) { room.door.enabled = false; room.door.gameObject.SetActive(false); room.door.gameObject.active = false; } } } } }
static void Postfix(HudManager __instance) { if (AmongUsClient.Instance.GameState == InnerNetClient.GameStates.Started) { bool sabotageActive = false; foreach (PlayerTask task in PlayerControl.LocalPlayer.myTasks) { if (task.TaskType == TaskTypes.FixLights || task.TaskType == TaskTypes.RestoreOxy || task.TaskType == TaskTypes.ResetReactor || task.TaskType == TaskTypes.ResetSeismic || task.TaskType == TaskTypes.FixComms) { sabotageActive = true; } } EngineerRole.sabotageActive = sabotageActive; if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer) || EngineerConfig.showEngineers) { foreach (EngineerPlayer engineer in EngineerPlayer.allEngineers) { engineer.engineerControl.nameText.Color = EngineerConfig.engineerColor; } if (MeetingHud.Instance != null) { foreach (PlayerVoteArea player in MeetingHud.Instance.playerStates) { if (EngineerPlayer.IsPlayerEngineer(PlayerTools.getPlayerFromId((byte)player.TargetPlayerId))) { player.NameText.Color = EngineerConfig.engineerColor; } } } } if (EngineerPlayer.IsPlayerEngineer(PlayerControl.LocalPlayer) && __instance.UseButton.isActiveAndEnabled) { __instance.KillButton.gameObject.SetActive(true); __instance.KillButton.isActive = true; __instance.KillButton.SetCoolDown(0f, 30f); __instance.KillButton.renderer.sprite = repairIco; __instance.KillButton.renderer.color = Palette.EnabledColor; __instance.KillButton.renderer.material.SetFloat("_Desat", 0f); } } }