示例#1
0
            static void Postfix(EmergencyMinigame __instance)
            {
                var roleCanCallEmergency = true;
                var statusText           = "";

                // Deactivate emergency button for GM
                if (PlayerControl.LocalPlayer.isGM())
                {
                    roleCanCallEmergency = false;
                    statusText           = ModTranslation.getString("gmMeetingButton");
                }

                // Deactivate emergency button for FortuneTeller
                if (PlayerControl.LocalPlayer.isRole(RoleType.FortuneTeller) && FortuneTeller.isCompletedNumTasks(PlayerControl.LocalPlayer))
                {
                    roleCanCallEmergency = false;
                    statusText           = ModTranslation.getString("fortuneTellerMeetingButton");
                }

                // Deactivate emergency button for Swapper
                if (Swapper.swapper != null && Swapper.swapper == PlayerControl.LocalPlayer && !Swapper.canCallEmergency)
                {
                    roleCanCallEmergency = false;
                    statusText           = ModTranslation.getString("swapperMeetingButton");
                }

                // Potentially deactivate emergency button for Jester
                if (Jester.jester != null && Jester.jester == PlayerControl.LocalPlayer && !Jester.canCallEmergency)
                {
                    roleCanCallEmergency = false;
                    statusText           = ModTranslation.getString("jesterMeetingButton");
                }

                // Potentially deactivate emergency button for Lawyer
                if (Lawyer.lawyer != null && Lawyer.lawyer == PlayerControl.LocalPlayer && Lawyer.winsAfterMeetings)
                {
                    roleCanCallEmergency = false;
                    statusText           = String.Format(ModTranslation.getString("lawyerMeetingButton"), Lawyer.neededMeetings - Lawyer.meetings);
                }

                if (!roleCanCallEmergency)
                {
                    __instance.StatusText.text = statusText;
                    __instance.NumberText.text = string.Empty;
                    __instance.ClosedLid.gameObject.SetActive(true);
                    __instance.OpenLid.gameObject.SetActive(false);
                    __instance.ButtonActive = false;
                    return;
                }

                // Handle max number of meetings
                if (__instance.state == 1)
                {
                    int localRemaining = PlayerControl.LocalPlayer.RemainingEmergencies;
                    int teamRemaining  = Mathf.Max(0, maxNumberOfMeetings - meetingsCount);
                    int remaining      = Mathf.Min(localRemaining, (Mayor.mayor != null && Mayor.mayor == PlayerControl.LocalPlayer) ? 1 : teamRemaining);

                    __instance.StatusText.text = "<size=100%>" + String.Format(ModTranslation.getString("meetingStatus"), PlayerControl.LocalPlayer.name) + "</size>";
                    __instance.NumberText.text = String.Format(ModTranslation.getString("meetingCount"), localRemaining.ToString(), teamRemaining.ToString());
                    __instance.ButtonActive    = remaining > 0;
                    __instance.ClosedLid.gameObject.SetActive(!__instance.ButtonActive);
                    __instance.OpenLid.gameObject.SetActive(__instance.ButtonActive);
                    return;
                }
            }
示例#2
0
        static void setNameColors()
        {
            if (PlayerControl.LocalPlayer.isRole(RoleType.Jester))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Jester.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Mayor))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Mayor.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Engineer))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Engineer.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Sheriff))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Sheriff.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Lighter))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Lighter.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Detective))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Detective.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.TimeMaster))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, TimeMaster.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Medic))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Medic.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Shifter))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Shifter.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Swapper))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Swapper.swapper.Data.Role.IsImpostor ? Palette.ImpostorRed : Swapper.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Seer))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Seer.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Hacker))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Hacker.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Tracker))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Tracker.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Snitch))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Snitch.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Jackal))
            {
                // Jackal can see his sidekick
                setPlayerNameColor(PlayerControl.LocalPlayer, Jackal.color);
                if (Sidekick.sidekick != null)
                {
                    setPlayerNameColor(Sidekick.sidekick, Jackal.color);
                }
                if (Jackal.fakeSidekick != null)
                {
                    setPlayerNameColor(Jackal.fakeSidekick, Jackal.color);
                }
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Spy))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Spy.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.SecurityGuard))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, SecurityGuard.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Arsonist))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Arsonist.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.NiceGuesser))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Guesser.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.EvilGuesser))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Palette.ImpostorRed);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Bait))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Bait.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Opportunist))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Opportunist.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Vulture))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Vulture.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Medium))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Medium.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Lawyer))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Lawyer.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Pursuer))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Pursuer.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.PlagueDoctor))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, PlagueDoctor.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Fox))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Fox.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.Immoralist))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Immoralist.color);
            }
            else if (PlayerControl.LocalPlayer.isRole(RoleType.FortuneTeller) && (FortuneTeller.isCompletedNumTasks(PlayerControl.LocalPlayer) || PlayerControl.LocalPlayer.Data.IsDead))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, FortuneTeller.color);
            }

            if (PlayerControl.LocalPlayer.hasModifier(ModifierType.Madmate))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Madmate.color);

                if (Madmate.knowsImpostors(PlayerControl.LocalPlayer))
                {
                    foreach (var p in PlayerControl.AllPlayerControls)
                    {
                        if (p.isImpostor() || p.isRole(RoleType.Spy) || (p.isRole(RoleType.Jackal) && Jackal.wasTeamRed) || (p.isRole(RoleType.Sidekick) && Sidekick.wasTeamRed))
                        {
                            setPlayerNameColor(p, Palette.ImpostorRed);
                        }
                    }
                }
            }

            else if (PlayerControl.LocalPlayer.hasModifier(ModifierType.CreatedMadmate))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Madmate.color);

                if (CreatedMadmate.knowsImpostors(PlayerControl.LocalPlayer))
                {
                    foreach (var p in PlayerControl.AllPlayerControls)
                    {
                        if (p.isImpostor() || p.isRole(RoleType.Spy) || (p.isRole(RoleType.Jackal) && Jackal.wasTeamRed) || (p.isRole(RoleType.Sidekick) && Sidekick.wasTeamRed))
                        {
                            setPlayerNameColor(p, Palette.ImpostorRed);
                        }
                    }
                }
            }


            else if (PlayerControl.LocalPlayer.hasModifier(ModifierType.LastImpostor))
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, LastImpostor.color);
            }

            else if (PlayerControl.LocalPlayer.hasModifier(ModifierType.Munou) && PlayerControl.LocalPlayer.Data.IsDead)
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, Munou.color);
            }

            else if (PlayerControl.LocalPlayer.hasModifier(ModifierType.AntiTeleport) && PlayerControl.LocalPlayer.Data.IsDead)
            {
                setPlayerNameColor(PlayerControl.LocalPlayer, AntiTeleport.color);
            }

            if (GM.gm != null)
            {
                setPlayerNameColor(GM.gm, GM.color);
            }

            // No else if here, as a Lover of team Jackal needs the colors
            if (PlayerControl.LocalPlayer.isRole(RoleType.Sidekick))
            {
                // Sidekick can see the jackal
                setPlayerNameColor(Sidekick.sidekick, Sidekick.color);
                if (Jackal.jackal != null)
                {
                    setPlayerNameColor(Jackal.jackal, Jackal.color);
                }
            }

            // No else if here, as the Impostors need the Spy name to be colored
            if (Spy.spy != null && PlayerControl.LocalPlayer.Data.Role.IsImpostor)
            {
                setPlayerNameColor(Spy.spy, Spy.color);
            }
            if (Sidekick.sidekick != null && Sidekick.wasTeamRed && PlayerControl.LocalPlayer.Data.Role.IsImpostor)
            {
                setPlayerNameColor(Sidekick.sidekick, Spy.color);
            }
            if (Jackal.jackal != null && Jackal.wasTeamRed && PlayerControl.LocalPlayer.Data.Role.IsImpostor)
            {
                setPlayerNameColor(Jackal.jackal, Spy.color);
            }

            if (Immoralist.exists && PlayerControl.LocalPlayer.isRole(RoleType.Fox))
            {
                foreach (var immoralist in Immoralist.allPlayers)
                {
                    setPlayerNameColor(immoralist, Immoralist.color);
                }
            }

            if (PlayerControl.LocalPlayer.isRole(RoleType.Immoralist))
            {
                foreach (var fox in Fox.allPlayers)
                {
                    setPlayerNameColor(fox, Fox.color);
                }
            }

            PlayerControl player       = PlayerControl.LocalPlayer;
            bool          impostorFlag = player.isRole(RoleType.SchrodingersCat) || player.isImpostor();
            bool          jackalFlag   = player.isRole(RoleType.SchrodingersCat) || player.isRole(RoleType.Jackal) || player.isRole(RoleType.Sidekick);

            if (SchrodingersCat.crewFlag)
            {
                foreach (var p in SchrodingersCat.allPlayers)
                {
                    setPlayerNameColor(p, Color.white);
                }
            }
            else if (SchrodingersCat.impostorFlag && impostorFlag)
            {
                foreach (var p in SchrodingersCat.allPlayers)
                {
                    setPlayerNameColor(p, Palette.ImpostorRed);
                }
                if (player.isRole(RoleType.SchrodingersCat))
                {
                    foreach (var p in PlayerControl.AllPlayerControls)
                    {
                        if (p.isImpostor())
                        {
                            setPlayerNameColor(p, Palette.ImpostorRed);
                        }
                    }
                }
            }
            else if (SchrodingersCat.jackalFlag && jackalFlag)
            {
                foreach (var p in SchrodingersCat.allPlayers)
                {
                    setPlayerNameColor(p, Jackal.color);
                }
                if (player.isRole(RoleType.SchrodingersCat))
                {
                    setPlayerNameColor(Jackal.jackal, Jackal.color);
                    if (Sidekick.sidekick != null)
                    {
                        setPlayerNameColor(Sidekick.sidekick, Sidekick.color);
                    }
                }
            }
            else if (player.isRole(RoleType.SchrodingersCat))
            {
                setPlayerNameColor(player, SchrodingersCat.color);
            }

            // Crewmate roles with no changes: Mini
            // Impostor roles with no changes: Morphling, Camouflager, Vampire, Godfather, Eraser, Janitor, Cleaner, Warlock, BountyHunter,  Witch and Mafioso
        }