From e691590927960874f90263541eb331e7510a8951 Mon Sep 17 00:00:00 2001 From: HyperAtill Date: Sat, 25 Oct 2025 19:59:41 +0300 Subject: [PATCH] Phantasm <---> Specter. The dumbest thing I've ever seen --- CustomRoles.cs | 4 ++-- GameMode/CaptureTheFlag.cs | 2 +- Main.cs | 12 +++++----- Modules/CustomRolesHelper.cs | 4 ++-- Modules/EAC.cs | 2 +- Modules/GameState.cs | 2 +- Modules/GhostRolesManager.cs | 2 +- Modules/GuessManager.cs | 4 ++-- Modules/Utils.cs | 6 ++--- Patches/CheckGameEndPatch.cs | 18 +++++++-------- Patches/IntroPatch.cs | 2 +- Patches/OutroPatch.cs | 4 ++-- Patches/PhantomRolePatch.cs | 16 +++++++------- Patches/TaskAssignPatch.cs | 4 ++-- README.md | 4 ++-- Resources/Lang/en_US.json | 22 +++++++++---------- .../GhostRoles/{Specter.cs => Phantasm.cs} | 14 ++++++------ Roles/Crewmate/Analyst.cs | 2 +- Roles/Crewmate/CopyCat.cs | 2 +- Roles/Neutral/Mycologist.cs | 2 +- Roles/Neutral/{Phantasm.cs => Specter.cs} | 14 ++++++------ Roles/Neutral/Thanos.cs | 2 +- 22 files changed, 72 insertions(+), 72 deletions(-) rename Roles/AddOns/GhostRoles/{Specter.cs => Phantasm.cs} (87%) rename Roles/Neutral/{Phantasm.cs => Specter.cs} (72%) diff --git a/CustomRoles.cs b/CustomRoles.cs index b149ce51c..f4634a57b 100644 --- a/CustomRoles.cs +++ b/CustomRoles.cs @@ -345,7 +345,7 @@ public enum CustomRoles Pawn, Pelican, Pestilence, - Phantasm, + Specter, Pickpocket, PlagueBearer, Poisoner, @@ -558,7 +558,7 @@ public enum CustomRoles Onbound, Spurt, Sleep, - Specter, // Ghost role + Phantasm, // Ghost role Physicist, Rascal, Reach, diff --git a/GameMode/CaptureTheFlag.cs b/GameMode/CaptureTheFlag.cs index 99c394c41..4efbde3c5 100644 --- a/GameMode/CaptureTheFlag.cs +++ b/GameMode/CaptureTheFlag.cs @@ -392,7 +392,7 @@ public static class CaptureTheFlag var pc2 = id2.GetPlayer(); if (pc2 == null) continue; - pc2.RpcSetRoleDesync(RoleTypes.Phantom, targetClientId, true); + pc2.RpcSetRoleDesync(RoleTypes.Specter, targetClientId, true); } catch (Exception e) { Utils.ThrowException(e); } } diff --git a/Main.cs b/Main.cs index 88efca61e..a8f583ac8 100644 --- a/Main.cs +++ b/Main.cs @@ -620,7 +620,7 @@ public class Main : BasePlugin { CustomRoles.Virus, "#2E8B57" }, { CustomRoles.Investigator, "#BA55D3" }, { CustomRoles.Pursuer, "#617218" }, - { CustomRoles.Phantasm, "#662962" }, + { CustomRoles.Specter, "#662962" }, { CustomRoles.Jinx, "#ed2f91" }, { CustomRoles.Maverick, "#781717" }, { CustomRoles.Ritualist, "#663399" }, @@ -636,7 +636,7 @@ public class Main : BasePlugin // Ghost roles { CustomRoles.Warden, "#32a852" }, { CustomRoles.Minion, "#ff1919" }, - { CustomRoles.Specter, "#b446e3" }, + { CustomRoles.Phantasm, "#b446e3" }, { CustomRoles.Haunter, "#d1b1de" }, { CustomRoles.Bloodmoon, "#ff1313" }, { CustomRoles.GA, "#8cffff" }, @@ -1092,7 +1092,7 @@ public enum CustomWinner Juggernaut = CustomRoles.Juggernaut, Bandit = CustomRoles.Bandit, Virus = CustomRoles.Virus, - Phantom = CustomRoles.Phantasm, + Specter = CustomRoles.Specter, Jinx = CustomRoles.Jinx, Ritualist = CustomRoles.Ritualist, Pickpocket = CustomRoles.Pickpocket, @@ -1108,7 +1108,7 @@ public enum CustomWinner Doppelganger = CustomRoles.Doppelganger, Pulse = CustomRoles.Pulse, Cherokious = CustomRoles.Cherokious, - Specter = CustomRoles.Specter, + Phantasm = CustomRoles.Phantasm, Coven = CustomRoles.CovenLeader, @@ -1126,7 +1126,7 @@ public enum AdditionalWinners Fox = CustomRoles.Fox, // ------------- - Specter = CustomRoles.Specter, + Phantasm = CustomRoles.Phantasm, Shade = CustomRoles.Shade, Lovers = CustomRoles.Lovers, Executioner = CustomRoles.Executioner, @@ -1139,7 +1139,7 @@ public enum AdditionalWinners Romantic = CustomRoles.Romantic, VengefulRomantic = CustomRoles.VengefulRomantic, Pursuer = CustomRoles.Pursuer, - Phantom = CustomRoles.Phantasm, + Specter = CustomRoles.Specter, Sidekick = CustomRoles.Sidekick, Maverick = CustomRoles.Maverick, Curser = CustomRoles.Curser, diff --git a/Modules/CustomRolesHelper.cs b/Modules/CustomRolesHelper.cs index 033308ed4..c64039da3 100644 --- a/Modules/CustomRolesHelper.cs +++ b/Modules/CustomRolesHelper.cs @@ -333,7 +333,7 @@ internal static class CustomRolesHelper CustomRoles.Butcher => CustomRoles.Impostor, CustomRoles.Hangman => CustomRoles.Shapeshifter, CustomRoles.Sunnyboy => CustomRoles.Scientist, - CustomRoles.Phantasm => Options.PhantomCanVent.GetBool() ? CustomRoles.Engineer : CustomRoles.Crewmate, + CustomRoles.Specter => Options.PhantomCanVent.GetBool() ? CustomRoles.Engineer : CustomRoles.Crewmate, CustomRoles.Judge => CustomRoles.Crewmate, CustomRoles.Councillor => CustomRoles.Impostor, CustomRoles.Mortician => CustomRoles.Crewmate, @@ -1580,7 +1580,7 @@ internal static class CustomRolesHelper CustomRoles.Maverick => RoleOptionType.Neutral_Benign, CustomRoles.Romantic => RoleOptionType.Neutral_Benign, CustomRoles.VengefulRomantic => RoleOptionType.Neutral_Benign, - CustomRoles.Phantasm => RoleOptionType.Neutral_Benign, + CustomRoles.Specter => RoleOptionType.Neutral_Benign, CustomRoles.Provocateur => RoleOptionType.Neutral_Benign, CustomRoles.SoulHunter => RoleOptionType.Neutral_Benign, CustomRoles.Technician => RoleOptionType.Neutral_Benign, diff --git a/Modules/EAC.cs b/Modules/EAC.cs index 6e90cb7f9..62b064143 100644 --- a/Modules/EAC.cs +++ b/Modules/EAC.cs @@ -316,7 +316,7 @@ internal static class EAC case RpcCalls.StartVanish: case RpcCalls.StartAppear: { - string sreason = "Direct Phantom RPCs " + rpc; + string sreason = "Direct Specter RPCs " + rpc; Report(pc, sreason); MessageWriter swriter = AmongUsClient.Instance.StartRpcImmediately(pc.NetId, (byte)RpcCalls.StartAppear, SendOption.Reliable); swriter.Write(false); diff --git a/Modules/GameState.cs b/Modules/GameState.cs index ca5d6495a..63b2b0492 100644 --- a/Modules/GameState.cs +++ b/Modules/GameState.cs @@ -505,7 +505,7 @@ public class TaskState if (GhostRolesManager.AssignedGhostRoles.TryGetValue(player.PlayerId, out (CustomRoles Role, IGhostRole Instance) ghostRole)) { - if (ghostRole is { Role: CustomRoles.Specter, Instance: Specter specter } && CompletedTasksCount + 1 >= AllTasksCount) specter.OnFinishedTasks(player); + if (ghostRole is { Role: CustomRoles.Phantasm, Instance: Phantasm KARTOSHKA } && CompletedTasksCount + 1 >= AllTasksCount) KARTOSHKA.OnFinishedTasks(player); if (ghostRole is { Role: CustomRoles.Haunter, Instance: Haunter haunter }) { diff --git a/Modules/GhostRolesManager.cs b/Modules/GhostRolesManager.cs index 72573c0c2..f21d27cbc 100644 --- a/Modules/GhostRolesManager.cs +++ b/Modules/GhostRolesManager.cs @@ -110,7 +110,7 @@ internal static class GhostRolesManager return suitableRole switch { - CustomRoles.Specter when IsPartnerPickedRole() => false, + CustomRoles.Phantasm when IsPartnerPickedRole() => false, _ => suitableRole.IsGhostRole() && !AssignedGhostRoles.Any(x => x.Key == pc.PlayerId || x.Value.Role == suitableRole) }; diff --git a/Modules/GuessManager.cs b/Modules/GuessManager.cs index 088e9f693..d77afd5f8 100644 --- a/Modules/GuessManager.cs +++ b/Modules/GuessManager.cs @@ -227,7 +227,7 @@ public static class GuessManager ShowMessage("GGGuessMax"); return true; case CustomRoles.Shifter when !Shifter.CanGuess.GetBool(): - case CustomRoles.Phantasm when !Options.PhantomCanGuess.GetBool(): + case CustomRoles.Specter when !Options.PhantomCanGuess.GetBool(): case CustomRoles.Terrorist when !Options.TerroristCanGuess.GetBool(): case CustomRoles.Workaholic when !Workaholic.WorkaholicCanGuess.GetBool(): case CustomRoles.God when !God.GodCanGuess.GetBool(): @@ -298,7 +298,7 @@ public static class GuessManager if (DoubleShot.CheckGuess(pc, isUI)) return true; guesserSuicide = true; break; - case CustomRoles.Phantasm: + case CustomRoles.Specter: ShowMessage("GuessPhantom"); return true; case CustomRoles.Snitch when pc.IsSnitchTarget() && target.GetTaskState().RemainingTasksCount <= Snitch.RemainingTasksToBeFound: diff --git a/Modules/Utils.cs b/Modules/Utils.cs index 178bc7cdd..af768c1c7 100644 --- a/Modules/Utils.cs +++ b/Modules/Utils.cs @@ -971,7 +971,7 @@ public static class Utils case CustomRoles.Opportunist: case CustomRoles.Executioner: case CustomRoles.Lawyer: - case CustomRoles.Phantasm: + case CustomRoles.Specter: case CustomRoles.Duality: if (forRecompute) hasTasks = false; break; @@ -1012,7 +1012,7 @@ public static class Utils case CustomRoles.Bloodlust: hasTasks = false; break; - case CustomRoles.Specter: + case CustomRoles.Phantasm: case CustomRoles.Haunter: hasTasks = !forRecompute; break; @@ -3481,7 +3481,7 @@ public static class Utils Main.PlayerStates[pc.PlayerId].Role.AfterMeetingTasks(); - if (pc.Is(CustomRoles.Specter) || pc.Is(CustomRoles.Haunter)) + if (pc.Is(CustomRoles.Phantasm) || pc.Is(CustomRoles.Haunter)) pc.RpcResetAbilityCooldown(); if (pc.Is(CustomRoles.TaskMaster)) diff --git a/Patches/CheckGameEndPatch.cs b/Patches/CheckGameEndPatch.cs index 088036066..ce913a6f5 100644 --- a/Patches/CheckGameEndPatch.cs +++ b/Patches/CheckGameEndPatch.cs @@ -202,14 +202,14 @@ internal static class GameEndChecker ResetAndSetWinner(CustomWinner.Stalker); WinnerIds.Add(pc.PlayerId); break; - case CustomRoles.Phantasm when pc.GetTaskState().RemainingTasksCount <= 0 && !pc.IsAlive() && Options.PhantomSnatchesWin.GetBool(): + case CustomRoles.Specter when pc.GetTaskState().RemainingTasksCount <= 0 && !pc.IsAlive() && Options.PhantomSnatchesWin.GetBool(): reason = GameOverReason.ImpostorsByKill; - ResetAndSetWinner(CustomWinner.Phantom); + ResetAndSetWinner(CustomWinner.Specter); WinnerIds.Add(pc.PlayerId); break; - case CustomRoles.Phantasm when pc.GetTaskState().RemainingTasksCount <= 0 && !pc.IsAlive() && !Options.PhantomSnatchesWin.GetBool(): + case CustomRoles.Specter when pc.GetTaskState().RemainingTasksCount <= 0 && !pc.IsAlive() && !Options.PhantomSnatchesWin.GetBool(): WinnerIds.Add(pc.PlayerId); - AdditionalWinnerTeams.Add(AdditionalWinners.Phantom); + AdditionalWinnerTeams.Add(AdditionalWinners.Specter); break; case CustomRoles.VengefulRomantic when VengefulRomantic.HasKilledKiller: WinnerIds.Add(pc.PlayerId); @@ -277,12 +277,12 @@ internal static class GameEndChecker } } - byte[] winningSpecters = GhostRolesManager.AssignedGhostRoles.Where(x => x.Value.Instance is Specter { IsWon: true }).Select(x => x.Key).ToArray(); + byte[] winningPhantasm = GhostRolesManager.AssignedGhostRoles.Where(x => x.Value.Instance is Phantasm { IsWon: true }).Select(x => x.Key).ToArray(); - if (winningSpecters.Length > 0) + if (winningPhantasm.Length > 0) { - AdditionalWinnerTeams.Add(AdditionalWinners.Specter); - WinnerIds.UnionWith(winningSpecters); + AdditionalWinnerTeams.Add(AdditionalWinners.Phantasm); + WinnerIds.UnionWith(winningPhantasm); } if (CustomRoles.God.RoleExist()) @@ -446,7 +446,7 @@ internal static class GameEndChecker { switch (state.MainRole) { - case CustomRoles.Phantasm when state.TaskState.RemainingTasksCount <= 0 && state.IsDead: + case CustomRoles.Specter when state.TaskState.RemainingTasksCount <= 0 && state.IsDead: case CustomRoles.VengefulRomantic when VengefulRomantic.HasKilledKiller: case CustomRoles.SchrodingersCat when !state.SubRoles.Any(x => x.IsConverted()): case CustomRoles.Opportunist when !state.IsDead: diff --git a/Patches/IntroPatch.cs b/Patches/IntroPatch.cs index 767e4cb5d..05b72619a 100644 --- a/Patches/IntroPatch.cs +++ b/Patches/IntroPatch.cs @@ -770,7 +770,7 @@ internal static class BeginCrewmatePatch or CustomRoles.NoisemakerEHR or CustomRoles.Markseeker or CustomRoles.Soothsayer - or CustomRoles.Specter + or CustomRoles.Phantasm or CustomRoles.SuperStar or CustomRoles.Sunnyboy => GetIntroSound(RoleTypes.Noisemaker), diff --git a/Patches/OutroPatch.cs b/Patches/OutroPatch.cs index 10c6df788..5a7e147b2 100644 --- a/Patches/OutroPatch.cs +++ b/Patches/OutroPatch.cs @@ -380,8 +380,8 @@ internal static class SetEverythingUpPatch case CustomWinner.Lovers: __instance.BackgroundBar.material.color = Utils.GetRoleColor(CustomRoles.Lovers); break; - case CustomWinner.Specter: - __instance.BackgroundBar.material.color = Utils.GetRoleColor(CustomRoles.Specter); + case CustomWinner.Phantasm: + __instance.BackgroundBar.material.color = Utils.GetRoleColor(CustomRoles.Phantasm); break; case CustomWinner.Draw: __instance.WinText.text = GetString("ForceEnd"); diff --git a/Patches/PhantomRolePatch.cs b/Patches/PhantomRolePatch.cs index cfe2be05b..96e09b0bc 100644 --- a/Patches/PhantomRolePatch.cs +++ b/Patches/PhantomRolePatch.cs @@ -60,7 +60,7 @@ public static class PhantomRolePatch return __instance.AmOwner && CheckTrigger(__instance); // This is assuming that all non-host vanish requests are for ability triggers and should be cancelled } - // Called when Phantom press vanish button when visible + // Called when Specter press vanish button when visible /*[HarmonyPatch(nameof(PlayerControl.CheckVanish))] [HarmonyPrefix] private static bool CheckVanish_Prefix(PlayerControl __instance) @@ -81,14 +81,14 @@ public static class PhantomRolePatch if (AmongUsClient.Instance.ClientId == clientId) { - phantom.SetRole(RoleTypes.Phantom); + phantom.SetRole(RoleTypes.Specter); phantom.CheckVanish(); } else { var writer = CustomRpcSender.Create("PhantomRolePatch.CheckVanish_Prefix", SendOption.Reliable); - writer.RpcSetRole(phantom, RoleTypes.Phantom, clientId); + writer.RpcSetRole(phantom, RoleTypes.Specter, clientId); writer.AutoStartRpc(phantom.NetId, RpcCalls.CheckVanish, clientId); writer.Write(0); // not used, lol @@ -144,7 +144,7 @@ public static class PhantomRolePatch sender.SendMessage(!hasData); } - }, 1.2f, "Set Phantom Invisible"); + }, 1.2f, "Set Specter Invisible"); InvisibilityList.Add(phantom); return true; @@ -215,7 +215,7 @@ public static class PhantomRolePatch foreach (PlayerControl target in Main.AllPlayerControls) { if (!target.IsAlive() || phantom.PlayerId == target.PlayerId || target.AmOwner || !target.HasDesyncRole()) continue; - phantom.RpcSetRoleDesync(RoleTypes.Phantom, target.OwnerId); + phantom.RpcSetRoleDesync(RoleTypes.Specter, target.OwnerId); } LateTask.New(() => @@ -277,7 +277,7 @@ public static class PhantomRolePatch { try { - if (InvisibilityList.Count == 0 || !seer.IsAlive() || seer.Data.Role.Role is RoleTypes.Phantom || seer.AmOwner || !seer.HasDesyncRole()) return; + if (InvisibilityList.Count == 0 || !seer.IsAlive() || seer.Data.Role.Role is RoleTypes.Specter || seer.AmOwner || !seer.HasDesyncRole()) return; foreach (PlayerControl phantom in InvisibilityList) { @@ -298,12 +298,12 @@ public static class PhantomRolePatch if (seer.OwnerId == -1 || phantom == null) yield break; phantom.RpcSetRoleDesync(RoleTypes.Scientist, seer.OwnerId); - // Return Phantom in meeting + // Return Specter in meeting yield return new WaitForSeconds(1f); { if (seer.OwnerId == -1 || phantom == null) yield break; - phantom.RpcSetRoleDesync(RoleTypes.Phantom, seer.OwnerId); + phantom.RpcSetRoleDesync(RoleTypes.Specter, seer.OwnerId); } // Revert invis for phantom diff --git a/Patches/TaskAssignPatch.cs b/Patches/TaskAssignPatch.cs index f42f0f6f9..08cfadede 100644 --- a/Patches/TaskAssignPatch.cs +++ b/Patches/TaskAssignPatch.cs @@ -145,7 +145,7 @@ internal static class RpcSetTasksPatch PlayerControl pc = __instance.Object; if (pc == null) return; - CustomRoles role = GhostRolesManager.AssignedGhostRoles.TryGetValue(pc.PlayerId, out (CustomRoles Role, IGhostRole Instance) gr) && gr.Instance is Specter or Haunter ? gr.Role : pc.GetCustomRole(); + CustomRoles role = GhostRolesManager.AssignedGhostRoles.TryGetValue(pc.PlayerId, out (CustomRoles Role, IGhostRole Instance) gr) && gr.Instance is Phantasm or Haunter ? gr.Role : pc.GetCustomRole(); // Default number of tasks var hasCommonTasks = true; @@ -159,7 +159,7 @@ internal static class RpcSetTasksPatch numLongTasks = data.NumLongTasks.GetInt(); // Number of long tasks to allocate numShortTasks = data.NumShortTasks.GetInt(); // Number of short tasks to allocate // Longs and shorts are constantly reallocated. - if (role is CustomRoles.Specter or CustomRoles.Haunter) Main.PlayerStates[pc.PlayerId].TaskState.AllTasksCount = numLongTasks + numShortTasks; + if (role is CustomRoles.Phantasm or CustomRoles.Haunter) Main.PlayerStates[pc.PlayerId].TaskState.AllTasksCount = numLongTasks + numShortTasks; } if (pc.Is(CustomRoles.Busy)) diff --git a/README.md b/README.md index 48a304567..15c71a5bf 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ You can also report bugs and suggest features in the #bug-reports and #suggestio | Imitator | Mafioso | Pawn | | Loyal | | Insight | Mastermind | Pelican | | Lucky | | Inspector | Nemesis | Pestilence | | Madmate | -| Inquirer | Mercenary | Specter | | Magnet | +| Inquirer | Mercenary | Phantasm | | Magnet | | Inquisitor | Miner | Pickpocket | | Mare | | Jailor | Morphling | Plaguebearer | | Messenger | | Journalist | Ninja | Infection | | Mimic | @@ -144,7 +144,7 @@ You can also report bugs and suggest features in the #bug-reports and #suggestio | Decryptor | Postponer | Quiz Master | | Onbound | | Markseeker | Psychopath | Reckless | | Spurt | | Marshall | Puppeteer | Revolutionist | | Sleep | -| Mathematician | Quick Shooter | Ritualist | | Phantasm | +| Mathematician | Quick Shooter | Ritualist | | Specter | | Mayor | Renegade | Rogue | | Physicist | | Mechanic | Rift Maker | Romantic | | Rascal | | Medic | Saboteur | Room Rusher | | Reach | diff --git a/Resources/Lang/en_US.json b/Resources/Lang/en_US.json index 72d2218cd..e1d501ecc 100644 --- a/Resources/Lang/en_US.json +++ b/Resources/Lang/en_US.json @@ -325,7 +325,7 @@ "Infectious": "Infectious", "Virus": "Virus", "Pursuer": "Pursuer", - "Phantasm": "Specter", + "Specter": "Specter", "Jinx": "Jinx", "Maverick": "Maverick", "Ritualist": "Ritualist", @@ -605,7 +605,7 @@ "InfectiousInfo": "Infect everyone", "VirusInfo": "Kill and infect everyone", "PursuerInfo": "Protect yourself and live to the end!", - "PhantasmInfo": "Get killed and finish your tasks to win!", + "SpecterInfo": "Get killed and finish your tasks to win!", "JinxInfo": "Reflect attacks onto your attackers", "MaverickInfo": "Survive until the end to win", "CursedSoulInfo": "Snatch souls and steal the win", @@ -834,7 +834,7 @@ "JuggernautInfoLong": "(Neutrals):\\nAs the Juggernaut, your kill cooldown decreases with each kill you make.\\n\\nKill everyone to win.", "VirusInfoLong": "(Neutrals):\\nThe virus' goal is to eliminate other players. When a crewmate is killed, their corpse is infected, and the reporting crewmate joins the virus team or dies if the Virus isn't voted out. The Virus team wins if they outnumber the Crewmate team.", "PursuerInfoLong": "(Neutrals):\\nAs the Pursuer, you can use your ability on someone to make them shoot a blank when they try to kill (= reset their kill cooldown).\\n\\nTo win, survive to the end of the game.", - "PhantasmInfoLong": "(Neutrals):\\nAs the Specter, your job is to get killed and finish your tasks. You can do your tasks while alive. You cannot win if you're alive. If you get killed, you win with the winning team if your tasks are completed.", + "SpecterInfoLong": "(Neutrals):\\nAs the Specter, your job is to get killed and finish your tasks. You can do your tasks while alive. You cannot win if you're alive. If you get killed, you win with the winning team if your tasks are completed.", "JinxInfoLong": "(Neutrals):\\nAs the Jinx, whenever you are attacked, you jinx them, resulting in them dying to a jinx. This has limited uses.\\n\\nKill off everyone to win.", "MaverickInfoLong": "(Neutrals):\\nAs the Maverick, you can kill much like a Serial Killer. You win with the winning team rather than alone. If you die, you lose.", "RitualistInfoLong": "(Neutrals):\\nAs the Ritualist, 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.", @@ -9327,11 +9327,11 @@ "WardenAdditionalSpeed": "Additional Speed", "WardenNotifyTarget": "Notify Target About Danger", "Prefix.Warden": "Warden", - "Specter": "Phantasm", - "SpecterInfo": "Finish Tasks to Win!", - "SpecterInfoLong": "(Neutral Ghost):\\nAs the Phantasm, you must finish all of your tasks to win! Depending on a setting, you may also end the game and win alone if you do so!", + "Phantasm": "Phantasm", + "PhantasmInfo": "Finish Tasks to Win!", + "PhantasmInfoLong": "(Neutral Ghost):\\nAs the Phantasm, you must finish all of your tasks to win! Depending on a setting, you may also end the game and win alone if you do so!", "SnatchWin": "Snatches Win (Win With Winning Team if Off)", - "Prefix.Specter": "Phantasm", + "Prefix.Phantasm": "Phantasm", "Bloodmoon": "Bloodmoon", "BloodmoonInfo": "Help the Impostors Kill!", "BloodmoonInfoLong": "(Impostor Ghost):\\nAs the Bloodmoon, you can use your protect button on someone to make them die after a set amount of seconds. They know about this.", @@ -9980,7 +9980,7 @@ "WinnerRoleText.Juggernaut": "Juggernaut Wins!", "WinnerRoleText.Infectious": "Infectious Wins!", "WinnerRoleText.Virus": "Virus Wins!", - "WinnerRoleText.Phantom": "Specter Wins!", + "WinnerRoleText.Specter": "Specter Wins!", "WinnerRoleText.Jinx": "Jinx Wins!", "WinnerRoleText.Ritualist": "Ritualist Wins!", "WinnerRoleText.Pickpocket": "Pickpocket Wins!", @@ -10011,7 +10011,7 @@ "WinnerRoleText.SoulHunter": "Soul Hunter Wins!", "WinnerRoleText.Tiger": "Tiger Wins!", "WinnerRoleText.Beehive": "Beehive Wins!", - "WinnerRoleText.Specter": "Phantasm Wins!", + "WinnerRoleText.Phantasm": "Phantasm Wins!", "WinnerRoleText.Hider": "Hiders Win!", "WinnerRoleText.Seeker": "Seekers Win!", "WinnerRoleText.Taskinator": "Taskinator Wins!", @@ -10031,13 +10031,13 @@ "AdditionalWinnerRoleText.Jester": "The Jester wins along", "AdditionalWinnerRoleText.Lovers": "Lovers win along", "AdditionalWinnerRoleText.Executioner": "Executioner wins along", - "AdditionalWinnerRoleText.Phantom": "Specter wins along", + "AdditionalWinnerRoleText.Specter": "Specter wins along", "AdditionalWinnerRoleText.Maverick": "The Maverick survived", "AdditionalWinnerRoleText.Romantic": "The Romantic wins along", "AdditionalWinnerRoleText.VengefulRomantic": "The Vengeful Romantic avenged their lover", "AdditionalWinnerRoleText.Postman": "The Postman delivered mail to everyone", "AdditionalWinnerRoleText.SoulHunter": "Soul Hunter wins along", - "AdditionalWinnerRoleText.Specter": "Phantasm wins along", + "AdditionalWinnerRoleText.Phantasm": "Phantasm wins along", "AdditionalWinnerRoleText.Shade": "Shade wins along", "AdditionalWinnerRoleText.Default": "{0} wins along", "ErrorEndText": "An error occurred", diff --git a/Roles/AddOns/GhostRoles/Specter.cs b/Roles/AddOns/GhostRoles/Phantasm.cs similarity index 87% rename from Roles/AddOns/GhostRoles/Specter.cs rename to Roles/AddOns/GhostRoles/Phantasm.cs index ec9299967..a6f789eef 100644 --- a/Roles/AddOns/GhostRoles/Specter.cs +++ b/Roles/AddOns/GhostRoles/Phantasm.cs @@ -3,8 +3,8 @@ using EHR.Modules; namespace EHR.AddOns.GhostRoles; -// TOU-R Phantom -internal class Specter : IGhostRole +// TOU Phantom +internal class Phantasm : IGhostRole { private static OptionItem SnatchWin; @@ -29,19 +29,19 @@ internal class Specter : IGhostRole pc.SyncSettings(); pc.RpcResetAbilityCooldown(); Utils.NotifyRoles(SpecifySeer: pc, SpecifyTarget: pc); - }, 1f, "Specter Assign"); + }, 1f, "Phantasm Assign"); } public void OnProtect(PlayerControl pc, PlayerControl target) { } public void SetupCustomOption() { - Options.SetupRoleOptions(649100, TabGroup.OtherRoles, CustomRoles.Specter); + Options.SetupRoleOptions(649100, TabGroup.OtherRoles, CustomRoles.Phantasm); SnatchWin = new BooleanOptionItem(649102, "SnatchWin", false, TabGroup.OtherRoles) - .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Specter]); + .SetParent(Options.CustomRoleSpawnChances[CustomRoles.Phantasm]); - Options.OverrideTasksData.Create(649103, TabGroup.OtherRoles, CustomRoles.Specter); + Options.OverrideTasksData.Create(649103, TabGroup.OtherRoles, CustomRoles.Phantasm); } public void OnFinishedTasks(PlayerControl pc) @@ -53,7 +53,7 @@ internal class Specter : IGhostRole } pc.RPCPlayCustomSound("Congrats"); - CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Specter); + CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Phantasm); CustomWinnerHolder.WinnerIds.Add(pc.PlayerId); } } diff --git a/Roles/Crewmate/Analyst.cs b/Roles/Crewmate/Analyst.cs index 17765dfa7..ec9790c0d 100644 --- a/Roles/Crewmate/Analyst.cs +++ b/Roles/Crewmate/Analyst.cs @@ -75,7 +75,7 @@ internal class Analyst : RoleBase { CustomRoles.Impostor or CustomRoles.ImpostorEHR => Utils.ColorString(Utils.GetRoleColor(CustomRoles.Impostor), GetString("Impostor")), CustomRoles.Shapeshifter or CustomRoles.ShapeshifterEHR => Utils.ColorString(Utils.GetRoleColor(CustomRoles.Speedrunner), GetString("Shapeshifter")), - CustomRoles.Phantom or CustomRoles.PhantomEHR => Utils.ColorString(Utils.GetRoleColor(CustomRoles.Witness), GetString("Phantom")), + CustomRoles.Phantom or CustomRoles.PhantomEHR => Utils.ColorString(Utils.GetRoleColor(CustomRoles.Witness), GetString("Specter")), CustomRoles.Viper or CustomRoles.ViperEHR => Utils.ColorString(Utils.GetRoleColor(CustomRoles.Poisoner), GetString("Viper")), CustomRoles.Crewmate or CustomRoles.CrewmateEHR => Utils.ColorString(Utils.GetRoleColor(CustomRoles.Crewmate), GetString("Crewmate")), CustomRoles.Engineer or CustomRoles.EngineerEHR => Utils.ColorString(Utils.GetRoleColor(CustomRoles.Autocrat), GetString("Engineer")), diff --git a/Roles/Crewmate/CopyCat.cs b/Roles/Crewmate/CopyCat.cs index 6a253980e..797093d67 100644 --- a/Roles/Crewmate/CopyCat.cs +++ b/Roles/Crewmate/CopyCat.cs @@ -146,7 +146,7 @@ public class CopyCat : RoleBase CustomRoles.SerialKiller => CustomRoles.Sheriff, CustomRoles.Maverick => CustomRoles.Vigilante, CustomRoles.Hookshot or CustomRoles.Ninja => new[] {CustomRoles.Tether, CustomRoles.Transmitter}.RandomElement(), - CustomRoles.Hypocrite or CustomRoles.Phantasm => CustomRoles.Speedrunner, + CustomRoles.Hypocrite or CustomRoles.Specter => CustomRoles.Speedrunner, CustomRoles.Bandit => CustomRoles.Cleanser, CustomRoles.Weatherman => CustomRoles.Tornado, _ => role diff --git a/Roles/Neutral/Mycologist.cs b/Roles/Neutral/Mycologist.cs index 02829bc45..bbefd7042 100644 --- a/Roles/Neutral/Mycologist.cs +++ b/Roles/Neutral/Mycologist.cs @@ -16,7 +16,7 @@ internal class Mycologist : RoleBase "VentButtonText", // 0 "SabotageButtonText", // 1 "PetButtonText", // 2 - "AbilityButtonText.Phantom", // 3 + "AbilityButtonText.Specter", // 3 "AbilityButtonText.Shapeshifter" // 4 ]; diff --git a/Roles/Neutral/Phantasm.cs b/Roles/Neutral/Specter.cs similarity index 72% rename from Roles/Neutral/Phantasm.cs rename to Roles/Neutral/Specter.cs index bc147bc6e..3f0440aa2 100644 --- a/Roles/Neutral/Phantasm.cs +++ b/Roles/Neutral/Specter.cs @@ -2,24 +2,24 @@ namespace EHR.Neutral; -internal class Phantasm : RoleBase +internal class Specter : RoleBase { public override bool IsEnable => false; public override void SetupCustomOption() { - SetupRoleOptions(11400, TabGroup.NeutralRoles, CustomRoles.Phantasm); + SetupRoleOptions(11400, TabGroup.NeutralRoles, CustomRoles.Specter); PhantomCanVent = new BooleanOptionItem(11410, "CanVent", false, TabGroup.NeutralRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Phantasm]); + .SetParent(CustomRoleSpawnChances[CustomRoles.Specter]); PhantomSnatchesWin = new BooleanOptionItem(11411, "SnatchesWin", false, TabGroup.NeutralRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Phantasm]); + .SetParent(CustomRoleSpawnChances[CustomRoles.Specter]); PhantomCanGuess = new BooleanOptionItem(11412, "CanGuess", false, TabGroup.NeutralRoles) - .SetParent(CustomRoleSpawnChances[CustomRoles.Phantasm]); + .SetParent(CustomRoleSpawnChances[CustomRoles.Specter]); - OverrideTasksData.Create(11413, TabGroup.NeutralRoles, CustomRoles.Phantasm); + OverrideTasksData.Create(11413, TabGroup.NeutralRoles, CustomRoles.Specter); } public override void Init() { } @@ -30,7 +30,7 @@ internal class Phantasm : RoleBase { if (completedTaskCount + 1 >= totalTaskCount) { - CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Phantom); + CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Specter); CustomWinnerHolder.WinnerIds.Add(pc.PlayerId); } } diff --git a/Roles/Neutral/Thanos.cs b/Roles/Neutral/Thanos.cs index 8fa7d8e23..e91e45423 100644 --- a/Roles/Neutral/Thanos.cs +++ b/Roles/Neutral/Thanos.cs @@ -285,7 +285,7 @@ public class Thanos : RoleBase if (StonesWaitingForUse.Count > 0) { - string action = Translator.GetString(Options.UsePhantomBasis.GetBool() && Options.UsePhantomBasisForNKs.GetBool() ? "AbilityButtonText.Phantom" : Options.UsePets.GetBool() ? "PetButtonText" : "Shapeshift"); + string action = Translator.GetString(Options.UsePhantomBasis.GetBool() && Options.UsePhantomBasisForNKs.GetBool() ? "AbilityButtonText.Specter" : Options.UsePets.GetBool() ? "PetButtonText" : "Shapeshift"); sb.AppendLine(string.Format(Translator.GetString("Thanos.StoneWaitingForUse"), action, Translator.GetString($"Thanos.Stone.{StonesWaitingForUse[0]}"))); }