コード例 #1
0
            static PlayerControl FindClosestTarget(ref PlayerControl local)
            {
                PlayerControl result = null;

                if (!ShipStatus.Instance)
                {
                    return(null);
                }
                float distance = GameOptionsData.JMLGACIOLIK[Mathf.Clamp(PlayerControl.GameOptions.DLIBONBKPKL, 0, 2)];
                var   truePos  = local.GetTruePosition();

                foreach (var p in GameData.Instance.AllPlayers)
                {
                    if (!p.OMHGJKAKOHO && p.JKOMCOJCAID != local.PlayerId && !p.DLPCKPBIJOE)
                    {
                        var control = p.LAOEJKHLKAI;
                        if (control != null)
                        {
                            var   vector    = control.GetTruePosition() - truePos;
                            float magnitude = vector.magnitude;
                            if (magnitude <= distance && !PhysicsHelper.IIPMKCELMED(truePos, vector.normalized, magnitude, Constants.BBHMKOHHIKI))
                            {
                                result   = control;
                                distance = magnitude;
                            }
                        }
                    }
                }

                return(result);
            }
コード例 #2
0
            private static byte allowToKillMe = 255; // FIXED: desync when sheriff and impostor kill each other at the same time

            static void Prefix(ref PlayerControl __instance, [HarmonyArgument(0)] ref PlayerControl target)
            {
                if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId && __instance.PlayerId == allowToKillMe)
                {
                    if (__instance.JLGGIOLCDFC.DLPCKPBIJOE)
                    {
                        __instance.JLGGIOLCDFC.DLPCKPBIJOE = false; // make the killer alive so we can accept his kill
                    }
                    else
                    {
                        allowToKillMe = 255; // if he's not dead here's (probably) no desync
                    }
                }
                trueImpost = __instance.JLGGIOLCDFC.DAPKNDBLKIA;
                bool suicide = __instance.PlayerId == target.PlayerId;

                if (IsSheriff(__instance.PlayerId) || suicide)
                {
                    if (!suicide) // sheriff killed an impostor
                    {
                        allowToKillMe = target.PlayerId;
                        Task.Run(async() =>
                        {
                            await Task.Delay(AmongUsClient.Instance.DGAKPKLMIEI * 4); // ping * 4
                            allowToKillMe = 255;
                        });
                    }
                    __instance.JLGGIOLCDFC.DAPKNDBLKIA = true;
                }
            }
コード例 #3
0
ファイル: Command.cs プロジェクト: zlubars/CheepsAmongUsMods
            public static bool Prefix(PlayerControl __instance, [HarmonyArgument(0)] string msg)
            {
                if (!msg.StartsWith("/"))
                {
                    return(true);
                }

                var args = msg.Split(' ');

                var maybeCmd = Command.RegisteredCommands.Where(x => x.Cmd.ToLower() == args[0].ToLower());

                if (maybeCmd.Count() >= 0)
                {
                    foreach (var cmd in maybeCmd)
                    {
                        cmd.Executed(args);
                    }

                    PlayerHudManager.HudManager.Chat.TextArea.SetText(string.Empty);  // Clear message box

                    return(false);
                }

                return(true);
            }
コード例 #4
0
        public static double getDistBetweenPlayers(FFGALNAPKCD player, FFGALNAPKCD refplayer)
        {
            var refpos    = refplayer.GetTruePosition();
            var playerpos = player.GetTruePosition();

            return(Math.Sqrt((refpos[0] - playerpos[0]) * (refpos[0] - playerpos[0]) + (refpos[1] - playerpos[1]) * (refpos[1] - playerpos[1])));
        }
コード例 #5
0
        public InnerPlayerControl FindClosestTarget(InnerPlayerControl player)
        {
            InnerPlayerControl result = null;
            float num = GameOptionsData.JMLGACIOLIK[Mathf.Clamp(InnerPlayerControl.GameOptions.DLIBONBKPKL, 0, 2)];

            if (!ShipStatus.Instance)
            {
                return(null);
            }
            Vector2 truePosition = player.GetTruePosition();
            var     allPlayers   = GameData.Instance.AllPlayers;

            for (int i = 0; i < allPlayers.Count; i++)
            {
                PlayerInfo playerInfo = allPlayers[i];
                if (!playerInfo.OMHGJKAKOHO && playerInfo.JKOMCOJCAID != player.PlayerId && !playerInfo.DLPCKPBIJOE && !playerInfo.LAOEJKHLKAI.inVent)
                {
                    InnerPlayerControl obj = playerInfo.LAOEJKHLKAI;
                    if (obj)
                    {
                        Vector2 vector    = obj.GetTruePosition() - truePosition;
                        float   magnitude = vector.magnitude;
                        if (magnitude <= num && !PhysicsHelpers.IIPMKCELMED(truePosition, vector.normalized, magnitude, Constants.BBHMKOHHIKI))
                        {
                            result = obj;
                            num    = magnitude;
                        }
                    }
                }
            }
            return(result);
        }
