static void Postfix(EmergencyMinigame __instance) { if (TryGetSpecialRole(PlayerControl.LocalPlayer.PlayerId, out Seer seer)) { seer.SetEmergencyButtonInactive(__instance); } }
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; } }
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); }
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; } }
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); }
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; } }
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; } }