public static void MakeButtons(HudManager hm) { // Ninja stealth ninjaButton = new CustomButton( () => { if (ninjaButton.isEffectActive) { ninjaButton.Timer = 0; return; } MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.NinjaStealth, Hazel.SendOption.Reliable, -1); writer.Write(PlayerControl.LocalPlayer.PlayerId); writer.Write(true); AmongUsClient.Instance.FinishRpcImmediately(writer); RPCProcedure.ninjaStealth(PlayerControl.LocalPlayer.PlayerId, true); }, () => { return(PlayerControl.LocalPlayer.isRole(RoleType.Ninja) && !PlayerControl.LocalPlayer.Data.IsDead); }, () => { if (ninjaButton.isEffectActive) { ninjaButton.buttonText = ModTranslation.getString("NinjaUnstealthText"); } else { ninjaButton.buttonText = ModTranslation.getString("NinjaText"); } return(PlayerControl.LocalPlayer.CanMove); }, () => { ninjaButton.Timer = ninjaButton.MaxTimer = Ninja.stealthCooldown; }, Ninja.getButtonSprite(), new Vector3(-1.8f, -0.06f, 0), hm, hm.KillButton, KeyCode.F, true, Ninja.stealthDuration, () => { ninjaButton.Timer = ninjaButton.MaxTimer = Ninja.stealthCooldown; MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.NinjaStealth, Hazel.SendOption.Reliable, -1); writer.Write(PlayerControl.LocalPlayer.PlayerId); writer.Write(false); AmongUsClient.Instance.FinishRpcImmediately(writer); RPCProcedure.ninjaStealth(PlayerControl.LocalPlayer.PlayerId, false); PlayerControl.LocalPlayer.SetKillTimerUnchecked(Math.Max(PlayerControl.LocalPlayer.killTimer, Ninja.killPenalty)); } ); ninjaButton.buttonText = ModTranslation.getString("NinjaText"); ninjaButton.effectCancellable = true; }