Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ShipLobby v1.0.2
plugins/ShipLobby/ShipLobby.dll
Decompiled 2 years agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ShipLobby")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("ShipLobby")] [assembly: AssemblyCopyright("Copyright © tinyhoot 2023")] [assembly: ComVisible(false)] [assembly: AssemblyFileVersion("1.0.2")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] [module: UnverifiableCode] namespace ShipLobby { [BepInPlugin("com.github.tinyhoot.ShipLobby", "ShipLobby", "1.0.2")] internal class ShipLobby : BaseUnityPlugin { public const string GUID = "com.github.tinyhoot.ShipLobby"; public const string NAME = "ShipLobby"; public const string VERSION = "1.0.2"; internal static ManualLogSource Log; private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Log = ((BaseUnityPlugin)this).Logger; new Harmony("com.github.tinyhoot.ShipLobby").PatchAll(Assembly.GetExecutingAssembly()); } } } namespace ShipLobby.Patches { [HarmonyPatch] internal class GameNetworkManagerPatcher { private static QuickMenuManager _quickMenuManager; [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Singleton_OnClientConnectedCallback")] private static void LogConnect() { ShipLobby.Log.LogDebug((object)"Player connected."); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Singleton_OnClientDisconnectCallback")] private static void LogDisconnect() { ShipLobby.Log.LogDebug((object)"Player disconnected."); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "ConnectionApproval")] private static void FixConnectionApproval(GameNetworkManager __instance, ConnectionApprovalResponse response) { if (!response.Approved && !(response.Reason != "Game has already started!") && __instance.gameHasStarted && StartOfRound.Instance.inShipPhase) { ShipLobby.Log.LogDebug((object)"Approving incoming late connection."); response.Reason = ""; response.Approved = true; } } [HarmonyPostfix] [HarmonyPatch(typeof(QuickMenuManager), "InviteFriendsButton")] private static void FixFriendInviteButton() { if (GameNetworkManager.Instance.gameHasStarted && StartOfRound.Instance.inShipPhase) { GameNetworkManager.Instance.InviteFriendsUI(); } } [HarmonyPrefix] [HarmonyPatch(typeof(GameNetworkManager), "LeaveLobbyAtGameStart")] private static bool PreventSteamLobbyLeaving(GameNetworkManager __instance) { ShipLobby.Log.LogDebug((object)"Preventing the closing of Steam lobby."); return false; } [HarmonyPrefix] [HarmonyPatch(typeof(StartOfRound), "StartGame")] private static void CloseSteamLobby(StartOfRound __instance) { if (((NetworkBehaviour)__instance).IsServer && __instance.inShipPhase) { ShipLobby.Log.LogDebug((object)"Setting lobby to not joinable."); GameNetworkManager.Instance.SetLobbyJoinable(false); } } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "EndOfGame")] private static IEnumerator ReopenSteamLobby(IEnumerator coroutine, StartOfRound __instance) { while (coroutine.MoveNext()) { yield return coroutine.Current; } if (!((NetworkBehaviour)__instance).IsServer) { yield break; } yield return (object)new WaitForSeconds(0.5f); yield return (object)new WaitUntil((Func<bool>)(() => !__instance.firingPlayersCutsceneRunning)); ShipLobby.Log.LogDebug((object)"Reopening lobby, setting to joinable."); GameNetworkManager instance = GameNetworkManager.Instance; if (instance.currentLobby.HasValue) { instance.SetLobbyJoinable(true); if ((Object)(object)_quickMenuManager == (Object)null) { _quickMenuManager = Object.FindObjectOfType<QuickMenuManager>(); } _quickMenuManager.inviteFriendsTextAlpha.alpha = 1f; } } } }