예제 #1
0
        public static void Postfix(HudManager __instance)
        {
            if (
                PlayerControl.AllPlayerControls.Count <= 1 ||
                PlayerControl.LocalPlayer == null ||
                PlayerControl.LocalPlayer.Data == null ||
                !PlayerControl.LocalPlayer.Is(RoleEnum.Covert)
                )
            {
                return;
            }

            Covert role = Role.GetRole <Covert>(PlayerControl.LocalPlayer);

            if (role.CovertButton == null)
            {
                role.CovertButton = Object.Instantiate(__instance.KillButton, HudManager.Instance.transform);
                role.CovertButton.renderer.enabled = true;
            }

            role.CovertButton.renderer.sprite = CovertSprite;
            role.CovertButton.gameObject.SetActive(!PlayerControl.LocalPlayer.Data.IsDead && !MeetingHud.Instance);

            if (role.IsCovert)
            {
                role.CovertButton.SetCoolDown(role.CovertTimeRemaining, CustomGameOptions.CovertDuration);
                return;
            }

            role.CovertButton.SetCoolDown(role.CooldownTimer(), CustomGameOptions.CovertCooldown);
            role.CovertButton.renderer.color = Palette.EnabledColor;
            role.CovertButton.renderer.material.SetFloat("_Desat", 0f);
        }
예제 #2
0
        public static bool Prefix(KillButtonManager __instance)
        {
            if (!PlayerControl.LocalPlayer.Is(RoleEnum.Covert))
            {
                return(true);
            }

            if (
                !PlayerControl.LocalPlayer.CanMove ||
                PlayerControl.LocalPlayer.Data.IsDead
                )
            {
                return(false);
            }

            Covert role = Role.GetRole <Covert>(PlayerControl.LocalPlayer);

            if (__instance != role.CovertButton)
            {
                return(true);
            }

            if (
                __instance.isCoolingDown ||
                !__instance.isActiveAndEnabled ||
                role.CooldownTimer() != 0
                )
            {
                return(false);
            }

            MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId,
                                                                              (byte)CustomRPC.GoCovert, SendOption.Reliable, -1);

            writer.Write(PlayerControl.LocalPlayer.PlayerId);
            AmongUsClient.Instance.FinishRpcImmediately(writer);

            role.GoCovert();
            return(false);
        }