diff --git a/CTA/CustomTeamAssigner/CustomRoles.cs b/CTA/CustomTeamAssigner/CustomRoles.cs index c7db3541b..862a5e541 100644 --- a/CTA/CustomTeamAssigner/CustomRoles.cs +++ b/CTA/CustomTeamAssigner/CustomRoles.cs @@ -226,7 +226,6 @@ public enum CustomRoles Inquisitor, Jailor, Journalist, - Prosecutor, LazyGuy, Leery, Lighter, @@ -257,6 +256,7 @@ public enum CustomRoles Perceiver, PortalMaker, President, + Prosecutor, Psychic, Rabbit, Randomizer, diff --git a/CustomRoles.cs b/CustomRoles.cs index c7db3541b..862a5e541 100644 --- a/CustomRoles.cs +++ b/CustomRoles.cs @@ -226,7 +226,6 @@ public enum CustomRoles Inquisitor, Jailor, Journalist, - Prosecutor, LazyGuy, Leery, Lighter, @@ -257,6 +256,7 @@ public enum CustomRoles Perceiver, PortalMaker, President, + Prosecutor, Psychic, Rabbit, Randomizer, diff --git a/Modules/AmciRegistration.cs b/Modules/AmciRegistration.cs index 719f6d4d3..ae3978864 100644 --- a/Modules/AmciRegistration.cs +++ b/Modules/AmciRegistration.cs @@ -1,8 +1,4 @@ -using System; -using AmongUs.GameOptions; using HarmonyLib; -using Hazel; -using InnerNet; namespace EHR.Modules; @@ -29,7 +25,8 @@ public static class AmciRegistration /// /// Writes EHR's GUID into the game's mod registration slot so the matchmaker /// can filter lobby searches to EHR lobbies only. - /// Call once from + /// Call once from . + /// The base game code does the rest. /// public static void Apply() { @@ -37,33 +34,19 @@ public static class AmciRegistration Logger.Info($"AMCI mod GUID registered: {ModGuidString}", nameof(AmciRegistration)); } - /// - /// Replaces the standard HostGame packet with the modded variant and appends - /// EHR's GUID, so Innersloth's servers register this lobby as a modded EHR - /// lobby and remove it from vanilla matchmaking. - /// - [HarmonyPatch(typeof(InnerNetClient), nameof(InnerNetClient.HostGame))] - public static class HostGamePatch + // Fixes not being able to host local games when the mod GUID is registered + [HarmonyPatch(typeof(CurrentModRegistration), nameof(CurrentModRegistration.TryGetModRegistrationGuid))] + public static class TryGetModRegistrationGuidPatch { - public static bool Prefix(InnerNetClient __instance, IGameOptions settings, GameFilterOptions filterOpts) + public static bool Prefix(ref bool __result) { - if (!Guid.TryParse(ModGuidString, out Guid guid)) + if (GameStates.IsLocalGame) { - Logger.Warn("Failed to parse AMCI mod GUID, falling back to standard HostGame", nameof(AmciRegistration)); - return true; + __result = false; + return false; } - MessageWriter msg = MessageWriter.Get(SendOption.Reliable); - msg.StartMessage(Tags.HostModdedGame); - msg.WriteBytesAndSize(__instance.gameOptionsFactory.ToBytes(settings, AprilFoolsMode.IsAprilFoolsModeToggledOn)); - msg.Write(CrossplayMode.GetCrossplayFlags()); - filterOpts.Serialize(msg); - msg.Write(guid.ToByteArray()); - msg.EndMessage(); - __instance.SendOrDisconnect(msg); - msg.Recycle(); - - return false; + return true; } } }