コード例 #6
0
ファイル: GenericPatches.cs プロジェクト: Herysia/CrowdedMod
            public static bool Prefix(ref KeyMinigame __instance)
            {
                PlayerControl localPlayer = PlayerControl.LocalPlayer;

                __instance.ECHAPHLBHDC = (localPlayer != null) ? localPlayer.PlayerId % 10 : 0;
                __instance.Slots[__instance.ECHAPHLBHDC].CIAMDNLJPBO();
                return(false);
            }
コード例 #7
0
 static void Postfix(ref PlayerControl __instance)
 {
     /*if (allowToKillMe == __instance.PlayerId)
      * {
      *  __instance.JLGGIOLCDFC.DLPCKPBIJOE = true; // make him dead back
      * }*/
     __instance.JLGGIOLCDFC.DAPKNDBLKIA = trueImpost;
 }
コード例 #8
0
 public static bool isSheriff(FFGALNAPKCD player)
 {
     if (Sheriff == null)
     {
         return(false);
     }
     return(player.PlayerId == Sheriff.PlayerId);
 }
コード例 #9
0
 public static bool IsDictator(PlayerControl player)
 {
     if (Dictator == null)
     {
         return(false);
     }
     return(player.PlayerId == PlayerControlPatch.Dictator.PlayerId);
 }
コード例 #10
0
ファイル: GenericPatches.cs プロジェクト: XtraCube/CrowdedMod
 public static bool Prefix(PlayerTab __instance)
 {
     PlayerControl.SetPlayerMaterialColors(PlayerControl.LocalPlayer.NDGFFHMFGIG.EHAHBDFODKC, __instance.DemoImage);
     for (int i = 0; i < Palette.OPKIKLENHFA.Length; i++)
     {
         __instance.LGAIKONLBIG.Add(i);
     }
     return(false);
 }
コード例 #11
0
 public static void Postfix(InnerPlayerControl __instance, InnerPlayerControl CAKODNGLPDF)
 {
     if (Sheriff.instance != null)
     {
         if (__instance.PlayerId == Sheriff.instance.parent.PlayerId)
         {
             __instance.NDGFFHMFGIG.DAPKNDBLKIA = false;
         }
     }
 }
コード例 #12
0
 public static void Postfix(FFGALNAPKCD __instance, FFGALNAPKCD CAKODNGLPDF)
 {
     if (Sheriff != null)
     {
         if (__instance.PlayerId == Sheriff.PlayerId)
         {
             __instance.NDGFFHMFGIG.DAPKNDBLKIA = false;
         }
     }
 }
コード例 #13
0
 public static bool Prefix(FFGALNAPKCD __instance, FFGALNAPKCD CAKODNGLPDF)
 {
     if (Sheriff != null)
     {
         if (__instance.PlayerId == Sheriff.PlayerId)
         {
             __instance.NDGFFHMFGIG.DAPKNDBLKIA = true;
         }
     }
     return(true);
 }
コード例 #14
0
 public static bool Prefix(InnerPlayerControl __instance, InnerPlayerControl CAKODNGLPDF)
 {
     if (Sheriff.instance != null)
     {
         if (__instance.PlayerId == Sheriff.instance.parent.PlayerId)
         {
             __instance.NDGFFHMFGIG.DAPKNDBLKIA = true;
         }
     }
     return(true);
 }
コード例 #15
0
            public static void Postfix(PlayerControl __instance)
            {
                if (!BattleRoyale.GameMode.IsSelected)
                {
                    return;
                }

                PlayerController instance = new PlayerController(__instance);

                instance.PlayerData.IsImpostor = false;
            }
