using System; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using ChatCommandAPI; using ChatCommandAPI.Utils; using LobbyControl; using LobbyControl.TerminalCommands; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("DunGen")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.ASPP")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.UnityNav")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("LobbyControl")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.XR.CoreUtils")] [assembly: IgnoresAccessChecksTo("Unity.XR.Management")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.ConformanceAutomation")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MetaQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MockRuntime")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.OculusQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.RuntimeDebugger")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SpatialTracking")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("UnityEngine.XR.LegacyInputHelpers")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("baer1.LC_CCA")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("2.5.0.0")] [assembly: AssemblyInformationalVersion("2.5.0+500272e994f8d6a05e61c0ee8610e779e9bd7dd3")] [assembly: AssemblyProduct("LobbyControlCCABindings")] [assembly: AssemblyTitle("baer1.LC_CCA")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.5.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LobbyControlCCABindings { public class LobbyCommand : Command { public override string Name => "LobbyControl"; public override string Command => "lobby"; public override string[] Syntax => new string[10] { "help", "status", "{ open | close }", "{ private | friend | public }", "rename ", "autosave", "{ save | load } [file]", "switch ", "{ clear | dropall }", "version" }; public override void Invoke(string _args) { //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_0406: Unknown result type (might be due to invalid IL or missing references) string[] array = new string[1] { ((BaseCommand)this).Command }.Concat(Args.Parse(_args, (uint?)null, true)).ToArray(); if (array.Length > 1) { TerminalNode val = ScriptableObject.CreateInstance(); bool flag; switch (array[1]) { case "version": { string text = "LobbyControl version " + LobbyControlCCABindings.Instance.LobbyControlVersion + "\nbindings v2.5.0 for v2.5.11"; if (LobbyControlCCABindings.Instance.LobbyControlVersion != "2.5.11") { Chat.PrintWarning(text); } else { Chat.Print(text, (Color?)null); } return; } case "status": flag = LobbyCommand.StatusCommand(ref val, array); goto IL_03dd; case "open": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.OpenCommand(ref val, array); goto IL_03dd; case "close": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.CloseCommand(ref val, array); goto IL_03dd; case "private": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.PrivateCommand(ref val, array); goto IL_03dd; case "friend": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.FriendCommand(ref val, array); goto IL_03dd; case "public": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.PublicCommand(ref val, array); goto IL_03dd; case "rename": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.RenameCommand(ref val, array); goto IL_03dd; case "autosave": flag = LobbyCommand.AutoSaveCommand(ref val, array); goto IL_03dd; case "save": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.SaveCommand(ref val, array); goto IL_03dd; case "load": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.LoadCommand(ref val, array); goto IL_03dd; case "switch": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.SwitchCommand(ref val, array); goto IL_03dd; case "clear": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.ClearCommand(ref val, array); goto IL_03dd; case "dropall": verifyShipPhase(); verifyCanModify(); flag = LobbyCommand.DropAllCommand(ref val, array); goto IL_03dd; default: throw new InvalidArgumentsException(); case "help": break; IL_03dd: if (flag) { Chat.Print(val.displayText.Trim(), (Color?)null); return; } throw new CommandException(val.displayText.Trim()); } } Chat.PrintWarning("status : prints the current lobby status\nopen : open the lobby\nclose : close the lobby\nprivate : set lobby to Invite Only\nfriend : set lobby to Friends Only\npublic : set lobby to Public\nrename : change the name of the lobby\nautosave : toggle the autosave state\nsave [file] : save the lobby to file\nload [file] : re-load the lobby from file\nswitch : change the future save/load location without loading\nclear : clear the current save\ndropall : drop all items on the ground"); static void verifyCanModify() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (!LobbyControl.CanModifyLobby) { throw new CommandException("You can not modify the lobby right now"); } } static void verifyShipPhase() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) if (!StartOfRound.Instance.inShipPhase) { throw new CommandException("The ship must be in orbit"); } } } } [BepInPlugin("baer1.LC_CCA", "LobbyControlCCABindings", "2.5.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class LobbyControlCCABindings : BaseUnityPlugin { internal string LobbyControlVersion = "[UNKNOWN]"; public static LobbyControlCCABindings Instance { get; private set; } internal static ManualLogSource Logger { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; if (!Chainloader.PluginInfos.TryGetValue("mattymatty.LobbyControl", out var value) || (LobbyControlVersion = value.Metadata.Version.ToString(3)) != "2.5.11") { Logger.LogWarning((object)("LobbyControl version differs: expected 2.5.11, got " + LobbyControlVersion)); } new LobbyCommand(); Logger.LogInfo((object)"baer1.LC_CCA v2.5.0 has loaded!"); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "baer1.LC_CCA"; public const string PLUGIN_NAME = "LobbyControlCCABindings"; public const string PLUGIN_VERSION = "2.5.0"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }