Esempio n. 1
0
 static void Postfix(EmergencyMinigame __instance)
 {
     if (TryGetSpecialRole(PlayerControl.LocalPlayer.PlayerId, out Seer seer))
     {
         seer.SetEmergencyButtonInactive(__instance);
     }
 }
Esempio n. 2
0
        static void Postfix(EmergencyMinigame __instance)
        {
            // Swapper deactivate emergency button
            if (Swapper.swapper != null && Swapper.swapper == PlayerControl.LocalPlayer)
            {
                __instance.StatusText.Text = "The Swapper can't start an emergency meeting";
                __instance.NumberText.Text = string.Empty;
                __instance.ClosedLid.gameObject.SetActive(true);
                __instance.OpenLid.gameObject.SetActive(false);
                __instance.ButtonActive = false;
            }

            // Handle max number of meetings
            if (__instance.MJMOOPLLNPO == 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.NumberText.Text = $"{localRemaining.ToString()} and the ship has {teamRemaining.ToString()}";
                __instance.ButtonActive    = remaining > 0;
                __instance.ClosedLid.gameObject.SetActive(!__instance.ButtonActive);
                __instance.OpenLid.gameObject.SetActive(__instance.ButtonActive);
                return;
            }
        }
Esempio n. 3
0
 public void SetEmergencyButtonInactive(EmergencyMinigame instance)
 {
     if (canCallEmergency)
     {
         return;
     }
     instance.StatusText.Text = "You can't call an Emergency!";
     instance.NumberText.Text = string.Empty;
     instance.ButtonActive    = false;
     instance.ClosedLid.gameObject.SetActive(true);
     instance.OpenLid.gameObject.SetActive(false);
 }
Esempio n. 4
0
 static void Postfix(EmergencyMinigame __instance)
 {
     // Swapper deactivate emergency button
     if (Swapper.swapper != null && Swapper.swapper == PlayerControl.LocalPlayer)
     {
         __instance.StatusText.Text = "The Swapper can't start an emergency meeting";
         __instance.NumberText.Text = string.Empty;
         __instance.ClosedLid.gameObject.SetActive(true);
         __instance.OpenLid.gameObject.SetActive(false);
         __instance.ButtonActive = false;
     }
 }
Esempio n. 5
0
 public static void Postfix(EmergencyMinigame __instance)
 {
     if (__instance.Field_7 != 1)
     {
         return;
     }
     if (!PerformKill.UsedThisRound)
     {
         return;
     }
     __instance.StatusText.Text = "AN ENGINEER HAS\nUSED THEIR FIX\nFOR THIS ROUND.";
     __instance.NumberText.Text = string.Empty;
     __instance.ButtonActive    = false;
     __instance.ClosedLid.gameObject.SetActive(true);
     __instance.OpenLid.gameObject.SetActive(false);
 }
Esempio n. 6
0
        static void Postfix(EmergencyMinigame __instance)
        {
            var roleCanCallEmergency = true;
            var statusText           = "";

            // Deactivate emergency button for Swapper
            if (Swapper.swapper != null && Swapper.swapper == PlayerControl.LocalPlayer && !Swapper.canCallEmergency)
            {
                roleCanCallEmergency = false;
                statusText           = "The Swapper can't start an emergency meeting";
            }
            // Potentially deactivate emergency button for Jester
            if (Jester.jester != null && Jester.jester == PlayerControl.LocalPlayer && !Jester.canCallEmergency)
            {
                roleCanCallEmergency = false;
                statusText           = "The Jester can't start an emergency meeting";
            }

            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.NumberText.text = $"{localRemaining.ToString()} and the ship has {teamRemaining.ToString()}";
                __instance.ButtonActive    = remaining > 0;
                __instance.ClosedLid.gameObject.SetActive(!__instance.ButtonActive);
                __instance.OpenLid.gameObject.SetActive(__instance.ButtonActive);
                return;
            }
        }
Esempio n. 7
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;
                }
            }