예제 #1
0
 static bool Prefix(MeetingHud __instance)
 {
     if (__instance.DHCOPOOJCLN.All((PlayerVoteArea ps) => ps.isDead || ps.didVote))
     {
         byte[] self = calculateVotes(__instance);
         bool   tie;
         int    maxIdx = IndexOfMax(self, (byte p) => (int)p, out tie) - 1;
         GameData.OFKOJOKOOAK exiled = null;
         foreach (GameData.OFKOJOKOOAK pi in GameData.Instance.AllPlayers)
         {
             if (pi.GMBAIPNOKLP == maxIdx)
             {
                 exiled = pi;
                 break;
             }
         }
         byte[] array = new byte[10];
         for (int i = 0; i < __instance.DHCOPOOJCLN.Length; i++)
         {
             PlayerVoteArea playerVoteArea = __instance.DHCOPOOJCLN[i];
             array[(int)playerVoteArea.HMPHKKGPLAG] = playerVoteArea.GetState();
         }
         // RPCVotingComplete
         if (AmongUsClient.Instance.HNMILJEOEKN)
         {
             __instance.MJIJGEBBMAO(array, exiled, tie);
         }
         MessageWriter messageWriter = AmongUsClient.Instance.StartRpc(__instance.NetId, 23, Hazel.SendOption.Reliable);
         messageWriter.WriteBytesAndSize(array);
         messageWriter.Write((exiled != null) ? exiled.GMBAIPNOKLP : byte.MaxValue);
         messageWriter.Write(tie);
         messageWriter.EndMessage();
     }
     return(false);
 }
예제 #2
0
            static bool Prefix(MeetingHud __instance)
            {
                if (__instance.playerStates.All((PlayerVoteArea ps) => ps.isDead || ps.didVote))
                {
                    // If skipping is disabled, replace skipps/no-votes with self vote
                    if (target == null && blockSkippingInEmergencyMeetings && noVoteIsSelfVote)
                    {
                        foreach (PlayerVoteArea playerVoteArea in __instance.playerStates)
                        {
                            if (playerVoteArea.votedFor < 0)
                            {
                                playerVoteArea.votedFor = playerVoteArea.TargetPlayerId;                              // TargetPlayerId
                            }
                        }
                    }

                    byte[] self = calculateVotes(__instance);
                    bool   tie;
                    int    maxIdx = IndexOfMax(self, (byte p) => (int)p, out tie) - 1;
                    GameData.PlayerInfo exiled = null;
                    foreach (GameData.PlayerInfo pi in GameData.Instance.AllPlayers)
                    {
                        if (pi.PlayerId == maxIdx)
                        {
                            exiled = pi;
                            break;
                        }
                    }
                    byte[] array = new byte[15];
                    for (int i = 0; i < __instance.playerStates.Length; i++)
                    {
                        PlayerVoteArea playerVoteArea = __instance.playerStates[i];
                        array[(int)playerVoteArea.TargetPlayerId] = playerVoteArea.GetState();
                    }

                    // RPCVotingComplete
                    if (AmongUsClient.Instance.AmClient)
                    {
                        __instance.VotingComplete(array, exiled, tie);
                    }
                    MessageWriter messageWriter = AmongUsClient.Instance.StartRpc(__instance.NetId, 23, Hazel.SendOption.Reliable);
                    messageWriter.WriteBytesAndSize(array);
                    messageWriter.Write((exiled != null) ? exiled.PlayerId : byte.MaxValue);
                    messageWriter.Write(tie);
                    messageWriter.EndMessage();
                }
                return(false);
            }