From 470acb623995b69394569185ac021822d24b088d Mon Sep 17 00:00:00 2001 From: Gurge44 Date: Fri, 11 Jul 2025 21:01:36 +0200 Subject: [PATCH] Android & Submerged compatibility --- GameMode/CaptureTheFlag.cs | 2 +- GameMode/KingOfTheZones.cs | 3 +- GameMode/Quiz.cs | 34 +-- GameMode/RoomRush.cs | 11 + GameMode/Speedrun.cs | 1 + GameMode/TheMindGame.cs | 1 + Main.cs | 6 +- Modules/AFKDetector.cs | 1 + Modules/Achievements.cs | 2 +- Modules/BanManager.cs | 8 +- Modules/CustomNetObject.cs | 10 +- Modules/CustomSabotage.cs | 1 + Modules/Debugger.cs | 4 + Modules/DisableDevice.cs | 2 +- Modules/ErrorText.cs | 2 +- Modules/ExtendedPlayerControl.cs | 6 + Modules/GuessManager.cs | 8 +- Modules/OptionHolder.cs | 4 + Modules/PrivateTagManager.cs | 2 +- Modules/RPC.cs | 15 +- Modules/SpamManager.cs | 2 +- Modules/TemplateManager.cs | 2 +- Modules/Translator.cs | 6 +- Modules/Utils.cs | 11 +- Patches/ChatCommandPatch.cs | 4 +- Patches/ClientPatch.cs | 18 ++ Patches/DeconSystemPatch.cs | 2 +- Patches/DleksPatch.cs | 15 +- Patches/ExilePatch.cs | 4 +- Patches/GameOptionsMenuPatch.cs | 1 + Patches/GameStartManagerPatch.cs | 6 +- Patches/HudPatch.cs | 6 +- Patches/IntroPatch.cs | 14 ++ Patches/LightSourcePatch.cs | 2 + Patches/MapPickerMenuPatch.cs | 132 ++++++++---- Patches/OnGameStartedPatch.cs | 7 +- Patches/PlayerControlPatch.cs | 6 + Patches/RandomSpawnPatch.cs | 31 +++ Patches/SabotageSystemPatch.cs | 4 +- Patches/ShipStatusPatch.cs | 6 +- Patches/TextBoxPatch.cs | 2 + Patches/UsablesPatch.cs | 36 ++++ Resources/Images/Submerged-Wordart.png | Bin 0 -> 49248 bytes Resources/Images/SubmergedBanner.png | Bin 0 -> 138617 bytes Resources/Lang/en_US.json | 16 +- Roles/AddOns/Common/Allergic.cs | 2 +- Roles/Crewmate/CameraMan.cs | 1 + Roles/Impostor/Abyssbringer.cs | 3 +- Roles/Impostor/Wiper.cs | 15 +- Roles/Neutral/Amnesiac.cs | 6 +- Roles/Neutral/Bargainer.cs | 1 + Roles/Neutral/Chemist.cs | 3 +- Roles/Neutral/Mario.cs | 2 +- Roles/Neutral/Pelican.cs | 5 +- Roles/Neutral/RoomRusher.cs | 30 ++- SubmergedCompatibility.cs | 287 +++++++++++++++++++++++++ nuget.config | 1 + 57 files changed, 696 insertions(+), 116 deletions(-) create mode 100644 Resources/Images/Submerged-Wordart.png create mode 100644 Resources/Images/SubmergedBanner.png create mode 100644 SubmergedCompatibility.cs diff --git a/GameMode/CaptureTheFlag.cs b/GameMode/CaptureTheFlag.cs index a7bdab9c5..5d050aae4 100644 --- a/GameMode/CaptureTheFlag.cs +++ b/GameMode/CaptureTheFlag.cs @@ -235,7 +235,7 @@ public static class CaptureTheFlag if (!ValidTag) return false; - switch (aapc.Length) + switch (aapc.Length + ExtendedPlayerControl.TempExiled.Count) { case 0: ResetSkins(); diff --git a/GameMode/KingOfTheZones.cs b/GameMode/KingOfTheZones.cs index b9ad34cf1..99fe8801a 100644 --- a/GameMode/KingOfTheZones.cs +++ b/GameMode/KingOfTheZones.cs @@ -236,6 +236,7 @@ public static class KingOfTheZones AllRooms.Remove(SystemTypes.Outside); AllRooms.Remove(SystemTypes.Ventilation); AllRooms.RemoveWhere(x => x.ToString().Contains("Decontamination")); + if (SubmergedCompatibility.IsSubmerged()) AllRooms.RemoveWhere(x => (byte)x > 135); Zones = DefaultZones[Main.CurrentMap][NumZones.GetInt() - 1]; @@ -582,7 +583,7 @@ public static class KingOfTheZones if (!Main.IntroDestroyed) return false; - switch (aapc.Length) + switch (aapc.Length + ExtendedPlayerControl.TempExiled.Count) { case 0: { diff --git a/GameMode/Quiz.cs b/GameMode/Quiz.cs index 0e3b308eb..9eff3bdd4 100644 --- a/GameMode/Quiz.cs +++ b/GameMode/Quiz.cs @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Linq; -using AmongUs.GameOptions; using EHR.Modules; using HarmonyLib; using UnityEngine; @@ -162,6 +161,8 @@ public static class Quiz if (FFAEndTS == 0) { + int numPlayers = Main.AllAlivePlayerControls.Length; + if (QuestionTimeLimitEndTS != 0) { string answers = string.Empty; @@ -190,7 +191,8 @@ public static class Quiz if (index != -1) question = question.Insert(index + 1, "\n"); } - return $"<#ffff44>{question}\n{answers}<#CF2472>{QuestionTimeLimitEndTS - Utils.TimeStamp}"; + string invis = numPlayers <= 3 && CurrentDifficulty > Difficulty.Test ? $"\n<#888888>{GetString("Quiz.Suffix.Invisible")}" : string.Empty; + return $"<#ffff44>{question}\n{answers}<#CF2472>{QuestionTimeLimitEndTS - Utils.TimeStamp}{invis}"; } string correctAnswer = CurrentQuestion.Answers[CurrentQuestion.CorrectAnswerIndex]; @@ -199,7 +201,6 @@ public static class Quiz string color = DyingPlayers.Contains(seer.PlayerId) ? "#FF0000" : "#00FF00"; string str = string.Format(GetString("Quiz.Notify.CorrectAnswer"), color, correctAnswerLetter, correctAnswer, correctRoom); - int numPlayers = Main.AllAlivePlayerControls.Length; if (DyingPlayers.Count == numPlayers) str += "\n" + GetString(numPlayers <= 3 ? "Quiz.Notify.AllWrongShort" : "Quiz.Notify.AllWrong"); if (CurrentDifficulty > Difficulty.Test && Settings[CurrentDifficulty].QuestionsAsked.GetInt() <= QuestionsAsked) @@ -348,6 +349,11 @@ public static class Quiz if (Main.CurrentMap is MapNames.Skeld or MapNames.Dleks) time -= 3; QuestionTimeLimitEndTS = Utils.TimeStamp + time; + PlayerControl[] aapc = Main.AllAlivePlayerControls; + + if (aapc.Length is 3 or 2 && CurrentDifficulty > Difficulty.Test) + aapc.Do(x => x.RpcMakeInvisible()); + Logger.Info($"New question: {CurrentQuestion.Question} | {string.Join(", ", CurrentQuestion.Answers)} | {CurrentQuestion.Answers[CurrentQuestion.CorrectAnswerIndex]}", "Quiz"); Logger.Info($"Time limit: {time}", "Quiz"); } @@ -439,7 +445,7 @@ public static class Quiz Logger.Info($"Number of correct answers for everyone currently: {string.Join(", ", NumCorrectAnswers.Select(x => $"{Main.AllPlayerNames.GetValueOrDefault(x.Key, string.Empty)}: {x.Value[CurrentDifficulty][Round]}"))}", "Quiz"); if (everyoneWasWrong) QuestionsAsked--; - else Utils.NotifyRoles(); + Utils.NotifyRoles(); yield return new WaitForSeconds(everyoneWasWrong ? aapc.Length <= 3 ? 4f : 6f : 3f); if (GameStates.IsMeeting || ExileController.Instance || !GameStates.InGame || GameStates.IsLobby) yield break; @@ -468,27 +474,22 @@ public static class Quiz yield break; case 1: var pc = dyingPlayers[0].GetPlayer(); - if (pc != null) pc.Suicide(); + if (pc == null) goto case 0; + pc.RpcMakeVisible(); + pc.Suicide(); goto case 0; case var x when x == aapc.Length: Round--; NumCorrectAnswers.Values.Do(d => d[CurrentDifficulty][Round] = 0); goto case 0; default: + if (aapc.Length is 3 or 2) aapc.Do(x => x.RpcMakeVisible()); yield return new WaitForSeconds(2f); AllowKills = true; FFAEndTS = Utils.TimeStamp + FFAEventLength.GetInt(); var spectators = aapc.ExceptBy(dyingPlayers, x => x.PlayerId).ToArray(); - - foreach (PlayerControl spectator in spectators) - { - spectator.RpcExileV2(); - spectator.RpcSetRoleDesync(RoleTypes.GuardianAngel, spectator.OwnerId); - } - + spectators.Do(x => x.ExileTemporarily()); yield return new WaitForSeconds(0.2f); - spectators.Do(x => x.RpcResetAbilityCooldown()); - Main.PlayerStates.Values.IntersectBy(spectators.Select(x => x.PlayerId), x => x.Player.PlayerId).Do(x => x.SetDead()); var stillLiving = dyingPlayers.ToValidPlayers().FindAll(x => x.IsAlive()); stillLiving.ForEach(x => x.RpcChangeRoleBasis(CustomRoles.NSerialKiller)); Utils.SendRPC(CustomRPC.QuizSync, AllowKills); @@ -507,13 +508,13 @@ public static class Quiz Utils.SendRPC(CustomRPC.QuizSync, AllowKills); var location = RandomSpawn.SpawnMap.GetSpawnMap().Positions.IntersectBy(UsedRooms[Main.CurrentMap].Values, x => x.Key).RandomElement().Value; - PlayerControl ffaSurvivor = stillLiving[0]; - + switch (stillLiving.Count) { case 0: break; case 1: + PlayerControl ffaSurvivor = stillLiving[0]; ffaSurvivor.RpcChangeRoleBasis(CustomRoles.QuizPlayer); ffaSurvivor.TP(location); break; @@ -579,6 +580,7 @@ public static class Quiz SystemTypes correctRoom = UsedRooms[Main.CurrentMap][(char)('A' + CurrentQuestion.CorrectAnswerIndex)]; DyingPlayers = Main.AllAlivePlayerControls.Select(x => (ID: x.PlayerId, Room: x.GetPlainShipRoom())).Where(x => correctRoom == SystemTypes.Outside ? x.Room != null : x.Room == null || x.Room.RoomId != correctRoom).Select(x => x.ID).ToList(); QuestionTimeLimitEndTS = 0; + Utils.NotifyRoles(); } else Main.Instance.StartCoroutine(EndQuestion()); diff --git a/GameMode/RoomRush.cs b/GameMode/RoomRush.cs index a62f50a47..60a934823 100644 --- a/GameMode/RoomRush.cs +++ b/GameMode/RoomRush.cs @@ -103,6 +103,13 @@ public static class RoomRush [(SystemTypes.MiningPit, SystemTypes.Storage)] = 2, [(SystemTypes.MiningPit, SystemTypes.Dropship)] = 2, [(SystemTypes.MiningPit, SystemTypes.Comms)] = 2 + }, + [(MapNames)6] = new() + { + [(SystemTypes.Admin, SystemTypes.Lounge)] = 2, + [(SystemTypes.Comms, SystemTypes.Medical)] = 2, + [((SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Research, SystemTypes.Medical)] = 3, + [((SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast, SystemTypes.Security)] = 2 } }; @@ -188,6 +195,7 @@ public static class RoomRush AllRooms.Remove(SystemTypes.Outside); AllRooms.Remove(SystemTypes.Ventilation); AllRooms.RemoveWhere(x => x.ToString().Contains("Decontamination")); + if (SubmergedCompatibility.IsSubmerged()) AllRooms.RemoveWhere(x => (byte)x > 135); DonePlayers = []; Points = []; @@ -313,6 +321,7 @@ public static class RoomRush MapNames.Polus => SystemTypes.Dropship, MapNames.Airship => SystemTypes.MainHall, MapNames.Fungle => SystemTypes.Dropship, + (MapNames)6 => (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.UpperCentral, _ => throw new ArgumentOutOfRangeException(map.ToString(), "Invalid map") }; @@ -330,6 +339,7 @@ public static class RoomRush { MapNames.MiraHQ => previous is SystemTypes.Laboratory or SystemTypes.Reactor ^ RoomGoal is SystemTypes.Laboratory or SystemTypes.Reactor, MapNames.Polus => previous == SystemTypes.Specimens || RoomGoal == SystemTypes.Specimens, + (MapNames)6 => (previous == (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast) ^ (RoomGoal == (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast), _ => false }; @@ -341,6 +351,7 @@ public static class RoomRush : Options.DecontaminationTimeOnMiraHQ.GetInt() + Options.DecontaminationDoorOpenTimeOnMiraHQ.GetInt() : 6; + if (SubmergedCompatibility.IsSubmerged()) decontaminationTime = 3; time += decontaminationTime + 3; } diff --git a/GameMode/Speedrun.cs b/GameMode/Speedrun.cs index a246972cf..8d66aef01 100644 --- a/GameMode/Speedrun.cs +++ b/GameMode/Speedrun.cs @@ -58,6 +58,7 @@ public static class Speedrun { int timer = TimeLimit.GetInt(); if (Main.CurrentMap is MapNames.Airship or MapNames.Fungle) timer += 5; + if (SubmergedCompatibility.IsSubmerged()) timer *= 2; if (TimeStacksUp.GetBool()) Timers[pc.PlayerId] += timer; diff --git a/GameMode/TheMindGame.cs b/GameMode/TheMindGame.cs index 07de62dc9..2821ee14e 100644 --- a/GameMode/TheMindGame.cs +++ b/GameMode/TheMindGame.cs @@ -266,6 +266,7 @@ public static class TheMindGame if (currentMap is MapNames.Fungle) AllRooms.Remove(SystemTypes.FishingDock); if (currentMap is MapNames.Fungle) AllRooms.Remove(SystemTypes.Greenhouse); AllRooms.RemoveAll(x => x.ToString().Contains("Decontamination")); + if (SubmergedCompatibility.IsSubmerged()) AllRooms.RemoveAll(x => (byte)x > 135); PlayerControl[] aapc = Main.AllAlivePlayerControls; Points = aapc.ToDictionary(x => x.PlayerId, _ => 0); diff --git a/Main.cs b/Main.cs index ff173c473..bfda8c10c 100644 --- a/Main.cs +++ b/Main.cs @@ -30,6 +30,7 @@ namespace EHR; [BepInIncompatibility("MalumMenu")] [BepInIncompatibility("com.ten.thebetterroles")] [BepInIncompatibility("xyz.crowdedmods.crowdedmod")] +[BepInDependency(SubmergedCompatibility.SubmergedGuid, BepInDependency.DependencyFlags.SoftDependency)] [BepInProcess("Among Us.exe")] [SuppressMessage("Interoperability", "CA1416:Validate platform compatibility")] public class Main : BasePlugin @@ -55,7 +56,7 @@ public class Main : BasePlugin public const string ForkId = "EHR"; public const string SupportedAUVersion = "2025.4.15"; - public const string DataPath = + public static readonly string DataPath = #if ANDROID Application.persistentDataPath; #else @@ -811,6 +812,9 @@ public class Main : BasePlugin try { DevManager.StartFetchingTags(); } catch (Exception e) { Utils.ThrowException(e); } + try { SubmergedCompatibility.Initialize(); } + catch (Exception e) { Utils.ThrowException(e); } + Logger.Msg("========= EHR loaded! =========", "Plugin Load"); Logger.Msg($"EHR Version: {PluginVersion}, Test Build: {TestBuild}", "Plugin Load"); }; diff --git a/Modules/AFKDetector.cs b/Modules/AFKDetector.cs index 28002153f..dbadf588a 100644 --- a/Modules/AFKDetector.cs +++ b/Modules/AFKDetector.cs @@ -91,6 +91,7 @@ public static class AFKDetector case Data.Phase.Detection: data.CurrentPhase = Data.Phase.Warning; data.Timer = 15f; + Utils.NotifyRoles(SpecifyTarget: pc); if (pc.IsAlive() && !MeetingStates.FirstMeeting) pc.FixBlackScreen(); break; case Data.Phase.Warning: diff --git a/Modules/Achievements.cs b/Modules/Achievements.cs index 767142296..fd3dd0850 100644 --- a/Modules/Achievements.cs +++ b/Modules/Achievements.cs @@ -109,7 +109,7 @@ public static class Achievements ItsJustAPrankBro // As Bomber, Kill half the lobby in 1 bomb } - private const string SaveFilePath = $"{Main.DataPath}/EHR_DATA/Achievements.json"; + private static readonly string SaveFilePath = $"{Main.DataPath}/EHR_DATA/Achievements.json"; private const string ApiBaseUrl = "https://gurge44.pythonanywhere.com/achievements"; private const string ApiSaveEndpoint = $"{ApiBaseUrl}/save"; diff --git a/Modules/BanManager.cs b/Modules/BanManager.cs index 9bf54118c..47bd850f7 100644 --- a/Modules/BanManager.cs +++ b/Modules/BanManager.cs @@ -15,10 +15,10 @@ namespace EHR; public static class BanManager { - private const string DenyNameListPath = $"{Main.DataPath}/EHR_DATA/DenyName.txt"; - private const string BanListPath = $"{Main.DataPath}/EHR_DATA/BanList.txt"; - private const string ModeratorListPath = $"{Main.DataPath}/EHR_DATA/Moderators.txt"; - private const string WhiteListListPath = $"{Main.DataPath}/EHR_DATA/WhiteList.txt"; + private static readonly string DenyNameListPath = $"{Main.DataPath}/EHR_DATA/DenyName.txt"; + private static readonly string BanListPath = $"{Main.DataPath}/EHR_DATA/BanList.txt"; + private static readonly string ModeratorListPath = $"{Main.DataPath}/EHR_DATA/Moderators.txt"; + private static readonly string WhiteListListPath = $"{Main.DataPath}/EHR_DATA/WhiteList.txt"; private static readonly List EACList = []; public static readonly List TempBanWhiteList = []; // To prevent writing to the banlist diff --git a/Modules/CustomNetObject.cs b/Modules/CustomNetObject.cs index 9b6fa4ab8..67619ea80 100644 --- a/Modules/CustomNetObject.cs +++ b/Modules/CustomNetObject.cs @@ -4,6 +4,7 @@ using System.Linq; using AmongUs.InnerNet.GameDataMessages; using EHR; using EHR.Crewmate; +using EHR.Impostor; using EHR.Modules; using HarmonyLib; using Hazel; @@ -44,7 +45,7 @@ namespace EHR string skinId = PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].SkinId; string petId = PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].PetId; string visorId = PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].VisorId; - var sender = CustomRpcSender.Create("SetFakeData", this is BedWarsItemGenerator ? SendOption.None : SendOption.Reliable, log: false); + var sender = CustomRpcSender.Create("CustomNetObject.RpcChangeSprite", this is BedWarsItemGenerator ? SendOption.None : SendOption.Reliable, log: false); MessageWriter writer = sender.stream; sender.StartMessage(); PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].PlayerName = "
" + sprite; @@ -218,7 +219,7 @@ namespace EHR string skinId = PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].SkinId; string petId = PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].PetId; string visorId = PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].VisorId; - var sender = CustomRpcSender.Create("SetFakeData", SendOption.Reliable, log: false); + var sender = CustomRpcSender.Create("CustomNetObject.CreateNetObject", SendOption.Reliable, log: false); MessageWriter writer = sender.stream; sender.StartMessage(); PlayerControl.LocalPlayer.Data.Outfits[PlayerOutfitType.Default].PlayerName = "
" + sprite; @@ -270,7 +271,7 @@ namespace EHR LateTask.New(() => { - var sender = CustomRpcSender.Create("SetFakeData", SendOption.Reliable, log: false); + var sender = CustomRpcSender.Create("CustomNetObject.CreateNetObject (2)", SendOption.Reliable, log: false); MessageWriter writer = sender.stream; sender.StartMessage(pc.OwnerId); writer.StartMessage(1); @@ -326,7 +327,8 @@ namespace EHR { if (!(Options.IntegrateNaturalDisasters.GetBool() && Options.CurrentGameMode != CustomGameMode.NaturalDisasters)) TempDespawnedObjects = AllObjects.ToList(); - + + if (Abyssbringer.ShouldDespawnCNOOnMeeting) TempDespawnedObjects.RemoveAll(x => x is BlackHole); Reset(); } diff --git a/Modules/CustomSabotage.cs b/Modules/CustomSabotage.cs index 13cf864a9..450fd1f20 100644 --- a/Modules/CustomSabotage.cs +++ b/Modules/CustomSabotage.cs @@ -112,6 +112,7 @@ public class GrabOxygenMaskSabotage : CustomSabotage MapNames.Polus => SystemTypes.Specimens, MapNames.Airship => SystemTypes.Medical, MapNames.Fungle => SystemTypes.Kitchen, + (MapNames)6 => (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Filtration, _ => SystemTypes.Outside }; diff --git a/Modules/Debugger.cs b/Modules/Debugger.cs index 7ad1b795b..a44184a40 100644 --- a/Modules/Debugger.cs +++ b/Modules/Debugger.cs @@ -230,6 +230,9 @@ public class CustomLogger """; Builder.Append(logEntry); +#if DEBUG + Finish(false); +#endif } private IEnumerator InactivityCheck() @@ -250,5 +253,6 @@ public class CustomLogger if (dump) append += HtmlFooter; File.AppendAllText(LOGFilePath, append); PrivateInstance = null; + if (dump) Main.Instance.StopCoroutine(InactivityCheck()); } } \ No newline at end of file diff --git a/Modules/DisableDevice.cs b/Modules/DisableDevice.cs index dbffbc6c1..3d579f4c7 100644 --- a/Modules/DisableDevice.cs +++ b/Modules/DisableDevice.cs @@ -45,7 +45,7 @@ internal static class DisableDevice MapNames.Dleks => 1.5f, MapNames.Airship => 1.8f, MapNames.Fungle => 1.8f, - _ => 0.0f + _ => 2f }; public static void FixedUpdate() diff --git a/Modules/ErrorText.cs b/Modules/ErrorText.cs index f23e38c7b..851a4ea18 100644 --- a/Modules/ErrorText.cs +++ b/Modules/ErrorText.cs @@ -197,7 +197,7 @@ public enum ErrorCode // 002 Support related UnsupportedVersion = 002_000_3, // 002-000-1 AmongUs version is outdated - UnsupportedMap = 002_000_2, // 002-000-2 Unsupported Map + UnsupportedMap = 002_000_1, // 002-000-1 Unsupported Map // ========== // 000 Test diff --git a/Modules/ExtendedPlayerControl.cs b/Modules/ExtendedPlayerControl.cs index 1c3c7301c..9f003766a 100644 --- a/Modules/ExtendedPlayerControl.cs +++ b/Modules/ExtendedPlayerControl.cs @@ -261,8 +261,12 @@ internal static class ExtendedPlayerControl if (init) Main.PlayerStates[player.PlayerId].InitTask(player); } + public static HashSet TempExiled = []; + public static void ExileTemporarily(this PlayerControl pc) { + if (!TempExiled.Add(pc.PlayerId)) return; + pc.Exiled(); Main.PlayerStates[pc.PlayerId].SetDead(); @@ -341,6 +345,7 @@ internal static class ExtendedPlayerControl return; } + TempExiled.Remove(player.PlayerId); GhostRolesManager.RemoveGhostRole(player.PlayerId); Main.PlayerStates[player.PlayerId].IsDead = false; Main.PlayerStates[player.PlayerId].deathReason = PlayerState.DeathReason.etc; @@ -652,6 +657,7 @@ internal static class ExtendedPlayerControl MapNames.Skeld or MapNames.Dleks when room != null => true, MapNames.Polus when overlapPointNonAlloc >= 1 => true, MapNames.Polus when pos.y is >= -26.11f and <= -6.41f && pos.x is >= 3.56f and <= 32.68f => true, + (MapNames)6 => true, _ => false }; } diff --git a/Modules/GuessManager.cs b/Modules/GuessManager.cs index 854985cbf..65d157c6e 100644 --- a/Modules/GuessManager.cs +++ b/Modules/GuessManager.cs @@ -93,6 +93,12 @@ public static class GuessManager return true; } + if (!Options.CanGuessDuringDiscussionTime.GetBool() && MeetingHud.Instance && MeetingHud.Instance.state is MeetingHud.VoteStates.Discussion or MeetingHud.VoteStates.Animating) + { + ShowMessage("GuessDuringDiscussion"); + return true; + } + if (pc.Is(CustomRoles.Decryptor) && Decryptor.GuessMode.GetValue() == 2) goto SkipCheck; if ((pc.IsCrewmate() && !Options.CrewmatesCanGuess.GetBool()) || @@ -1069,7 +1075,7 @@ public static class GuessManager if (AmongUsClient.Instance.AmHost) { - HashSet guessers = Main.AllPlayerControls.Where(x => CanGuess(x, false)).Select(x => x.PlayerId).ToHashSet(); + HashSet guessers = Main.AllAlivePlayerControls.Where(x => CanGuess(x, false)).Select(x => x.PlayerId).ToHashSet(); LateTask.New(() => guessers.Do(x => Utils.SendMessage(GetString("YouCanGuess"), x, GetString("YouCanGuessTitle"))), 12f, log: false); } } diff --git a/Modules/OptionHolder.cs b/Modules/OptionHolder.cs index 42d2cd135..0da5d0359 100644 --- a/Modules/OptionHolder.cs +++ b/Modules/OptionHolder.cs @@ -337,6 +337,7 @@ public static class Options public static OptionItem ReportBaitAtAllCost; public static OptionItem GuesserDoesntDieOnMisguess; + public static OptionItem CanGuessDuringDiscussionTime; public static OptionItem GuesserMaxKillsPerMeeting; public static OptionItem GuesserMaxKillsPerGame; @@ -2658,6 +2659,9 @@ public static class Options GuesserDoesntDieOnMisguess = new BooleanOptionItem(19718, "GuesserDoesntDieOnMisguess", false, TabGroup.TaskSettings) .SetGameMode(CustomGameMode.Standard); + CanGuessDuringDiscussionTime = new BooleanOptionItem(19799, "CanGuessDuringDiscussionTime", true, TabGroup.TaskSettings) + .SetGameMode(CustomGameMode.Standard); + LoadingPercentage = 92; MainLoadingText = "Building game settings"; diff --git a/Modules/PrivateTagManager.cs b/Modules/PrivateTagManager.cs index 36da9f432..e402375d2 100644 --- a/Modules/PrivateTagManager.cs +++ b/Modules/PrivateTagManager.cs @@ -6,7 +6,7 @@ namespace EHR.Modules; public static class PrivateTagManager { - private const string TagFile = $"{Main.DataPath}/EHR_DATA/tags.txt"; + private static readonly string TagFile = $"{Main.DataPath}/EHR_DATA/tags.txt"; public static Dictionary Tags = []; public static void AddTag(string friendcode, string tag) diff --git a/Modules/RPC.cs b/Modules/RPC.cs index e65b8b313..7107d06cd 100644 --- a/Modules/RPC.cs +++ b/Modules/RPC.cs @@ -136,8 +136,18 @@ public enum CustomRPC SyncRomanticTarget, SyncVengefulRomanticTarget, SetRevealedPlayer, - SetCurrentRevealTarget, - SetDoomsayerProgress, + SetCurrentRevealTarget = 209, + + /* + * SUBMERGED RPCs + * 210 - SetCustomData + * 211 - RequestChangeFloor + * 212 - AcknowledgeChangeFloor + * 213 - EngineVent + * 214 - OxygenDeath + */ + + SetDoomsayerProgress = 215, SetTrackerTarget, RpcPassBomb, SetAlchemistTimer, @@ -229,6 +239,7 @@ internal static class RPCHandlerPatch private static bool TrustedRpc(byte id) { + if (SubmergedCompatibility.IsSubmerged() && id is >= 120 and <= 124) return true; return (CustomRPC)id is CustomRPC.VersionCheck or CustomRPC.RequestRetryVersionCheck or CustomRPC.AntiBlackout or CustomRPC.SyncNameNotify or CustomRPC.RequestSendMessage or CustomRPC.RequestCommandProcessing or CustomRPC.Judge or CustomRPC.SetNiceSwapperVotes or CustomRPC.MeetingKill or CustomRPC.Guess or CustomRPC.MafiaRevenge or CustomRPC.BAU or CustomRPC.FFAKill or CustomRPC.TMGSync or CustomRPC.ParityCopCommand; } diff --git a/Modules/SpamManager.cs b/Modules/SpamManager.cs index 1cb494d4a..ca9410cb0 100644 --- a/Modules/SpamManager.cs +++ b/Modules/SpamManager.cs @@ -12,7 +12,7 @@ namespace EHR; public static class SpamManager { - private const string BannedWordsFilePath = $"{Main.DataPath}/EHR_DATA/BanWords.txt"; + private static readonly string BannedWordsFilePath = $"{Main.DataPath}/EHR_DATA/BanWords.txt"; private static List BanWords = []; public static void Init() diff --git a/Modules/TemplateManager.cs b/Modules/TemplateManager.cs index bee20ba0c..a017b318a 100644 --- a/Modules/TemplateManager.cs +++ b/Modules/TemplateManager.cs @@ -16,7 +16,7 @@ namespace EHR; public static class TemplateManager { - private const string TemplateFilePath = $"{Main.DataPath}/EHR_DATA/template.txt"; + private static readonly string TemplateFilePath = $"{Main.DataPath}/EHR_DATA/template.txt"; private static readonly Dictionary> ReplaceDictionary = new() { diff --git a/Modules/Translator.cs b/Modules/Translator.cs index 1dfacce4e..08fa3e2ed 100644 --- a/Modules/Translator.cs +++ b/Modules/Translator.cs @@ -120,6 +120,9 @@ public static class Translator public static string GetString(string s, Dictionary replacementDic = null, bool console = false) { + if (SubmergedCompatibility.IsSubmerged() && int.TryParse(s, out int roomNumber) && roomNumber is >= 128 and <= 135) + s = $"SubmergedRoomName.{roomNumber}"; + SupportedLangs langId = TranslationController.InstanceExists ? TranslationController.Instance.currentLanguage.languageID : SupportedLangs.English; if (console) langId = SupportedLangs.English; @@ -167,8 +170,9 @@ public static class Translator { #if ANDROID return TranslationController.Instance.GetString(stringName); -#endif +#else return FastDestroyableSingleton.Instance.GetString(stringName, new Il2CppReferenceArray(0)); +#endif } public static string GetRoleString(string str, bool forUser = true) diff --git a/Modules/Utils.cs b/Modules/Utils.cs index a7e6b7f89..ce601a2f8 100644 --- a/Modules/Utils.cs +++ b/Modules/Utils.cs @@ -153,12 +153,13 @@ public static class Utils { PlayerControl pc = nt.myPlayer; var sendOption = SendOption.Reliable; + bool submerged = SubmergedCompatibility.IsSubmerged(); if (!noCheckState) { if (pc.Is(CustomRoles.AntiTP)) return false; - if (pc.inVent || pc.inMovingPlat || pc.onLadder || !pc.IsAlive() || pc.MyPhysics.Animations.IsPlayingAnyLadderAnimation() || pc.MyPhysics.Animations.IsPlayingEnterVentAnimation()) + if (pc.inVent || pc.inMovingPlat || pc.onLadder || !pc.IsAlive() || pc.MyPhysics.Animations.IsPlayingAnyLadderAnimation() || pc.MyPhysics.Animations.IsPlayingEnterVentAnimation() || (submerged && pc.IsLocalPlayer() && SubmergedCompatibility.GetInTransition())) { if (log) Logger.Warn($"Target ({pc.GetNameWithRole().RemoveHtmlTags()}) is in an un-teleportable state - Teleporting canceled", "TP"); return false; @@ -209,6 +210,14 @@ public static class Utils CheckInvalidMovementPatch.LastPosition[pc.PlayerId] = location; CheckInvalidMovementPatch.ExemptedPlayers.Add(pc.PlayerId); + AFKDetector.TempIgnoredPlayers.Add(pc.PlayerId); + LateTask.New(() => AFKDetector.TempIgnoredPlayers.Remove(pc.PlayerId), 0.2f + CalculatePingDelay(), log: false); + + if (submerged) + { + SubmergedCompatibility.ChangeFloor(pc.PlayerId, pc.transform.position.y > -7); + SubmergedCompatibility.CheckOutOfBoundsElevator(pc); + } if (sendOption == SendOption.Reliable) NumSnapToCallsThisRound++; return true; diff --git a/Patches/ChatCommandPatch.cs b/Patches/ChatCommandPatch.cs index 16b653804..6c0bd0e65 100644 --- a/Patches/ChatCommandPatch.cs +++ b/Patches/ChatCommandPatch.cs @@ -237,7 +237,7 @@ internal static class ChatCommands if (LastModFileUpdate + 5 > now) { friendCodes = ModsFileCache; } else { - const string friendCodesFilePath = $"{Main.DataPath}/EHR_DATA/Moderators.txt"; + var friendCodesFilePath = $"{Main.DataPath}/EHR_DATA/Moderators.txt"; if (!File.Exists(friendCodesFilePath)) { @@ -265,7 +265,7 @@ internal static class ChatCommands if (LastVIPFileUpdate + 5 > now) { friendCodes = VIPsFileCache; } else { - const string friendCodesFilePath = $"{Main.DataPath}/EHR_DATA/VIPs.txt"; + var friendCodesFilePath = $"{Main.DataPath}/EHR_DATA/VIPs.txt"; if (!File.Exists(friendCodesFilePath)) { diff --git a/Patches/ClientPatch.cs b/Patches/ClientPatch.cs index 3674dbbc1..95d8bb7ae 100644 --- a/Patches/ClientPatch.cs +++ b/Patches/ClientPatch.cs @@ -173,6 +173,23 @@ internal static class AuthTimeoutPatch // If you don't patch this, you still need to wait for 5 s. // I have no idea why this is happening +#if ANDROID + [HarmonyPatch(typeof(AmongUsClient._CoJoinOnlinePublicGame_d__50), nameof(AmongUsClient._CoJoinOnlinePublicGame_d__50.MoveNext))] + [HarmonyPrefix] + public static void EnableUdpMatchmakingPrefix(AmongUsClient._CoJoinOnlinePublicGame_d__50 __instance) + { + // Skip to state 1, which just calls CoJoinOnlineGameDirect + if (__instance.__1__state == 0 && !ServerManager.Instance.IsHttp) + { + __instance.__1__state = 1; + + __instance.__8__1 = new() + { + matchmakerToken = string.Empty + }; + } + } +#else [HarmonyPatch(typeof(AmongUsClient._CoJoinOnlinePublicGame_d__49), nameof(AmongUsClient._CoJoinOnlinePublicGame_d__49.MoveNext))] [HarmonyPrefix] public static void EnableUdpMatchmakingPrefix(AmongUsClient._CoJoinOnlinePublicGame_d__49 __instance) @@ -188,4 +205,5 @@ internal static class AuthTimeoutPatch }; } } +#endif } \ No newline at end of file diff --git a/Patches/DeconSystemPatch.cs b/Patches/DeconSystemPatch.cs index 6088382aa..00468121f 100644 --- a/Patches/DeconSystemPatch.cs +++ b/Patches/DeconSystemPatch.cs @@ -7,7 +7,7 @@ public static class DeconSystemUpdateSystemPatch { public static void Prefix(DeconSystem __instance) { - if (!AmongUsClient.Instance.AmHost) return; + if (!AmongUsClient.Instance.AmHost || SubmergedCompatibility.IsSubmerged()) return; if (Options.ChangeDecontaminationTime.GetBool()) { diff --git a/Patches/DleksPatch.cs b/Patches/DleksPatch.cs index 4c63ff5e6..5a5fb2ebb 100644 --- a/Patches/DleksPatch.cs +++ b/Patches/DleksPatch.cs @@ -32,6 +32,15 @@ internal static class AllMapIconsPatch dleksIcon.MapImage = Utils.LoadSprite("EHR.Resources.Images.DleksBanner.png", 100f); dleksIcon.NameImage = Utils.LoadSprite("EHR.Resources.Images.DleksBanner-Wordart.png", 100f); __instance.AllMapIcons.Add(dleksIcon); + + if (SubmergedCompatibility.Loaded) + { + MapIconByName submergedIcon = Object.Instantiate(__instance, __instance.gameObject.transform).AllMapIcons[0]; + submergedIcon.Name = (MapNames)6; + submergedIcon.MapImage = Utils.LoadSprite("EHR.Resources.Images.SubmergedBanner.png", 100f); + submergedIcon.NameImage = Utils.LoadSprite("EHR.Resources.Images.Submerged-Wordart.png", 100f); + __instance.AllMapIcons.Add(submergedIcon); + } } catch (Exception e) { Utils.ThrowException(e); } } @@ -56,7 +65,7 @@ public static class DleksPatch } // removed dleks check as it's always false - int num2 = Mathf.Clamp(GameOptionsManager.Instance.CurrentGameOptions.MapId, 0, Constants.MapNames.Length - 1); + int num2 = GameOptionsManager.Instance.CurrentGameOptions.MapId == 6 && SubmergedCompatibility.Loaded && SubmergedCompatibility.IsSupported(Options.CurrentGameMode) ? 6 : Mathf.Clamp(GameOptionsManager.Instance.CurrentGameOptions.MapId, 0, Constants.MapNames.Length - 1); __instance.__2__current = __instance.__4__this.ShipLoadingAsyncHandle = __instance.__4__this.ShipPrefabs[num2].InstantiateAsync(); __instance.__1__state = 1; @@ -118,7 +127,7 @@ public static class VentSetButtonsPatch } [HarmonyPatch(typeof(Vent), nameof(Vent.TryMoveToVent))] -internal class VentTryMoveToVentPatch +internal static class VentTryMoveToVentPatch { // Update arrows buttons when player move to vents private static void Postfix(Vent __instance, [HarmonyArgument(0)] Vent otherVent) @@ -132,7 +141,7 @@ internal class VentTryMoveToVentPatch } [HarmonyPatch(typeof(Vent), nameof(Vent.UpdateArrows))] -internal class VentUpdateArrowsPatch +internal static class VentUpdateArrowsPatch { // Fixes "Index was outside the bounds of the array" errors when arrows updates in vent on Dleks map private static bool Prefix() diff --git a/Patches/ExilePatch.cs b/Patches/ExilePatch.cs index 0117220dd..5861e40de 100644 --- a/Patches/ExilePatch.cs +++ b/Patches/ExilePatch.cs @@ -15,7 +15,7 @@ internal static class ExileControllerWrapUpPatch { public static NetworkedPlayerInfo LastExiled; - private static void WrapUpPostfix(NetworkedPlayerInfo exiled) + public static void WrapUpPostfix(NetworkedPlayerInfo exiled) { var decidedWinner = false; if (!AmongUsClient.Instance.AmHost) return; @@ -112,7 +112,7 @@ internal static class ExileControllerWrapUpPatch }, 2.5f, "AfterPlayerDeathTasks For Exiled Player"); } - private static void WrapUpFinalizer() + public static void WrapUpFinalizer() { // Even if an exception occurs in WrapUpPostfix, this part will be executed reliably. diff --git a/Patches/GameOptionsMenuPatch.cs b/Patches/GameOptionsMenuPatch.cs index 135c69cda..941ff6bc7 100644 --- a/Patches/GameOptionsMenuPatch.cs +++ b/Patches/GameOptionsMenuPatch.cs @@ -1124,6 +1124,7 @@ public static class GameSettingMenuPatch Vector3 gameSettingsLabelPos = gameSettingsLabel.transform.localPosition; CustomGameMode[] gms = Enum.GetValues()[..^1]; + if (Main.NormalOptions.MapId == 6 && SubmergedCompatibility.Loaded) gms = gms.Where(SubmergedCompatibility.IsSupported).ToArray(); int totalCols = Mathf.Max(1, Mathf.CeilToInt(gms.Length / 5f)); GMButtons = []; diff --git a/Patches/GameStartManagerPatch.cs b/Patches/GameStartManagerPatch.cs index 71feee5c2..872ac84bb 100644 --- a/Patches/GameStartManagerPatch.cs +++ b/Patches/GameStartManagerPatch.cs @@ -194,8 +194,9 @@ public static class GameStartManagerPatch CreateOptionsPickerPatch.SetDleks = Main.CurrentMap == MapNames.Dleks; } else if (CreateOptionsPickerPatch.SetDleks) Main.NormalOptions.MapId = 3; + else if (CreateOptionsPickerPatch.SetSubmerged) Main.NormalOptions.MapId = 6; - if (Main.CurrentMap == MapNames.Dleks) + if (Main.CurrentMap == MapNames.Dleks || Main.NormalOptions.MapId == 6) { var opt = Main.NormalOptions.CastFast(); @@ -233,7 +234,7 @@ public static class GameStartManagerPatch try { instance.UpdateMapImage((MapNames)GameManager.Instance.LogicOptions.MapId); } catch (Exception e) { - if (GameManager.Instance.LogicOptions.MapId >= Enum.GetValues().Length) + if (GameManager.Instance.LogicOptions.MapId >= Enum.GetValues().Length && !(GameManager.Instance.LogicOptions.MapId == 6 && SubmergedCompatibility.Loaded && SubmergedCompatibility.IsSupported(Options.CurrentGameMode))) ErrorText.Instance.AddError(ErrorCode.UnsupportedMap); Utils.ThrowException(e); @@ -541,6 +542,7 @@ public static class GameStartRandomMap CreateOptionsPickerPatch.SetDleks = Main.CurrentMap == MapNames.Dleks; } else if (CreateOptionsPickerPatch.SetDleks) Main.NormalOptions.MapId = 3; + else if (CreateOptionsPickerPatch.SetSubmerged) Main.NormalOptions.MapId = 6; } public static byte SelectRandomMap() diff --git a/Patches/HudPatch.cs b/Patches/HudPatch.cs index 08c72c66d..ef5e96e5f 100644 --- a/Patches/HudPatch.cs +++ b/Patches/HudPatch.cs @@ -667,6 +667,8 @@ internal static class SabotageMapPatch public static void Postfix(InfectedOverlay __instance) { + if (SubmergedCompatibility.IsSubmerged()) return; + float perc = __instance.sabSystem.PercentCool; int total = __instance.sabSystem.initialCooldown ? 10 : 30; if (SabotageSystemTypeRepairDamagePatch.IsCooldownModificationEnabled) total = (int)SabotageSystemTypeRepairDamagePatch.ModifiedCooldownSec; @@ -709,7 +711,7 @@ internal static class MapRoomDoorsUpdatePatch public static bool Prefix(MapRoom __instance) { - if (!__instance.door || !ShipStatus.Instance) return false; + if (!__instance.door || !ShipStatus.Instance || SubmergedCompatibility.IsSubmerged()) return false; SystemTypes room = __instance.room; @@ -958,7 +960,7 @@ internal static class TaskPanelBehaviourPatch else { finalText += Main.AllPlayerControls - .Select(x => (pc: x, points_string: RoomRush.GetPoints(x.PlayerId), points_int: int.Parse(RoomRush.GetPoints(x.PlayerId).Split('/')[0]))) + .Select(x => (pc: x, points_string: RoomRush.GetPoints(x.PlayerId), points_int: int.TryParse(RoomRush.GetPoints(x.PlayerId).Split('/')[0], out int points) ? points : 0)) .OrderByDescending(x => x.points_int) .Aggregate("", (s, x) => $"{s}\r\n{x.pc.PlayerId.ColoredPlayerName()} - {x.points_string}"); } diff --git a/Patches/IntroPatch.cs b/Patches/IntroPatch.cs index 0f8d97253..7f718d5a2 100644 --- a/Patches/IntroPatch.cs +++ b/Patches/IntroPatch.cs @@ -14,6 +14,19 @@ namespace EHR; // Patch for non-host modded clients to ensure that the intro cutscene is shown correctly // and GameStates.InGame is set to true +#if ANDROID +[HarmonyPatch(typeof(IntroCutscene._ShowRole_d__40), nameof(IntroCutscene._ShowRole_d__40.MoveNext))] +static class ShowRoleMoveNextPatchAndroid +{ + public static void Postfix(IntroCutscene._ShowRole_d__40 __instance, ref bool __result) + { + if (AmongUsClient.Instance.AmHost || __instance.__1__state != 1 || !__result) return; + + GameStates.InGame = true; + SetUpRoleTextPatch.Postfix(__instance.__4__this); + } +} +#else [HarmonyPatch(typeof(IntroCutscene._ShowRole_d__41), nameof(IntroCutscene._ShowRole_d__41.MoveNext))] static class ShowRoleMoveNextPatch { @@ -25,6 +38,7 @@ static class ShowRoleMoveNextPatch SetUpRoleTextPatch.Postfix(__instance.__4__this); } } +#endif // For some reason, IntroCutScene.ShowRole is not called in the base game with this exact same code, // so we need to patch HudManager.CoShowIntro for the host entirely to ensure that the intro is shown correctly diff --git a/Patches/LightSourcePatch.cs b/Patches/LightSourcePatch.cs index 4b52ea0b6..73c9c4207 100644 --- a/Patches/LightSourcePatch.cs +++ b/Patches/LightSourcePatch.cs @@ -14,6 +14,7 @@ internal static class LightSourceUpdatePatch public static bool Prefix(LightSource __instance) { + if (SubmergedCompatibility.IsSubmerged()) return true; Vector3 position = __instance.transform.position; position.z -= 7f; __instance.UpdateFlashlightAngle(); @@ -40,6 +41,7 @@ internal static class LightSourceGpuRendererPatch public static bool Prefix(LightSourceGpuRenderer __instance, [HarmonyArgument(0)] float effectiveRadius) { + if (SubmergedCompatibility.IsSubmerged()) return true; if (!__instance.shadowTexture || !__instance.shadowCasterMaterial) return false; float width = __instance.shadowTexture.width; __instance.shadowCasterMaterial.SetFloat(DepthCompressionValue, effectiveRadius); diff --git a/Patches/MapPickerMenuPatch.cs b/Patches/MapPickerMenuPatch.cs index 68a2c608c..1a8016378 100644 --- a/Patches/MapPickerMenuPatch.cs +++ b/Patches/MapPickerMenuPatch.cs @@ -9,6 +9,9 @@ namespace EHR.Patches; // Thanks: https://github.com/SubmergedAmongUs/Submerged/blob/4a5a6b47cbed526670ae4b7eae76acd7c42e35de/Submerged/UI/Patches/MapSelectButtonPatches.cs#L49 internal static class CreateOptionsPickerPatch { + public static bool SetSubmerged; + private static MapSelectButton SubmergedButton; + public static bool SetDleks; private static MapSelectButton DleksButton; @@ -22,58 +25,108 @@ internal static class CreateOptionsPickerPatch if (SceneManager.GetActiveScene().name == "FindAGame") return; const int dleksPos = 3; + const int submergedPos = 6; MapSelectButton[] AllMapButton = __instance.transform.GetComponentsInChildren(); if (AllMapButton != null) { - GameObject dlekS_ehT = Object.Instantiate(AllMapButton[0].gameObject, __instance.transform); - dlekS_ehT.transform.position = AllMapButton[dleksPos].transform.position; - dlekS_ehT.transform.SetSiblingIndex(dleksPos + 2); - var dlekS_ehT_MapButton = dlekS_ehT.GetComponent(); - DleksButton = dlekS_ehT_MapButton; - - foreach (SpriteRenderer icon in dlekS_ehT_MapButton.MapIcon) + // Dleks Button { - if (icon == null || icon.transform == null) continue; - icon.flipX = true; - } + GameObject dlekS_ehT = Object.Instantiate(AllMapButton[0].gameObject, __instance.transform); + dlekS_ehT.transform.position = AllMapButton[dleksPos].transform.position; + dlekS_ehT.transform.SetSiblingIndex(dleksPos + 2); + var dlekS_ehT_MapButton = dlekS_ehT.GetComponent(); + DleksButton = dlekS_ehT_MapButton; - dlekS_ehT_MapButton.Button.OnClick.RemoveAllListeners(); - - dlekS_ehT_MapButton.Button.OnClick.AddListener((Action)(() => - { - __instance.SelectMap(__instance.AllMapIcons[0]); - - if (__instance.selectedButton) __instance.selectedButton.Button.SelectButton(false); - - __instance.selectedButton = dlekS_ehT_MapButton; - __instance.selectedButton.Button.SelectButton(true); - __instance.selectedMapId = 3; - - Main.NormalOptions.MapId = 0; - - __instance.MapImage.sprite = Utils.LoadSprite("EHR.Resources.Images.DleksBanner.png", 100f); - __instance.MapName.sprite = Utils.LoadSprite("EHR.Resources.Images.DleksBanner-Wordart.png", 100f); - })); - - for (int i = dleksPos; i < AllMapButton.Length; i++) AllMapButton[i].transform.localPosition += new Vector3(0.625f, 0f, 0f); - - if (DleksButton != null) - { - if (SetDleks) + foreach (SpriteRenderer icon in dlekS_ehT_MapButton.MapIcon) { + if (icon == null || icon.transform == null) continue; + icon.flipX = true; + } + + dlekS_ehT_MapButton.Button.OnClick.RemoveAllListeners(); + + dlekS_ehT_MapButton.Button.OnClick.AddListener((Action)(() => + { + __instance.SelectMap(__instance.AllMapIcons[0]); + if (__instance.selectedButton) __instance.selectedButton.Button.SelectButton(false); - DleksButton.Button.SelectButton(true); - __instance.selectedButton = DleksButton; + __instance.selectedButton = dlekS_ehT_MapButton; + __instance.selectedButton.Button.SelectButton(true); __instance.selectedMapId = 3; + Main.NormalOptions.MapId = 0; + __instance.MapImage.sprite = Utils.LoadSprite("EHR.Resources.Images.DleksBanner.png", 100f); __instance.MapName.sprite = Utils.LoadSprite("EHR.Resources.Images.DleksBanner-Wordart.png", 100f); + })); + + for (int i = dleksPos; i < AllMapButton.Length; i++) AllMapButton[i].transform.localPosition += new Vector3(0.625f, 0f, 0f); + + if (DleksButton != null) + { + if (SetDleks) + { + if (__instance.selectedButton) __instance.selectedButton.Button.SelectButton(false); + + DleksButton.Button.SelectButton(true); + __instance.selectedButton = DleksButton; + __instance.selectedMapId = 3; + + __instance.MapImage.sprite = Utils.LoadSprite("EHR.Resources.Images.DleksBanner.png", 100f); + __instance.MapName.sprite = Utils.LoadSprite("EHR.Resources.Images.DleksBanner-Wordart.png", 100f); + } + else + DleksButton.Button.SelectButton(false); + } + } + + // Submerged Button + if (SubmergedCompatibility.Loaded) + { + GameObject submergedButton = Object.Instantiate(AllMapButton[0].gameObject, __instance.transform); + submergedButton.transform.position = AllMapButton[submergedPos].transform.position; + submergedButton.transform.SetSiblingIndex(submergedPos + 2); + var submergedButton_MapButton = submergedButton.GetComponent(); + SubmergedButton = submergedButton_MapButton; + + submergedButton_MapButton.Button.OnClick.RemoveAllListeners(); + + submergedButton_MapButton.Button.OnClick.AddListener((Action)(() => + { + __instance.SelectMap(__instance.AllMapIcons[6]); + + if (__instance.selectedButton) __instance.selectedButton.Button.SelectButton(false); + + __instance.selectedButton = submergedButton_MapButton; + __instance.selectedMapId = 6; + + Main.NormalOptions.MapId = 6; + + __instance.MapImage.sprite = Utils.LoadSprite("EHR.Resources.Images.SubmergedBanner.png", 100f); + __instance.MapName.sprite = Utils.LoadSprite("EHR.Resources.Images.SubmergedBanner-Wordart.png", 100f); + })); + + for (var i = 0; i < submergedPos; i++) AllMapButton[i].transform.localPosition += new Vector3(-0.625f, 0f, 0f); + + if (SubmergedButton != null) + { + if (SetSubmerged) + { + if (__instance.selectedButton) __instance.selectedButton.Button.SelectButton(false); + + SubmergedButton.Button.SelectButton(true); + __instance.selectedButton = SubmergedButton; + __instance.selectedMapId = 6; + + __instance.MapImage.sprite = Utils.LoadSprite("EHR.Resources.Images.SubmergedBanner.png", 100f); + __instance.MapName.sprite = Utils.LoadSprite("EHR.Resources.Images.SubmergedBanner-Wordart.png", 100f); + } + else + SubmergedButton.Button.SelectButton(false); } - else - DleksButton.Button.SelectButton(false); } } } @@ -86,6 +139,7 @@ internal static class CreateOptionsPickerPatch if (__instance.MapName == null) return false; if (DleksButton != null) SetDleks = __instance.selectedMapId == 3; + if (SubmergedButton != null) SetSubmerged = __instance.selectedMapId == 6; if (__instance.selectedMapId == 3) { @@ -103,10 +157,12 @@ internal static class CreateOptionsPickerPatch } [HarmonyPatch(typeof(CreateOptionsPicker), nameof(CreateOptionsPicker.Awake))] - private class MenuMapPickerPatch + private static class MenuMapPickerPatch { public static void Postfix(CreateOptionsPicker __instance) { + if (SubmergedCompatibility.Loaded) return; + Transform mapPickerTransform = __instance.transform.Find("MapPicker"); var mapPickerMenu = mapPickerTransform.Find("Map Picker Menu").GetComponent(); diff --git a/Patches/OnGameStartedPatch.cs b/Patches/OnGameStartedPatch.cs index af39fe7c4..1a6d858dc 100644 --- a/Patches/OnGameStartedPatch.cs +++ b/Patches/OnGameStartedPatch.cs @@ -173,7 +173,7 @@ internal static class ChangeRoleSettings RoleTypes.Tracker }.Do(x => Main.NormalOptions.roleOptions.SetRoleRate(x, 0, 0)); - if (Main.NormalOptions.MapId > 5) + if (Main.NormalOptions.MapId > 5 && !(Main.NormalOptions.MapId == 6 && SubmergedCompatibility.Loaded)) { Logger.SendInGame(GetString("UnsupportedMap"), Color.red); ErrorText.Instance.AddError(ErrorCode.UnsupportedMap); @@ -545,7 +545,7 @@ internal static class StartGameHostPatch if (!ShipStatus.Instance) { - int index = Mathf.Clamp(GameOptionsManager.Instance.CurrentGameOptions.MapId, 0, Constants.MapNames.Length - 1); + int index = GameOptionsManager.Instance.CurrentGameOptions.MapId == 6 && SubmergedCompatibility.Loaded && SubmergedCompatibility.IsSupported(Options.CurrentGameMode) ? 6 : Mathf.Clamp(GameOptionsManager.Instance.CurrentGameOptions.MapId, 0, Constants.MapNames.Length - 1); AUClient.ShipLoadingAsyncHandle = AUClient.ShipPrefabs[index].InstantiateAsync(); while (!AUClient.ShipLoadingAsyncHandle.IsDone) @@ -560,6 +560,7 @@ internal static class StartGameHostPatch GameObject result = AUClient.ShipLoadingAsyncHandle.Result; ShipStatus.Instance = result.GetComponent(); AUClient.Spawn(ShipStatus.Instance); + Logger.Info($"Successfully spawned ShipStatus for map {GameOptionsManager.Instance.CurrentGameOptions.MapId} ({Constants.MapNames[GameOptionsManager.Instance.CurrentGameOptions.MapId]})", "StartGameHost"); } try @@ -1048,6 +1049,8 @@ internal static class StartGameHostPatch pc.Data.SendGameData(); } + Logger.Info("Successfully set everyone's data as Disconnected", "StartGameHost"); + LoadingBarManager loadingBarManager = FastDestroyableSingleton.Instance; yield return loadingBarManager.WaitAndSmoothlyUpdate(90f, 100f, 1f, GetString("LoadingBarText.1")); loadingBarManager.ToggleLoadingBar(false); diff --git a/Patches/PlayerControlPatch.cs b/Patches/PlayerControlPatch.cs index 34f14a2ce..4f8429ce0 100644 --- a/Patches/PlayerControlPatch.cs +++ b/Patches/PlayerControlPatch.cs @@ -1074,6 +1074,12 @@ internal static class ReportDeadBodyPatch Notify("TargetDisregarded"); return false; } + + if (__instance.Is(CustomRoles.Oblivious)) + { + Notify("AmOblivious"); + return false; + } } if (Options.SyncButtonMode.GetBool() && target == null) diff --git a/Patches/RandomSpawnPatch.cs b/Patches/RandomSpawnPatch.cs index b77884c40..b57bee8c4 100644 --- a/Patches/RandomSpawnPatch.cs +++ b/Patches/RandomSpawnPatch.cs @@ -114,6 +114,7 @@ internal abstract class RandomSpawn MapNames.Dleks => new DleksSpawnMap(), MapNames.Airship => new AirshipSpawnMap(), MapNames.Fungle => new FungleSpawnMap(), + (MapNames)6 => new SubmergedSpawnMap(), _ => throw new ArgumentOutOfRangeException(nameof(Main.CurrentMap), Main.CurrentMap, "Invalid map") }; } @@ -282,4 +283,34 @@ internal abstract class RandomSpawn return positions.ToArray().OrderBy(_ => Guid.NewGuid()).Take(1).FirstOrDefault(); } } + + public class SubmergedSpawnMap : SpawnMap + { + public readonly Dictionary positions = new() + { + [(SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Filtration] = new(8.51f, -21.13f), + [SystemTypes.Electrical] = new(10.8f, -27.15f), + [SystemTypes.Storage] = new(2.55f, -34.73f), + [(SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.LowerLobby] = new(6.53f, -39.44f), + [(SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast] = new(-8.26f, -39.84f), + [SystemTypes.Security] = new(-4.23f, -33.38f), + [SystemTypes.Engine] = new(-12.58f, -27.83f), + [SystemTypes.Admin] = new(-9.96f, 10.95f), + [(SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Observatory] = new(-12.39f, 17.78f), + [SystemTypes.Lounge] = new(-6.43f, 14.11f), + [SystemTypes.MeetingRoom] = new(-1.85f, 12.32f), + [SystemTypes.Cafeteria] = new(-8.57f, 25.47f), + [(SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Research] = new(0.96f, 29.84f), + [SystemTypes.Medical] = new(6.17f, 31.38f), + [SystemTypes.Comms] = new(11.03f, 23.53f), + [(SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.UpperLobby] = new(7.72f, 8.66f) + }; + + public override Dictionary Positions => positions; + + protected override KeyValuePair GetLocation() + { + return positions.ToArray().OrderBy(_ => Guid.NewGuid()).Take(1).FirstOrDefault(); + } + } } \ No newline at end of file diff --git a/Patches/SabotageSystemPatch.cs b/Patches/SabotageSystemPatch.cs index 5f39fd241..d00ac7b7b 100644 --- a/Patches/SabotageSystemPatch.cs +++ b/Patches/SabotageSystemPatch.cs @@ -378,6 +378,8 @@ public static class SabotageSystemTypeRepairDamagePatch newReader.Recycle(); } + if (SubmergedCompatibility.IsSubmerged()) return CheckSabotage(__instance, player, systemTypes); + if (Options.EnableCustomSabotages.GetBool()) { if (Options.EnableGrabOxygenMaskCustomSabotage.GetBool() && systemTypes == SystemTypes.Comms) @@ -529,7 +531,7 @@ public static class SecurityCameraPatch [HarmonyPatch(typeof(ShipStatus), nameof(ShipStatus.RepairCriticalSabotages))] internal static class ShipStatusRepairCriticalSabotagesPatch { - public static void Postfix(ShipStatus __instance) + public static void Postfix() { CustomSabotage.Reset(); } diff --git a/Patches/ShipStatusPatch.cs b/Patches/ShipStatusPatch.cs index 4bfe28b98..87019087f 100644 --- a/Patches/ShipStatusPatch.cs +++ b/Patches/ShipStatusPatch.cs @@ -94,6 +94,8 @@ internal static class RepairSystemPatch if ((Options.CurrentGameMode != CustomGameMode.Standard || Options.DisableSabotage.GetBool()) && systemType == SystemTypes.Sabotage) return false; if (player.Is(CustomRoles.Fool) && systemType is SystemTypes.Comms or SystemTypes.Electrical) return false; + if (SubmergedCompatibility.IsSubmerged() && systemType is not (SystemTypes.Electrical or SystemTypes.Comms)) return true; + switch (player.GetCustomRole()) { case CustomRoles.SabotageMaster: @@ -171,7 +173,8 @@ internal static class RepairSystemPatch break; } - case SystemTypes.Sabotage when AmongUsClient.Instance.NetworkMode != NetworkModes.FreePlay: { return SabotageSystemTypeRepairDamagePatch.CheckSabotage(null, player, systemType); } + case SystemTypes.Sabotage when AmongUsClient.Instance.NetworkMode != NetworkModes.FreePlay: + return SabotageSystemTypeRepairDamagePatch.CheckSabotage(null, player, systemType); case SystemTypes.Security when amount == 1: { bool camerasDisabled = (MapNames)Main.NormalOptions.MapId switch @@ -468,6 +471,7 @@ internal static class ShipStatusSerializePatch { if (!AmongUsClient.Instance.AmHost) return; if (initialState) return; + if (SubmergedCompatibility.IsSubmerged()) return; var cancel = false; diff --git a/Patches/TextBoxPatch.cs b/Patches/TextBoxPatch.cs index b9884f0d0..212e69ba6 100644 --- a/Patches/TextBoxPatch.cs +++ b/Patches/TextBoxPatch.cs @@ -287,6 +287,7 @@ public static class TextBoxPatch catch { } } +#if !ANDROID [HarmonyPatch(nameof(TextBoxTMP.Update))] [HarmonyPrefix] public static bool UpdatePatch(TextBoxTMP __instance) @@ -310,6 +311,7 @@ public static class TextBoxPatch return false; } +#endif [HarmonyPatch(nameof(TextBoxTMP.IsCharAllowed))] [HarmonyPrefix] diff --git a/Patches/UsablesPatch.cs b/Patches/UsablesPatch.cs index 5a8f62a8a..baf78781b 100644 --- a/Patches/UsablesPatch.cs +++ b/Patches/UsablesPatch.cs @@ -52,6 +52,42 @@ internal static class CanUseVentPatch // always true for engineer-based roles couldUse = playerControl.CanUseImpostorVentButton() || (pc.Role.Role == RoleTypes.Engineer && pc.Role.CanUse(__instance.CastFast())); + if (SubmergedCompatibility.IsSubmerged()) // From TheOtherRoles + { + // As submerged does, only change stuff for vents 9 and 14 of submerged. Code partially provided by AlexejheroYTB + if (SubmergedCompatibility.GetInTransition()) + { + __result = float.MaxValue; + return canUse = couldUse = false; + } + + switch (__instance.Id) + { + case 9: // Cannot enter vent 9 (Engine Room Exit Only Vent)! + { + if (playerControl.inVent) break; + __result = float.MaxValue; + return canUse = couldUse = false; + } + case 14: // Lower Central + { + __result = float.MaxValue; + couldUse = couldUse && !pc.IsDead && (playerControl.CanMove || playerControl.inVent); + canUse = couldUse; + + if (canUse) + { + Vector3 center = playerControl.Collider.bounds.center; + Vector3 position = __instance.transform.position; + __result = Vector2.Distance(center, position); + canUse &= __result <= __instance.UsableDistance; + } + + return false; + } + } + } + canUse = couldUse; // Not available if custom roles are not available if (!canUse) return false; diff --git a/Resources/Images/Submerged-Wordart.png b/Resources/Images/Submerged-Wordart.png new file mode 100644 index 0000000000000000000000000000000000000000..f6627f02529074a99e9e0735a7f002e5ea4e3614 GIT binary patch literal 49248 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 O0000`E{5*V-(_)h}C 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

NPa#&E|&f4vW{?eov55?r2hP&-;fd8P!- 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 literal 0 HcmV?d00001 diff --git a/Resources/Lang/en_US.json b/Resources/Lang/en_US.json index 616e75c4a..bd89f27f1 100644 --- a/Resources/Lang/en_US.json +++ b/Resources/Lang/en_US.json @@ -929,6 +929,7 @@ "LadderDeath": "Fall From Ladders", "LadderDeathChance": "Fall To Death Chance", "GuesserDoesntDieOnMisguess": "Guesser Doesn't Die on Misguess", + "CanGuessDuringDiscussionTime": "Guessers Can Guess During Discussion Time", "YouCanGuessTitle": "<#00ffff>You can guess!", "YouCanGuess": "Use the /bt [player id] [role] command to guess someone's role. You can see everyone's IDs next to their name, or type /id.", "DisableTasks": "Disable Tasks", @@ -1819,6 +1820,7 @@ "PlayerWasRevived": "The player whose body you tried to report was revived", "HypnosisNoMeeting": "Everyone is in hypnosis, no meeting calls are allowed currently", "TargetDisregarded": "The player whose body you tried to report is <#FF6347>Disregarded", + "AmOblivious": "You are Oblivious, meaning you cannot report bodies", "ShipHasNoMoreMeetingsLeft": "The ship has no more emergency meetings left", "UnreportableBody": "This body is unreportable due to a role-specific action", "CheckMurderFail": "<#ff0000>The murder was canceled due to the following reason:\\n", @@ -2110,6 +2112,7 @@ "GodNoticeAlive": "During the meeting, each player felt a revelation from heaven, and it turned out that God is still alive!", "WorkaholicAdviceAlive": "It's not recommended to kill or vote {0} out. Doing so will help them finish their tasks quicker.", "GuessDead": "Sorry, but it's impossible to guess roles after your death", + "GuessDuringDiscussion": "According to the host's settings, you cannot guess during discussion time.", "GuessSuperStar": "The Super Star can't be guessed.... you thought it would be that easy, right?", "GuessNotifiedBait": "Bait can't be guessed because it was announced, you thought it would be that easy, right?", "GuessGM": "Guessing the GM is impossible because they're already dead.... And why would you do that to the poor Host?", @@ -2884,7 +2887,7 @@ "ERR-000-804-1": "EHR does not support the Vanilla HnS, so unloaded.", "ERR-001-000-3": "Main dictionary has duplicated keys.", "ERR-002-000-3": "Your Among Us version is outdated.", - "ERR-002-000-2": "You're using an unsupported map, i.e. Submerged.", + "ERR-002-000-1": "This game mode is incompatible with the current map.", "FixBlackScreenWaitForDead": "Everyone is alive, and the black screen fix requires a ghost, so it will wait until someone dies.", "DraftNotEnoughRoles": "There are not enough roles enabled to choose from, so drafting cannot be started. Please enable more roles and try again.", "DraftStart": "Drafting has started! You now have a chance to pick a role from the list below if you'd like to get one of them for the next game. The roles you get to choose from, with their indexes, are:\\n\\n{0}\\n\\nChat commands to use:\\n- Pick role: /draft [index]\\n- View description of role: /dd [index]\\nReplace [index] with the number of the role you want to pick. Example: /draft 4\\nIf you don't pick a role, you get a random one like you normally would.", @@ -5153,6 +5156,7 @@ "Bedwars.BedStatus.Broken": "<#ff0000>BED DESTROYED!\\nYou will no longer respawn!", "Bedwars.BedStatus.EnemyBroken": "{0}'s bed has been destroyed!", "Bedwars.HudText.GracePeriodLeft": "Grace period ends\\nin <#ffff44>{0} seconds", + "BedWars.InventorySlotsOption": "Number of Inventory Slots", "BedWars.SpeedPotionDurationOption": "Speed Potion Duration", "BedWars.InvisPotionDurationOption": "Invisibility Potion Duration", "BedWars.ReviveTimeOption": "Revive Time", @@ -5216,6 +5220,7 @@ "Quiz.Notify.FFAOngoing": "<#ffff00>Kill everyone and survive\\nHint: Someone is in {0}\\n<#ffa500>{1}", "Quiz.Notify.FFASpectating": "<#00ffff>Spectate the chaos!\\n<#00a5ff>{1}", "Quiz.Notify.CorrectAnswerNum": "You got {0}/{1} questions correct! The required amount was {2}.", + "Quiz.Suffix.Invisible": "You cannot see where other people go\\nOther people cannot see where you go", "Quiz.TaskBarText": "---- GAME DATA ----\\n\\nDifficulty: {0}\\nRound: {1}\\nQuestion: {2}\\n\\nNumber of correct answers\\nfrom everyone so far:\\n\\n{3}", "Quiz.EndResults.CorrectAnswerNum": "Correct Answers: ", "Quiz.Questions.Test.0": "Which map are we on?", @@ -9063,6 +9068,7 @@ "RememberedLover": "You remembered you were a Lover!", "RememberButtonText": "Remember", "CanRememberCrewPower": "Can Remember <#8cffff>Crewmate <#fbff00>Power Roles", + "ReportBodyAfterRemember": "After remembering a role by reporting, report the body", "IncompatibleNeutralMode": "If neutral is incompatible, turn into", "ImmuneToAttacksWhenTasksDone": "Immune to attacks on task completion", "TwisterCooldown": "Twist Cooldown", @@ -9686,6 +9692,14 @@ "AutoGMRotationStatusText.NextGM": "Next", "AutoGMRotationStatusText.GMPoll": "Player Vote (/gmpoll)", "AutoGMRotationStatusText.CooldownTimer": "Jumping to the next game mode on the list in {0} seconds", + "SubmergedRoomName.128": "Research", + "SubmergedRoomName.129": "Observatory", + "SubmergedRoomName.130": "Upper Central", + "SubmergedRoomName.131": "Upper Lobby", + "SubmergedRoomName.132": "Filtration", + "SubmergedRoomName.133": "Ballast", + "SubmergedRoomName.134": "Lower Central", + "SubmergedRoomName.135": "Lower Lobby", "ModLanguage": "Mod Language", "UseGameLanguage": "Use Game Language", "Hungarian": "Hungarian", diff --git a/Roles/AddOns/Common/Allergic.cs b/Roles/AddOns/Common/Allergic.cs index 6a47a9396..5191b4264 100644 --- a/Roles/AddOns/Common/Allergic.cs +++ b/Roles/AddOns/Common/Allergic.cs @@ -49,7 +49,7 @@ public class Allergic : IAddon public static void OnFixedUpdate(PlayerControl pc) { - if (Main.HasJustStarted || ExileController.Instance) return; + if (Main.HasJustStarted || !Main.IntroDestroyed || ExileController.Instance || AntiBlackout.SkipTasks) return; if (!AllergicPlayers.TryGetValue(pc.PlayerId, out byte targetId)) return; diff --git a/Roles/Crewmate/CameraMan.cs b/Roles/Crewmate/CameraMan.cs index e386046bf..afbb2c394 100644 --- a/Roles/Crewmate/CameraMan.cs +++ b/Roles/Crewmate/CameraMan.cs @@ -59,6 +59,7 @@ public class CameraMan : RoleBase MapNames.Dleks => new(-13.5f, -5.5f), MapNames.Airship => new(5.8f, -10.8f), MapNames.Fungle => new(9.5f, 1.2f), + (MapNames)6 => new(-4.23f, -33.38f), _ => throw new NotImplementedException() }; } diff --git a/Roles/Impostor/Abyssbringer.cs b/Roles/Impostor/Abyssbringer.cs index 07c362171..daa641caf 100644 --- a/Roles/Impostor/Abyssbringer.cs +++ b/Roles/Impostor/Abyssbringer.cs @@ -25,6 +25,7 @@ public class Abyssbringer : RoleBase private int Count; public override bool IsEnable => On; + public static bool ShouldDespawnCNOOnMeeting => (DespawnMode)BlackHoleDespawnMode.GetValue() == DespawnMode.AfterMeeting; public override void SetupCustomOption() { @@ -117,7 +118,7 @@ public class Abyssbringer : RoleBase public override void OnReportDeadBody() { - if ((DespawnMode)BlackHoleDespawnMode.GetValue() == DespawnMode.AfterMeeting) + if (ShouldDespawnCNOOnMeeting) { Loop.Times(BlackHoles.Count, i => Utils.SendRPC(CustomRPC.SyncRoleData, AbyssbringerId, 3, i)); diff --git a/Roles/Impostor/Wiper.cs b/Roles/Impostor/Wiper.cs index 86fa1772f..89bfc7e53 100644 --- a/Roles/Impostor/Wiper.cs +++ b/Roles/Impostor/Wiper.cs @@ -75,9 +75,9 @@ public class Wiper : RoleBase switch (Main.CurrentMap) { - case MapNames.Skeld or MapNames.Dleks when room.RoomId == SystemTypes.Cafeteria: { return true; } + case MapNames.Skeld or MapNames.Dleks when room.RoomId == SystemTypes.Cafeteria: + return true; case MapNames.MiraHQ: - { switch (MeetingStates.FirstMeeting, room.RoomId) { case (true, SystemTypes.Launchpad): @@ -86,9 +86,7 @@ public class Wiper : RoleBase } break; - } case MapNames.Polus: - { switch (MeetingStates.FirstMeeting, room.RoomId) { case (true, SystemTypes.Dropship): @@ -97,8 +95,13 @@ public class Wiper : RoleBase } break; - } - case MapNames.Fungle when !MeetingStates.FirstMeeting && room.RoomId == SystemTypes.MeetingRoom: { return true; } + case MapNames.Fungle when !MeetingStates.FirstMeeting && room.RoomId == SystemTypes.MeetingRoom: + return true; + default: + if (SubmergedCompatibility.IsSubmerged() && room.RoomId is (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.LowerCentral or (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.UpperCentral) + return true; + + break; } return room.RoomId is SystemTypes.Outside or SystemTypes.Hallway or SystemTypes.Ventilation || room.RoomId.ToString().Contains("Decontamination"); diff --git a/Roles/Neutral/Amnesiac.cs b/Roles/Neutral/Amnesiac.cs index 08a0d3361..fa351d3fb 100644 --- a/Roles/Neutral/Amnesiac.cs +++ b/Roles/Neutral/Amnesiac.cs @@ -21,6 +21,7 @@ public class Amnesiac : RoleBase public static OptionItem CanVent; private static OptionItem VentCooldown; private static OptionItem VentDuration; + private static OptionItem ReportBodyAfterRemember; private static readonly CustomRoles[] AmnesiacIncompatibleNeutralMode = [ @@ -69,6 +70,9 @@ public class Amnesiac : RoleBase VentDuration = new FloatOptionItem(Id + 15, "MaxInVentTime", new(0f, 180f, 0.5f), 5f, TabGroup.NeutralRoles) .SetParent(CanVent) .SetValueFormat(OptionFormat.Seconds); + + ReportBodyAfterRemember = new BooleanOptionItem(Id + 16, "ReportBodyAfterRemember", true, TabGroup.NeutralRoles) + .SetParent(CustomRoleSpawnChances[CustomRoles.Amnesiac]); } public override void Init() @@ -123,7 +127,7 @@ public class Amnesiac : RoleBase if (RememberMode.GetValue() == 0) { RememberRole(reporter, target.Object); - return false; + return ReportBodyAfterRemember.GetBool(); } return true; diff --git a/Roles/Neutral/Bargainer.cs b/Roles/Neutral/Bargainer.cs index 4ad557539..ad1448877 100644 --- a/Roles/Neutral/Bargainer.cs +++ b/Roles/Neutral/Bargainer.cs @@ -78,6 +78,7 @@ internal class Bargainer : RoleBase get { var mapName = Main.CurrentMap.ToString(); + if (SubmergedCompatibility.IsSubmerged()) mapName = "Submerged"; IEnumerable> devices = DisableDevice.DevicePos.SkipWhile(x => !x.Key.StartsWith(mapName)).TakeWhile(x => x.Key.StartsWith(mapName)); return devices.Select(x => x.Value); } diff --git a/Roles/Neutral/Chemist.cs b/Roles/Neutral/Chemist.cs index ad33184b1..d224ced59 100644 --- a/Roles/Neutral/Chemist.cs +++ b/Roles/Neutral/Chemist.cs @@ -37,7 +37,8 @@ internal class Chemist : RoleBase [MapNames.Polus] = SystemTypes.Dropship, [MapNames.Dleks] = SystemTypes.Reactor, [MapNames.Airship] = SystemTypes.GapRoom, - [MapNames.Fungle] = SystemTypes.Reactor + [MapNames.Fungle] = SystemTypes.Reactor, + [(MapNames)6] = (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast }; private static readonly Dictionary Ingredients, List<(int Count, Item Item)> Results)>> Processes = new() diff --git a/Roles/Neutral/Mario.cs b/Roles/Neutral/Mario.cs index 1d811345e..6f58ce813 100644 --- a/Roles/Neutral/Mario.cs +++ b/Roles/Neutral/Mario.cs @@ -38,7 +38,7 @@ internal class Mario : RoleBase { On = true; MarioVentCount[playerId] = 0; - MarioVentNumWin = MapWinCounts[Main.CurrentMap].GetInt(); + MarioVentNumWin = MapWinCounts[SubmergedCompatibility.IsSubmerged() ? MapNames.Airship : Main.CurrentMap].GetInt(); } public override void Init() diff --git a/Roles/Neutral/Pelican.cs b/Roles/Neutral/Pelican.cs index 30c2c3042..3b055b02e 100644 --- a/Roles/Neutral/Pelican.cs +++ b/Roles/Neutral/Pelican.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using AmongUs.GameOptions; using EHR.Crewmate; using EHR.Modules; @@ -142,7 +141,7 @@ public class Pelican : RoleBase 3 => new(27f, 3.3f), // dlekS ehT 4 => new(-16.8f, -6.2f), // Airship 5 => new(9.6f, 23.2f), // The Fungle - _ => throw new ArgumentOutOfRangeException(Main.NormalOptions.MapId.ToString(), "Unsupported map") + _ => new(50f, 50f) // Default position if the map is not recognized }; } diff --git a/Roles/Neutral/RoomRusher.cs b/Roles/Neutral/RoomRusher.cs index d2de8c3e2..6ba450176 100644 --- a/Roles/Neutral/RoomRusher.cs +++ b/Roles/Neutral/RoomRusher.cs @@ -66,6 +66,7 @@ public class RoomRusher : RoleBase AllRooms.Remove(SystemTypes.Outside); AllRooms.Remove(SystemTypes.Ventilation); AllRooms.RemoveWhere(x => x.ToString().Contains("Decontamination")); + if (SubmergedCompatibility.IsSubmerged()) AllRooms.RemoveWhere(x => (byte)x > 135); Map = RandomSpawn.SpawnMap.GetSpawnMap(); @@ -94,6 +95,7 @@ public class RoomRusher : RoleBase MapNames.Polus => afterMeeting ? SystemTypes.Office : SystemTypes.Dropship, MapNames.Airship => SystemTypes.MainHall, MapNames.Fungle => SystemTypes.Dropship, + (MapNames)6 => (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.UpperCentral, _ => throw new ArgumentOutOfRangeException(map.ToString(), "Invalid map") }; @@ -112,20 +114,20 @@ public class RoomRusher : RoleBase { MapNames.MiraHQ => previous is SystemTypes.Laboratory or SystemTypes.Reactor ^ RoomGoal is SystemTypes.Laboratory or SystemTypes.Reactor, MapNames.Polus => previous == SystemTypes.Specimens || RoomGoal == SystemTypes.Specimens, + (MapNames)6 => (previous == (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast) ^ (RoomGoal == (SystemTypes)SubmergedCompatibility.SubmergedSystemTypes.Ballast), _ => false }; if (involvesDecontamination) { - bool polus = map == MapNames.Polus; - int decontaminationTime = Options.ChangeDecontaminationTime.GetBool() - ? polus - ? Options.DecontaminationTimeOnPolus.GetInt() - : Options.DecontaminationTimeOnMiraHQ.GetInt() - : 3; + ? map == MapNames.Polus + ? Options.DecontaminationTimeOnPolus.GetInt() + Options.DecontaminationDoorOpenTimeOnPolus.GetInt() + : Options.DecontaminationTimeOnMiraHQ.GetInt() + Options.DecontaminationDoorOpenTimeOnMiraHQ.GetInt() + : 6; - time += decontaminationTime * (polus ? 2 : 4); + if (SubmergedCompatibility.IsSubmerged()) decontaminationTime = 3; + time += decontaminationTime + 3; } switch (map) @@ -133,12 +135,22 @@ public class RoomRusher : RoleBase case MapNames.Fungle when RoomGoal == SystemTypes.Laboratory || previous == SystemTypes.Laboratory: time += (int)(8 / speed); break; - case MapNames.Polus when (RoomGoal == SystemTypes.Laboratory && previous is not SystemTypes.Storage and not SystemTypes.Specimens) || (previous == SystemTypes.Laboratory && RoomGoal is not SystemTypes.Office and not SystemTypes.Storage and not SystemTypes.Electrical): + case MapNames.Polus when (RoomGoal == SystemTypes.Laboratory && previous is not SystemTypes.Storage and not SystemTypes.Specimens and not SystemTypes.Office) || (previous == SystemTypes.Laboratory && RoomGoal is not SystemTypes.Office and not SystemTypes.Storage and not SystemTypes.Electrical and not SystemTypes.Specimens): time -= (int)(5 * speed); break; + case MapNames.Airship when previous == SystemTypes.GapRoom: + time *= RoomGoal switch + { + SystemTypes.MeetingRoom => 6, + SystemTypes.Brig or SystemTypes.VaultRoom or SystemTypes.Records or SystemTypes.Showers or SystemTypes.Lounge => 3, + SystemTypes.Engine or SystemTypes.CargoBay or SystemTypes.Medical => 2, + _ => 1 + }; + break; } - TimeLeft = Math.Max((int)Math.Round(time * GlobalTimeMultiplier.GetFloat()), 5); + var maxTime = (int)Math.Ceiling(32 / speed); + TimeLeft = Math.Clamp((int)Math.Round(time * GlobalTimeMultiplier.GetFloat()), 6, maxTime); Logger.Info($"Goal = from: {Translator.GetString(previous.ToString())} ({previous}), to: {Translator.GetString(RoomGoal.ToString())} ({RoomGoal}) - Time: {TimeLeft} ({map})", "Room Rusher"); LocateArrow.RemoveAllTarget(RoomRusherId); LocateArrow.Add(RoomRusherId, goalPos); diff --git a/SubmergedCompatibility.cs b/SubmergedCompatibility.cs new file mode 100644 index 000000000..b1c576526 --- /dev/null +++ b/SubmergedCompatibility.cs @@ -0,0 +1,287 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using BepInEx; +using BepInEx.Unity.IL2CPP; +using EHR.Patches; +using HarmonyLib; +using Il2CppInterop.Runtime.InteropTypes; + +namespace EHR; + +// https://github.com/eDonnes124/Town-Of-Us-R/tree/master/source/Patches/SubmergedCompatibility.cs + +public static class SubmergedCompatibility +{ + /* + public static class Classes + { + public const string ElevatorMover = "ElevatorMover"; + } + */ + + public const string SubmergedGuid = "Submerged"; + private const ShipStatus.MapType SubmergedMapType = (ShipStatus.MapType)6; + + // public static SemanticVersioning.Version Version { get; private set; } + public static bool Loaded { get; set; } + private static BasePlugin Plugin { get; set; } + private static Assembly Assembly { get; set; } + private static Type[] Types { get; set; } + // public static Dictionary InjectedTypes { get; private set; } + + /* + private static MonoBehaviour _submarineStatus; + public static MonoBehaviour SubmarineStatus + { + get + { + if (!Loaded) return null; + + if (_submarineStatus is null || _submarineStatus.WasCollected || !_submarineStatus || _submarineStatus == null) + { + if (ShipStatus.Instance is null || ShipStatus.Instance == null || !ShipStatus.Instance || ShipStatus.Instance.WasCollected) + return _submarineStatus = null; + + if (ShipStatus.Instance.Type == SUBMERGED_MAP_TYPE) + return _submarineStatus = ShipStatus.Instance.GetComponent(Il2CppType.From(SubmarineStatusType))?.TryCast(SubmarineStatusType) as MonoBehaviour; + + return _submarineStatus = null; + } + + return _submarineStatus; + } + } + */ + + private static Type SubmarineStatusType; + // private static MethodInfo CalculateLightRadiusMethod; + + // private static MethodInfo RpcRequestChangeFloorMethod; + // private static Type FloorHandlerType; + // private static MethodInfo GetFloorHandlerMethod; + + private static Type SubmarinePlayerFloorSystemType; + private static MethodInfo SubmarinePlayerFloorSystemInstanceGetter; + private static MethodInfo ChangePlayerFloorStateMethod; + + private static Type VentPatchDataType; + private static PropertyInfo InTransitionField; + + // private static Type CustomTaskTypesType; + // private static FieldInfo RetrieveOxigenMaskField; + // public static TaskTypes RetrieveOxygenMask; + // private static Type SubmarineOxygenSystemType; + // private static PropertyInfo SubmarineOxygenSystemInstanceField; + // private static MethodInfo RepairDamageMethod; + + private static Type SubmergedExileController; + private static MethodInfo SubmergedExileWrapUpMethod; + + private static Type SubmarineElevator; + + private static MethodInfo GetInElevator; + + // private static MethodInfo GetMovementStageFromTime; + private static FieldInfo GetSubElevatorSystem; + + // private static Type ElevatorConsole; + // private static MethodInfo CanUse; + + private static Type SubmarineElevatorSystem; + private static FieldInfo UpperDeckIsTargetFloor; + + private static FieldInfo SubmergedInstance; + private static FieldInfo SubmergedElevators; + + public static void Initialize() + { + Loaded = IL2CPPChainloader.Instance.Plugins.TryGetValue(SubmergedGuid, out PluginInfo plugin); + if (!Loaded) return; + + Plugin = plugin!.Instance as BasePlugin; + // Version = plugin.Metadata.Version; + + Assembly = Plugin!.GetType().Assembly; + Types = AccessTools.GetTypesFromAssembly(Assembly); + + AccessTools.PropertyGetter(Types.FirstOrDefault(t => t.Name == "ComponentExtensions"), "RegisteredTypes") + .Invoke(null, []); + + SubmarineStatusType = Types.First(t => t.Name == "SubmarineStatus"); + SubmergedInstance = AccessTools.Field(SubmarineStatusType, "instance"); + SubmergedElevators = AccessTools.Field(SubmarineStatusType, "elevators"); + + // CalculateLightRadiusMethod = AccessTools.Method(SubmarineStatusType, "CalculateLightRadius"); + + // FloorHandlerType = Types.First(t => t.Name == "FloorHandler"); + // GetFloorHandlerMethod = AccessTools.Method(FloorHandlerType, "GetFloorHandler", [typeof(PlayerControl)]); + // RpcRequestChangeFloorMethod = AccessTools.Method(FloorHandlerType, "RpcRequestChangeFloor"); + + SubmarinePlayerFloorSystemType = Types.First(t => t.Name == "SubmarinePlayerFloorSystem"); + SubmarinePlayerFloorSystemInstanceGetter = AccessTools.PropertyGetter(SubmarinePlayerFloorSystemType, "Instance"); + ChangePlayerFloorStateMethod = AccessTools.Method(SubmarinePlayerFloorSystemType, "ChangePlayerFloorState"); + + VentPatchDataType = Types.First(t => t.Name == "VentPatchData"); + InTransitionField = AccessTools.Property(VentPatchDataType, "InTransition"); + + // CustomTaskTypesType = Types.First(t => t.Name == "CustomTaskTypes"); + // RetrieveOxigenMaskField = AccessTools.Field(CustomTaskTypesType, "RetrieveOxygenMask"); + // var retTaskType = AccessTools.Field(CustomTaskTypesType, "taskType"); + // RetrieveOxygenMask = (TaskTypes)retTaskType.GetValue(RetrieveOxigenMaskField.GetValue(null))!; + + // SubmarineOxygenSystemType = Types.First(t => t.Name == "SubmarineOxygenSystem"); + // SubmarineOxygenSystemInstanceField = AccessTools.Property(SubmarineOxygenSystemType, "Instance"); + // RepairDamageMethod = AccessTools.Method(SubmarineOxygenSystemType, "RepairDamage"); + SubmergedExileController = Types.First(t => t.Name == "SubmergedExileController"); + SubmergedExileWrapUpMethod = AccessTools.Method(SubmergedExileController, "WrapUpAndSpawn"); + + SubmarineElevator = Types.First(t => t.Name == "SubmarineElevator"); + GetInElevator = AccessTools.Method(SubmarineElevator, "GetInElevator", [typeof(PlayerControl)]); + // GetMovementStageFromTime = AccessTools.Method(SubmarineElevator, "GetMovementStageFromTime"); + GetSubElevatorSystem = AccessTools.Field(SubmarineElevator, "system"); + + // ElevatorConsole = Types.First(t => t.Name == "ElevatorConsole"); + // CanUse = AccessTools.Method(ElevatorConsole, "CanUse"); + + SubmarineElevatorSystem = Types.First(t => t.Name == "SubmarineElevatorSystem"); + UpperDeckIsTargetFloor = AccessTools.Field(SubmarineElevatorSystem, "upperDeckIsTargetFloor"); + var harmony = new Harmony("ehr.submerged.patch"); + MethodInfo exilerolechangePostfix = SymbolExtensions.GetMethodInfo(() => WrapUpPatch()); + harmony.Patch(SubmergedExileWrapUpMethod, null, new HarmonyMethod(exilerolechangePostfix)); + /* + var canusePrefix = SymbolExtensions.GetMethodInfo(() => CanUsePrefix()); + var canusePostfix = SymbolExtensions.GetMethodInfo(() => CanUsePostfix()); + _harmony.Patch(CanUse, new HarmonyMethod(canusePrefix), new HarmonyMethod(canusePostfix)); + */ + } + + private static void WrapUpPatch() + { + try { ExileControllerWrapUpPatch.WrapUpPostfix(ExileControllerWrapUpPatch.LastExiled); } + finally { ExileControllerWrapUpPatch.WrapUpFinalizer(); } + } + + public static void CheckOutOfBoundsElevator(PlayerControl player) + { + if (!Loaded) return; + if (!IsSubmerged()) return; + + Tuple elevator = GetPlayerElevator(player); + if (!elevator.Item1) return; + var currentFloor = (bool)UpperDeckIsTargetFloor.GetValue(GetSubElevatorSystem.GetValue(elevator.Item2))!; //true is top, false is bottom + bool playerFloor = player.transform.position.y > -7f; //true is top, false is bottom + + if (currentFloor != playerFloor) + ChangeFloor(player.PlayerId, currentFloor); + } + + /* + public static void MoveDeadPlayerElevator(PlayerControl player) + { + if (!isSubmerged()) return; + Tuple elevator = GetPlayerElevator(player); + if (!elevator.Item1) return; + + int MovementStage = (int)GetMovementStageFromTime.Invoke(elevator.Item2, null)!; + if (MovementStage >= 5) + { + //Fade to clear + bool topfloortarget = (bool)UpperDeckIsTargetFloor.GetValue(getSubElevatorSystem.GetValue(elevator.Item2))!; //true is top, false is bottom + bool topintendedtarget = player.transform.position.y > -7f; //true is top, false is bottom + if (topfloortarget != topintendedtarget) + { + ChangeFloor(!topintendedtarget); + } + } + } + */ + + private static Tuple GetPlayerElevator(PlayerControl player) + { + if (!IsSubmerged()) return Tuple.Create(false, (object)null); + // ReSharper disable once RedundantAssignment + IList elevatorlist = CreateList(SubmarineElevator); + elevatorlist = (IList)SubmergedElevators.GetValue(SubmergedInstance.GetValue(null))!; + foreach (object elevator in elevatorlist) + if ((bool)GetInElevator.Invoke(elevator, [player])!) + return Tuple.Create(true, elevator); + + return Tuple.Create(false, (object)null); + } + + public static void ChangeFloor(byte playerId, bool toUpper) + { + if (!Loaded) return; + ChangePlayerFloorStateMethod.Invoke(SubmarinePlayerFloorSystemInstanceGetter.Invoke(null, null), [playerId, toUpper]); + } + + public static bool GetInTransition() + { + if (!Loaded) return false; + return (bool)InTransitionField.GetValue(null)!; + } + + public static bool IsSupported(CustomGameMode gameMode) + { + return gameMode is CustomGameMode.Standard or CustomGameMode.SoloKombat or CustomGameMode.FFA or CustomGameMode.MoveAndStop or CustomGameMode.HotPotato or CustomGameMode.HideAndSeek or CustomGameMode.Speedrun or CustomGameMode.NaturalDisasters or CustomGameMode.RoomRush; + } + + + /* + public static void RepairOxygen() + { + if (!Loaded) return; + try + { + ShipStatus.Instance.RpcUpdateSystem((SystemTypes)130, 64); + RepairDamageMethod.Invoke(SubmarineOxygenSystemInstanceField.GetValue(null), new object[] { PlayerControl.LocalPlayer, 64 }); + } + catch (System.NullReferenceException) + { + + } + + } +*/ + + public static bool IsSubmerged() + { + return Loaded && ShipStatus.Instance && ShipStatus.Instance.Type == SubmergedMapType; + } + + private static object TryCast(this Il2CppObjectBase self, Type type) + { + return AccessTools.Method(self.GetType(), nameof(Il2CppObjectBase.TryCast)).MakeGenericMethod(type).Invoke(self, []); + } + + private static IList CreateList(Type myType) + { + Type genericListType = typeof(List<>).MakeGenericType(myType); + return (IList)Activator.CreateInstance(genericListType); + } + + public enum SubmergedSystemTypes : byte + { + Research = 0x80, // 128 + Observatory = 0x81, // 129 + UpperCentral = 0x82, // 130 (SubmarineOxygenSystem) + UpperLobby = 0x83, // 131 + Filtration = 0x84, // 132 + Ballast = 0x85, // 133 + LowerCentral = 0x86, // 134 + LowerLobby = 0x87, // 135 + ElevatorWestLeft = 0x88, // 136 (SubmarineElevatorSystem (HallwayLeft)) + ElevatorWestRight = 0x89, // 137 (SubmarineElevatorSystem (HallwayRight)) + ElevatorEastLeft = 0x8a, // 138 (SubmarineElevatorSystem (LobbyLeft)) + ElevatorEastRight = 0x8b, // 139 (SubmarineElevatorSystem (LobbyRight)) + ElevatorService = 0x8c, // 140 (SubmarineElevatorSystem (Service)) + + SubmarinePlayerFloorSystem = 0x8d, // 141 + SubmarineSecuritySabotageSystem = 0x8e, // 142 + SubmarineSpawnInSystem = 0x8f, // 143 + SubmarineBoxCatSystem = 0x90 // 144 + } +} \ No newline at end of file diff --git a/nuget.config b/nuget.config index c5144a384..ec31a2383 100644 --- a/nuget.config +++ b/nuget.config @@ -4,5 +4,6 @@ +