コード例 #16
0
        /// <summary>
        /// Set the players opacity (hat bugs a bit)
        /// </summary>
        /// <param name="opacity">Opacity value from 0 - 1</param>
        public void SetOpacity(float opacity)
        {
            var toSetColor = new Color(1, 1, 1, opacity);

            PlayerControl.GetComponent <SpriteRenderer>().color = toSetColor;

            PlayerControl.HatRenderer.FrontLayer.color = toSetColor;
            PlayerControl.HatRenderer.BackLayer.color  = toSetColor;
            PlayerControl.HatRenderer.HHJCOBKGBFF      = toSetColor;     // TypeDefIndex: 7525
            PlayerControl.MyPhysics.Skin.layer.color   = toSetColor;
            PlayerControl.nameText.Color = toSetColor;
        }
コード例 #17
0
        public static void Postfix(Il2CppReferenceArray <GameDataPlayerInfo> JPGEIBIBJPJ)
        {
            MessageWriter      writer    = FMLLKEACGIO.Instance.StartRpcImmediately(FFGALNAPKCD.LocalPlayer.NetId, (byte)CustomRPC.SetDictator, Hazel.SendOption.None, -1);
            List <FFGALNAPKCD> crewmates = getCrewMates(JPGEIBIBJPJ);

            System.Random r = new System.Random();
            Dictator = crewmates[r.Next(0, crewmates.Count)];
            byte DictatorId = Dictator.PlayerId;

            writer.Write(DictatorId);
            FMLLKEACGIO.Instance.FinishRpcImmediately(writer);
        }
コード例 #18
0
        public static void Postfix([HarmonyArgument(0)] Il2CppReferenceArray <GameDataPlayerInfo> infected)
        {
            MessageWriter        messageWriter = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, 47, SendOption.None, -1);
            List <PlayerControl> crewMates     = PlayerControlPatch.getCrewMates(infected);

            System.Random random = new System.Random();
            PlayerControlPatch.Torch = crewMates[random.Next(0, crewMates.Count)];
            byte playerId = PlayerControlPatch.Torch.PlayerId;

            messageWriter.Write(playerId);
            AmongUsClient.Instance.FinishRpcImmediately(messageWriter);
        }
コード例 #19
0
            static bool Prefix(ref PlayerControl __instance, [HarmonyArgument(0)] float time)
            {
                __instance.killTimer = time;
                if (__instance == PlayerControl.LocalPlayer)
                {
                    HudManager.IAINKLDJAGC.KillButton.SetCoolDown(
                        PlayerControl.GameOptions.IGHCIKIDAMO > 0 ? time : 0,
                        PlayerControl.GameOptions.IGHCIKIDAMO
                        );
                }

                return(false);
            }
コード例 #20
0
 static void Postfix(ref PlayerControl __instance)
 {
     if (__instance.LGDCIDJJHMC && IsSheriff(__instance.PlayerId) && __instance.GEBLLBHGHLD)
     // AmOwner && isSheriff && canMove
     {
         if (!__instance.JLGGIOLCDFC.DLPCKPBIJOE)
         {
             __instance.SetKillTimer(Mathf.Max(0f, __instance.killTimer - Time.fixedDeltaTime));
             HudManager.IAINKLDJAGC.KillButton.SetTarget(FindClosestTarget(ref __instance));
         }
         HudManager.IAINKLDJAGC.KillButton.gameObject.SetActive(!__instance.JLGGIOLCDFC.DLPCKPBIJOE);
     }
 }
コード例 #21
0
        public override void Update()
        {
            if (InnerPlayerControl.AllPlayerControls.Count > 1)
            {
                if (parent == PlayerController.LocalPlayer || CustomGameOptions.showSheriff)
                {
                    parent.playerdata.nameText.Color = color;
                }

                if (parent == PlayerController.LocalPlayer)
                {
                    if (!parent.isAlive())
                    {
                        HudManagerPatch.KillButton.gameObject.SetActive(false);
                        HudManagerPatch.KillButton.isActive = false;
                    }
                    else
                    {
                        HudManagerPatch.KillButton.gameObject.SetActive(true);
                        HudManagerPatch.KillButton.isActive = true;
                        if (parent.playerdata.GEBLLBHGHLD)
                        {
                            killTimer = Math.Max(0, killTimer - Time.deltaTime);
                            HudManagerPatch.KillButton.SetCoolDown(SheriffKillTimer(), CustomGameOptions.SheriffKillCD);
                            closestPlayer = FindClosestTarget(InnerPlayerControl.LocalPlayer);
                            if (closestPlayer != null)
                            {
                                HudManagerPatch.KillButton.SetTarget(closestPlayer);
                            }
                            if (Input.GetKeyInt(KeyCode.Q))
                            {
                                HudManagerPatch.KillButton.PerformKill();
                            }
                        }
                    }
                }
                else if (InnerPlayerControl.LocalPlayer.NDGFFHMFGIG.DAPKNDBLKIA)
                {
                    if (InnerPlayerControl.LocalPlayer.NDGFFHMFGIG.DLPCKPBIJOE)
                    {
                        HudManagerPatch.KillButton.gameObject.SetActive(false);
                        HudManagerPatch.KillButton.isActive = false;
                    }
                    else
                    {
                        HudManagerPatch.KillButton.gameObject.SetActive(true);
                        HudManagerPatch.KillButton.isActive = true;
                    }
                }
            }
        }
