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;
}
}
}