diff --git a/CTA/CustomTeamAssigner/CustomRoles.cs b/CTA/CustomTeamAssigner/CustomRoles.cs index 91b90bd0d..fb2a648de 100644 --- a/CTA/CustomTeamAssigner/CustomRoles.cs +++ b/CTA/CustomTeamAssigner/CustomRoles.cs @@ -242,7 +242,6 @@ public enum CustomRoles Oxyman, Paranoia, Perceiver, - Philantropist, PortalMaker, President, Psychic, @@ -326,7 +325,7 @@ public enum CustomRoles HexMaster, Hookshot, Impartial, - PlagueDoctor, // Infection + PlagueDoctor, Innocent, Investor, Jackal, diff --git a/CustomRoles.cs b/CustomRoles.cs index 91b90bd0d..020959411 100644 --- a/CustomRoles.cs +++ b/CustomRoles.cs @@ -52,7 +52,7 @@ public enum CustomRoles Duellist, Dazzler, Echo, - Escapee, // Escapist + Escapist, Eraser, EvilGuesser, EvilTracker, @@ -193,7 +193,7 @@ public enum CustomRoles Express, Farmer, Forensic, - Divinator, // Fortune Teller + FortuneTeller, Gardener, Gaulois, Goose, @@ -213,7 +213,7 @@ public enum CustomRoles Jailor, Journalist, Judge, - Needy, // Lazy Guy + LazyGuy, Leery, Lighter, Lookout, @@ -240,9 +240,8 @@ public enum CustomRoles Observer, Oracle, Oxyman, - Paranoia, + Paranoid, Perceiver, - Philantropist, PortalMaker, President, Psychic, @@ -326,18 +325,17 @@ public enum CustomRoles HexMaster, Hookshot, Impartial, - PlagueDoctor, // Infection + Infection, Innocent, Investor, Jackal, Jester, Jinx, Juggernaut, - Konan, Lawyer, Magician, Magistrate, - Mario, + Mario, // Vector Maverick, Medusa, Mycologist, @@ -521,8 +519,8 @@ public enum CustomRoles DeadlyQuota, Disco, Diseased, + Disregarded, Dynamo, - Unreportable, // Disregarded DoubleShot, Egoist, Energetic, @@ -573,20 +571,20 @@ public enum CustomRoles Recruit, Rookie, Trainee, - DualPersonality, // Schizophrenic + Schizophrenic, Seer, Shade, // Ghost role Shy, Sleuth, Sonar, Stained, - TicketsStealer, // Stealer + Stealer, Stressed, Swift, Sunglasses, Taskcounter, TaskMaster, - Brakar, // Tiebreaker + Tiebreaker, Tired, Torch, Truant, diff --git a/Main.cs b/Main.cs index dc60814ad..78d72d947 100644 --- a/Main.cs +++ b/Main.cs @@ -149,7 +149,7 @@ public class Main : BasePlugin public static List BaitAlive = []; public static Dictionary KilledDiseased = []; public static Dictionary KilledAntidote = []; - public static List BrakarVoteFor = []; + public static List TiebreakerVoteFor = []; public static Dictionary SleuthMsgs = []; public static Dictionary NumEmergencyMeetingsUsed = []; public static int MadmateNum; @@ -377,12 +377,12 @@ public class Main : BasePlugin // Crewmates { CustomRoles.DoubleAgent, "#ff1919" }, { CustomRoles.Luckey, "#b8d7a3" }, - { CustomRoles.Needy, "#a4dffe" }, + { CustomRoles.LazyGuy, "#a4dffe" }, { CustomRoles.Mechanic, "#3333ff" }, { CustomRoles.Snitch, "#b8fb4f" }, { CustomRoles.Marshall, "#5573aa" }, { CustomRoles.Mayor, "#204d42" }, - { CustomRoles.Paranoia, "#c993f5" }, + { CustomRoles.Paranoid, "#c993f5" }, { CustomRoles.Psychic, "#6F698C" }, { CustomRoles.Sheriff, "#ffb347" }, { CustomRoles.CopyCat, "#ffb2ab" }, @@ -401,7 +401,6 @@ public class Main : BasePlugin { CustomRoles.Markseeker, "#f2a0f1" }, { CustomRoles.Sentinel, "#4bc8d6" }, { CustomRoles.Electric, "#fbff00" }, - { CustomRoles.Philantropist, "#e3b384" }, { CustomRoles.Tornado, "#303030" }, { CustomRoles.Dad, "#037bfc" }, { CustomRoles.Insight, "#26ff38" }, @@ -486,7 +485,7 @@ public class Main : BasePlugin { CustomRoles.Lighter, "#eee5be" }, { CustomRoles.SecurityGuard, "#c3b25f" }, { CustomRoles.Medic, "#00ff97" }, - { CustomRoles.Divinator, "#882c83" }, + { CustomRoles.FortuneTeller, "#882c83" }, { CustomRoles.Glitch, "#39FF14" }, { CustomRoles.Judge, "#f8d85a" }, { CustomRoles.Mortician, "#333c49" }, @@ -535,7 +534,6 @@ public class Main : BasePlugin { CustomRoles.Pelican, "#34c84b" }, { CustomRoles.Revolutionist, "#ba4d06" }, { CustomRoles.Hater, "#414b66" }, - { CustomRoles.Konan, "#4d4dff" }, { CustomRoles.Demon, "#68bc71" }, { CustomRoles.Stalker, "#483d8b" }, { CustomRoles.Workaholic, "#008b8b" }, @@ -583,7 +581,7 @@ public class Main : BasePlugin { CustomRoles.Bubble, "#ff38c3" }, { CustomRoles.Hookshot, "#32a852" }, { CustomRoles.Sprayer, "#ffc038" }, - { CustomRoles.PlagueDoctor, "#ff6633" }, + { CustomRoles.Infection, "#ff6633" }, { CustomRoles.Curser, "#510c91" }, { CustomRoles.Postman, "#00b893" }, { CustomRoles.Thief, "#44AF84" }, @@ -703,7 +701,7 @@ public class Main : BasePlugin { CustomRoles.Venom, "#ff1919" }, { CustomRoles.Torch, "#eee5be" }, { CustomRoles.Seer, "#61b26c" }, - { CustomRoles.Brakar, "#1447af" }, + { CustomRoles.Tiebreaker, "#1447af" }, { CustomRoles.Oblivious, "#424242" }, { CustomRoles.Bewilder, "#c894f5" }, { CustomRoles.Spurt, "#c9e8f5" }, @@ -715,8 +713,8 @@ public class Main : BasePlugin { CustomRoles.Avanger, "#ffab1c" }, { CustomRoles.Youtuber, "#fb749b" }, { CustomRoles.Egoist, "#5600ff" }, - { CustomRoles.TicketsStealer, "#ff1919" }, - { CustomRoles.DualPersonality, "#3a648f" }, + { CustomRoles.Stealer, "#ff1919" }, + { CustomRoles.Schizophrenic, "#3a648f" }, { CustomRoles.Mimic, "#ff1919" }, { CustomRoles.Guesser, "#f8cd46" }, { CustomRoles.Necroview, "#663399" }, @@ -732,7 +730,7 @@ public class Main : BasePlugin { CustomRoles.Onbound, "#BAAAE9" }, { CustomRoles.Knighted, "#FFA500" }, { CustomRoles.Contagious, "#2E8B57" }, - { CustomRoles.Unreportable, "#FF6347" }, + { CustomRoles.Disregarded, "#FF6347" }, { CustomRoles.Lucky, "#b8d7a3" }, { CustomRoles.Unlucky, "#d7a3a3" }, { CustomRoles.DoubleShot, "#19fa8d" }, @@ -1086,7 +1084,7 @@ public enum CustomWinner Bubble = CustomRoles.Bubble, Hookshot = CustomRoles.Hookshot, Sprayer = CustomRoles.Sprayer, - PlagueDoctor = CustomRoles.PlagueDoctor, + Infection = CustomRoles.Infection, Reckless = CustomRoles.Reckless, Magician = CustomRoles.Magician, WeaponMaster = CustomRoles.WeaponMaster, diff --git a/Modules/CustomRolesHelper.cs b/Modules/CustomRolesHelper.cs index 3c6b8ece0..058cb7ca0 100644 --- a/Modules/CustomRolesHelper.cs +++ b/Modules/CustomRolesHelper.cs @@ -202,12 +202,12 @@ internal static class CustomRolesHelper CustomRoles.Puppeteer => CustomRoles.Impostor, CustomRoles.TimeThief => CustomRoles.Impostor, CustomRoles.EvilTracker => CustomRoles.Shapeshifter, - CustomRoles.Paranoia => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer, + CustomRoles.Paranoid => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer, CustomRoles.TimeMaster => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer, CustomRoles.Cleanser => CustomRoles.Crewmate, CustomRoles.Miner => UsePets ? CustomRoles.Impostor : CustomRoles.Shapeshifter, CustomRoles.Psychic => CustomRoles.Crewmate, - CustomRoles.Needy => CustomRoles.Crewmate, + CustomRoles.LazyGuy => CustomRoles.Crewmate, CustomRoles.Twister => UsePets ? CustomRoles.Impostor : CustomRoles.Shapeshifter, CustomRoles.SuperStar => CustomRoles.Crewmate, CustomRoles.Anonymous => CustomRoles.Shapeshifter, @@ -229,7 +229,6 @@ internal static class CustomRolesHelper CustomRoles.Markseeker => CustomRoles.Crewmate, CustomRoles.Sentinel => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer, CustomRoles.Electric => CustomRoles.Crewmate, - CustomRoles.Philantropist => CustomRoles.Crewmate, CustomRoles.Tornado => CustomRoles.Crewmate, CustomRoles.Druid => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer, CustomRoles.Catcher => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer, @@ -293,7 +292,7 @@ internal static class CustomRolesHelper CustomRoles.DonutDelivery => UsePets && DonutDelivery.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor, CustomRoles.Gaulois => UsePets && Gaulois.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor, CustomRoles.Analyst => UsePets && Analyst.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor, - CustomRoles.Escapee => UsePets ? CustomRoles.Impostor : CustomRoles.Shapeshifter, + CustomRoles.Escapist => UsePets ? CustomRoles.Impostor : CustomRoles.Shapeshifter, CustomRoles.NiceGuesser => CustomRoles.Crewmate, CustomRoles.EvilGuesser => CustomRoles.Impostor, CustomRoles.Forensic => CustomRoles.Crewmate, @@ -319,8 +318,7 @@ internal static class CustomRolesHelper CustomRoles.Magistrate => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer, CustomRoles.Gangster => CustomRoles.Impostor, CustomRoles.Cleaner => CustomRoles.Impostor, - CustomRoles.Konan => CustomRoles.Crewmate, - CustomRoles.Divinator => CustomRoles.Crewmate, + CustomRoles.FortuneTeller => CustomRoles.Crewmate, CustomRoles.Oracle => CustomRoles.Crewmate, CustomRoles.Lightning => CustomRoles.Impostor, CustomRoles.Greedier => CustomRoles.Impostor, @@ -541,7 +539,7 @@ internal static class CustomRolesHelper CustomRoles.Bubble => RoleTypes.Impostor, CustomRoles.Hookshot => RoleTypes.Impostor, CustomRoles.Sprayer => RoleTypes.Impostor, - CustomRoles.PlagueDoctor => RoleTypes.Impostor, + CustomRoles.Infection => RoleTypes.Impostor, CustomRoles.Curser => RoleTypes.Impostor, CustomRoles.Postman => RoleTypes.Impostor, CustomRoles.Thief => RoleTypes.Impostor, @@ -684,7 +682,7 @@ internal static class CustomRolesHelper CustomRoles.Werewolf or CustomRoles.Ritualist or CustomRoles.Pickpocket or - CustomRoles.PlagueDoctor or + CustomRoles.Infection or CustomRoles.Traitor or CustomRoles.Virus or CustomRoles.BloodKnight or @@ -727,7 +725,7 @@ internal static class CustomRolesHelper CustomRoles.Anonymous or CustomRoles.Visionary or CustomRoles.Miner or - CustomRoles.Escapee or + CustomRoles.Escapist or CustomRoles.Mercenary or CustomRoles.Overheat or CustomRoles.Abyssbringer or @@ -915,7 +913,7 @@ internal static class CustomRolesHelper { return role switch { - CustomRoles.Divinator when Divinator.CancelVote.GetBool() => true, + CustomRoles.FortuneTeller when FortuneTeller.CancelVote.GetBool() => true, CustomRoles.Soothsayer when Soothsayer.CancelVote.GetBool() => true, CustomRoles.Oracle when Oracle.CancelVote.GetBool() => true, CustomRoles.Eraser when Eraser.CancelVote.GetBool() => true, @@ -1002,7 +1000,7 @@ internal static class CustomRolesHelper CustomRoles.Knighted or CustomRoles.Glitch or CustomRoles.Pickpocket or - CustomRoles.TicketsStealer; + CustomRoles.Stealer; } public static bool IsNotAssignableMidGame(this CustomRoles role) @@ -1069,7 +1067,7 @@ internal static class CustomRolesHelper or CustomRoles.Camouflager or CustomRoles.Centralizer or CustomRoles.Disperser - or CustomRoles.Escapee + or CustomRoles.Escapist or CustomRoles.Fireworker or CustomRoles.Hypnotist or CustomRoles.Librarian @@ -1110,7 +1108,7 @@ internal static class CustomRolesHelper public static bool CheckAddonConflict(CustomRoles role, PlayerControl pc) { - return role.IsAdditionRole() && (!Main.NeverSpawnTogetherCombos.TryGetValue(OptionItem.CurrentPreset, out Dictionary> neverList) || !neverList.TryGetValue(pc.GetCustomRole(), out List bannedAddonList) || !bannedAddonList.Contains(role)) && pc.GetCustomRole() is not CustomRoles.GuardianAngelEHR and not CustomRoles.God && !pc.Is(CustomRoles.Madmate) && !pc.Is(CustomRoles.GM) && role is not CustomRoles.Lovers && !pc.Is(CustomRoles.Needy) && (!pc.HasSubRole() || pc.GetCustomSubRoles().Count < Options.NoLimitAddonsNumMax.GetInt()) && (!Options.AddonCanBeSettings.TryGetValue(role, out (OptionItem Imp, OptionItem Neutral, OptionItem Crew, OptionItem Coven) o) || ((o.Imp.GetBool() || !pc.GetCustomRole().IsImpostor()) && (o.Neutral.GetBool() || !pc.GetCustomRole().IsNeutral()) && (o.Crew.GetBool() || !pc.IsCrewmate()) && (o.Coven.GetBool() || !pc.Is(Team.Coven)))) && (!role.IsImpOnlyAddon() || (pc.IsImpostor() && !pc.Is(CustomRoles.DoubleAgent)) || (pc.Is(CustomRoles.Traitor) && Traitor.CanGetImpostorOnlyAddons.GetBool())) && role switch + return role.IsAdditionRole() && (!Main.NeverSpawnTogetherCombos.TryGetValue(OptionItem.CurrentPreset, out Dictionary> neverList) || !neverList.TryGetValue(pc.GetCustomRole(), out List bannedAddonList) || !bannedAddonList.Contains(role)) && pc.GetCustomRole() is not CustomRoles.GuardianAngelEHR and not CustomRoles.God && !pc.Is(CustomRoles.Madmate) && !pc.Is(CustomRoles.GM) && role is not CustomRoles.Lovers && !pc.Is(CustomRoles.LazyGuy) && (!pc.HasSubRole() || pc.GetCustomSubRoles().Count < Options.NoLimitAddonsNumMax.GetInt()) && (!Options.AddonCanBeSettings.TryGetValue(role, out (OptionItem Imp, OptionItem Neutral, OptionItem Crew, OptionItem Coven) o) || ((o.Imp.GetBool() || !pc.GetCustomRole().IsImpostor()) && (o.Neutral.GetBool() || !pc.GetCustomRole().IsNeutral()) && (o.Crew.GetBool() || !pc.IsCrewmate()) && (o.Coven.GetBool() || !pc.Is(Team.Coven)))) && (!role.IsImpOnlyAddon() || (pc.IsImpostor() && !pc.Is(CustomRoles.DoubleAgent)) || (pc.Is(CustomRoles.Traitor) && Traitor.CanGetImpostorOnlyAddons.GetBool())) && role switch { CustomRoles.Blind when pc.Is(CustomRoles.Sensor) => false, CustomRoles.Composter when float.IsNaN(pc.GetAbilityUseLimit()) => false, @@ -1124,7 +1122,7 @@ internal static class CustomRolesHelper CustomRoles.Introvert when pc.GetCustomRole() is CustomRoles.Leery or CustomRoles.Samurai or CustomRoles.Arsonist or CustomRoles.Revolutionist or CustomRoles.Investigator or CustomRoles.Scavenger or CustomRoles.Analyst => false, CustomRoles.Circumvent when pc.GetCustomRole() is CustomRoles.Swooper or CustomRoles.RiftMaker => false, CustomRoles.Oblivious when pc.Is(CustomRoles.Altruist) => false, - CustomRoles.AntiTP when pc.GetCustomRole() is CustomRoles.Transmitter or CustomRoles.Miner or CustomRoles.Escapee or CustomRoles.Tunneler or CustomRoles.Ninja => false, + CustomRoles.AntiTP when pc.GetCustomRole() is CustomRoles.Transmitter or CustomRoles.Miner or CustomRoles.Escapist or CustomRoles.Tunneler or CustomRoles.Ninja => false, CustomRoles.Swift when pc.Is(CustomRoles.Stealth) => false, CustomRoles.BananaMan when pc.Is(CustomRoles.Disco) || pc.Is(CustomRoles.Doppelganger) => false, CustomRoles.Disco when pc.GetCustomRole() is CustomRoles.Chameleon or CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Alchemist or CustomRoles.Doppelganger => false, @@ -1140,10 +1138,10 @@ internal static class CustomRolesHelper CustomRoles.Lazy when pc.Is(CustomRoles.Speedrunner) => false, CustomRoles.Mischievous when pc.Is(Team.Impostor) || (!pc.GetCustomRole().IsDesyncRole() && !pc.Is(CustomRoles.Bloodlust)) || !pc.IsNeutralKiller() || Main.PlayerStates[pc.PlayerId].Role.CanUseSabotage(pc) => false, CustomRoles.Loyal when pc.IsCrewmate() && !Options.CrewCanBeLoyal.GetBool() => false, - CustomRoles.Lazy when pc.Is(CustomRoles.Needy) || pc.Is(CustomRoles.Snitch) || pc.Is(CustomRoles.Marshall) || pc.Is(CustomRoles.Transporter) || pc.Is(CustomRoles.Guardian) => false, - CustomRoles.Brakar when pc.Is(CustomRoles.Dictator) => false, + CustomRoles.Lazy when pc.Is(CustomRoles.LazyGuy) || pc.Is(CustomRoles.Snitch) || pc.Is(CustomRoles.Marshall) || pc.Is(CustomRoles.Transporter) || pc.Is(CustomRoles.Guardian) => false, + CustomRoles.Tiebreaker when pc.Is(CustomRoles.Dictator) => false, CustomRoles.Stressed when !pc.IsCrewmate() || pc.GetCustomRole().IsTasklessCrewmate() => false, - CustomRoles.TicketsStealer or CustomRoles.Swift or CustomRoles.DeadlyQuota or CustomRoles.Damocles or CustomRoles.Mare when pc.Is(CustomRoles.Bomber) || pc.Is(CustomRoles.Nuker) || pc.Is(CustomRoles.Trapster) || pc.Is(CustomRoles.Capitalism) => false, + CustomRoles.Stealer or CustomRoles.Swift or CustomRoles.DeadlyQuota or CustomRoles.Damocles or CustomRoles.Mare when pc.Is(CustomRoles.Bomber) || pc.Is(CustomRoles.Nuker) || pc.Is(CustomRoles.Trapster) || pc.Is(CustomRoles.Capitalism) => false, CustomRoles.Torch when !pc.IsCrewmate() || pc.Is(CustomRoles.Bewilder) || pc.Is(CustomRoles.Sunglasses) || pc.Is(CustomRoles.GuardianAngelEHR) => false, CustomRoles.Bewilder when pc.Is(CustomRoles.Torch) || pc.Is(CustomRoles.GuardianAngelEHR) || pc.Is(CustomRoles.Sunglasses) => false, CustomRoles.Dynamo when pc.Is(CustomRoles.Spurt) || pc.GetCustomRole() is CustomRoles.Tank or CustomRoles.Ankylosaurus => false, @@ -1161,8 +1159,8 @@ internal static class CustomRolesHelper CustomRoles.Necroview when pc.Is(CustomRoles.Visionary) => false, CustomRoles.Mimic when pc.Is(CustomRoles.Nemesis) => false, CustomRoles.Rascal when !pc.IsCrewmate() => false, - CustomRoles.Needy when pc.GetCustomRole().IsAdditionRole() => false, - CustomRoles.TicketsStealer when pc.Is(CustomRoles.Vindicator) => false, + CustomRoles.LazyGuy when pc.GetCustomRole().IsAdditionRole() => false, + CustomRoles.Stealer when pc.Is(CustomRoles.Vindicator) => false, CustomRoles.Bloodlust when !pc.GetCustomRole().IsCrewmate() || pc.GetCustomRole().IsTaskBasedCrewmate() || pc.GetCustomRole() is CustomRoles.Medic => false, CustomRoles.Mare when pc.Is(CustomRoles.Inhibitor) => false, CustomRoles.Mare when pc.Is(CustomRoles.Saboteur) => false, @@ -1180,7 +1178,7 @@ internal static class CustomRolesHelper CustomRoles.Lovers when pc.Is(CustomRoles.Romantic) => false, CustomRoles.Mare when pc.Is(CustomRoles.LastImpostor) => false, CustomRoles.Swift when pc.Is(CustomRoles.Mare) => false, - CustomRoles.DualPersonality when (!pc.IsImpostor() && !pc.IsCrewmate()) || pc.Is(CustomRoles.Madmate) => false, + CustomRoles.Schizophrenic when (!pc.IsImpostor() && !pc.IsCrewmate()) || pc.Is(CustomRoles.Madmate) => false, CustomRoles.Loyal when (!pc.IsImpostor() && !pc.IsCrewmate()) || pc.Is(CustomRoles.Madmate) => false, CustomRoles.Loyal when pc.IsImpostor() && !Options.ImpCanBeLoyal.GetBool() => false, CustomRoles.Seer when pc.GetCustomRole() is CustomRoles.Mortician or CustomRoles.TimeMaster => false, @@ -1192,7 +1190,7 @@ internal static class CustomRolesHelper CustomRoles.Bait when pc.Is(CustomRoles.GuardianAngelEHR) => false, CustomRoles.Bait when pc.Is(CustomRoles.Trapper) => false, CustomRoles.Trapper when pc.Is(CustomRoles.Bait) => false, - CustomRoles.DualPersonality when pc.Is(CustomRoles.Dictator) => false, + CustomRoles.Schizophrenic when pc.Is(CustomRoles.Dictator) => false, CustomRoles.Swift when pc.Is(CustomRoles.Swooper) => false, CustomRoles.Swift when pc.Is(CustomRoles.Vampire) => false, CustomRoles.Swift when pc.Is(CustomRoles.Scavenger) => false, @@ -1209,7 +1207,7 @@ internal static class CustomRolesHelper CustomRoles.Diseased when pc.Is(CustomRoles.Antidote) => false, CustomRoles.Antidote when pc.Is(CustomRoles.Diseased) => false, CustomRoles.Flashman or CustomRoles.Giant when pc.GetCustomRole() is CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Chameleon or CustomRoles.Alchemist or CustomRoles.Ankylosaurus => false, - CustomRoles.Bait when pc.Is(CustomRoles.Unreportable) => false, + CustomRoles.Bait when pc.Is(CustomRoles.Disregarded) => false, CustomRoles.Busy when !pc.GetTaskState().HasTasks => false, CustomRoles.Truant when pc.Is(CustomRoles.SoulHunter) => false, CustomRoles.Nimble when !pc.IsCrewmate() => false, @@ -1218,11 +1216,11 @@ internal static class CustomRolesHelper CustomRoles.Noisy when !pc.IsCrewmate() || pc.GetCustomRole().IsDesyncRole() => false, CustomRoles.Examiner when !pc.IsCrewmate() || pc.GetCustomRole().IsDesyncRole() => false, CustomRoles.Venom when !pc.IsImpostor() => false, - CustomRoles.Unreportable when pc.Is(CustomRoles.Bait) => false, + CustomRoles.Disregarded when pc.Is(CustomRoles.Bait) => false, CustomRoles.Oblivious when pc.Is(CustomRoles.Coroner) => false, CustomRoles.Oblivious when pc.Is(CustomRoles.Vulture) => false, CustomRoles.DoubleShot when pc.Is(CustomRoles.CopyCat) => false, - CustomRoles.Brakar when pc.Is(CustomRoles.Dictator) => false, + CustomRoles.Tiebreaker when pc.Is(CustomRoles.Dictator) => false, CustomRoles.Lucky when pc.Is(CustomRoles.Luckey) => false, CustomRoles.Unlucky when pc.GetCustomRole() is CustomRoles.Luckey or CustomRoles.Tank => false, CustomRoles.Unlucky when pc.Is(CustomRoles.Lucky) => false, @@ -1427,8 +1425,8 @@ internal static class CustomRolesHelper public static bool IsDevFavoriteRole(this CustomRoles role) { return role is CustomRoles.Adventurer or CustomRoles.Chef or CustomRoles.Detour or CustomRoles.Hacker or CustomRoles.NiceSwapper or CustomRoles.Sentinel or CustomRoles.Sentry or CustomRoles.Tornado or CustomRoles.Tunneler or CustomRoles.Whisperer or CustomRoles.Wizard or - CustomRoles.Abyssbringer or CustomRoles.Assumer or CustomRoles.Chronomancer or CustomRoles.Echo or CustomRoles.Escapee or CustomRoles.Hypnotist or CustomRoles.Librarian or CustomRoles.Mafioso or CustomRoles.Mastermind or CustomRoles.Mercenary or CustomRoles.Penguin or CustomRoles.RiftMaker or CustomRoles.Sapper or CustomRoles.Wiper or - CustomRoles.Bargainer or CustomRoles.Bubble or CustomRoles.Doomsayer or CustomRoles.Enderman or CustomRoles.Evolver or CustomRoles.HeadHunter or CustomRoles.Impartial or CustomRoles.Patroller or CustomRoles.Pawn or CustomRoles.PlagueDoctor or CustomRoles.Postman or CustomRoles.Pyromaniac or CustomRoles.Revolutionist or CustomRoles.Rogue or CustomRoles.Romantic or CustomRoles.RoomRusher or CustomRoles.RouleteGrandeur or CustomRoles.Simon or CustomRoles.SoulHunter or CustomRoles.Sprayer or CustomRoles.Technician or CustomRoles.Tank or CustomRoles.Tiger or CustomRoles.Tremor or CustomRoles.Vengeance or CustomRoles.Vortex or CustomRoles.Werewolf or CustomRoles.WeaponMaster or + CustomRoles.Abyssbringer or CustomRoles.Assumer or CustomRoles.Chronomancer or CustomRoles.Echo or CustomRoles.Escapist or CustomRoles.Hypnotist or CustomRoles.Librarian or CustomRoles.Mafioso or CustomRoles.Mastermind or CustomRoles.Mercenary or CustomRoles.Penguin or CustomRoles.RiftMaker or CustomRoles.Sapper or CustomRoles.Wiper or + CustomRoles.Bargainer or CustomRoles.Bubble or CustomRoles.Doomsayer or CustomRoles.Enderman or CustomRoles.Evolver or CustomRoles.HeadHunter or CustomRoles.Impartial or CustomRoles.Patroller or CustomRoles.Pawn or CustomRoles.Infection or CustomRoles.Postman or CustomRoles.Pyromaniac or CustomRoles.Revolutionist or CustomRoles.Rogue or CustomRoles.Romantic or CustomRoles.RoomRusher or CustomRoles.RouleteGrandeur or CustomRoles.Simon or CustomRoles.SoulHunter or CustomRoles.Sprayer or CustomRoles.Technician or CustomRoles.Tank or CustomRoles.Tiger or CustomRoles.Tremor or CustomRoles.Vengeance or CustomRoles.Vortex or CustomRoles.Werewolf or CustomRoles.WeaponMaster or CustomRoles.Reaper or CustomRoles.VoodooMaster or CustomRoles.Dreamweaver or CustomRoles.Banshee or CustomRoles.Allergic or CustomRoles.Bloodlust or CustomRoles.Damocles or CustomRoles.Deadlined or CustomRoles.DeadlyQuota or CustomRoles.Dynamo or CustomRoles.DoubleShot or CustomRoles.Energetic or CustomRoles.Haste or CustomRoles.Introvert or CustomRoles.Messenger or CustomRoles.Nimble or CustomRoles.Reach or CustomRoles.Seer or CustomRoles.Stressed; } @@ -1693,7 +1691,7 @@ internal static class CustomRolesHelper CustomRoles.Anonymous => RoleOptionType.Impostor_Concealing, CustomRoles.Duellist => RoleOptionType.Impostor_Concealing, CustomRoles.Echo => RoleOptionType.Impostor_Concealing, - CustomRoles.Escapee => RoleOptionType.Impostor_Concealing, + CustomRoles.Escapist => RoleOptionType.Impostor_Concealing, CustomRoles.Exclusionary => RoleOptionType.Impostor_Concealing, CustomRoles.Fabricator => RoleOptionType.Impostor_Concealing, CustomRoles.Forger => RoleOptionType.Impostor_Concealing, @@ -1762,12 +1760,12 @@ internal static class CustomRolesHelper CustomRoles.Carrier => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Demolitionist => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Express => RoleOptionType.Crewmate_Miscellaneous, - CustomRoles.Needy => RoleOptionType.Crewmate_Miscellaneous, + CustomRoles.LazyGuy => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Journalist => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Luckey => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Mole => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Nightmare => RoleOptionType.Crewmate_Miscellaneous, - CustomRoles.Paranoia => RoleOptionType.Crewmate_Miscellaneous, + CustomRoles.Paranoid => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.PortalMaker => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Ricochet => RoleOptionType.Crewmate_Miscellaneous, CustomRoles.Safeguard => RoleOptionType.Crewmate_Miscellaneous, @@ -1789,7 +1787,7 @@ internal static class CustomRolesHelper CustomRoles.Druid => RoleOptionType.Crewmate_Investigate, CustomRoles.Enigma => RoleOptionType.Crewmate_Investigate, CustomRoles.Investigator => RoleOptionType.Crewmate_Investigate, - CustomRoles.Divinator => RoleOptionType.Crewmate_Investigate, + CustomRoles.FortuneTeller => RoleOptionType.Crewmate_Investigate, CustomRoles.MeetingManager => RoleOptionType.Crewmate_Investigate, CustomRoles.Ignitor => RoleOptionType.Crewmate_Investigate, CustomRoles.Imitator => RoleOptionType.Crewmate_Investigate, @@ -1986,7 +1984,7 @@ public enum CountTypes Bubble, Hookshot, Sprayer, - PlagueDoctor, + Infection, Magician, WeaponMaster, Reckless, diff --git a/Modules/GameState.cs b/Modules/GameState.cs index 55d091906..54b7e28af 100644 --- a/Modules/GameState.cs +++ b/Modules/GameState.cs @@ -118,7 +118,7 @@ public class PlayerState(byte playerId) if (Main.IntroDestroyed && (RoleHistory.Count == 0 || RoleHistory[^1] != MainRole)) RoleHistory.Add(MainRole); - Divinator.OnRoleChange(PlayerId, MainRole, role); + FortuneTeller.OnRoleChange(PlayerId, MainRole, role); bool previousHasTasks = Utils.HasTasks(Player.Data, false); diff --git a/Modules/GuessManager.cs b/Modules/GuessManager.cs index 366ab1159..c1044343a 100644 --- a/Modules/GuessManager.cs +++ b/Modules/GuessManager.cs @@ -552,7 +552,7 @@ public static class GuessManager LateTask.New(() => Utils.SendMessage(string.Format(GetString("GuessKill"), Main.AllPlayerNames.GetValueOrDefault(dp.PlayerId, name)), 255, Utils.ColorString(Utils.GetRoleColor(CustomRoles.NiceGuesser), GetString("GuessKillTitle"))), 0.6f, "Guess Msg"); if (pc.Is(CustomRoles.Doomsayer) && pc.PlayerId != dp.PlayerId) LateTask.New(() => Utils.SendMessage(string.Format(GetString("DoomsayerGuessCountMsg"), Doomsayer.GuessingToWin[pc.PlayerId]), pc.PlayerId, Utils.ColorString(Utils.GetRoleColor(CustomRoles.Doomsayer), GetString("DoomsayerGuessCountTitle"))), 0.7f, "Doomsayer Guess Msg 2"); - if (pc.Is(CustomRoles.TicketsStealer) && pc.PlayerId != dp.PlayerId) LateTask.New(() => Utils.SendMessage(string.Format(GetString("TicketsStealerGetTicket"), (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == pc.PlayerId) * Options.TicketsPerKill.GetFloat())), pc.PlayerId), 0.7f, log: false); + if (pc.Is(CustomRoles.Stealer) && pc.PlayerId != dp.PlayerId) LateTask.New(() => Utils.SendMessage(string.Format(GetString("StealerGetTicket"), (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == pc.PlayerId) * Options.VotesPerKill.GetFloat())), pc.PlayerId), 0.7f, log: false); if (pc.Is(CustomRoles.Pickpocket) && pc.PlayerId != dp.PlayerId) LateTask.New(() => Utils.SendMessage(string.Format(GetString("PickpocketGetVote"), (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == pc.PlayerId) * Pickpocket.VotesPerKill.GetFloat())), pc.PlayerId), 0.7f, log: false); }, 0.2f, "Guesser Kill"); @@ -1041,9 +1041,8 @@ public static class GuessManager CustomRoles.Giant or CustomRoles.NotAssigned or CustomRoles.KB_Normal or - CustomRoles.Paranoia or + CustomRoles.Paranoid or CustomRoles.SuperStar or - CustomRoles.Konan or CustomRoles.GuardianAngelEHR ) return false; diff --git a/Modules/OptionHolder.cs b/Modules/OptionHolder.cs index f5e1c817c..fdad41bc6 100644 --- a/Modules/OptionHolder.cs +++ b/Modules/OptionHolder.cs @@ -355,8 +355,8 @@ public static class Options public static OptionItem WitnessTime; public static OptionItem WitnessUsePet; public static OptionItem DQNumOfKillsNeeded; - public static OptionItem ParanoiaNumOfUseButton; - public static OptionItem ParanoiaVentCooldown; + public static OptionItem ParanoidNumOfUseButton; + public static OptionItem ParanoidVentCooldown; public static OptionItem ImpKnowSuperStarDead; public static OptionItem NeutralKnowSuperStarDead; public static OptionItem CovenKnowSuperStarDead; @@ -831,7 +831,7 @@ public static class Options public static OptionItem FlashmanSpeed; public static OptionItem GiantSpeed; public static OptionItem ImpEgoistVisibalToAllies; - public static OptionItem TicketsPerKill; + public static OptionItem VotesPerKill; public static OptionItem DualVotes; public static OptionItem ImpCanBeLoyal; public static OptionItem CrewCanBeLoyal; @@ -979,7 +979,7 @@ public static class Options var grouped = Enum.GetValues().GroupBy(x => { - if (x is CustomRoles.GM or CustomRoles.Philantropist or CustomRoles.Konan or CustomRoles.NotAssigned or CustomRoles.LovingCrewmate or CustomRoles.LovingImpostor or CustomRoles.Convict or CustomRoles.Hider or CustomRoles.Seeker or CustomRoles.Fox or CustomRoles.Troll or CustomRoles.Jumper or CustomRoles.Detector or CustomRoles.Jet or CustomRoles.Dasher or CustomRoles.Locator or CustomRoles.Agent or CustomRoles.Venter or CustomRoles.Taskinator || x.IsForOtherGameMode() || x.IsVanilla() || x.ToString().Contains("EHR")) return 4; + if (x is CustomRoles.GM or CustomRoles.NotAssigned or CustomRoles.LovingCrewmate or CustomRoles.LovingImpostor or CustomRoles.Convict or CustomRoles.Hider or CustomRoles.Seeker or CustomRoles.Fox or CustomRoles.Troll or CustomRoles.Jumper or CustomRoles.Detector or CustomRoles.Jet or CustomRoles.Dasher or CustomRoles.Locator or CustomRoles.Agent or CustomRoles.Venter or CustomRoles.Taskinator || x.IsForOtherGameMode() || x.IsVanilla() || x.ToString().Contains("EHR")) return 4; if (x == CustomRoles.DoubleAgent) return 2; if (x.IsAdditionRole()) return 3; if (x.IsImpostor() || x.IsMadmate()) return 0; diff --git a/Modules/RPC.cs b/Modules/RPC.cs index aca6cafc5..654795747 100644 --- a/Modules/RPC.cs +++ b/Modules/RPC.cs @@ -94,7 +94,7 @@ public enum CustomRPC SyncChronomancer, PenguinSync, - SyncPlagueDoctor, + SyncInfection, SetAlchemistPotion, SetRicochetTarget, SetTetherTarget, @@ -946,9 +946,9 @@ internal static class RPCHandlerPatch EvilTracker.ReceiveRPC(reader); break; } - case CustomRPC.SyncPlagueDoctor: + case CustomRPC.SyncInfection: { - PlagueDoctor.ReceiveRPC(reader); + Infection.ReceiveRPC(reader); break; } case CustomRPC.PenguinSync: diff --git a/Modules/Utils.cs b/Modules/Utils.cs index 89f8d7fa0..f7c11872c 100644 --- a/Modules/Utils.cs +++ b/Modules/Utils.cs @@ -874,7 +874,7 @@ public static class Utils case CustomRoles.Sprayer: case CustomRoles.Doppelganger: case CustomRoles.NecroGuesser: - case CustomRoles.PlagueDoctor: + case CustomRoles.Infection: case CustomRoles.Thief: case CustomRoles.Postman: case CustomRoles.Dealer: @@ -1034,11 +1034,11 @@ public static class Utils (pc.Is(CustomRoles.President) && !Options.PresidentCanBeMadmate.GetBool()) || pc.Is(CustomRoles.NiceSwapper) || pc.Is(CustomRoles.Speedrunner) || - pc.Is(CustomRoles.Needy) || + pc.Is(CustomRoles.LazyGuy) || pc.Is(CustomRoles.Loyal) || pc.Is(CustomRoles.SuperStar) || pc.Is(CustomRoles.Egoist) || - pc.Is(CustomRoles.DualPersonality) + pc.Is(CustomRoles.Schizophrenic) ); } @@ -2961,7 +2961,7 @@ public static class Utils TargetMark.Append(Romantic.TargetMark(seer, target)); TargetMark.Append(Lawyer.LawyerMark(seer, target)); TargetMark.Append(Deathpact.GetDeathpactMark(seer, target)); - TargetMark.Append(PlagueDoctor.GetMarkOthers(seer, target)); + TargetMark.Append(Infection.GetMarkOthers(seer, target)); End: @@ -3349,7 +3349,7 @@ public static class Utils { Sniper { IsAim: true } => true, Centralizer { MarkedPosition: not null } => true, - Escapee { EscapeeLocation: null } => true, + Escapist { EscapistLocation: null } => true, Silencer when Silencer.ForSilencer.Count == 0 => true, _ => false }; @@ -3359,7 +3359,7 @@ public static class Utils { return pc.GetCustomRole() switch { - CustomRoles.Escapee => true, + CustomRoles.Escapist => true, _ => false }; } @@ -3398,7 +3398,7 @@ public static class Utils CustomRoles.Gardener => Gardener.AbilityCooldown.GetInt(), CustomRoles.Doorjammer => Doorjammer.AbilityCooldown.GetInt(), CustomRoles.Mayor when Mayor.MayorHasPortableButton.GetBool() => (int)Math.Round(Options.AdjustedDefaultKillCooldown), - CustomRoles.Paranoia => (int)Math.Round(Options.AdjustedDefaultKillCooldown), + CustomRoles.Paranoid => (int)Math.Round(Options.AdjustedDefaultKillCooldown), CustomRoles.Tree => 5 + (includeDuration ? Tree.FallDelay.GetInt() + Tree.FallStunDuration.GetInt() : 0), CustomRoles.Grenadier => Options.GrenadierSkillCooldown.GetInt() + (includeDuration ? Options.GrenadierSkillDuration.GetInt() : 0), CustomRoles.Lighter => Options.LighterSkillCooldown.GetInt() + (includeDuration ? Options.LighterSkillDuration.GetInt() : 0), @@ -3430,7 +3430,7 @@ public static class Utils CustomRoles.Nuker => Bomber.NukeCooldown.GetInt(), CustomRoles.Sapper => Sapper.ShapeshiftCooldown.GetInt(), CustomRoles.Miner => Miner.MinerSSCD.GetInt(), - CustomRoles.Escapee => Escapee.EscapeeSSCD.GetInt(), + CustomRoles.Escapist => Escapist.EscapistSSCD.GetInt(), CustomRoles.QuickShooter => QuickShooter.ShapeshiftCooldown.GetInt(), CustomRoles.Disperser => Disperser.DisperserShapeshiftCooldown.GetInt(), CustomRoles.Trapster => Trapster.AbilityCooldown.GetInt(), @@ -3675,8 +3675,8 @@ public static class Utils case CustomRoles.Lawyer when Lawyer.Target.Remove(target.PlayerId): Lawyer.SendRPC(target.PlayerId); break; - case CustomRoles.PlagueDoctor when !disconnect && !onMeeting: - PlagueDoctor.OnPDdeath(targetRealKiller, target); + case CustomRoles.Infection when !disconnect && !onMeeting: + Infection.OnPDdeath(targetRealKiller, target); break; case CustomRoles.SuperStar when !disconnect: if (onMeeting) diff --git a/Patches/ChatCommandPatch.cs b/Patches/ChatCommandPatch.cs index 5d2eaa71c..72dae59ab 100644 --- a/Patches/ChatCommandPatch.cs +++ b/Patches/ChatCommandPatch.cs @@ -1392,7 +1392,7 @@ internal static class ChatCommands DraftResult = []; byte[] allPlayerIds = Main.AllPlayerControls.Select(x => x.PlayerId).ToArray(); - List allRoles = Enum.GetValues().Where(x => x < CustomRoles.NotAssigned && x.IsEnable() && !x.IsForOtherGameMode() && !CustomHnS.AllHnSRoles.Contains(x) && !x.IsVanilla() && x is not CustomRoles.GM and not CustomRoles.Konan).ToList(); + List allRoles = Enum.GetValues().Where(x => x < CustomRoles.NotAssigned && x.IsEnable() && !x.IsForOtherGameMode() && !CustomHnS.AllHnSRoles.Contains(x) && !x.IsVanilla() && x is not CustomRoles.GM).ToList(); if (allRoles.Count < allPlayerIds.Length) { diff --git a/Patches/CheckGameEndPatch.cs b/Patches/CheckGameEndPatch.cs index 8d9e69c4e..6336e1425 100644 --- a/Patches/CheckGameEndPatch.cs +++ b/Patches/CheckGameEndPatch.cs @@ -633,11 +633,11 @@ internal static class GameEndChecker roleCounts[(keyRole, keyWinner)] = value; } - if (CustomRoles.DualPersonality.IsEnable()) + if (CustomRoles.Schizophrenic.IsEnable()) { foreach (PlayerControl x in aapc) { - if (!x.Is(CustomRoles.DualPersonality)) continue; + if (!x.Is(CustomRoles.Schizophrenic)) continue; if (x.Is(Team.Impostor)) imp++; else if (x.Is(Team.Crewmate)) crew++; diff --git a/Patches/HudPatch.cs b/Patches/HudPatch.cs index 3b3276ce5..fe49bf23b 100644 --- a/Patches/HudPatch.cs +++ b/Patches/HudPatch.cs @@ -361,7 +361,7 @@ internal static class HudManagerPatch button = __instance.ReportButton; else if (role is CustomRoles.Venter or CustomRoles.Patroller || (role == CustomRoles.Nonplus && !Options.UsePets.GetBool())) button = __instance.ImpostorVentButton; - else if ((role.IsCrewmate() && role.IsDesyncRole() && !usesPetInsteadOfKill) || role is CustomRoles.Dreamweaver or CustomRoles.Enchanter or CustomRoles.VoodooMaster or CustomRoles.Blackmailer or CustomRoles.Cantankerous or CustomRoles.Consort or CustomRoles.Consigliere or CustomRoles.Framer or CustomRoles.Gangster or CustomRoles.Kamikaze or CustomRoles.Auditor or CustomRoles.Backstabber or CustomRoles.Cherokious or CustomRoles.Cultist or CustomRoles.Curser or CustomRoles.Gaslighter or CustomRoles.Investor or CustomRoles.Jackal or CustomRoles.PlagueDoctor or CustomRoles.Pursuer or CustomRoles.Spiritcaller or CustomRoles.Starspawn) + else if ((role.IsCrewmate() && role.IsDesyncRole() && !usesPetInsteadOfKill) || role is CustomRoles.Dreamweaver or CustomRoles.Enchanter or CustomRoles.VoodooMaster or CustomRoles.Blackmailer or CustomRoles.Cantankerous or CustomRoles.Consort or CustomRoles.Consigliere or CustomRoles.Framer or CustomRoles.Gangster or CustomRoles.Kamikaze or CustomRoles.Auditor or CustomRoles.Backstabber or CustomRoles.Cherokious or CustomRoles.Cultist or CustomRoles.Curser or CustomRoles.Gaslighter or CustomRoles.Investor or CustomRoles.Jackal or CustomRoles.Infection or CustomRoles.Pursuer or CustomRoles.Spiritcaller or CustomRoles.Starspawn) button = __instance.KillButton; else if ((Options.UsePhantomBasis.GetBool() && (!role.IsNK() || Options.UsePhantomBasisForNKs.GetBool()) && role.SimpleAbilityTrigger()) || (player.GetRoleTypes() is RoleTypes.Engineer or RoleTypes.Shapeshifter or RoleTypes.Phantom && !player.Is(CustomRoles.Nimble) && player.GetCustomRole() is not (CustomRoles.Mechanic or CustomRoles.Telecommunication))) button = __instance.AbilityButton; diff --git a/Patches/HudSpritePatch.cs b/Patches/HudSpritePatch.cs index f7eec83aa..2f594f7f1 100644 --- a/Patches/HudSpritePatch.cs +++ b/Patches/HudSpritePatch.cs @@ -284,7 +284,7 @@ public static class HudSpritePatch newAbilityButton = CustomButton.Get("Hangman"); break; } - case CustomRoles.Paranoia: + case CustomRoles.Paranoid: { if (Options.UsePets.GetBool()) newPetButton = CustomButton.Get("Paranoid"); else newAbilityButton = CustomButton.Get("Paranoid"); @@ -425,7 +425,7 @@ public static class HudSpritePatch newAbilityButton = CustomButton.Get("prophecies"); break; } - case CustomRoles.Escapee: + case CustomRoles.Escapist: { if (Options.UsePets.GetBool() && !Options.UsePhantomBasis.GetBool()) newPetButton = CustomButton.Get("abscond"); else newAbilityButton = CustomButton.Get("abscond"); diff --git a/Patches/IntroPatch.cs b/Patches/IntroPatch.cs index 082a6ab63..4750a17d3 100644 --- a/Patches/IntroPatch.cs +++ b/Patches/IntroPatch.cs @@ -764,7 +764,7 @@ internal static class BeginCrewmatePatch CustomRoles.Detective or CustomRoles.DetectiveEHR or CustomRoles.Analyst - or CustomRoles.Divinator + or CustomRoles.FortuneTeller or CustomRoles.Enigma or CustomRoles.Investigator or CustomRoles.Forensic diff --git a/Patches/MeetingHudPatch.cs b/Patches/MeetingHudPatch.cs index 2f5dab8c1..03e3df8fb 100644 --- a/Patches/MeetingHudPatch.cs +++ b/Patches/MeetingHudPatch.cs @@ -166,7 +166,7 @@ internal static class CheckForEndVotingPatch if (ps.VotedFor == 254 && !voter.Data.IsDead && voter.Is(CustomRoles.Compelled)) TryAddAfterMeetingDeathPlayers(PlayerState.DeathReason.DidntVote, ps.TargetPlayerId); - if (CheckRole(ps.TargetPlayerId, CustomRoles.Divinator) && Divinator.HideVote.GetBool()) continue; + if (CheckRole(ps.TargetPlayerId, CustomRoles.FortuneTeller) && FortuneTeller.HideVote.GetBool()) continue; if (CheckRole(ps.TargetPlayerId, CustomRoles.Eraser) && Eraser.HideVote.GetBool()) continue; if (CheckRole(ps.TargetPlayerId, CustomRoles.NiceEraser) && NiceEraser.HideVote.GetBool()) continue; if (CheckRole(ps.TargetPlayerId, CustomRoles.Scout) && Scout.HideVote.GetBool()) continue; @@ -200,15 +200,15 @@ internal static class CheckForEndVotingPatch if (CheckRole(ps.TargetPlayerId, CustomRoles.Vindicator) && !Options.VindicatorHideVote.GetBool()) Loop.Times(Options.VindicatorAdditionalVote.GetInt(), _ => AddVote()); if (CheckRole(ps.TargetPlayerId, CustomRoles.Knighted)) AddVote(); - if (CheckRole(ps.TargetPlayerId, CustomRoles.DualPersonality) && Options.DualVotes.GetBool()) + if (CheckRole(ps.TargetPlayerId, CustomRoles.Schizophrenic) && Options.DualVotes.GetBool()) { int count = statesList.Count(x => x.VoterId == ps.TargetPlayerId && x.VotedForId == ps.VotedFor); Loop.Times(count, _ => AddVote()); } - if (CheckRole(ps.TargetPlayerId, CustomRoles.TicketsStealer)) + if (CheckRole(ps.TargetPlayerId, CustomRoles.Stealer)) { - var count = (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == ps.TargetPlayerId) * Options.TicketsPerKill.GetFloat()); + var count = (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == ps.TargetPlayerId) * Options.VotesPerKill.GetFloat()); Loop.Times(count, _ => AddVote()); } @@ -276,7 +276,7 @@ internal static class CheckForEndVotingPatch foreach (KeyValuePair data in votingData.Where(x => x.Key < playerNum && x.Value == max)) { - if (Main.BrakarVoteFor.Contains(data.Key)) + if (Main.TiebreakerVoteFor.Contains(data.Key)) { if (target != byte.MaxValue) { @@ -290,7 +290,7 @@ internal static class CheckForEndVotingPatch if (target != byte.MaxValue) { - Logger.Info("Tiebreaker overrides evicted players", "Brakar Vote"); + Logger.Info("Tiebreaker overrides evicted players", "Tiebreaker Vote"); exiledPlayer = Utils.GetPlayerInfoById(target); tie = false; braked = true; @@ -477,7 +477,7 @@ internal static class CheckForEndVotingPatch } } - if (tiebreaker) name += $" ({Utils.ColorString(Utils.GetRoleColor(CustomRoles.Brakar), GetString("Brakar"))})"; + if (tiebreaker) name += $" ({Utils.ColorString(Utils.GetRoleColor(CustomRoles.Tiebreaker), GetString("Tiebreaker"))})"; if (!decidedWinner) { @@ -596,7 +596,7 @@ internal static class ExtendedMeetingHud { Logger.Info("===The vote counting process begins===", "Vote"); Dictionary dic = []; - Main.BrakarVoteFor = []; + Main.TiebreakerVoteFor = []; Collector.CollectorVoteFor = []; foreach (PlayerVoteArea ps in __instance.playerStates) @@ -614,10 +614,10 @@ internal static class ExtendedMeetingHud if (target.Is(CustomRoles.Zombie) || (target.Is(CustomRoles.Shifter) && !Shifter.CanBeVoted.GetBool())) voteNum = 0; - if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Brakar)) + if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Tiebreaker)) { - if (!Main.BrakarVoteFor.Contains(target.PlayerId)) - Main.BrakarVoteFor.Add(target.PlayerId); + if (!Main.TiebreakerVoteFor.Contains(target.PlayerId)) + Main.TiebreakerVoteFor.Add(target.PlayerId); } Collector.CollectorVotes(target, ps); @@ -630,8 +630,8 @@ internal static class ExtendedMeetingHud if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Glitch) && !Glitch.CanVote.GetBool()) voteNum = 0; if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Shifter) && !Shifter.CanVote.GetBool()) voteNum = 0; if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Vindicator)) voteNum += Options.VindicatorAdditionalVote.GetInt(); - if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.DualPersonality) && Options.DualVotes.GetBool()) voteNum += voteNum; - if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.TicketsStealer)) voteNum += (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == ps.TargetPlayerId) * Options.TicketsPerKill.GetFloat()); + if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Schizophrenic) && Options.DualVotes.GetBool()) voteNum += voteNum; + if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Stealer)) voteNum += (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == ps.TargetPlayerId) * Options.VotesPerKill.GetFloat()); if (CheckForEndVotingPatch.CheckRole(ps.TargetPlayerId, CustomRoles.Pickpocket)) voteNum += (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == ps.TargetPlayerId) * Pickpocket.VotesPerKill.GetFloat()); switch (Main.PlayerStates[ps.TargetPlayerId].Role) @@ -1104,7 +1104,7 @@ internal static class MeetingHudStartPatch sb.Append(Follower.TargetMark(seer, target)); sb.Append(Romantic.TargetMark(seer, target)); sb.Append(Lawyer.LawyerMark(seer, target)); - sb.Append(PlagueDoctor.GetMarkOthers(seer, target)); + sb.Append(Infection.GetMarkOthers(seer, target)); sb.Append(Gaslighter.GetMark(seer, target, true)); pva.NameText.text += sb.ToString(); diff --git a/Patches/OnGameStartedPatch.cs b/Patches/OnGameStartedPatch.cs index d55cc4b9c..6c88b6e30 100644 --- a/Patches/OnGameStartedPatch.cs +++ b/Patches/OnGameStartedPatch.cs @@ -218,7 +218,7 @@ internal static class ChangeRoleSettings Main.MadmateNum = 0; Mayor.MayorUsedButtonCount = []; - Paranoia.ParaUsedButtonCount = []; + Paranoid.ParaUsedButtonCount = []; Mario.MarioVentCount = []; Cleaner.CleanerBodies = []; Virus.InfectedBodies = []; diff --git a/Patches/PlayerControlPatch.cs b/Patches/PlayerControlPatch.cs index e60e8cba2..26df519e8 100644 --- a/Patches/PlayerControlPatch.cs +++ b/Patches/PlayerControlPatch.cs @@ -656,7 +656,7 @@ internal static class MurderPlayerPatch try { - PlagueDoctor.OnAnyMurder(); + Infection.OnAnyMurder(); // Replacement process when the actual killer and killer are different if (Sniper.TryGetSniper(target.PlayerId, ref killer)) Main.PlayerStates[target.PlayerId].deathReason = PlayerState.DeathReason.Sniped; @@ -734,8 +734,8 @@ internal static class MurderPlayerPatch if (Options.CurrentGameMode == CustomGameMode.Speedrun) Speedrun.ResetTimer(killer); - if (killer.Is(CustomRoles.TicketsStealer) && killer.PlayerId != target.PlayerId) - killer.Notify(string.Format(GetString("TicketsStealerGetTicket"), ((Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == killer.PlayerId) + 1) * Options.TicketsPerKill.GetFloat()).ToString("0.0#####"))); + if (killer.Is(CustomRoles.Stealer) && killer.PlayerId != target.PlayerId) + killer.Notify(string.Format(GetString("StealerGetTicket"), ((Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == killer.PlayerId) + 1) * Options.VotesPerKill.GetFloat()).ToString("0.0#####"))); if (killer.Is(CustomRoles.Pickpocket) && killer.PlayerId != target.PlayerId) killer.Notify(string.Format(GetString("PickpocketGetVote"), ((Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == killer.PlayerId) + 1) * Pickpocket.VotesPerKill.GetFloat()).ToString("0.0#####"))); @@ -1106,7 +1106,7 @@ internal static class ReportDeadBodyPatch } } - if (tpc.Is(CustomRoles.Unreportable)) + if (tpc.Is(CustomRoles.Disregarded)) { Notify("TargetDisregarded"); return false; @@ -1327,7 +1327,7 @@ internal static class ReportDeadBodyPatch Grenadier.GrenadierBlinding.Clear(); SecurityGuard.BlockSabo.Clear(); Grenadier.MadGrenadierBlinding.Clear(); - Divinator.DidVote.Clear(); + FortuneTeller.DidVote.Clear(); Oracle.DidVote.Clear(); Imitator.ImitatingRole.SetAllValues(CustomRoles.Imitator); @@ -1829,8 +1829,8 @@ internal static class FixedUpdatePatch case CustomRoles.SuperStar when Options.EveryOneKnowSuperStar.GetBool(): Mark.Append(ColorString(GetRoleColor(CustomRoles.SuperStar), "★")); break; - case CustomRoles.PlagueDoctor: - Mark.Append(PlagueDoctor.GetMarkOthers(seer, target)); + case CustomRoles.Infection: + Mark.Append(Infection.GetMarkOthers(seer, target)); break; } diff --git a/Patches/TaskAssignPatch.cs b/Patches/TaskAssignPatch.cs index df73e1602..d26f18b50 100644 --- a/Patches/TaskAssignPatch.cs +++ b/Patches/TaskAssignPatch.cs @@ -177,7 +177,7 @@ internal static class RpcSetTasksPatch } // GM and Lazy Guy have no tasks - if (pc.Is(CustomRoles.GM) || pc.Is(CustomRoles.Needy) || Options.CurrentGameMode is CustomGameMode.SoloPVP or CustomGameMode.FFA or CustomGameMode.HotPotato or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.Quiz or CustomGameMode.CaptureTheFlag or CustomGameMode.KingOfTheZones or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle) + if (pc.Is(CustomRoles.GM) || pc.Is(CustomRoles.LazyGuy) || Options.CurrentGameMode is CustomGameMode.SoloPVP or CustomGameMode.FFA or CustomGameMode.HotPotato or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush or CustomGameMode.Quiz or CustomGameMode.CaptureTheFlag or CustomGameMode.KingOfTheZones or CustomGameMode.TheMindGame or CustomGameMode.BedWars or CustomGameMode.Deathrace or CustomGameMode.Mingle) { hasCommonTasks = false; numShortTasks = 0; diff --git a/Resources/Lang/en_US.json b/Resources/Lang/en_US.json index dbbdc9e30..4b241b6a1 100644 --- a/Resources/Lang/en_US.json +++ b/Resources/Lang/en_US.json @@ -196,7 +196,7 @@ "Anonymous": "Anonymous", "Miner": "Miner", "KillingMachine": "Killing Machine", - "Escapee": "Escapist", + "Escapist": "Escapist", "Witch": "Witch", "Nemesis": "Nemesis", "Godfather": "Godfather", @@ -243,14 +243,14 @@ "Visionary": "Visionary", "Refugee": "Renegade", "Luckey": "Luckey", - "Needy": "Lazy Guy", + "LazyGuy": "Lazy Guy", "SuperStar": "Super Star", "Demolitionist": "Demolitionist", "TaskManager": "Task Manager", "NiceEraser": "Nice Eraser", "Vigilante": "Vigilante", "Mayor": "Mayor", - "Paranoia": "Paranoid", + "Paranoid": "Paranoid", "Psychic": "Psychic", "Mechanic": "Mechanic", "Sheriff": "Sheriff", @@ -270,7 +270,7 @@ "Grenadier": "Grenadier", "Lighter": "Lighter", "Medic": "Medic", - "Divinator": "Fortune Teller", + "FortuneTeller": "Fortune Teller", "Glitch": "The Glitch", "Judge": "Judge", "Mortician": "Mortician", @@ -357,7 +357,7 @@ "Giant": "Giant", "Torch": "Torch", "Seer": "Seer", - "Brakar": "Tiebreaker", + "Tiebreaker": "Tiebreaker", "Oblivious": "Oblivious", "Bewilder": "Bewilder", "Sunglasses": "Sunglasses", @@ -366,8 +366,8 @@ "Avanger": "Avenger", "Youtuber": "YouTuber", "Egoist": "Egoist", - "TicketsStealer": "Stealer", - "DualPersonality": "Schizophrenic", + "Stealer": "Stealer", + "Schizophrenic": "Schizophrenic", "Mimic": "Mimic", "Guesser": "Guesser", "Necroview": "Necroview", @@ -380,7 +380,7 @@ "Infected": "Infected", "Onbound": "Onbound", "Knighted": "Knighted", - "Unreportable": "Disregarded", + "Disregarded": "Disregarded", "Contagious": "Contagious", "Lucky": "Lucky", "Unlucky": "Unlucky", @@ -416,7 +416,7 @@ "Prefix.Giant": "Giant", "Prefix.Torch": "Torch", "Prefix.Seer": "Seer", - "Prefix.Brakar": "Tiebreaker", + "Prefix.Tiebreaker": "Tiebreaker", "Prefix.Oblivious": "Oblivious", "Prefix.Bewilder": "Bewilder", "Prefix.Workhorse": "Workhorse", @@ -424,8 +424,8 @@ "Prefix.Avanger": "Avenger", "Prefix.Youtuber": "YouTuber", "Prefix.Egoist": "Egoist", - "Prefix.TicketsStealer": "Stealer", - "Prefix.DualPersonality": "Schizophrenic", + "Prefix.Stealer": "Stealer", + "Prefix.Schizophrenic": "Schizophrenic", "Prefix.Mimic": "Mimic", "Prefix.Bait": "Bait", "Prefix.Trapper": "Beartrap", @@ -437,7 +437,7 @@ "Prefix.Magnet": "Magnet", "Prefix.Onbound": "Onbound", "Prefix.Knighted": "Knighted", - "Prefix.Unreportable": "Disregarded", + "Prefix.Disregarded": "Disregarded", "Prefix.Lucky": "Lucky", "Prefix.DoubleShot": "Double Shot", "Prefix.Rascal": "Rascal", @@ -475,7 +475,7 @@ "AnonymousInfo": "Force a player to report a body", "MinerInfo": "Warp to your last used vent by shifting", "KillingMachineInfo": "You can ONLY kill, but low cooldown and bypass shields", - "EscapeeInfo": "Shift to mark places and warp back to them", + "EscapistInfo": "Shift to mark places and warp back to them", "WitchInfo": "Spell crewmates to kill them in meetings", "NemesisInfo": "Revenge After Death", "GodfatherInfo": "Recruit players by voting them", @@ -523,13 +523,13 @@ "RefugeeInfo": "Help the Impostors kill off the crew", "UnderdogInfo": "Start killing on a low player count", "LuckeyInfo": "Dodge attacks", - "NeedyInfo": "You're too lazy", + "LazyGuyInfo": "You're too lazy", "SuperStarInfo": "Everyone knows you", "DemolitionistInfo": "Your killer has a few seconds to vent or they die", "TaskManagerInfo": "See the total tasks completed in real-time", "NiceEraserInfo": "Erase the roles of evil players", "MayorInfo": "Your vote counts multiple times", - "ParanoiaInfo": "You have a portable meeting button", + "ParanoidInfo": "You have a portable meeting button", "PsychicInfo": "One of the red names is evil", "MechanicInfo": "Vent and fix sabotages quickly", "SheriffInfo": "Kill evil players", @@ -551,7 +551,7 @@ "GrenadierInfo": "Reduce Impostors' vision by venting", "LighterInfo": "Catch killers with your enhanced vision", "MedicInfo": "Cast a shield onto a player", - "DivinatorInfo": "Get clues to people's roles", + "FortuneTellerInfo": "Get clues to people's roles", "GlitchInfo": "Hack and kill everyone", "JudgeInfo": "Silence in the courtroom!", "MorticianInfo": "Report a body to know who interacted with them last", @@ -629,7 +629,7 @@ "TruantInfo": "You freeze after meetings for some time", "TorchInfo": "You have a higher vision!", "SeerInfo": "You see when players die", - "BrakarInfo": "Break tied votes", + "TiebreakerInfo": "Break tied votes", "ObliviousInfo": "You can't report bodies", "BewilderInfo": "Your killer gets your vision", "WorkhorseInfo": "Be the first to complete all tasks and get more", @@ -638,8 +638,8 @@ "YoutuberInfo": "Get killed first to win", "HasteInfo": "Your kill cooldown progresses while in vents", "EgoistInfo": "Win on your own", - "TicketsStealerInfo": "Gain votes with kills", - "DualPersonalityInfo": "You count as two players", + "StealerInfo": "Gain votes with kills", + "SchizophrenicInfo": "You count as two players", "MimicInfo": "You see dead players' roles", "GuesserInfo": "Guess roles of players in meetings to kill", "NecroviewInfo": "See the team of the dead", @@ -660,7 +660,7 @@ "StainedInfo": "Your killer gets a violet name for 3s", "ClumsyInfo": "You trip while walking", "MischievousInfo": "You can sabotage", - "UnreportableInfo": "Your body can't be reported", + "DisregardedInfo": "Your body can't be reported", "LuckyInfo": "Dodge attackers", "DoubleShotInfo": "You have an extra life when guessing", "RascalInfo": "You appear evil in some cases", @@ -705,7 +705,7 @@ "AnonymousInfoLong": "(Impostors):\\nAnonymous can use Shapeshift to hack into a target. The hacked target will report the body killed by Anonymous or its own if there is none. Hacking ignores whether a body can be reported. Hacking Lazy Guy is a waste of time.", "MinerInfoLong": "(Impostors):\\nMiner can vanish/pet to teleport back to the last vent they were in.", "KillingMachineInfoLong": "(Impostors):\\nThe Killing Machine has a very short kill cooldown, but cannot vent, has lower vision, cannot sabotage, cannot report, and cannot call emergency meetings.", - "EscapeeInfoLong": "(Impostors):\\nEscapist can mark a location by vanishing/petting, and they will be teleported to the marked location when they vanish/pet again (not when unshifting).", + "EscapistInfoLong": "(Impostors):\\nEscapist can mark a location by vanishing/petting, and they will be teleported to the marked location when they vanish/pet again (not when unshifting).", "WitchInfoLong": "(Impostors):\\nThe Witch can kill players directly or cast spells by tapping the kill button once or twice, respectively. Spelled players will have a 「†」 mark next to their name in the next meeting. If the Witch survives until the meeting's end, all spelled players die.", "NemesisInfoLong": "(Impostors):\\nNemesis can't kill while there are other Impostors alive in the game, but can use /rv [player id] after death to kill the specified player.", "GodfatherInfoLong": "(Impostors):\\nAs a Godfather, you vote for someone to make them your target. In the next round if someone kills the target, the killer will turn into a refugee", @@ -753,13 +753,13 @@ "UnderdogInfoLong": "(Add-ons):\\nAs the Underdog, your kill cooldown is longer until there's a certain amount of players alive. After that, your cooldown is shorter.", "ConsigliereInfoLong": "(Impostors):\\nAs the Consigliere, you can reveal the roles of other players using your kill button.\\n\\nSingle click: Reveal role\\nDouble click: Kill\\n\\nIf you run out of reveal uses, your kill button functions normally.", "LuckeyInfoLong": "(Crewmates):\\nThe Luckey has a probability of evading a player's kill attempt, set by the host. The killer sees a shield animation, but Luckey is unaware.", - "NeedyInfoLong": "(Crewmates):\\nLazy Guy has one task and is immune to Impostor abilities. No add-ons.", + "LazyGuyInfoLong": "(Crewmates):\\nLazy Guy has one task and is immune to Impostor abilities. No add-ons.", "SuperStarInfoLong": "(Crewmates):\\nThe Super Star has a star logo next to their name and can only be killed when the Murderer is alone with them. Guessers cannot guess them.", "DemolitionistInfoLong": "(Crewmates):\\nWhen you get killed by someone, that person has 5 seconds to enter a vent, or else they commit suicide. The killer must be in the vent when the 5 seconds expire and not jump out sooner to survive.", "TaskManagerInfoLong": "(Crewmates):\\nYou see the total number of tasks completed (by everyone all together) next to your role name, which updates in real-time.", "NiceEraserInfoLong": "(Crewmates):\\nYou can erase the role of the person you vote for. Their role will be reset to the basis of that role after this meeting. This has a limited number of uses.", "MayorInfoLong": "(Crewmates):\\nMayor's vote counts as multiple votes and may have the ability to trigger an emergency meeting.", - "ParanoiaInfoLong": "(Crewmates):\\nParanoid can call a meeting by venting/petting. The report animation will show a dead body with Paranoid's color, but the Paranoid is not dead.", + "ParanoidInfoLong": "(Crewmates):\\nParanoid can call a meeting by venting/petting. The report animation will show a dead body with Paranoid's color, but the Paranoid is not dead.", "PsychicInfoLong": "(Crewmates):\\nThe Psychic sees red highlighted names during the meeting, indicating at least one evil player. All Neutrals and Killing Crewmates are displayed as red names when the Psychic becomes a Madmate.", "MechanicInfoLong": "(Crewmates):\\nMechanic can use vent anytime. Can fix Reactors, O2, and Comms using one side. Lights fixed with one switch. Opening one door opens all doors.", "SheriffInfoLong": "(Crewmates):\\nSheriff has no tasks and can kill the Impostor (maybe also neutrals). If the Sheriff tries to kill a crewmate, they will suicide. They may be able to kill anyone as a madmate.", @@ -781,7 +781,7 @@ "GrenadierInfoLong": "(Crewmates):\\nGrenadiers can use a vent/pet to throw a flashbang that impairs Impostors' vision. The flashbang may also affect neutrals, depending on the host's settings. The Grenadier will see a shield animation on their body after the flashbang takes effect. Flashbangs only work on Crewmates when the Grenadier becomes a Madmate.", "LighterInfoLong": "(Crewmate):\\nAs the Lighter, you can vent/pet to increase your vision temporarily. You have increased vision both when the lights are not out and when the lights are out.\\n\\nUse this power to catch sneaky killers!", "MedicInfoLong": "(Crewmates):\\nThe Medic can place a shield on a player by pressing the Kill button. After placing the shield, Medic can do tasks.\\n\\nDepending on settings:\\n- When the Medic dies, the shield will be removed.\\n- The Medic can see if someone is trying to break the target's shield.\\n- The Medic or the target themself see whether shield is placed or not (shown as a green circle 「●」 next to the name)\\n- The shield is removed after someone tries to kill the protected player.", - "DivinatorInfoLong": "(Crewmates):\\nThe Fortune Teller can get a clue to a player's role by voting for them in a meeting. Once all tasks are complete, they get the exact role instead of a clue.", + "FortuneTellerInfoLong": "(Crewmates):\\nThe Fortune Teller can get a clue to a player's role by voting for them in a meeting. Once all tasks are complete, they get the exact role instead of a clue.", "GlitchInfoLong": "(Neutrals):\\nAs the Glitch, your goal is to kill everyone on the ship. You can hack players to prevent them from killing, venting, sabotaging, and reporting dead bodies for a limited time. You can also disguise as a random player for a limited time. Additionally, your cooldowns go down while in vents.", "JudgeInfoLong": "(Crewmates):\\nThe Judge can judge a player during the meeting. If the target is evil, it's killed; if it's wrong, the Judge dies. Use the /tl [player id] command to judge and /id to view player IDs. Judges can judge all players when they're Madmate.", "MorticianInfoLong": "(Crewmates):\\nWhen the Mortician reports a body, they will know the last player the victim had contact with. Note: Mortician won't be Oblivious or Seer.", @@ -864,7 +864,7 @@ "SonarInfoLong": "(Add-ons):\\nYou see an arrow pointing to the nearest player.", "TorchInfoLong": "(Add-ons):\\nOnly Crewmates will get Torch, who have increased vision and may not be affected by Lights Sabotage.", "SeerInfoLong": "(Add-ons):\\nWhen a player dies, the Seer sees a red flash (with an alarm sound like sabotage).", - "BrakarInfoLong": "(Add-ons):\\nIn case of a tie, the target voted by the Tiebreaker has priority. However, if multiple Tiebreakers choose different targets simultaneously, their skills will not take effect.", + "TiebreakerInfoLong": "(Add-ons):\\nIn case of a tie, the target voted by the Tiebreaker has priority. However, if multiple Tiebreakers choose different targets simultaneously, their skills will not take effect.", "ObliviousInfoLong": "(Add-ons):\\nForensic and Cleaners won't be Oblivious. Oblivious cannot report dead bodies. Note: Bait killed by Oblivious will still be reported automatically, and Oblivious can still be used as a scapegoat for Anonymous.", "BewilderInfoLong": "(Add-ons):\\nBewilder's vision changes killer's vision on death.", "TruantInfoLong": "(Add-ons):\\nAfter each meeting, you freeze in place for a set amount of seconds.", @@ -873,8 +873,8 @@ "AvangerInfoLong": "(Add-ons):\\nHost can allow Impostor to become Avenger. If Avenger dies, they'll revenge a random player.", "YoutuberInfoLong": "(Add-ons):\\nIf the YouTuber is the first player killed, they win. If not, they follow the Crewmate to win. Note: Indirect killing methods don't trigger the YouTuber's skills.", "EgoistInfoLong": "(Add-ons):\\nOnly impostors can get Egoist. If the impostor team wins while there's at least one Impostor alive who isn't an Egoist, the Egoist loses.\\nIn order for the Egoist to win, they must eject all other impostors and stay alive.", - "TicketsStealerInfoLong": "(Add-ons):\\nStealers gets additional votes every time they kill someone.", - "DualPersonalityInfoLong": "(Add-ons):\\nNeutrals and Madmates can't become Schizophrenic. The Schizophrenic will be considered as two players in the game. Having at least one player as Schizophrenic won't end the game if there are only them and the Impostor left.", + "StealerInfoLong": "(Add-ons):\\nStealers gets additional votes every time they kill someone.", + "SchizophrenicInfoLong": "(Add-ons):\\nNeutrals and Madmates can't become Schizophrenic. The Schizophrenic will be considered as two players in the game. Having at least one player as Schizophrenic won't end the game if there are only them and the Impostor left.", "MimicInfoLong": "(Add-ons):\\nMimic is an Impostor role. When a Mimic dies, other Impostors receive a message during meetings that reveals the roles killed by the Mimic.", "GuesserInfoLong": "(Add-ons):\\nAs a guesser, guess the roles of players in meetings to kill them. Guessing wrong kills you instead.\\n\\nThe guessing command is: /bt [player id] [role]\\nYou can see the player's id before the player's name, or use the /id command to view the id of all players.", "NecroviewInfoLong": "(Add-ons):\\nThe Necroview can see the teams of dead players. The following info will be displayed on the dead player's name while in a meeting:\\n- The Red name indicates the Impostors.\\n- The Cyan name indicates the Crewmates.\\n- The Orange name indicates the Neutrals.", @@ -885,7 +885,7 @@ "OnboundInfoLong": "(Add-ons):\\nWith the Onbound add-on, you cannot be guessed in meetings.", "KnightedInfoLong": "(Add-ons):\\nWhen a Monarch knights someone, they get an extra vote.", "AsthmaticInfoLong": "(Add-ons):\\nYou're playing Stop And Go. You always have a symbol below your name with a timer that is red or green. You cannot move when the symbol/timer is red. The timer indicates when the color will change.", - "UnreportableInfoLong": "(Add-ons):\\nWith the Disregarded add-on, your corpse cannot be reported.", + "DisregardedInfoLong": "(Add-ons):\\nWith the Disregarded add-on, your corpse cannot be reported.", "HasteInfoLong": "(Add-ons):\\nWith the Haste add-on, your kill cooldown continues to go down at all times.", "ContagiousInfoLong": "(Betrayal Add-ons):\\nWhen the Virus infects you, you become contagious. Contagious players are on the Virus team.\\n\\nWhether or not you die after a meeting depends on the settings for the Virus.", "LuckyInfoLong": "(Add-ons):\\nWith the Lucky add-on, there is a probability for you to evade the kill; the specific probability is set by the host. When the evasion takes effect, the killer will see the shield animation, but you will not know anything.", @@ -1549,8 +1549,8 @@ "ForensicCanknowKillTime": "Can find how long ago the player died", "ForensicCanknowColorType": "Can find the color type of the killer", "ForensicCanknowColorTypeMinBodyAge": "Minimum body age to find color type", - "ParanoiaVentCooldown": "Vent Cooldown", - "ParanoiaNumOfUseButton": "Max number of portable buttons", + "ParanoidVentCooldown": "Vent Cooldown", + "ParanoidNumOfUseButton": "Max number of portable buttons", "EveryOneKnowSuperStar": "Everyone knows the Super Star", "ImpKnowSuperStarDead": "Impostors know when the Super Star dies", "NeutralKnowSuperStarDead": "Neutrals know when the Super Star dies", @@ -1638,7 +1638,6 @@ "LighterSkillDuration": "Light Duration", "LighterVisionNormal": "Increased Vision", "LighterVisionOnLightsOut": "Increased Vision During Lights Out", - "TicketsPerKill": "Votes Increase Amount Per Kill", "GangsterRecruitCooldown": "Recruit cooldown", "GangsterRecruitLimit": "Recruit limit", "RevolutionistDrawTime": "Tag Duration", @@ -1665,7 +1664,7 @@ "MedicShieldBreaksOnKillAttempt": "Medic Shield Breaks on Kill Attempt", "MedicShieldBreakIsVisible": "Shield Break is Visible", "MedicAmountOfShields": "Number of Shields Per Game", - "DivinatorSkillLimit": "(Initial) Max number of ability uses", + "FortuneTellerSkillLimit": "(Initial) Max number of ability uses", "MadmateSpawnMode": "Madmate spawning mode", "MadmateSpawnMode.Assign": "Assign", "MadmateSpawnMode.FirstKill": "First Kill", @@ -1798,7 +1797,7 @@ "FollowerBetCooldownIncrese": "Increase Cooldown per 1 follow by", "FollowerKnowTargetRole": "Follower knows their target's role", "FollowerBetTargetKnowFollower": "Follower target knows who the Follower is", - "DivinatorHideVote": "Hide Fortune Teller's Votes", + "FortuneTellerHideVote": "Hide Fortune Teller's Votes", "ShowSpecificRole": "Know specific roles on Task Completion", "CultistCharmCooldown": "Charm Cooldown", "CultistCharmCooldownIncrese": "Increases Charm Cooldown For Each Charm", @@ -1877,7 +1876,7 @@ "TiredReachedMaxKillsPerRound": "You're too tired to kill more this round", "SomeSortOfProtection": "This player is shielded due to a role-specific action", "HexButtonText": "Hex", - "EscapeeAbilityButtonText": "TP", + "EscapistAbilityButtonText": "TP", "ObliviousBaitImmune": "Immune to Bait", "MediumshiperContactLimit": "(Initial) Max number of contacts (ability uses)", "MediumshiperOnlyReceiveMsgFromCrew": "Receive messages only from Crewmates (including Madmates and Charmed Players)", @@ -2195,10 +2194,10 @@ "TrialHelp": "Command: /tl [player ID]\\nYou can see the players' IDs before the players' names.\\nOr use /id to view the list of all player IDs.", "TrialNull": "Please choose a living player for the trial", "MimicDeadMsg": "Mimic's hint: ", - "DivinatorCheck": "According to your fortune...", - "DivinatorCheckLimit": "Reminder: You have {0} fortunes left", - "DivinatorCheckSelfMsg": "Wow, you found yourself... All you see is a reflection.", - "DivinatorCheckReachLimit": "You've run out of fortunes.", + "FortuneTellerCheck": "According to your fortune...", + "FortuneTellerCheckLimit": "Reminder: You have {0} fortunes left", + "FortuneTellerCheckSelfMsg": "Wow, you found yourself... All you see is a reflection.", + "FortuneTellerCheckReachLimit": "You've run out of fortunes.", "EraserEraseNotice": "You erased {0}.\\nTheir role will be deactivated after the meeting.", "EraserEraseNeutralNotice": "Your target is Neutral and can't be erased!", "TargetErasedInRound": "Target's role will be erased after next meeting", @@ -2237,7 +2236,7 @@ "LighterSkillInUse": "Ability in use", "LighterSkillStop": "Ability expired", "MediumshiperKnowPlayerDead": "Someone died somewhere", - "TicketsStealerGetTicket": "You've got +{0} votes", + "StealerGetTicket": "You've got +{0} votes", "BecomeMadmateCuzMadmateMode": "You became a Madmate because you died", "ExecutionerRoleChanged": "Your target died", "SpeedBoosterTaskDone": "Your speed is {0} now", @@ -3055,7 +3054,7 @@ "MessageFromGurge44": "★[ Gurge44 ]★", "MessageFromSponsor": "★[ Sponsor ]★", "MessageFromDev": "★[ Developer ]★", - "DivinatorCheckMsgTitle": "★[ Crystal Ball ]★", + "FortuneTellerCheckMsgTitle": "★[ Crystal Ball ]★", "MimicMsgTitle": "★[ Mimic ]★", "EraserEraseMsgTitle": "★[ Eraser ]★", "TrialKillTitle": "[★ Court ★]", @@ -3292,7 +3291,7 @@ "GrenadierVentButtonText": "Flash", "LighterVentButtonText": "Light", "MayorVentButtonText": "Button", - "ParanoiaVentButtonText": "Panic", + "ParanoidVentButtonText": "Panic", "SheriffKillButtonText": "Shoot", "ArsonistVentButtonText": "Ignite", "RevolutionistVentButtonText": "Revolution", @@ -3418,49 +3417,49 @@ "GameOverReason.ImpostorByVote": "The Crewmates were ejected", "GameOverReason.ImpostorDisconnect": "Impostors disconnected", "GameOverReason.CrewmatesByTask": "The Crewmates completed all tasks", - "DivinatorCheck.HideMsg": "Looks like {0} hides secrets.", - "DivinatorCheck.Honest": "Looks like {0} is being honest.", - "DivinatorCheck.Impulse": "Looks like {0} is suppressing some kind of impulse.", - "DivinatorCheck.Weirdo": "Looks like {0} is mixed in crowd.", - "DivinatorCheck.Blockbuster": "Looks like {0} got big desires to change something.", - "DivinatorCheck.Strong": "Looks like {0} has a strong power but is dim in society.", - "DivinatorCheck.Incomprehensible": "Looks like {0} is being misunderstood.", - "DivinatorCheck.Enthusiasm": "Looks like {0} speaks with everyone very enthusiastic.", - "DivinatorCheck.Disturbed": "Looks like {0} is disturbed by something.", - "DivinatorCheck.None": "Looks like {0} has just an ordinary life.", - "DivinatorCheck.Glitch": "TV2gPZ4wUJWYr{0}05gA6T5PKzBG17", - "DivinatorCheck.Love": "♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥", - "DivinatorCheck.TaskDone": "{0}Role -[{1}]", - "DevAndSpnTitle": "EHR family", - "DivinatorCheck.Basic": "{0} seems to not have anything worth noting about them.", - "DivinatorCheck.Disguise": "{0} seems to be focused on concealing their identity.", - "DivinatorCheck.Protect": "{0} seems to be focused on protection in some way.", - "DivinatorCheck.Meeting": "{0} seems to be focused on using their ability in meetings.", - "DivinatorCheck.Vote": "{0} seems to be focused on voting power in some way.", - "DivinatorCheck.Task": "{0} seems to be focused on their tasks.", - "DivinatorCheck.Body": "{0} seems to have an unusual obsession with dead bodies.", - "DivinatorCheck.Vent": "{0} seems to have an obsession with using vents.", - "DivinatorCheck.Target": "{0} seems to have their eye on someone specific.", - "DivinatorCheck.IndirectKill": "{0} seems to kill in an abnormal way.", - "DivinatorCheck.StackKill": "{0} seems to kill more than 1 player at once.", - "DivinatorCheck.Kill": "{0} seems to like killing in plain sight.", - "DivinatorCheck.Careless": "{0} seems to not care about what happens.", - "DivinatorCheck.Chaos": "{0} seems to like chaos.", - "DivinatorCheck.Recruit": "{0} seems to enjoy the idea of growing a team.", - "DivinatorCheck.Power": "{0} seems to be quite powerful in some way.", - "DivinatorCheck.Death": "{0} seems to have their goal set towards their death.", - "DivinatorCheck.Reveal": "{0} seems to like revealing the role or team of someone.", - "DivinatorCheck.Special": "{0} seems to have something very special about them.", - "DivinatorCheck.Reflect": "{0} seems to reflect something back to its target.", - "DivinatorCheck.Sabotage": "{0} seems to be focused on sabotages.", - "DivinatorCheck.Specific": "{0} seems to be helping or sabotaging someone specific.", - "DivinatorCheck.ChangingCD": "{0} seems to have their ability cooldown changing based on certain conditions.", - "DivinatorCheck.InRush": "{0} seems to be in a rush do achieve something.", - "DivinatorCheck.UniqueInfo": "{0} seems to know unique information.", - "DivinatorCheck.SlowGame": "{0} seems to like it if the game is going slow.", - "DivinatorCheck.HelpFromDead": "{0} seems to be getting help from the dead.", - "DivinatorCheck.UnusualGoal": "{0} seems to have an unusual win condition.", - "DivinatorCheckResult": "{0} is one of the following roles:\\n{1}", + "FortuneTellerCheck.HideMsg": "Looks like {0} hides secrets.", + "FortuneTellerCheck.Honest": "Looks like {0} is being honest.", + "FortuneTellerCheck.Impulse": "Looks like {0} is suppressing some kind of impulse.", + "FortuneTellerCheck.Weirdo": "Looks like {0} is mixed in crowd.", + "FortuneTellerCheck.Blockbuster": "Looks like {0} got big desires to change something.", + "FortuneTellerCheck.Strong": "Looks like {0} has a strong power but is dim in society.", + "FortuneTellerCheck.Incomprehensible": "Looks like {0} is being misunderstood.", + "FortuneTellerCheck.Enthusiasm": "Looks like {0} speaks with everyone very enthusiastic.", + "FortuneTellerCheck.Disturbed": "Looks like {0} is disturbed by something.", + "FortuneTellerCheck.None": "Looks like {0} has just an ordinary life.", + "FortuneTellerCheck.Glitch": "TV2gPZ4wUJWYr{0}05gA6T5PKzBG17", + "FortuneTellerCheck.Love": "♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥", + "FortuneTellerCheck.TaskDone": "{0}Role -[{1}]", + "FortuneTellerTitle": "EHR family", + "FortuneTellerCheck.Basic": "{0} seems to not have anything worth noting about them.", + "FortuneTellerCheck.Disguise": "{0} seems to be focused on concealing their identity.", + "FortuneTellerCheck.Protect": "{0} seems to be focused on protection in some way.", + "FortuneTellerCheck.Meeting": "{0} seems to be focused on using their ability in meetings.", + "FortuneTellerCheck.Vote": "{0} seems to be focused on voting power in some way.", + "FortuneTellerCheck.Task": "{0} seems to be focused on their tasks.", + "FortuneTellerCheck.Body": "{0} seems to have an unusual obsession with dead bodies.", + "FortuneTellerCheck.Vent": "{0} seems to have an obsession with using vents.", + "FortuneTellerCheck.Target": "{0} seems to have their eye on someone specific.", + "FortuneTellerCheck.IndirectKill": "{0} seems to kill in an abnormal way.", + "FortuneTellerCheck.StackKill": "{0} seems to kill more than 1 player at once.", + "FortuneTellerCheck.Kill": "{0} seems to like killing in plain sight.", + "FortuneTellerCheck.Careless": "{0} seems to not care about what happens.", + "FortuneTellerCheck.Chaos": "{0} seems to like chaos.", + "FortuneTellerCheck.Recruit": "{0} seems to enjoy the idea of growing a team.", + "FortuneTellerCheck.Power": "{0} seems to be quite powerful in some way.", + "FortuneTellerCheck.Death": "{0} seems to have their goal set towards their death.", + "FortuneTellerCheck.Reveal": "{0} seems to like revealing the role or team of someone.", + "FortuneTellerCheck.Special": "{0} seems to have something very special about them.", + "FortuneTellerCheck.Reflect": "{0} seems to reflect something back to its target.", + "FortuneTellerCheck.Sabotage": "{0} seems to be focused on sabotages.", + "FortuneTellerCheck.Specific": "{0} seems to be helping or sabotaging someone specific.", + "FortuneTellerCheck.ChangingCD": "{0} seems to have their ability cooldown changing based on certain conditions.", + "FortuneTellerCheck.InRush": "{0} seems to be in a rush do achieve something.", + "FortuneTellerCheck.UniqueInfo": "{0} seems to know unique information.", + "FortuneTellerCheck.SlowGame": "{0} seems to like it if the game is going slow.", + "FortuneTellerCheck.HelpFromDead": "{0} seems to be getting help from the dead.", + "FortuneTellerCheck.UnusualGoal": "{0} seems to have an unusual win condition.", + "FortuneTellerCheckResult": "{0} is one of the following roles:\\n{1}", "SunnyboyChance": "Sunnyboy Chance", "BardChance": "Bard Chance", "NukerChance": "Nuker Chance", @@ -4167,16 +4166,16 @@ "ZombieInitialSpeed": "Initial Speed", "ZombieMinimumSpeed": "Minimum Speed", "GuesserSuicides": "Guessers Suicide When Trying to Guess Players With <#BAAAE9>Onbound", - "PlagueDoctor": "Infection", - "PlagueDoctorInfo": "Spread the infection!", - "PlagueDoctorInfoLong": "(Neutrals) (Plague Doctor from TOH):\\nThe Plague Doctor's goal is to infect every living player. They start by choosing one player to infect, after which anyone who spends a set amount of time in range of the infected player becomes infected themselves. Infection progress is cumulative, and does not reset with distance or after meetings.", - "PlagueDoctorInfectLimit": "Infect Limit", - "PlagueDoctorInfectWhenKilled": "Infect Killer When Killed", - "PlagueDoctorInfectTime": "Infect Time", - "PlagueDoctorInfectDistance": "Infect Distance", - "PlagueDoctorInfectInactiveTime": "Meeting Infection Onset Delay", - "PlagueDoctorCanInfectSelf": "Can Infect Self", - "PlagueDoctorCanInfectVent": "Can Infect While In Vent", + "Infection": "Infection", + "InfectionInfo": "Spread the infection!", + "InfectionInfoLong": "(Neutrals) (Plague Doctor from TOH):\\nThe Plague Doctor's goal is to infect every living player. They start by choosing one player to infect, after which anyone who spends a set amount of time in range of the infected player becomes infected themselves. Infection progress is cumulative, and does not reset with distance or after meetings.", + "InfectionInfectLimit": "Infect Limit", + "InfectionInfectWhenKilled": "Infect Killer When Killed", + "InfectionInfectTime": "Infect Time", + "InfectionInfectDistance": "Infect Distance", + "InfectionInfectInactiveTime": "Meeting Infection Onset Delay", + "InfectionCanInfectSelf": "Can Infect Self", + "InfectionCanInfectVent": "Can Infect While In Vent", "LovingCrewmate": "Lover", "LovingCrewmateInfo": "Stay alive and win together!", "LovingCrewmateInfoLong": "(Crewmates):\\nAs the Lover, your goal is to stay alive until the end of the game and help your lover win. If your lover dies, you will die as well.", @@ -10123,7 +10122,7 @@ "WinnerRoleText.Magician": "Magician Wins!", "WinnerRoleText.Reckless": "Reckless Wins!", "WinnerRoleText.WeaponMaster": "Weapon Master Wins!", - "WinnerRoleText.PlagueDoctor": "Infection Wins!", + "WinnerRoleText.Infection": "Infection Wins!", "WinnerRoleText.Enderman": "Enderman Wins!", "WinnerRoleText.Mycologist": "Mycologist Wins!", "WinnerRoleText.Bubble": "Bubble Wins!", diff --git a/Roles/AddOns/Common/Unreportable.cs b/Roles/AddOns/Common/Disregarded.cs similarity index 53% rename from Roles/AddOns/Common/Unreportable.cs rename to Roles/AddOns/Common/Disregarded.cs index c587692f0..ad2cf7b01 100644 --- a/Roles/AddOns/Common/Unreportable.cs +++ b/Roles/AddOns/Common/Disregarded.cs @@ -2,12 +2,12 @@ namespace EHR.AddOns.Common; -internal class Unreportable : IAddon +internal class Disregarded : IAddon { public AddonTypes Type => AddonTypes.Harmful; public void SetupCustomOption() { - SetupAdtRoleOptions(15300, CustomRoles.Unreportable, canSetNum: true, teamSpawnOptions: true); + SetupAdtRoleOptions(15300, CustomRoles.Disregarded, canSetNum: true, teamSpawnOptions: true); } } \ No newline at end of file diff --git a/Roles/AddOns/Common/DualPersonality.cs b/Roles/AddOns/Common/Schizophrenic.cs similarity index 52% rename from Roles/AddOns/Common/DualPersonality.cs rename to Roles/AddOns/Common/Schizophrenic.cs index 5af321361..c78fcb07f 100644 --- a/Roles/AddOns/Common/DualPersonality.cs +++ b/Roles/AddOns/Common/Schizophrenic.cs @@ -2,15 +2,15 @@ namespace EHR.AddOns.Common; -internal class DualPersonality : IAddon +internal class Schizophrenic : IAddon { public AddonTypes Type => AddonTypes.Mixed; public void SetupCustomOption() { - SetupAdtRoleOptions(14700, CustomRoles.DualPersonality, canSetNum: true, teamSpawnOptions: true); + SetupAdtRoleOptions(14700, CustomRoles.Schizophrenic, canSetNum: true, teamSpawnOptions: true); DualVotes = new BooleanOptionItem(14712, "DualVotes", true, TabGroup.Addons) - .SetParent(CustomRoleSpawnChances[CustomRoles.DualPersonality]); + .SetParent(CustomRoleSpawnChances[CustomRoles.Schizophrenic]); } } \ No newline at end of file diff --git a/Roles/AddOns/Common/Brakar.cs b/Roles/AddOns/Common/Tiebreaker.cs similarity index 54% rename from Roles/AddOns/Common/Brakar.cs rename to Roles/AddOns/Common/Tiebreaker.cs index a6c4d22ed..d03108df8 100644 --- a/Roles/AddOns/Common/Brakar.cs +++ b/Roles/AddOns/Common/Tiebreaker.cs @@ -2,12 +2,12 @@ namespace EHR.AddOns.Common; -internal class Brakar : IAddon +internal class Tiebreaker : IAddon { public AddonTypes Type => AddonTypes.Mixed; public void SetupCustomOption() { - SetupAdtRoleOptions(14900, CustomRoles.Brakar, canSetNum: true, teamSpawnOptions: true); + SetupAdtRoleOptions(14900, CustomRoles.Tiebreaker, canSetNum: true, teamSpawnOptions: true); } } \ No newline at end of file diff --git a/Roles/AddOns/Crewmate/Workhorse.cs b/Roles/AddOns/Crewmate/Workhorse.cs index a893d282f..525904bd0 100644 --- a/Roles/AddOns/Crewmate/Workhorse.cs +++ b/Roles/AddOns/Crewmate/Workhorse.cs @@ -67,7 +67,7 @@ public class Workhorse : IAddon private static bool IsAssignTarget(PlayerControl pc) { if (!pc.IsAlive() || IsThisRole(pc.PlayerId)) return false; - if (pc.Is(CustomRoles.Needy) || pc.Is(CustomRoles.Lazy) || pc.Is(CustomRoles.Bloodlust)) return false; + if (pc.Is(CustomRoles.LazyGuy) || pc.Is(CustomRoles.Lazy) || pc.Is(CustomRoles.Bloodlust)) return false; if (pc.GetCustomRole().GetVNRole(true) is CustomRoles.Impostor or CustomRoles.ImpostorEHR or CustomRoles.Shapeshifter or CustomRoles.ShapeshifterEHR or CustomRoles.Phantom or CustomRoles.PhantomEHR or CustomRoles.Viper or CustomRoles.ViperEHR) return false; TaskState taskState = pc.GetTaskState(); diff --git a/Roles/AddOns/Impostor/Stealer.cs b/Roles/AddOns/Impostor/Stealer.cs new file mode 100644 index 000000000..b9a2a86da --- /dev/null +++ b/Roles/AddOns/Impostor/Stealer.cs @@ -0,0 +1,14 @@ +namespace EHR.AddOns.Impostor; + +internal class Stealer : IAddon +{ + public AddonTypes Type => AddonTypes.ImpOnly; + + public void SetupCustomOption() + { + Options.SetupAdtRoleOptions(16100, CustomRoles.Stealer, canSetNum: true, tab: TabGroup.Addons); + + Options.VotesPerKill = new FloatOptionItem(16110, "VotesPerKill", new(0.1f, 90f, 0.1f), 0.5f, TabGroup.Addons) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Stealer]); + } +} \ No newline at end of file diff --git a/Roles/AddOns/Impostor/TicketsStealer.cs b/Roles/AddOns/Impostor/TicketsStealer.cs deleted file mode 100644 index b32b7e054..000000000 --- a/Roles/AddOns/Impostor/TicketsStealer.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace EHR.AddOns.Impostor; - -internal class TicketsStealer : IAddon -{ - public AddonTypes Type => AddonTypes.ImpOnly; - - public void SetupCustomOption() - { - Options.SetupAdtRoleOptions(16100, CustomRoles.TicketsStealer, canSetNum: true, tab: TabGroup.Addons); - - Options.TicketsPerKill = new FloatOptionItem(16110, "TicketsPerKill", new(0.1f, 90f, 0.1f), 0.5f, TabGroup.Addons) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.TicketsStealer]); - } -} \ No newline at end of file diff --git a/Roles/Crewmate/Altruist.cs b/Roles/Crewmate/Altruist.cs index a0d27976c..02b3920c1 100644 --- a/Roles/Crewmate/Altruist.cs +++ b/Roles/Crewmate/Altruist.cs @@ -68,7 +68,7 @@ public class Altruist : RoleBase public override bool CheckReportDeadBody(PlayerControl reporter, NetworkedPlayerInfo target, PlayerControl killer) { - if (!RevivingMode || target.Disconnected || target.Object.IsAlive() || target.Object.Is(CustomRoles.Unreportable)) return true; + if (!RevivingMode || target.Disconnected || target.Object.IsAlive() || target.Object.Is(CustomRoles.Disregarded)) return true; PlayerState state = Main.PlayerStates[reporter.PlayerId]; state.deathReason = PlayerState.DeathReason.Sacrifice; diff --git a/Roles/Crewmate/CopyCat.cs b/Roles/Crewmate/CopyCat.cs index 33ca9f4db..46dd7ec9b 100644 --- a/Roles/Crewmate/CopyCat.cs +++ b/Roles/Crewmate/CopyCat.cs @@ -117,7 +117,7 @@ public class CopyCat : RoleBase CustomRoles.EvilTracker => new[] {CustomRoles.Scout, CustomRoles.TrackerEHR}.RandomElement(), CustomRoles.Mercenary => CustomRoles.Addict, CustomRoles.Miner => CustomRoles.Mole, - CustomRoles.Escapee or CustomRoles.Enderman => CustomRoles.Tunneler, + CustomRoles.Escapist or CustomRoles.Enderman => CustomRoles.Tunneler, CustomRoles.Twister => CustomRoles.TimeMaster, CustomRoles.Disperser => CustomRoles.Transporter, CustomRoles.Eraser => CustomRoles.NiceEraser, @@ -146,7 +146,7 @@ public class CopyCat : RoleBase CustomRoles.Inhibitor => new[] {CustomRoles.Doorjammer, CustomRoles.SecurityGuard}.RandomElement(), CustomRoles.Magician or CustomRoles.Curser => CustomRoles.Wizard, CustomRoles.Penguin => CustomRoles.Goose, - CustomRoles.Anonymous => CustomRoles.Paranoia, + CustomRoles.Anonymous => CustomRoles.Paranoid, CustomRoles.SoulCatcher or CustomRoles.Swapster => CustomRoles.Transporter, CustomRoles.NoteKiller => CustomRoles.Decryptor, CustomRoles.Gaslighter => new[] {CustomRoles.Medic, CustomRoles.Monarch}.RandomElement(), diff --git a/Roles/Crewmate/Coroner.cs b/Roles/Crewmate/Coroner.cs index 3fe5c2a24..967b1454a 100644 --- a/Roles/Crewmate/Coroner.cs +++ b/Roles/Crewmate/Coroner.cs @@ -93,7 +93,7 @@ public class Coroner : RoleBase public override bool CheckReportDeadBody(PlayerControl pc, NetworkedPlayerInfo target, PlayerControl killer) { - if (killer != null && !target.Object.Is(CustomRoles.Unreportable)) + if (killer != null && !target.Object.Is(CustomRoles.Disregarded)) { if (CoronerTargets.Contains(killer.PlayerId)) return false; diff --git a/Roles/Crewmate/Divinator.cs b/Roles/Crewmate/FortuneTeller.cs similarity index 69% rename from Roles/Crewmate/Divinator.cs rename to Roles/Crewmate/FortuneTeller.cs index f1b2e8a9e..1020e948d 100644 --- a/Roles/Crewmate/Divinator.cs +++ b/Roles/Crewmate/FortuneTeller.cs @@ -1,158 +1,158 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using EHR.Modules; -using EHR.Neutral; -using Hazel; -using static EHR.Options; -using static EHR.Translator; - -namespace EHR.Crewmate; - -public class Divinator : RoleBase -{ - private const int Id = 6700; - private static int RolesPerCategory; - private static List PlayerIdList = []; - - public static OptionItem CheckLimitOpt; - public static OptionItem AccurateCheckMode; - public static OptionItem HideVote; - public static OptionItem ShowSpecificRole; - public static OptionItem NumRolesListedForEachPlayer; - public static OptionItem AbilityUseGainWithEachTaskCompleted; - public static OptionItem AbilityChargesWhenFinishedTasks; - public static OptionItem CancelVote; - - public static readonly List DidVote = []; - - private static Dictionary> AllPlayerRoleList = []; - - public override bool IsEnable => PlayerIdList.Count > 0; - - public override void SetupCustomOption() - { - SetupRoleOptions(Id, TabGroup.CrewmateRoles, CustomRoles.Divinator); - - CheckLimitOpt = new IntegerOptionItem(Id + 10, "DivinatorSkillLimit", new(0, 20, 1), 1, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Divinator]) - .SetValueFormat(OptionFormat.Times); - - AccurateCheckMode = new BooleanOptionItem(Id + 12, "AccurateCheckMode", false, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Divinator]); - - ShowSpecificRole = new BooleanOptionItem(Id + 13, "ShowSpecificRole", false, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Divinator]); - - HideVote = new BooleanOptionItem(Id + 14, "DivinatorHideVote", false, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Divinator]); - - AbilityUseGainWithEachTaskCompleted = new FloatOptionItem(Id + 15, "AbilityUseGainWithEachTaskCompleted", new(0f, 5f, 0.05f), 1f, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Divinator]) - .SetValueFormat(OptionFormat.Times); - - AbilityChargesWhenFinishedTasks = new FloatOptionItem(Id + 16, "AbilityChargesWhenFinishedTasks", new(0f, 5f, 0.05f), 0.2f, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Divinator]) - .SetValueFormat(OptionFormat.Times); - - NumRolesListedForEachPlayer = new IntegerOptionItem(Id + 17, "NumRolesListedForEachPlayer", new(1, 10, 1), 5, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Divinator]); - - CancelVote = CreateVoteCancellingUseSetting(Id + 11, CustomRoles.Divinator, TabGroup.CrewmateRoles); - OverrideTasksData.Create(Id + 21, TabGroup.CrewmateRoles, CustomRoles.Divinator); - } - - public override void Init() - { - PlayerIdList = []; - AllPlayerRoleList = []; - RolesPerCategory = NumRolesListedForEachPlayer.GetInt(); - } - - public override void Add(byte playerId) - { - PlayerIdList.Add(playerId); - playerId.SetAbilityUseLimit(CheckLimitOpt.GetFloat()); - - LateTask.New(() => - { - PlayerControl[] players = Main.AllPlayerControls; - int rolesNeeded = players.Length * (RolesPerCategory - 1); - - (List RoleList, PlayerControl Player)[] roleList = Enum.GetValues() - .Where(x => !x.IsVanilla() && !x.IsAdditionRole() && x is not CustomRoles.GM and not CustomRoles.Convict and not CustomRoles.Konan and not CustomRoles.NotAssigned && !x.IsForOtherGameMode() && !CustomRoleSelector.RoleResult.ContainsValue(x)) - .OrderBy(x => x.IsEnable() ? IRandom.Instance.Next(10) : IRandom.Instance.Next(10, 100)) - .Take(rolesNeeded) - .Chunk(RolesPerCategory - 1) - .Zip(players, (array, player) => (RoleList: array.ToList(), Player: player)) - .ToArray(); - - roleList.Do(x => x.RoleList.Insert(IRandom.Instance.Next(x.RoleList.Count), x.Player.GetCustomRole())); - AllPlayerRoleList = roleList.ToDictionary(x => x.Player.PlayerId, x => x.RoleList); - - Logger.Info(string.Join(" ---- ", AllPlayerRoleList.Select(x => $"ID {x.Key} ({x.Key.GetPlayer().GetNameWithRole()}): {string.Join(", ", x.Value)}")), "Divinator Roles"); - }, 8f, log: false); - } - - public override void Remove(byte playerId) - { - PlayerIdList.Remove(playerId); - } - - public override bool OnVote(PlayerControl player, PlayerControl target) - { - if (Starspawn.IsDayBreak) return false; - if (player == null || target == null) return false; - - if (DidVote.Contains(player.PlayerId) || Main.DontCancelVoteList.Contains(player.PlayerId)) return false; - - DidVote.Add(player.PlayerId); - - if (player.GetAbilityUseLimit() < 1) - { - Utils.SendMessage(GetString("DivinatorCheckReachLimit"), player.PlayerId, Utils.ColorString(Utils.GetRoleColor(CustomRoles.Divinator), GetString("DivinatorCheckMsgTitle"))); - return false; - } - - player.RpcRemoveAbilityUse(); - - if (player.PlayerId == target.PlayerId) - { - Utils.SendMessage(GetString("DivinatorCheckSelfMsg") + "\n\n" + string.Format(GetString("DivinatorCheckLimit"), player.GetAbilityUseLimit()), player.PlayerId, Utils.ColorString(Utils.GetRoleColor(CustomRoles.Divinator), GetString("DivinatorCheckMsgTitle")), sendOption: SendOption.None); - return false; - } - - string msg; - - if ((player.AllTasksCompleted() || AccurateCheckMode.GetBool()) && ShowSpecificRole.GetBool()) - msg = string.Format(GetString("DivinatorCheck.TaskDone"), target.GetRealName(), target.GetCustomRole().ToColoredString()); - else - { - string roles = string.Join(", ", AllPlayerRoleList[target.PlayerId].Select(x => x.ToColoredString())); - msg = string.Format(GetString("DivinatorCheckResult"), target.GetRealName(), roles); - } - - Utils.SendMessage(GetString("DivinatorCheck") + "\n" + msg + "\n\n" + string.Format(GetString("DivinatorCheckLimit"), player.GetAbilityUseLimit()), player.PlayerId, Utils.ColorString(Utils.GetRoleColor(CustomRoles.Divinator), GetString("DivinatorCheckMsgTitle")), sendOption: SendOption.None); - - Main.DontCancelVoteList.Add(player.PlayerId); - return true; - } - - public override void OnMeetingShapeshift(PlayerControl shapeshifter, PlayerControl target) - { - OnVote(shapeshifter, target); - } - - public static void OnRoleChange(byte id, CustomRoles previousRole, CustomRoles newRole) - { - try - { - if (!AllPlayerRoleList.TryGetValue(id, out List list)) return; - - int index = list.IndexOf(previousRole); - list.Remove(previousRole); - list.Insert(index, newRole); - } - catch (Exception e) { Utils.ThrowException(e); } - } +using System; +using System.Collections.Generic; +using System.Linq; +using EHR.Modules; +using EHR.Neutral; +using Hazel; +using static EHR.Options; +using static EHR.Translator; + +namespace EHR.Crewmate; + +public class FortuneTeller : RoleBase +{ + private const int Id = 6700; + private static int RolesPerCategory; + private static List PlayerIdList = []; + + public static OptionItem CheckLimitOpt; + public static OptionItem AccurateCheckMode; + public static OptionItem HideVote; + public static OptionItem ShowSpecificRole; + public static OptionItem NumRolesListedForEachPlayer; + public static OptionItem AbilityUseGainWithEachTaskCompleted; + public static OptionItem AbilityChargesWhenFinishedTasks; + public static OptionItem CancelVote; + + public static readonly List DidVote = []; + + private static Dictionary> AllPlayerRoleList = []; + + public override bool IsEnable => PlayerIdList.Count > 0; + + public override void SetupCustomOption() + { + SetupRoleOptions(Id, TabGroup.CrewmateRoles, CustomRoles.FortuneTeller); + + CheckLimitOpt = new IntegerOptionItem(Id + 10, "FortuneTellerSkillLimit", new(0, 20, 1), 1, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.FortuneTeller]) + .SetValueFormat(OptionFormat.Times); + + AccurateCheckMode = new BooleanOptionItem(Id + 12, "AccurateCheckMode", false, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.FortuneTeller]); + + ShowSpecificRole = new BooleanOptionItem(Id + 13, "ShowSpecificRole", false, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.FortuneTeller]); + + HideVote = new BooleanOptionItem(Id + 14, "FortuneTellerHideVote", false, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.FortuneTeller]); + + AbilityUseGainWithEachTaskCompleted = new FloatOptionItem(Id + 15, "AbilityUseGainWithEachTaskCompleted", new(0f, 5f, 0.05f), 1f, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.FortuneTeller]) + .SetValueFormat(OptionFormat.Times); + + AbilityChargesWhenFinishedTasks = new FloatOptionItem(Id + 16, "AbilityChargesWhenFinishedTasks", new(0f, 5f, 0.05f), 0.2f, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.FortuneTeller]) + .SetValueFormat(OptionFormat.Times); + + NumRolesListedForEachPlayer = new IntegerOptionItem(Id + 17, "NumRolesListedForEachPlayer", new(1, 10, 1), 5, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.FortuneTeller]); + + CancelVote = CreateVoteCancellingUseSetting(Id + 11, CustomRoles.FortuneTeller, TabGroup.CrewmateRoles); + OverrideTasksData.Create(Id + 21, TabGroup.CrewmateRoles, CustomRoles.FortuneTeller); + } + + public override void Init() + { + PlayerIdList = []; + AllPlayerRoleList = []; + RolesPerCategory = NumRolesListedForEachPlayer.GetInt(); + } + + public override void Add(byte playerId) + { + PlayerIdList.Add(playerId); + playerId.SetAbilityUseLimit(CheckLimitOpt.GetFloat()); + + LateTask.New(() => + { + PlayerControl[] players = Main.AllPlayerControls; + int rolesNeeded = players.Length * (RolesPerCategory - 1); + + (List RoleList, PlayerControl Player)[] roleList = Enum.GetValues() + .Where(x => !x.IsVanilla() && !x.IsAdditionRole() && x is not CustomRoles.GM and not CustomRoles.Convict and not CustomRoles.NotAssigned && !x.IsForOtherGameMode() && !CustomRoleSelector.RoleResult.ContainsValue(x)) + .OrderBy(x => x.IsEnable() ? IRandom.Instance.Next(10) : IRandom.Instance.Next(10, 100)) + .Take(rolesNeeded) + .Chunk(RolesPerCategory - 1) + .Zip(players, (array, player) => (RoleList: array.ToList(), Player: player)) + .ToArray(); + + roleList.Do(x => x.RoleList.Insert(IRandom.Instance.Next(x.RoleList.Count), x.Player.GetCustomRole())); + AllPlayerRoleList = roleList.ToDictionary(x => x.Player.PlayerId, x => x.RoleList); + + Logger.Info(string.Join(" ---- ", AllPlayerRoleList.Select(x => $"ID {x.Key} ({x.Key.GetPlayer().GetNameWithRole()}): {string.Join(", ", x.Value)}")), "FortuneTeller Roles"); + }, 8f, log: false); + } + + public override void Remove(byte playerId) + { + PlayerIdList.Remove(playerId); + } + + public override bool OnVote(PlayerControl player, PlayerControl target) + { + if (Starspawn.IsDayBreak) return false; + if (player == null || target == null) return false; + + if (DidVote.Contains(player.PlayerId) || Main.DontCancelVoteList.Contains(player.PlayerId)) return false; + + DidVote.Add(player.PlayerId); + + if (player.GetAbilityUseLimit() < 1) + { + Utils.SendMessage(GetString("FortuneTellerCheckReachLimit"), player.PlayerId, Utils.ColorString(Utils.GetRoleColor(CustomRoles.FortuneTeller), GetString("FortuneTellerCheckMsgTitle"))); + return false; + } + + player.RpcRemoveAbilityUse(); + + if (player.PlayerId == target.PlayerId) + { + Utils.SendMessage(GetString("FortuneTellerCheckSelfMsg") + "\n\n" + string.Format(GetString("FortuneTellerCheckLimit"), player.GetAbilityUseLimit()), player.PlayerId, Utils.ColorString(Utils.GetRoleColor(CustomRoles.FortuneTeller), GetString("FortuneTellerCheckMsgTitle")), sendOption: SendOption.None); + return false; + } + + string msg; + + if ((player.AllTasksCompleted() || AccurateCheckMode.GetBool()) && ShowSpecificRole.GetBool()) + msg = string.Format(GetString("FortuneTellerCheck.TaskDone"), target.GetRealName(), target.GetCustomRole().ToColoredString()); + else + { + string roles = string.Join(", ", AllPlayerRoleList[target.PlayerId].Select(x => x.ToColoredString())); + msg = string.Format(GetString("FortuneTellerCheckResult"), target.GetRealName(), roles); + } + + Utils.SendMessage(GetString("FortuneTellerCheck") + "\n" + msg + "\n\n" + string.Format(GetString("FortuneTellerCheckLimit"), player.GetAbilityUseLimit()), player.PlayerId, Utils.ColorString(Utils.GetRoleColor(CustomRoles.FortuneTeller), GetString("FortuneTellerCheckMsgTitle")), sendOption: SendOption.None); + + Main.DontCancelVoteList.Add(player.PlayerId); + return true; + } + + public override void OnMeetingShapeshift(PlayerControl shapeshifter, PlayerControl target) + { + OnVote(shapeshifter, target); + } + + public static void OnRoleChange(byte id, CustomRoles previousRole, CustomRoles newRole) + { + try + { + if (!AllPlayerRoleList.TryGetValue(id, out List list)) return; + + int index = list.IndexOf(previousRole); + list.Remove(previousRole); + list.Insert(index, newRole); + } + catch (Exception e) { Utils.ThrowException(e); } + } } \ No newline at end of file diff --git a/Roles/Crewmate/Needy.cs b/Roles/Crewmate/LazyGuy.cs similarity index 83% rename from Roles/Crewmate/Needy.cs rename to Roles/Crewmate/LazyGuy.cs index 811c31ba2..ff253280a 100644 --- a/Roles/Crewmate/Needy.cs +++ b/Roles/Crewmate/LazyGuy.cs @@ -1,12 +1,12 @@ namespace EHR.Crewmate; -internal class Needy : RoleBase +internal class LazyGuy : RoleBase { public override bool IsEnable => false; public override void SetupCustomOption() { - Options.SetupRoleOptions(5700, TabGroup.CrewmateRoles, CustomRoles.Needy); + Options.SetupRoleOptions(5700, TabGroup.CrewmateRoles, CustomRoles.LazyGuy); } public override void Init() { } diff --git a/Roles/Crewmate/Monarch.cs b/Roles/Crewmate/Monarch.cs index 29d50bd88..830558868 100644 --- a/Roles/Crewmate/Monarch.cs +++ b/Roles/Crewmate/Monarch.cs @@ -72,7 +72,7 @@ public class Monarch : RoleBase { if (killer.GetAbilityUseLimit() < 1) return false; - if (target != null && !target.GetCustomRole().IsNotKnightable() && !target.Is(CustomRoles.Knighted) && !target.Is(CustomRoles.TicketsStealer)) + if (target != null && !target.GetCustomRole().IsNotKnightable() && !target.Is(CustomRoles.Knighted) && !target.Is(CustomRoles.Stealer)) { killer.RpcRemoveAbilityUse(); target.RpcSetCustomRole(CustomRoles.Knighted); diff --git a/Roles/Crewmate/Paranoia.cs b/Roles/Crewmate/Paranoid.cs similarity index 77% rename from Roles/Crewmate/Paranoia.cs rename to Roles/Crewmate/Paranoid.cs index 92d60b8fa..3da9f062d 100644 --- a/Roles/Crewmate/Paranoia.cs +++ b/Roles/Crewmate/Paranoid.cs @@ -4,12 +4,12 @@ using static EHR.Options; namespace EHR.Crewmate; -internal class Paranoia : RoleBase +internal class Paranoid : RoleBase { public static Dictionary ParaUsedButtonCount = []; - public static OptionItem ParanoiaAbilityUseGainWithEachTaskCompleted; + public static OptionItem ParanoidAbilityUseGainWithEachTaskCompleted; public static OptionItem AbilityChargesWhenFinishedTasks; public static bool On; @@ -17,22 +17,22 @@ internal class Paranoia : RoleBase public override void SetupCustomOption() { - SetupRoleOptions(7800, TabGroup.CrewmateRoles, CustomRoles.Paranoia); + SetupRoleOptions(7800, TabGroup.CrewmateRoles, CustomRoles.Paranoid); - ParanoiaNumOfUseButton = new FloatOptionItem(7810, "ParanoiaNumOfUseButton", new(0, 90, 1), 3, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoia]) + ParanoidNumOfUseButton = new FloatOptionItem(7810, "ParanoidNumOfUseButton", new(0, 90, 1), 3, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoid]) .SetValueFormat(OptionFormat.Times); - ParanoiaVentCooldown = new FloatOptionItem(7811, "ParanoiaVentCooldown", new(0, 180, 1), 10, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoia]) + ParanoidVentCooldown = new FloatOptionItem(7811, "ParanoidVentCooldown", new(0, 180, 1), 10, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoid]) .SetValueFormat(OptionFormat.Seconds); - ParanoiaAbilityUseGainWithEachTaskCompleted = new FloatOptionItem(7812, "AbilityUseGainWithEachTaskCompleted", new(0f, 5f, 0.05f), 0.4f, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoia]) + ParanoidAbilityUseGainWithEachTaskCompleted = new FloatOptionItem(7812, "AbilityUseGainWithEachTaskCompleted", new(0f, 5f, 0.05f), 0.4f, TabGroup.CrewmateRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoid]) .SetValueFormat(OptionFormat.Times); AbilityChargesWhenFinishedTasks = new FloatOptionItem(7813, "AbilityChargesWhenFinishedTasks", new(0f, 5f, 0.05f), 0.2f, TabGroup.CrewmateRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoia]) + .SetParent(CustomRoleSpawnChances[CustomRoles.Paranoid]) .SetValueFormat(OptionFormat.Times); } @@ -40,7 +40,7 @@ internal class Paranoia : RoleBase { On = true; ParaUsedButtonCount[playerId] = 0; - playerId.SetAbilityUseLimit(ParanoiaNumOfUseButton.GetFloat()); + playerId.SetAbilityUseLimit(ParanoidNumOfUseButton.GetFloat()); } public override void Init() @@ -58,8 +58,8 @@ internal class Paranoia : RoleBase if (UsePets.GetBool()) return; AURoleOptions.EngineerCooldown = - !ParaUsedButtonCount.TryGetValue(playerId, out int count2) || count2 < ParanoiaNumOfUseButton.GetInt() - ? ParanoiaVentCooldown.GetFloat() + !ParaUsedButtonCount.TryGetValue(playerId, out int count2) || count2 < ParanoidNumOfUseButton.GetInt() + ? ParanoidVentCooldown.GetFloat() : 300f; AURoleOptions.EngineerInVentMaxTime = 1f; @@ -68,9 +68,9 @@ internal class Paranoia : RoleBase public override void SetButtonTexts(HudManager hud, byte id) { if (UsePets.GetBool()) - hud.PetButton.buttonLabelText.text = Translator.GetString("ParanoiaVentButtonText"); + hud.PetButton.buttonLabelText.text = Translator.GetString("ParanoidVentButtonText"); else - hud.AbilityButton.buttonLabelText.text = Translator.GetString("ParanoiaVentButtonText"); + hud.AbilityButton.buttonLabelText.text = Translator.GetString("ParanoidVentButtonText"); } public override void OnPet(PlayerControl pc) @@ -90,7 +90,7 @@ internal class Paranoia : RoleBase if (pc.GetAbilityUseLimit() >= 1) { pc.RpcRemoveAbilityUse(); - if (AmongUsClient.Instance.AmHost) LateTask.New(() => Utils.SendMessage(Translator.GetString("SkillUsedLeft") + (ParanoiaNumOfUseButton.GetInt() - ParaUsedButtonCount[pc.PlayerId]), pc.PlayerId), 4f, "Paranoia Skill Remain Message"); + if (AmongUsClient.Instance.AmHost) LateTask.New(() => Utils.SendMessage(Translator.GetString("SkillUsedLeft") + (ParanoidNumOfUseButton.GetInt() - ParaUsedButtonCount[pc.PlayerId]), pc.PlayerId), 4f, "Paranoid Skill Remain Message"); pc.NoCheckStartMeeting(pc.Data); } } diff --git a/Roles/Crewmate/Philantropist.cs b/Roles/Crewmate/Philantropist.cs deleted file mode 100644 index f8b72c127..000000000 --- a/Roles/Crewmate/Philantropist.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace EHR.Crewmate; - -internal class Philantropist { } \ No newline at end of file diff --git a/Roles/Crewmate/Scout.cs b/Roles/Crewmate/Scout.cs index eac357711..31cddf0d3 100644 --- a/Roles/Crewmate/Scout.cs +++ b/Roles/Crewmate/Scout.cs @@ -33,7 +33,7 @@ public class Scout : RoleBase { SetupRoleOptions(Id, TabGroup.CrewmateRoles, CustomRoles.Scout); - TrackLimitOpt = new IntegerOptionItem(Id + 5, "DivinatorSkillLimit", new(0, 20, 1), 1, TabGroup.CrewmateRoles) + TrackLimitOpt = new IntegerOptionItem(Id + 5, "FortuneTellerSkillLimit", new(0, 20, 1), 1, TabGroup.CrewmateRoles) .SetParent(CustomRoleSpawnChances[CustomRoles.Scout]) .SetValueFormat(OptionFormat.Times); diff --git a/Roles/Crewmate/Sheriff.cs b/Roles/Crewmate/Sheriff.cs index 80a7c2275..dc10dba93 100644 --- a/Roles/Crewmate/Sheriff.cs +++ b/Roles/Crewmate/Sheriff.cs @@ -68,7 +68,7 @@ public class Sheriff : RoleBase { foreach (CustomRoles neutral in Enum.GetValues()) { - if (neutral.IsNeutral() && neutral is not CustomRoles.Konan and not CustomRoles.Pestilence and not CustomRoles.GM and not CustomRoles.Convict && !neutral.IsForOtherGameMode()) + if (neutral.IsNeutral() && neutral is not CustomRoles.Pestilence and not CustomRoles.GM and not CustomRoles.Convict && !neutral.IsForOtherGameMode()) { SetUpKillTargetOption(neutral, id, true, CanKillNeutralsMode); id++; diff --git a/Roles/Impostor/Anonymous.cs b/Roles/Impostor/Anonymous.cs index 74f9916db..72f00500e 100644 --- a/Roles/Impostor/Anonymous.cs +++ b/Roles/Impostor/Anonymous.cs @@ -82,7 +82,7 @@ public class Anonymous : RoleBase public override bool OnShapeshift(PlayerControl pc, PlayerControl ssTarget, bool shapeshifting) { - if (!shapeshifting || pc.GetAbilityUseLimit() < 1 || ssTarget == null || ssTarget.Is(CustomRoles.Needy) || ssTarget.Is(CustomRoles.Lazy) || Thanos.IsImmune(ssTarget)) return false; + if (!shapeshifting || pc.GetAbilityUseLimit() < 1 || ssTarget == null || ssTarget.Is(CustomRoles.LazyGuy) || ssTarget.Is(CustomRoles.Lazy) || Thanos.IsImmune(ssTarget)) return false; pc.RpcRemoveAbilityUse(); diff --git a/Roles/Impostor/Butcher.cs b/Roles/Impostor/Butcher.cs index 6ca0fcdd2..e47619e39 100644 --- a/Roles/Impostor/Butcher.cs +++ b/Roles/Impostor/Butcher.cs @@ -46,7 +46,7 @@ internal class Butcher : RoleBase { if (!killer.RpcCheckAndMurder(target, true)) return false; - if (killer.PlayerId != target.PlayerId && !target.Is(CustomRoles.Unreportable) && Main.IntroDestroyed && GameStates.IsInTask && !ExileController.Instance && !AntiBlackout.SkipTasks) + if (killer.PlayerId != target.PlayerId && !target.Is(CustomRoles.Disregarded) && Main.IntroDestroyed && GameStates.IsInTask && !ExileController.Instance && !AntiBlackout.SkipTasks) { Main.PlayerStates[target.PlayerId].deathReason = PlayerState.DeathReason.Dismembered; diff --git a/Roles/Impostor/Escapee.cs b/Roles/Impostor/Escapist.cs similarity index 73% rename from Roles/Impostor/Escapee.cs rename to Roles/Impostor/Escapist.cs index c795e3fa3..80abd8913 100644 --- a/Roles/Impostor/Escapee.cs +++ b/Roles/Impostor/Escapist.cs @@ -3,38 +3,38 @@ using EHR.Modules; namespace EHR.Impostor; -internal class Escapee : RoleBase +internal class Escapist : RoleBase { public static bool On; - public static OptionItem EscapeeSSCD; + public static OptionItem EscapistSSCD; public static OptionItem CanVent; - public Vector2? EscapeeLocation; + public Vector2? EscapistLocation; public override bool IsEnable => On; public override void SetupCustomOption() { - Options.SetupRoleOptions(3600, TabGroup.ImpostorRoles, CustomRoles.Escapee); + Options.SetupRoleOptions(3600, TabGroup.ImpostorRoles, CustomRoles.Escapist); - EscapeeSSCD = new FloatOptionItem(3611, "ShapeshiftCooldown", new(1f, 180f, 1f), 5f, TabGroup.ImpostorRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Escapee]) + EscapistSSCD = new FloatOptionItem(3611, "ShapeshiftCooldown", new(1f, 180f, 1f), 5f, TabGroup.ImpostorRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Escapist]) .SetValueFormat(OptionFormat.Seconds); CanVent = new BooleanOptionItem(3612, "CanVent", false, TabGroup.ImpostorRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Escapee]); + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Escapist]); } public override void Add(byte playerId) { On = true; - EscapeeLocation = null; + EscapistLocation = null; } public override void Init() { On = false; - EscapeeLocation = null; + EscapistLocation = null; } public override bool CanUseImpostorVentButton(PlayerControl pc) @@ -45,20 +45,20 @@ internal class Escapee : RoleBase public override void SetButtonTexts(HudManager hud, byte id) { if (Options.UsePets.GetBool() && !Options.UsePhantomBasis.GetBool()) - hud.PetButton?.OverrideText(Translator.GetString("EscapeeAbilityButtonText")); + hud.PetButton?.OverrideText(Translator.GetString("EscapistAbilityButtonText")); else - hud.AbilityButton?.OverrideText(Translator.GetString("EscapeeAbilityButtonText")); + hud.AbilityButton?.OverrideText(Translator.GetString("EscapistAbilityButtonText")); } public override void ApplyGameOptions(IGameOptions opt, byte id) { if (Options.UsePhantomBasis.GetBool()) - AURoleOptions.PhantomCooldown = EscapeeSSCD.GetFloat(); + AURoleOptions.PhantomCooldown = EscapistSSCD.GetFloat(); else { if (Options.UsePets.GetBool()) return; - AURoleOptions.ShapeshifterCooldown = EscapeeSSCD.GetFloat(); + AURoleOptions.ShapeshifterCooldown = EscapistSSCD.GetFloat(); AURoleOptions.ShapeshifterDuration = 1f; } } @@ -76,15 +76,15 @@ internal class Escapee : RoleBase private void TeleportOrMark(PlayerControl pc) { - if (EscapeeLocation != null) + if (EscapistLocation != null) { - var position = (Vector2)EscapeeLocation; - EscapeeLocation = null; + var position = (Vector2)EscapistLocation; + EscapistLocation = null; pc.TP(position); pc.RPCPlayCustomSound("Teleport"); } else - EscapeeLocation = pc.Pos(); + EscapistLocation = pc.Pos(); } public override bool OnShapeshift(PlayerControl shapeshifter, PlayerControl target, bool shapeshifting) diff --git a/Roles/Impostor/Gangster.cs b/Roles/Impostor/Gangster.cs index 450679e12..930637398 100644 --- a/Roles/Impostor/Gangster.cs +++ b/Roles/Impostor/Gangster.cs @@ -128,7 +128,7 @@ public class Gangster : RoleBase pc.Is(CustomRoles.NiceSwapper) || pc.Is(CustomRoles.Speedrunner) || pc.Is(CustomRoles.Snitch) || - pc.Is(CustomRoles.Needy) || + pc.Is(CustomRoles.LazyGuy) || pc.Is(CustomRoles.Lazy) || pc.Is(CustomRoles.Loyal) || pc.Is(CustomRoles.Egoist) diff --git a/Roles/Impostor/Occultist.cs b/Roles/Impostor/Occultist.cs index c0aa48d7e..0b2981614 100644 --- a/Roles/Impostor/Occultist.cs +++ b/Roles/Impostor/Occultist.cs @@ -89,7 +89,7 @@ public class Occultist : RoleBase public override bool CheckReportDeadBody(PlayerControl reporter, NetworkedPlayerInfo target, PlayerControl killer) { - if (!InRevivingMode || reporter.GetAbilityUseLimit() < 1 || target.Disconnected || target.Object.IsAlive() || target.Object.Is(CustomRoles.Unreportable) || (target.Object.Is(Team.Impostor) && !CanReviveImpostorsAndMadmates.GetBool())) return true; + if (!InRevivingMode || reporter.GetAbilityUseLimit() < 1 || target.Disconnected || target.Object.IsAlive() || target.Object.Is(CustomRoles.Disregarded) || (target.Object.Is(Team.Impostor) && !CanReviveImpostorsAndMadmates.GetBool())) return true; InRevivingMode = false; Revives[target.PlayerId] = new(Utils.TimeStamp, reporter.Pos(), false); diff --git a/Roles/Impostor/Puppeteer.cs b/Roles/Impostor/Puppeteer.cs index ffede663b..2e7eec79b 100644 --- a/Roles/Impostor/Puppeteer.cs +++ b/Roles/Impostor/Puppeteer.cs @@ -115,7 +115,7 @@ internal class Puppeteer : RoleBase public override bool OnCheckMurder(PlayerControl killer, PlayerControl target) { if (Thanos.IsImmune(target)) return false; - if (target.Is(CustomRoles.Needy) && !PuppeteerManipulationBypassesLazyGuy.GetBool()) return false; + if (target.Is(CustomRoles.LazyGuy) && !PuppeteerManipulationBypassesLazyGuy.GetBool()) return false; if (target.Is(CustomRoles.Lazy) && !PuppeteerManipulationBypassesLazy.GetBool()) return false; if (Medic.ProtectList.Contains(target.PlayerId)) return false; diff --git a/Roles/Impostor/Trapster.cs b/Roles/Impostor/Trapster.cs index 05abb2a94..46a8b106e 100644 --- a/Roles/Impostor/Trapster.cs +++ b/Roles/Impostor/Trapster.cs @@ -98,7 +98,7 @@ internal class Trapster : RoleBase public static bool OnAnyoneCheckReportDeadBody(PlayerControl reporter, NetworkedPlayerInfo target) { - if (TrapsterBody.Contains(target.PlayerId) && reporter.IsAlive() && !target.Object.Is(CustomRoles.Unreportable) && LegacyTrapster.GetBool()) + if (TrapsterBody.Contains(target.PlayerId) && reporter.IsAlive() && !target.Object.Is(CustomRoles.Disregarded) && LegacyTrapster.GetBool()) { if (!TrapOnlyWorksOnTheBodyTrapster.GetBool()) { diff --git a/Roles/Impostor/Warlock.cs b/Roles/Impostor/Warlock.cs index afd2515a7..2f63363e4 100644 --- a/Roles/Impostor/Warlock.cs +++ b/Roles/Impostor/Warlock.cs @@ -135,7 +135,7 @@ internal class Warlock : RoleBase public override bool OnCheckMurder(PlayerControl killer, PlayerControl target) { - if (target.Is(CustomRoles.Needy) || target.Is(CustomRoles.Lazy) || Thanos.IsImmune(target)) return false; + if (target.Is(CustomRoles.LazyGuy) || target.Is(CustomRoles.Lazy) || Thanos.IsImmune(target)) return false; if (killer.IsShifted()) return false; @@ -147,7 +147,7 @@ internal class Warlock : RoleBase if (!killer.IsShifted() && !IsCurseAndKill[killer.PlayerId]) { - if (target.Is(CustomRoles.Needy) || target.Is(CustomRoles.Lazy)) return; + if (target.Is(CustomRoles.LazyGuy) || target.Is(CustomRoles.Lazy)) return; IsCursed = true; killer.SetKillCooldown(); diff --git a/Roles/Neutral/Amnesiac.cs b/Roles/Neutral/Amnesiac.cs index fa5bc932b..64938e640 100644 --- a/Roles/Neutral/Amnesiac.cs +++ b/Roles/Neutral/Amnesiac.cs @@ -138,7 +138,7 @@ public class Amnesiac : RoleBase public override bool CheckReportDeadBody(PlayerControl reporter, NetworkedPlayerInfo target, PlayerControl killer) { - if (target.Object.Is(CustomRoles.Unreportable)) return true; + if (target.Object.Is(CustomRoles.Disregarded)) return true; if (RememberMode.GetValue() == 0) { diff --git a/Roles/Neutral/PlagueDoctor.cs b/Roles/Neutral/Infection.cs similarity index 81% rename from Roles/Neutral/PlagueDoctor.cs rename to Roles/Neutral/Infection.cs index 393c394bc..7c7c2db00 100644 --- a/Roles/Neutral/PlagueDoctor.cs +++ b/Roles/Neutral/Infection.cs @@ -8,7 +8,7 @@ using UnityEngine; namespace EHR.Neutral; -public class PlagueDoctor : RoleBase +public class Infection : RoleBase { private const int Id = 641700; private static List PlayerIdList = []; @@ -37,31 +37,31 @@ public class PlagueDoctor : RoleBase public override void SetupCustomOption() { - Options.SetupRoleOptions(Id, TabGroup.NeutralRoles, CustomRoles.PlagueDoctor); + Options.SetupRoleOptions(Id, TabGroup.NeutralRoles, CustomRoles.Infection); - OptionInfectLimit = new IntegerOptionItem(Id + 10, "PlagueDoctorInfectLimit", new(1, 3, 1), 1, TabGroup.NeutralRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.PlagueDoctor]) + OptionInfectLimit = new IntegerOptionItem(Id + 10, "InfectionInfectLimit", new(1, 3, 1), 1, TabGroup.NeutralRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Infection]) .SetValueFormat(OptionFormat.Times); - OptionInfectWhenKilled = new BooleanOptionItem(Id + 11, "PlagueDoctorInfectWhenKilled", false, TabGroup.NeutralRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.PlagueDoctor]); + OptionInfectWhenKilled = new BooleanOptionItem(Id + 11, "InfectionInfectWhenKilled", false, TabGroup.NeutralRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Infection]); - OptionInfectTime = new FloatOptionItem(Id + 12, "PlagueDoctorInfectTime", new(3f, 20f, 1f), 8f, TabGroup.NeutralRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.PlagueDoctor]) + OptionInfectTime = new FloatOptionItem(Id + 12, "InfectionInfectTime", new(3f, 20f, 1f), 8f, TabGroup.NeutralRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Infection]) .SetValueFormat(OptionFormat.Seconds); - OptionInfectDistance = new FloatOptionItem(Id + 13, "PlagueDoctorInfectDistance", new(0.5f, 2f, 0.25f), 1.5f, TabGroup.NeutralRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.PlagueDoctor]); + OptionInfectDistance = new FloatOptionItem(Id + 13, "InfectionInfectDistance", new(0.5f, 2f, 0.25f), 1.5f, TabGroup.NeutralRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Infection]); - OptionInfectInactiveTime = new FloatOptionItem(Id + 14, "PlagueDoctorInfectInactiveTime", new(0.5f, 10f, 0.5f), 5f, TabGroup.NeutralRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.PlagueDoctor]) + OptionInfectInactiveTime = new FloatOptionItem(Id + 14, "InfectionInfectInactiveTime", new(0.5f, 10f, 0.5f), 5f, TabGroup.NeutralRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Infection]) .SetValueFormat(OptionFormat.Seconds); - OptionInfectCanInfectSelf = new BooleanOptionItem(Id + 15, "PlagueDoctorCanInfectSelf", false, TabGroup.NeutralRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.PlagueDoctor]); + OptionInfectCanInfectSelf = new BooleanOptionItem(Id + 15, "InfectionCanInfectSelf", false, TabGroup.NeutralRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Infection]); - OptionInfectCanInfectVent = new BooleanOptionItem(Id + 16, "PlagueDoctorCanInfectVent", false, TabGroup.NeutralRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.PlagueDoctor]); + OptionInfectCanInfectVent = new BooleanOptionItem(Id + 16, "InfectionCanInfectVent", false, TabGroup.NeutralRoles) + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Infection]); } public override void Init() @@ -114,7 +114,7 @@ public class PlagueDoctor : RoleBase public override string GetProgressText(byte id, bool comms) { - return Utils.ColorString(Utils.GetRoleColor(CustomRoles.PlagueDoctor).ShadeColor(0.25f), $"({id.GetAbilityUseLimit()})"); + return Utils.ColorString(Utils.GetRoleColor(CustomRoles.Infection).ShadeColor(0.25f), $"({id.GetAbilityUseLimit()})"); } public override void ApplyGameOptions(IGameOptions opt, byte id) @@ -134,7 +134,7 @@ public class PlagueDoctor : RoleBase { if (!IsEnable || !Utils.DoRPC) return; - MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncPlagueDoctor, SendOption.Reliable); + MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.SyncInfection, SendOption.Reliable); writer.Write(targetId); writer.Write(rate); AmongUsClient.Instance.FinishRpcImmediately(writer); @@ -161,7 +161,7 @@ public class PlagueDoctor : RoleBase public static void OnPDdeath(PlayerControl killer, PlayerControl target) { - if (Main.PlayerStates[target.PlayerId].Role is not PlagueDoctor { IsEnable: true } pd) return; + if (Main.PlayerStates[target.PlayerId].Role is not Infection { IsEnable: true } pd) return; if (InfectWhenKilled && target.GetAbilityUseLimit() > 0) { @@ -227,7 +227,7 @@ public class PlagueDoctor : RoleBase { changed = true; updates.Add(target); - Logger.Info($"InfectRate [{target.GetNameWithRole()}]: {newRate}%", "PlagueDoctor"); + Logger.Info($"InfectRate [{target.GetNameWithRole()}]: {newRate}%", "Infection"); SendRPC(target.PlayerId, newRate); } } @@ -248,34 +248,34 @@ public class PlagueDoctor : RoleBase LateTask.New(() => { - Logger.Info("Infect Active", "PlagueDoctor"); + Logger.Info("Infect Active", "Infection"); InfectActive = true; }, InfectInactiveTime, "ResetInfectInactiveTime"); } public static string GetMarkOthers(PlayerControl seer, PlayerControl seen = null) { - if (Main.PlayerStates[seer.PlayerId].Role is not PlagueDoctor { IsEnable: true } pd) return string.Empty; + if (Main.PlayerStates[seer.PlayerId].Role is not Infection { IsEnable: true } pd) return string.Empty; seen ??= seer; - if (!pd.CanInfect(seen) || !seer.Is(CustomRoles.PlagueDoctor) && seer.IsAlive()) return string.Empty; + if (!pd.CanInfect(seen) || !seer.Is(CustomRoles.Infection) && seer.IsAlive()) return string.Empty; - return Utils.ColorString(Utils.GetRoleColor(CustomRoles.PlagueDoctor), GetInfectRateCharactor(seen, pd)); + return Utils.ColorString(Utils.GetRoleColor(CustomRoles.Infection), GetInfectRateCharactor(seen, pd)); } public override string GetSuffix(PlayerControl seer, PlayerControl target, bool hud = false, bool meeting = false) { - if (seer.PlayerId != target.PlayerId && seer.IsAlive() || !seer.Is(CustomRoles.PlagueDoctor) && seer.IsAlive() || !hud && seer.IsModdedClient() || Main.PlayerStates[seer.PlayerId].Role is not PlagueDoctor { IsEnable: true } pd) return string.Empty; + if (seer.PlayerId != target.PlayerId && seer.IsAlive() || !seer.Is(CustomRoles.Infection) && seer.IsAlive() || !hud && seer.IsModdedClient() || Main.PlayerStates[seer.PlayerId].Role is not Infection { IsEnable: true } pd) return string.Empty; var str = new StringBuilder(40); foreach (PlayerControl player in Main.AllAlivePlayerControls) { - if (!player.Is(CustomRoles.PlagueDoctor)) + if (!player.Is(CustomRoles.Infection)) str.Append(GetInfectRateCharactor(player, pd)); } - return Utils.ColorString(Utils.GetRoleColor(CustomRoles.PlagueDoctor), str.ToString()); + return Utils.ColorString(Utils.GetRoleColor(CustomRoles.Infection), str.ToString()); } public static bool IsInfected(byte playerId) @@ -284,7 +284,7 @@ public class PlagueDoctor : RoleBase return rate >= 100; } - private static string GetInfectRateCharactor(PlayerControl player, PlagueDoctor pd) + private static string GetInfectRateCharactor(PlayerControl player, Infection pd) { if (!pd.IsEnable || !pd.CanInfect(player) || !player.IsAlive() || !InfectInfos.TryGetValue(player.PlayerId, out float rate)) return string.Empty; @@ -301,7 +301,7 @@ public class PlagueDoctor : RoleBase { if (PlayerIdList.Count == 0 || player == null) return; - Logger.Info($"InfectRate [{player.GetNameWithRole()}]: 100%", "PlagueDoctor"); + Logger.Info($"InfectRate [{player.GetNameWithRole()}]: 100%", "Infection"); InfectInfos[player.PlayerId] = 100; SendRPC(player.PlayerId, 100); Utils.NotifyRoles(SpecifySeer: player); @@ -318,24 +318,24 @@ public class PlagueDoctor : RoleBase // Invalid if someone's victory is being processed if (CustomWinnerHolder.WinnerTeam != CustomWinner.Default) return; - if (Main.AllAlivePlayerControls.All(p => p.Is(CustomRoles.PlagueDoctor) || IsInfected(p.PlayerId))) + if (Main.AllAlivePlayerControls.All(p => p.Is(CustomRoles.Infection) || IsInfected(p.PlayerId))) { InfectActive = false; - PlayerControl pd = Main.AllPlayerControls.FirstOrDefault(x => x.Is(CustomRoles.PlagueDoctor)); + PlayerControl pd = Main.AllPlayerControls.FirstOrDefault(x => x.Is(CustomRoles.Infection)); foreach (PlayerControl player in Main.AllAlivePlayerControls) { - if (player.Is(CustomRoles.PlagueDoctor)) continue; + if (player.Is(CustomRoles.Infection)) continue; player.Suicide(PlayerState.DeathReason.Curse, pd); } - CustomWinnerHolder.ResetAndSetWinner(CustomWinner.PlagueDoctor); + CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Infection); - foreach (PlayerControl plagueDoctor in Main.AllPlayerControls) + foreach (PlayerControl infection in Main.AllPlayerControls) { - if (plagueDoctor.Is(CustomRoles.PlagueDoctor)) - CustomWinnerHolder.WinnerIds.Add(plagueDoctor.PlayerId); + if (infection.Is(CustomRoles.Infection)) + CustomWinnerHolder.WinnerIds.Add(infection.PlayerId); } } } diff --git a/Roles/Neutral/Vulture.cs b/Roles/Neutral/Vulture.cs index 5b190652f..31d0a5c58 100644 --- a/Roles/Neutral/Vulture.cs +++ b/Roles/Neutral/Vulture.cs @@ -139,7 +139,7 @@ public class Vulture : RoleBase public override bool CheckReportDeadBody(PlayerControl pc, NetworkedPlayerInfo target, PlayerControl killer) { - if (pc.GetAbilityUseLimit() < 1f || target.Object == null || target.Object.Is(CustomRoles.Unreportable)) return true; + if (pc.GetAbilityUseLimit() < 1f || target.Object == null || target.Object.Is(CustomRoles.Disregarded)) return true; if (CooldownFinishTS > Utils.TimeStamp) return true;