public static bool Prefix(MeetingHud __instance, byte HKHMBLJFLMC, Hazel.MessageReader ALMCIJKELCP)
            {
                switch (HKHMBLJFLMC)
                {
                case 22:
                    __instance.Close();
                    break;

                case 23: {
                    byte[]     states     = ALMCIJKELCP.ReadBytesAndSize();
                    byte[]     votes      = ALMCIJKELCP.ReadBytesAndSize();
                    PlayerInfo playerById = GameData.Instance.GetPlayerById(ALMCIJKELCP.ReadByte());
                    bool       tie        = ALMCIJKELCP.ReadBoolean();
                    VotingComplete(__instance, states, votes, playerById, tie);
                    break;
                }

                case 24: {
                    byte  srcPlayerId     = ALMCIJKELCP.ReadByte();
                    sbyte suspectPlayerId = ALMCIJKELCP.ReadSByte();
                    __instance.CastVote(srcPlayerId, suspectPlayerId);
                    break;
                }

                case 25:
                    __instance.ClearVote();
                    break;
                }
                return(false);
            }
Beispiel #2
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);
        }
Beispiel #3
0
            public static bool Prefix(MeetingHud __instance)
            {
                if (!__instance.HBDFFAHBIGI.All(ps => ps.isDead || ps.didVote))
                {
                    return(false);
                }
                byte[] self = calculateVotes(__instance.HBDFFAHBIGI);

                int        maxIdx = indexOfMax(self, out bool tie) - 1;
                PlayerInfo exiled = GameData.Instance.GetPlayerById((byte)maxIdx);

                byte[] states = __instance.HBDFFAHBIGI.Select(s => s.GetState()).ToArray();
                byte[] votes  = __instance.HBDFFAHBIGI.Select(s => (byte)s.votedFor).ToArray();
                if (AmongUsClient.Instance.BEIEANEKAFC)
                {
                    MessageWriter messageWriter = AmongUsClient.Instance.StartRpc(__instance.NetId, 23, SendOption.Reliable);
                    messageWriter.WriteBytesAndSize(states);
                    messageWriter.WriteBytesAndSize(votes);                     //Added because of the state's 4 bit vote id limit
                    messageWriter.Write(exiled?.JKOMCOJCAID ?? byte.MaxValue);
                    messageWriter.Write(tie);
                    messageWriter.EndMessage();
                }

                MeetingHudHandleRpcPatch.VotingComplete(__instance, states, votes, exiled, tie);
                return(false);
            }
Beispiel #4
0
            static bool Prefix(MeetingHud __instance, [HarmonyArgument(0)] byte callId, [HarmonyArgument(1)] MessageReader reader)
            {
                switch (callId)
                {
                case 22:
                    __instance.Close();
                    break;

                case 23: {
                    byte[]     states     = reader.ReadBytesAndSize();
                    byte[]     votes      = reader.ReadBytesAndSize();
                    PlayerInfo playerById = GameData.Instance.GetPlayerById(reader.ReadByte());
                    bool       tie        = reader.ReadBoolean();
                    VotingComplete(__instance, states, votes, playerById, tie);
                    break;
                }

                case 24: {
                    byte  srcPlayerId     = reader.ReadByte();
                    sbyte suspectPlayerId = reader.ReadSByte();
                    __instance.CastVote(srcPlayerId, suspectPlayerId);
                    break;
                }

                case 25:
                    __instance.ClearVote();
                    break;
                }
                return(false);
            }
Beispiel #5
0
 public static bool Prefix([HarmonyArgument(0)] GameData.DCJMABDDJCF player, ShipStatus __instance, ref float __result)
 {
     if (player.JKOMCOJCAID == PlayerControlPatch.Torch.PlayerId)
     {
         __result = 10f;
         return(false);
     }
     return(true);
 }
Beispiel #6
0
 static void Postfix(ref PlayerInfo PPIKPNJEAKJ, ref PlayerVoteArea __result)
 {
     if (
         PPIKPNJEAKJ.JKOMCOJCAID == PlayerControl.LocalPlayer.PlayerId &&
         IsSheriff(PPIKPNJEAKJ.JKOMCOJCAID)
         )
     {
         __result.NameText.Color = Palette.HPMGFCCJLIF;
     }
 }
            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++;
                            }
                        }
                    }
                }
            }
            public static void VotingComplete(MeetingHud __instance, byte[] states, byte[] votes, PlayerInfo exiled, bool tie)
            {
                if (__instance.DCCFKHIPIOF == MeetingHud.BAMDJGFKOFP.Results)
                {
                    return;
                }
                __instance.DCCFKHIPIOF = MeetingHud.BAMDJGFKOFP.Results;
                __instance.EKGJAHLFJFP = __instance.discussionTimer;
                __instance.LCJLLGKMINO = exiled;
                __instance.GEJDOOANNJD = tie;
                __instance.SkipVoteButton.gameObject.SetActive(false);
                __instance.SkippedVoting.gameObject.SetActive(true);

                PopulateResults(__instance, states, votes);
                __instance.GOJIAJFHPIB();
            }