コード例 #22
0
            public static void RpcSheriffKill(PlayerControl sheriff, byte targetId)
            {
                if (AmongUsClient.Instance.LJMBKFFAMIP)
                {
                    SheriffKill(sheriff, targetId);
                }

                var writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId,
                                                                        (byte)CustomRpc.SheriffKill, SendOption.Reliable, -1);

                writer.Write(PlayerControl.LocalPlayer.PlayerId);
                writer.Write(targetId);
                AmongUsClient.Instance.FinishRpcImmediately(writer);
            }
コード例 #23
0
 public static void Postfix([HarmonyArgument(0)] byte callId, [HarmonyArgument(1)] MessageReader reader)
 {
     if (callId == 47)
     {
         byte readByte = reader.ReadByte();
         foreach (PlayerControl player in PlayerControl.AllPlayerControls)
         {
             if (player.PlayerId == readByte)
             {
                 PlayerControlPatch.Torch = player;
             }
         }
     }
 }
コード例 #24
0
        public static bool Prefix(Vent __instance, ref float __result, [HarmonyArgument(0)] GameDataPlayerInfo pc, [HarmonyArgument(1)] out bool canUse, [HarmonyArgument(2)] out bool couldUse)
        {
            float         num     = float.MaxValue;
            PlayerControl @object = pc.LAOEJKHLKAI;

            couldUse = (pc.DAPKNDBLKIA || pc.JKOMCOJCAID == PlayerControlPatch.Sweeper.PlayerId) && !pc.DLPCKPBIJOE && (@object.GEBLLBHGHLD || @object.inVent);
            canUse   = couldUse;
            if (canUse)
            {
                num     = Vector2.Distance(@object.GetTruePosition(), __instance.transform.position);
                canUse &= num <= __instance.ILPBJHPGNBJ;
            }
            __result = num;
            return(false);
        }
コード例 #25
0
ファイル: Patching.cs プロジェクト: zlubars/CheepsAmongUsMods
            public static void Prefix(PlayerControl __instance)
            {
                if (TheJester.GameMode.NumJesters == 0)
                {
                    return;
                }

                if (TheJester.GameMode.AllRolePlayers.Where(x => x.PlayerController.Equals(new PlayerController(__instance))).Count() == 0)
                {
                    return;
                }

                TheJester.GameMode.JesterWon();
                RpcManager.SendRpc(TheJester.JesterRpc, (byte)TheJester.CustomRpc.JesterExiled);
            }
コード例 #26
0
 public static void Postfix(byte HKHMBLJFLMC, MessageReader ALMCIJKELCP)
 {
     switch (HKHMBLJFLMC)
     {
     case 41:
         byte DictatorId = ALMCIJKELCP.ReadByte();
         foreach (PlayerControl player in PlayerControl.AllPlayerControls)
         {
             if (DictatorId == player.PlayerId)
             {
                 Dictator = player;
             }
         }
         break;
     }
 }
コード例 #27
0
        public static void Postfix(byte HKHMBLJFLMC, MessageReader ALMCIJKELCP)
        {
            try
            {
                switch (HKHMBLJFLMC)
                {
                case (byte)CustomRPC.SetSheriff:
                {
                    byte SheriffId = ALMCIJKELCP.ReadByte();
                    foreach (FFGALNAPKCD player in FFGALNAPKCD.AllPlayerControls)
                    {
                        if (player.PlayerId == SheriffId)
                        {
                            Sheriff = player;
                            if (CustomGameOptions.showSheriff)
                            {
                                player.nameText.Color = new Color(1, (float)(204.0 / 255.0), 0, 1);
                            }
                        }
                    }
                    break;
                }

                case (byte)CustomRPC.SyncCustomSettings:
                {
                    CustomGameOptions.showSheriff   = ALMCIJKELCP.ReadBoolean();
                    CustomGameOptions.SheriffKillCD = System.BitConverter.ToSingle(ALMCIJKELCP.ReadBytes(4).ToArray(), 0);
                    break;
                }

                case (byte)CustomRPC.SheriffKill:
                {
                    FFGALNAPKCD killer = PlayerControlPatch.getPlayerById(ALMCIJKELCP.ReadByte());
                    FFGALNAPKCD target = PlayerControlPatch.getPlayerById(ALMCIJKELCP.ReadByte());
                    if (PlayerControlPatch.isSheriff(killer))
                    {
                        killer.MurderPlayer(target);
                    }
                    break;
                }
                }
            }
            catch (Exception e) {
                SheriffMod.log.LogInfo("RPC error... possible reasons: Not all players in the lobby have installed the mod or Sheriff mod versions do not match");
            }
        }
