Beispiel #1
0
        public System.Collections.IEnumerator CoInvisPlayer(PlayerControl target)
        {
            DateTime          now          = DateTime.UtcNow;
            ImportantTextTask durationText = new ImportantTextTask();

            if (target.AmOwner)
            {
                durationText = TaskInfoHandler.Instance.AddNewItem(1, $"{TaskInfoHandler.Instance.GetRoleHexColor(target)}Invisibility Cloak: {Config.InvisCloakDuration}s remaining</color></color>");
            }

            while (true)
            {
                if (target.AmOwner)
                {
                    durationText.Text = $"{TaskInfoHandler.Instance.GetRoleHexColor(target)}Invisibility Cloak: {Math.Ceiling(Config.InvisCloakDuration - (float) (DateTime.UtcNow - now).TotalSeconds)}s remaining</color></color>";
                    GetLocalModdedPlayer().Role?.ResetCooldowns();
                }

                target.Visible = false;

                if (MeetingHud.Instance ||
                    AmongUsClient.Instance.GameState != InnerNetClient.GameStates.Started ||
                    now.AddSeconds(Config.InvisCloakDuration) < DateTime.UtcNow ||
                    ModdedPlayerById(target.PlayerId).ControllerOverride != null)
                {
                    target.Visible = true;
                    TaskInfoHandler.Instance.RemoveItem(durationText);
                    yield break;
                }

                yield return(null);
            }
        }
Beispiel #2
0
        public System.Collections.IEnumerator CoBlindPlayer(PlayerControl target)
        {
            DateTime now = DateTime.UtcNow;
            float    num = 0f;

            target.MyPhysics.body.velocity = new Vector2(0, 0);
            ImportantTextTask durationText = new ImportantTextTask();

            if (target.AmOwner)
            {
                durationText = TaskInfoHandler.Instance.AddNewItem(1, $"{TaskInfoHandler.Instance.GetRoleHexColor(target)}You are blinded and frozen! {Config.CrucioDuration}s remaining</color></color>");
            }
            while (true)
            {
                if (target.AmOwner)
                {
                    durationText.Text          = $"{TaskInfoHandler.Instance.GetRoleHexColor(target)}You are blinded and frozen! {Math.Ceiling(Config.CrucioDuration - (float) (DateTime.UtcNow - now).TotalSeconds)}s remaining</color></color>";
                    target.myLight.LightRadius = Mathf.Lerp(ShipStatus.Instance.MinLightRadius, ShipStatus.Instance.MaxLightRadius, num) * PlayerControl.GameOptions.CrewLightMod;
                    target.moveable            = false;
                }
                if (MeetingHud.Instance ||
                    AmongUsClient.Instance.GameState != InnerNetClient.GameStates.Started ||
                    now.AddSeconds(Config.CrucioDuration) < DateTime.UtcNow ||
                    ModdedPlayerById(target.PlayerId).ControllerOverride != null)
                {
                    target.moveable = true;
                    TaskInfoHandler.Instance.RemoveItem(durationText);
                    yield break;
                }

                yield return(null);
            }
        }
Beispiel #3
0
        public System.Collections.IEnumerator CoDefensiveDuelist(PlayerControl player)
        {
            DateTime now = DateTime.UtcNow;
            Vector3  startingPosition = player.transform.position;

            ModdedPlayerById(player.PlayerId).Immortal = true;
            ImportantTextTask durationText = new ImportantTextTask();

            if (player.AmOwner)
            {
                durationText = TaskInfoHandler.Instance.AddNewItem(1, $"{TaskInfoHandler.Instance.GetRoleHexColor(player)}Defensive Duelist: {Config.DefensiveDuelistDuration}s remaining</color></color>");
            }
            while (true)
            {
                if (MeetingHud.Instance ||
                    AmongUsClient.Instance.GameState != InnerNetClient.GameStates.Started ||
                    now.AddSeconds(Config.DefensiveDuelistDuration) < DateTime.UtcNow ||
                    ModdedPlayerById(player.PlayerId).ControllerOverride != null)
                {
                    ModdedPlayerById(player.PlayerId).Immortal = false;
                    TaskInfoHandler.Instance.RemoveItem(durationText);
                    yield break;
                }

                if (player.AmOwner)
                {
                    player.transform.position      = startingPosition;
                    player.MyPhysics.body.velocity = new Vector2(0, 0);
                    durationText.Text = $"{TaskInfoHandler.Instance.GetRoleHexColor(player)}Defensive Duelist: {Math.Ceiling(Config.DefensiveDuelistDuration - (float) (DateTime.UtcNow - now).TotalSeconds)}s remaining</color></color>";
                    GetLocalModdedPlayer().Role?.ResetCooldowns();
                }

                yield return(null);
            }
        }
Beispiel #4
0
        public static void GenTaskText(this ImportantTextTask task, PlayerControl __instance)
        {
            var role  = __instance.Data.IsImpostor ? "Loving [FF0000FF]Impostor[FF80D5FF]" : "Lover";
            var lover = __instance.OtherLover();

            task.Text = $"[FF80D5FF]Role: {role}\nStay alive with your love {lover.name} \nand win together[]";
        }
Beispiel #5
0
        public static bool Prefix(ImportantTextTask __instance, StringBuilder DOJIEDCICAJ)
        {
            if (IsCultistUsed && CultistMod.IsCultist(PlayerControl.LocalPlayer.PlayerId))
            {
                DOJIEDCICAJ.AppendLine("[6414C8FF]" + __instance.Text + "[]");
                return(false);
            }

            return(true);
        }