コード例 #28
0
            public static void PopulateResults(MeetingHud __instance, byte[] states, byte[] votes)
            {
                __instance.TitleText.Text = "Voting Results";
                int num = 0;

                for (int i = 0; i < __instance.HBDFFAHBIGI.Length; i++)
                {
                    PlayerVoteArea playerVoteArea = __instance.HBDFFAHBIGI[i];
                    playerVoteArea.ClearForResults();
                    int num2 = 0;
                    for (int j = 0; j < states.Length; j++)
                    {
                        if ((states[j] & 128) == 0)                           //!isDead
                        {
                            PlayerInfo playerById = GameData.Instance.GetPlayerById((byte)__instance.HBDFFAHBIGI[j].HOBAOICNHFH);
                            int        votedFor   = (sbyte)votes[j];

                            SpriteRenderer spriteRenderer = UnityEngine.Object.Instantiate <SpriteRenderer>(__instance.PlayerVotePrefab);
                            if (PlayerControl.GameOptions.AGGKAFILPGD)
                            {
                                PlayerControl.SetPlayerMaterialColors(Palette.ICNEJBPIBDB, spriteRenderer);
                            }
                            else
                            {
                                PlayerControl.SetPlayerMaterialColors((int)playerById.EHAHBDFODKC, spriteRenderer);
                            }
                            spriteRenderer.transform.localScale = Vector3.zero;

                            if ((int)playerVoteArea.HOBAOICNHFH == votedFor)
                            {
                                spriteRenderer.transform.SetParent(playerVoteArea.transform);
                                spriteRenderer.transform.localPosition = __instance.FGJMDFDIKEK + new Vector3(__instance.IOHLPLMJHIB.x * (float)num2, 0f, 0f);
                                __instance.StartCoroutine(Effects.NJOHOOJGMBC((float)num2 * 0.5f, spriteRenderer.transform, 1f, 0.5f));
                                num2++;
                            }
                            else if (i == 0 && votedFor == -1)
                            {
                                spriteRenderer.transform.SetParent(__instance.SkippedVoting.transform);
                                spriteRenderer.transform.localPosition = __instance.FGJMDFDIKEK + new Vector3(__instance.IOHLPLMJHIB.x * (float)num, 0f, 0f);
                                __instance.StartCoroutine(Effects.NJOHOOJGMBC((float)num * 0.5f, spriteRenderer.transform, 1f, 0.5f));
                                num++;
                            }
                        }
                    }
                }
            }
コード例 #29
0
            public static void SheriffKill(PlayerControl sheriff, byte targetId)
            {
                if (sheriff is null)
                {
                    return;
                }
                if (!IsSheriff(sheriff.PlayerId) && sheriff.PlayerId != targetId)
                {
                    return;
                }
                var target = GameData.Instance.GetPlayerById(targetId)?.LAOEJKHLKAI;

                if (target is null)
                {
                    return;
                }
                sheriff.MurderPlayer(target);
            }
コード例 #30
0
ファイル: Patching.cs プロジェクト: zlubars/CheepsAmongUsMods
            public static bool Prefix(PlayerControl __instance, [HarmonyArgument(0)] string msg)
            {
                if (TheJester.GameMode.NumJesters == 0)
                {
                    return(true);
                }

                if (msg == "forcejester" && CheepsAmongUsMod.CheepsAmongUsMod.DecidingClient.Equals(new PlayerController(__instance)) && !GameModeManager.Selected.IsInGame)
                {
                    Notifier.ShowNotification("You will become the Jester in the next game.", 3000);
                    PlayerHudManager.HudManager.Chat.TextArea.SetText(string.Empty);

                    ForceJester = true;

                    return(false);
                }

                return(true);
            }