Beispiel #6
0
        public ImportantTextTask AddNewItem(int index, string text)
        {
            GameObject        roleTextObj = new GameObject();
            ImportantTextTask textTask    = roleTextObj.AddComponent <ImportantTextTask>();

            textTask.transform.SetParent(PlayerControl.LocalPlayer.transform, false);
            textTask.Text  = text;
            textTask.Index = 0;
            PlayerControl.LocalPlayer.myTasks.Insert(index, textTask);
            AllInfo.Add(textTask);
            return(textTask);
        }
Beispiel #7
0
        public System.Collections.IEnumerator CoActivateHourglass(PlayerControl player)
        {
            DateTime          now           = DateTime.UtcNow;
            Vector2           startPosition = player.transform.position;
            ImportantTextTask durationText  = new ImportantTextTask();

            ModdedPlayerById(player.PlayerId).CanSeeAllRolesOveridden = true;
            if (player.AmOwner)
            {
                durationText = TaskInfoHandler.Instance.AddNewItem(1, $"{TaskInfoHandler.Instance.GetRoleHexColor(player)}Time Turner will activate in {Config.HourglassTimer}s</color></color>");
            }
            while (true)
            {
                if (player.AmOwner)
                {
                    durationText.Text = $"{TaskInfoHandler.Instance.GetRoleHexColor(player)}Time Turner will activate in {Math.Ceiling(Config.HourglassTimer - (float) (DateTime.UtcNow - now).TotalSeconds)}s</color></color>";
                    GetLocalModdedPlayer().Role?.ResetCooldowns();
                }

                if (MeetingHud.Instance ||
                    AmongUsClient.Instance.GameState != InnerNetClient.GameStates.Started ||
                    now.AddSeconds(Config.HourglassTimer) < DateTime.UtcNow)
                {
                    TaskInfoHandler.Instance.RemoveItem(durationText);

                    if (ModdedPlayerById(player.PlayerId).KilledByCurse)
                    {
                        yield break;
                    }

                    if (player.Data.IsDead)
                    {
                        RpcRevivePlayer(player);
                    }

                    if (MeetingHud.Instance)
                    {
                        yield break;
                    }

                    RpcTeleportPlayer(player, startPosition);
                    ModdedPlayerById(player.PlayerId).CanSeeAllRolesOveridden = false;
                    yield break;
                }

                yield return(null);
            }
        }
Beispiel #8
0
        public System.Collections.IEnumerator CoControlPlayer(PlayerControl controller, PlayerControl target)
        {
            DateTime now = DateTime.UtcNow;

            ControlKillUsed = false;

            Instance.ModdedPlayerById(target.PlayerId).ControllerOverride =
                Instance.ModdedPlayerById(controller.PlayerId);

            ((Bellatrix)Instance.ModdedPlayerById(controller.PlayerId).Role).MindControlledPlayer =
                Instance.ModdedPlayerById(target.PlayerId);

            ImportantTextTask durationText = new ImportantTextTask();

            if (controller.AmOwner)
            {
                Camera.main.GetComponent <FollowerCamera>().Target      = target;
                Camera.main.GetComponent <FollowerCamera>().shakeAmount = 0;
                durationText = TaskInfoHandler.Instance.AddNewItem(1, $"{TaskInfoHandler.Instance.GetRoleHexColor(controller)}You are mind-controlling \"{target.Data.PlayerName}\"! {Config.ImperioDuration}s remaining</color></color>");
            }

            target.moveable     = true;
            controller.moveable = true;

            if (target.AmOwner || controller.AmOwner)
            {
                PlayerControl.LocalPlayer.MyPhysics.body.velocity = new Vector2(0, 0);
            }

            while (true)
            {
                if (target.Data.IsDead ||
                    MeetingHud.Instance ||
                    AmongUsClient.Instance.GameState != InnerNetClient.GameStates.Started ||
                    now.AddSeconds(Config.ImperioDuration) < DateTime.UtcNow)
                {
                    if (target.AmOwner)
                    {
                        target.moveable = true;
                    }
                    else if (controller.AmOwner)
                    {
                        TaskInfoHandler.Instance.RemoveItem(durationText);
                        controller.moveable = true;
                        Camera.main.GetComponent <FollowerCamera>().Target = controller;
                        controller.myLight.transform.position = controller.transform.position;
                        PlayerControl.LocalPlayer.SetKillTimer(PlayerControl.GameOptions.KillCooldown);
                    }
                    Instance.ModdedPlayerById(target.PlayerId).ControllerOverride = null;
                    ((Bellatrix)Instance.ModdedPlayerById(controller.PlayerId).Role).MindControlledPlayer = null;
                    yield break;
                }

                if (controller.AmOwner || target.AmOwner)
                {
                    if (Minigame.Instance)
                    {
                        Minigame.Instance.Close();
                    }
                    PlayerControl.LocalPlayer.moveable = false;
                    if (controller.AmOwner)
                    {
                        durationText.Text =
                            $"{TaskInfoHandler.Instance.GetRoleHexColor(controller)}You are mind-controlling \"{target.Data.PlayerName}\"! {Math.Ceiling(Config.ImperioDuration - (float) (DateTime.UtcNow - now).TotalSeconds)}s remaining</color></color>";
                        controller.myLight.transform.position = target.transform.position;
                        HudManager.Instance.KillButton.SetCoolDown(0f, PlayerControl.GameOptions.KillCooldown);
                        if (ControlKillUsed)
                        {
                            HudManager.Instance.KillButton.SetTarget(null);
                        }
                        else
                        {
                            HudManager.Instance.KillButton.SetTarget(target.FindClosestTarget());
                        }
                    }
                }

                yield return(null);
            }
        }
Beispiel #9
0
 public void RemoveItem(ImportantTextTask item)
 {
     item.Destroy();
     PlayerControl.LocalPlayer.myTasks.Remove(item);
 }