Decompiled source of GameMaster v1.1.1

BepInEx/plugins/lammas123.GameMaster.dll

Decompiled a week ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
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.Core.Logging.Interpolation;
using BepInEx.IL2CPP;
using BepInEx.Logging;
using ChatCommands;
using CrabDevKit.Intermediary;
using CrabDevKit.Utilities;
using HarmonyLib;
using Il2CppSystem.Collections.Generic;
using Microsoft.CodeAnalysis;
using SteamworksNative;
using UnhollowerBaseLib;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.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 GameMaster
{
	public class ModesCommand : BaseCommand
	{
		public ModesCommand()
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			base.id = "modes";
			base.description = "Lists all of the game modes that can be played.";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[1] { typeof(int) }, "page", false)
			});
		}

		public BaseCommandResponse ShowModesPage(BaseExecutionMethod executionMethod, int page = 1)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Expected O, but got Unknown
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Expected O, but got Unknown
			if (page >= 1)
			{
				int num = 1;
				int num2 = 0;
				List<string> list = new List<string>(1) { string.Empty };
				GameModeData[] array = Il2CppArrayBase<GameModeData>.op_Implicit((Il2CppArrayBase<GameModeData>)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.allGameModes);
				for (int i = 0; i < array.Length; i++)
				{
					string text = array[i].modeName;
					if (i != array.Length - 1)
					{
						text += ", ";
					}
					if (list[num2].Length + text.Length - 1 > executionMethod.MaxResponseLength)
					{
						num2++;
						if (num2 == 3)
						{
							if (num + 1 > page)
							{
								break;
							}
							num++;
							num2 = 0;
							list = new List<string>();
						}
						list.Add(string.Empty);
					}
					list[num2] += text;
				}
				if (page == num)
				{
					return (BaseCommandResponse)new StyledCommandResponse($"Modes Page #{page}", list.ToArray(), (CommandResponseType)1, true);
				}
				return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a valid page number." }, (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a valid page number." }, (CommandResponseType)1);
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			if (args.Length == 0)
			{
				return ShowModesPage(executionMethod);
			}
			ParsedResult<int> val = Api.CommandArgumentParser.Parse<int>(args);
			if (val.successful)
			{
				return ShowModesPage(executionMethod, val.result);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a valid page number." }, (CommandResponseType)1);
		}
	}
	public class MapsCommand : BaseCommand
	{
		public MapsCommand()
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			base.id = "maps";
			base.description = "Lists all of the maps that can be played.";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[1] { typeof(int) }, "page", false)
			});
		}

		public BaseCommandResponse ShowMapsPage(BaseExecutionMethod executionMethod, int page = 1)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Expected O, but got Unknown
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Expected O, but got Unknown
			if (page >= 1)
			{
				int num = 1;
				int num2 = 0;
				List<string> list = new List<string>(1) { string.Empty };
				Map[] array = Il2CppArrayBase<Map>.op_Implicit((Il2CppArrayBase<Map>)(object)MonoBehaviourPublicObInMamaLi1plMadeMaUnique.Instance.maps);
				for (int i = 0; i < array.Length; i++)
				{
					string text = array[i].mapName;
					if (i != array.Length - 1)
					{
						text += ", ";
					}
					if (list[num2].Length + text.Length - 1 > executionMethod.MaxResponseLength)
					{
						num2++;
						if (num2 == 3)
						{
							if (num + 1 > page)
							{
								break;
							}
							num++;
							num2 = 0;
							list = new List<string>();
						}
						list.Add(string.Empty);
					}
					list[num2] += text;
				}
				if (page == num)
				{
					return (BaseCommandResponse)new StyledCommandResponse($"Maps Page #{page}", list.ToArray(), (CommandResponseType)1, true);
				}
				return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a valid page number." }, (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a valid page number." }, (CommandResponseType)1);
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			if (args.Length == 0)
			{
				return ShowMapsPage(executionMethod);
			}
			ParsedResult<int> val = Api.CommandArgumentParser.Parse<int>(args);
			if (val.successful)
			{
				return ShowMapsPage(executionMethod, val.result);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a valid page number." }, (CommandResponseType)1);
		}
	}
	public class ModeInfoCommand : BaseCommand
	{
		public ModeInfoCommand()
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			base.id = "modeinfo";
			base.description = "Shows the description for the given mode.";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[1] { typeof(GameModeData) }, "mode", false)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Expected O, but got Unknown
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: Expected O, but got Unknown
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Expected O, but got Unknown
			if (args.Length == 0)
			{
				string modeName = MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.modeName;
				string[] array = ChatUtil.FormatGameModeDescription(MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.modeDescription);
				int num = 0;
				string[] array2 = new string[1 + array.Length];
				array2[num] = modeName;
				num++;
				ReadOnlySpan<string> readOnlySpan = new ReadOnlySpan<string>(array);
				readOnlySpan.CopyTo(new Span<string>(array2).Slice(num, readOnlySpan.Length));
				num += readOnlySpan.Length;
				return (BaseCommandResponse)new StyledCommandResponse("Mode Info", array2, (CommandResponseType)0, true);
			}
			ParsedResult<GameModeData> val = Api.CommandArgumentParser.Parse<GameModeData>(args);
			if (val.successful)
			{
				string modeName = val.result.modeName;
				string[] array2 = ChatUtil.FormatGameModeDescription(val.result.modeDescription);
				int num = 0;
				string[] array = new string[1 + array2.Length];
				array[num] = modeName;
				num++;
				ReadOnlySpan<string> readOnlySpan = new ReadOnlySpan<string>(array2);
				readOnlySpan.CopyTo(new Span<string>(array).Slice(num, readOnlySpan.Length));
				num += readOnlySpan.Length;
				return (BaseCommandResponse)new StyledCommandResponse("Mode Info", array, (CommandResponseType)0, true);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a valid mode." }, (CommandResponseType)1);
		}
	}
	public class PlayCommand : BaseCommand
	{
		public PlayCommand()
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			base.id = "play";
			base.description = "Sets the next mode and map to be played.";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[2]
			{
				new CommandArgument(new Type[2]
				{
					typeof(GameModeData),
					typeof(Reset)
				}, "mode/reset", true),
				new CommandArgument(new Type[1] { typeof(Map) }, "map", false)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Expected O, but got Unknown
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Expected O, but got Unknown
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Expected O, but got Unknown
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Expected O, but got Unknown
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			if (args.Length != 0)
			{
				if (Api.CommandArgumentParser.Parse<Reset>(args).successful)
				{
					GameMaster.Instance.nextGameModeId = -1;
					GameMaster.Instance.nextMapId = -1;
					return (BaseCommandResponse)new StyledCommandResponse("Play", new string[1] { "Reset the queued mode and map." }, (CommandResponseType)1, true);
				}
				ParsedResult<GameModeData> val = Api.CommandArgumentParser.Parse<GameModeData>(args);
				if (val.successful)
				{
					if (!((Object)(object)val.result == (Object)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.defaultMode) && !((Object)(object)val.result == (Object)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.practiceMode))
					{
						GameMaster.Instance.nextGameModeId = val.result.id;
						ParsedResult<Map> val2 = Api.CommandArgumentParser.Parse<Map>(val.newArgs);
						if (val2.successful)
						{
							GameMaster.Instance.nextMapId = val2.result.id;
							return (BaseCommandResponse)new StyledCommandResponse("Play", new string[2]
							{
								"Set the next mode to '" + val.result.modeName + "'.",
								"Set the next map to '" + val2.result.mapName + "'."
							}, (CommandResponseType)1, false);
						}
						return (BaseCommandResponse)new StyledCommandResponse("Play", new string[1] { "Set the next mode to " + val.result.modeName + "." }, (CommandResponseType)1, true);
					}
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You cannot set the next mode to Waiting Room or Practice." }, (CommandResponseType)1);
				}
				return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify an existing mode." }, (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "A mode or 'reset' is required for the first argument." }, (CommandResponseType)1);
		}
	}
	public class StartCommand : BaseCommand
	{
		public StartCommand()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			base.id = "start";
			base.description = "Starts the games if you're in the lobby or practice.";
			base.args = new CommandArguments(Array.Empty<CommandArgument>());
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			if (MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.id != MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.defaultMode.id && MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.id != MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.practiceMode.id)
			{
				return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "Unable to start while not in the lobby or practice." }, (CommandResponseType)1);
			}
			MonoBehaviourPublicObInLi1GagasmLi1GaUnique.Instance.StartGames();
			return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
		}
	}
	public class SkipCommand : BaseCommand
	{
		public SkipCommand()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			base.id = "skip";
			base.description = "Skips the current mode.";
			base.args = new CommandArguments(Array.Empty<CommandArgument>());
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Expected O, but got Unknown
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Expected I4, but got Unknown
			if (MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.id != MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.defaultMode.id && MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.id != MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.practiceMode.id)
			{
				if (!MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.skipAsString)
				{
					MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState = (EnumNPublicSealedvaFrPlEnGa5vUnique)2;
					MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.EndRound();
					MonoBehaviourPublicInInUnique.SendGameModeTimer(1f, (int)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState);
				}
				MonoBehaviourPublicObInLi1GagasmLi1GaUnique.Instance.NextGame();
				return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "Unable to skip while not playing a mode." }, (CommandResponseType)1);
		}
	}
	public class LobbyCommand : BaseCommand
	{
		public LobbyCommand()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			base.id = "lobby";
			base.description = "Sends everyone to the lobby.";
			base.args = new CommandArguments(Array.Empty<CommandArgument>());
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected I4, but got Unknown
			GameMaster.Instance.nextGameModeId = -1;
			GameMaster.Instance.nextMapId = -1;
			if (!MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.skipAsString)
			{
				MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState = (EnumNPublicSealedvaFrPlEnGa5vUnique)2;
				MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.EndRound();
				MonoBehaviourPublicInInUnique.SendGameModeTimer(1f, (int)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState);
			}
			MonoBehaviourPublicObInLi1GagasmLi1GaUnique.Instance.RestartLobby();
			return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
		}
	}
	public class PracticeCommand : BaseCommand
	{
		public PracticeCommand()
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			base.id = "practice";
			base.description = "Goes into practice mode with the given map.";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[1] { typeof(Map) }, "map", true)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Expected O, but got Unknown
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Expected O, but got Unknown
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Expected O, but got Unknown
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Expected I4, but got Unknown
			if (args.Length != 0)
			{
				ParsedResult<Map> val = Api.CommandArgumentParser.Parse<Map>(args);
				if (val.successful)
				{
					GameMaster.Instance.nextGameModeId = -1;
					GameMaster.Instance.nextMapId = -1;
					if (!MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.skipAsString)
					{
						MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState = (EnumNPublicSealedvaFrPlEnGa5vUnique)2;
						MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.EndRound();
						MonoBehaviourPublicInInUnique.SendGameModeTimer(1f, (int)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState);
					}
					MonoBehaviourPublicInInUnique.LoadMap(val.result.id, MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.practiceMode.id);
					return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
				}
				return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify an existing map." }, (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "A map is required for the first argument." }, (CommandResponseType)1);
		}
	}
	public class ToggleModeCommand : BaseCommand
	{
		public ToggleModeCommand()
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			base.id = "togglemode";
			base.description = "Toggle a mode on or off.";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[1] { typeof(GameModeData) }, "mode", true)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Expected O, but got Unknown
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Expected O, but got Unknown
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Expected O, but got Unknown
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Expected O, but got Unknown
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Expected O, but got Unknown
			if (args.Length != 0)
			{
				ParsedResult<GameModeData> val = Api.CommandArgumentParser.Parse<GameModeData>(args);
				if (val.successful)
				{
					if (!((Object)(object)val.result == (Object)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.defaultMode) && !((Object)(object)val.result == (Object)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.practiceMode))
					{
						if (MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.allPlayableGameModes.Contains(val.result))
						{
							MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.allPlayableGameModes.Remove(val.result);
							SteamMatchmaking.SetLobbyData(MonoBehaviourPublicObInUIgaStCSBoStcuCSUnique.Instance.currentLobby, "Modes", MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.GetAvailableModesString());
							return (BaseCommandResponse)new StyledCommandResponse("Disabled Mode", new string[1] { val.result.modeName }, (CommandResponseType)1, true);
						}
						MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.allPlayableGameModes.Add(val.result);
						SteamMatchmaking.SetLobbyData(MonoBehaviourPublicObInUIgaStCSBoStcuCSUnique.Instance.currentLobby, "Modes", MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.GetAvailableModesString());
						return (BaseCommandResponse)new StyledCommandResponse("Enabled Mode", new string[1] { val.result.modeName }, (CommandResponseType)1, true);
					}
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You cannot toggle Waiting Room or Practice on." }, (CommandResponseType)1);
				}
				return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify an existing mode." }, (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "A mode is required for the first argument." }, (CommandResponseType)1);
		}
	}
	public class RestartCommand : BaseCommand
	{
		public RestartCommand()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			base.id = "restart";
			base.description = "Restart the current round.";
			base.args = new CommandArguments(Array.Empty<CommandArgument>());
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Expected I4, but got Unknown
			Enumerator<ulong, MonoBehaviourPublicCSstReshTrheObplBojuUnique> enumerator = MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers.Keys.GetEnumerator();
			while (enumerator.MoveNext())
			{
				ulong current = enumerator.Current;
				MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.GetClient(current).field_Public_Boolean_0 = true;
			}
			if (!MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.skipAsString)
			{
				MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState = (EnumNPublicSealedvaFrPlEnGa5vUnique)2;
				MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.EndRound();
				MonoBehaviourPublicInInUnique.SendGameModeTimer(1f, (int)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState);
			}
			MonoBehaviourPublicInInUnique.StartGame();
			return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
		}
	}
	public class TimeCommand : BaseCommand
	{
		public TimeCommand()
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			base.id = "time";
			base.description = "Set the mode timer in seconds.";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[1] { typeof(float) }, "seconds", true)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Expected O, but got Unknown
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Expected O, but got Unknown
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected I4, but got Unknown
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Expected O, but got Unknown
			if (args.Length != 0)
			{
				if (!((Object)(object)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance == (Object)null) && MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.id != MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.defaultMode.id && MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.id != MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.practiceMode.id)
				{
					ParsedResult<float> val = Api.CommandArgumentParser.Parse<float>(args);
					if (val.successful && !(val.result < 0f))
					{
						MonoBehaviourPublicInInUnique.SendGameModeTimer((val.result == 0f) ? float.Epsilon : val.result, (int)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState);
						return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
					}
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You didn't specify a positive number." }, (CommandResponseType)1);
				}
				return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You cannot set the mode timer right now." }, (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "A time in seconds is required for the first argument." }, (CommandResponseType)1);
		}
	}
	public class KillCommand : BaseCommand
	{
		public KillCommand()
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			base.id = "kill";
			base.description = "Kills the given player(s).";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[2]
				{
					typeof(OnlineClientId[]),
					typeof(OnlineClientId)
				}, "player(s)", true)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Expected O, but got Unknown
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Expected O, but got Unknown
			//IL_0174: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Expected O, but got Unknown
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Expected O, but got Unknown
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e4: Expected O, but got Unknown
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance == (Object)null) && (MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.skipAsString || (int)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState != 0))
			{
				if (args.Length == 0)
				{
					if (executionMethod is ChatExecutionMethod)
					{
						if (MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers.ContainsKey((ulong)executorDetails) && !MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers[(ulong)executorDetails].dead)
						{
							MonoBehaviourPublicObInCoIE85SiAwVoFoCoUnique.PlayerDied((ulong)executorDetails, (ulong)executorDetails, Vector3.zero);
							return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
						}
						return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You are already dead." }, (CommandResponseType)1);
					}
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "A player selector or player is required for the first argument." }, (CommandResponseType)1);
				}
				if (!ignorePermissions && !executionMethod.HasPermission(executorDetails, "command.kill.others"))
				{
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You don't have sufficient permission to kill other players." }, (CommandResponseType)1);
				}
				ParsedResult<OnlineClientId[]> val = Api.CommandArgumentParser.Parse<OnlineClientId[]>(args);
				IEnumerable<ulong> enumerable;
				if (val.successful)
				{
					enumerable = val.result.Select((OnlineClientId clientId) => OnlineClientId.op_Implicit(clientId));
				}
				else
				{
					ParsedResult<OnlineClientId> val2 = Api.CommandArgumentParser.Parse<OnlineClientId>(args);
					if (!val2.successful)
					{
						return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You did not select any players." }, (CommandResponseType)1);
					}
					enumerable = new <>z__ReadOnlySingleElementList<ulong>(OnlineClientId.op_Implicit(val2.result));
				}
				foreach (ulong item in enumerable)
				{
					if (MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers.ContainsKey(item) && !MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers[item].dead)
					{
						MonoBehaviourPublicObInCoIE85SiAwVoFoCoUnique.PlayerDied(item, item, Vector3.zero);
					}
				}
				return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You cannot kill players right now." }, (CommandResponseType)1);
		}
	}
	public class ExplodeCommand : BaseCommand
	{
		public ExplodeCommand()
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			base.id = "explode";
			base.description = "Explodes the given player(s).";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[2]
				{
					typeof(OnlineClientId[]),
					typeof(OnlineClientId)
				}, "player(s)", true)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Expected O, but got Unknown
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Expected O, but got Unknown
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Expected O, but got Unknown
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Expected O, but got Unknown
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: Expected O, but got Unknown
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Expected O, but got Unknown
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Expected O, but got Unknown
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance == (Object)null) && (MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode.skipAsString || (int)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.gameMode.modeState != 0))
			{
				if (args.Length == 0)
				{
					if (executionMethod is ChatExecutionMethod)
					{
						if (MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers.ContainsKey((ulong)executorDetails) && !MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers[(ulong)executorDetails].dead)
						{
							MonoBehaviourPublicObInCoIE85SiAwVoFoCoUnique.PlayerDied((ulong)executorDetails, 1uL, Vector3.zero);
							return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
						}
						return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You are already dead." }, (CommandResponseType)1);
					}
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "A player selector or player is required for the first argument." }, (CommandResponseType)1);
				}
				if (!ignorePermissions && !executionMethod.HasPermission(executorDetails, "command.explode.others"))
				{
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You don't have sufficient permission to explode other players." }, (CommandResponseType)1);
				}
				ParsedResult<OnlineClientId[]> val = Api.CommandArgumentParser.Parse<OnlineClientId[]>(args);
				IEnumerable<ulong> enumerable;
				if (val.successful)
				{
					enumerable = val.result.Select((OnlineClientId clientId) => OnlineClientId.op_Implicit(clientId));
				}
				else
				{
					ParsedResult<OnlineClientId> val2 = Api.CommandArgumentParser.Parse<OnlineClientId>(args);
					if (!val2.successful)
					{
						return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You did not select any players." }, (CommandResponseType)1);
					}
					enumerable = new <>z__ReadOnlySingleElementList<ulong>(OnlineClientId.op_Implicit(val2.result));
				}
				foreach (ulong item in enumerable)
				{
					if (MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers.ContainsKey(item) && !MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers[item].dead)
					{
						MonoBehaviourPublicObInCoIE85SiAwVoFoCoUnique.PlayerDied(item, 1uL, Vector3.zero);
					}
				}
				return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You cannot explode players right now." }, (CommandResponseType)1);
		}
	}
	public class RespawnCommand : BaseCommand
	{
		public RespawnCommand()
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			base.id = "respawn";
			base.description = "Respawns the given player(s).";
			base.args = new CommandArguments((CommandArgument[])(object)new CommandArgument[1]
			{
				new CommandArgument(new Type[2]
				{
					typeof(OnlineClientId[]),
					typeof(OnlineClientId)
				}, "player(s)", true)
			});
		}

		public override BaseCommandResponse Execute(BaseExecutionMethod executionMethod, object executorDetails, string args, bool ignorePermissions = false)
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Expected O, but got Unknown
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Expected O, but got Unknown
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Expected O, but got Unknown
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Expected O, but got Unknown
			if (!((Object)(object)MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance == (Object)null))
			{
				if (args.Length == 0)
				{
					if (executionMethod is ChatExecutionMethod)
					{
						if (MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers.ContainsKey((ulong)executorDetails) && !MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers[(ulong)executorDetails].dead)
						{
							return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You are already alive." }, (CommandResponseType)1);
						}
						ClientExtensions[MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.GetClient((ulong)executorDetails)] = true;
						MonoBehaviourPublicObInCoIE85SiAwVoFoCoUnique.Instance.QueueRespawn((ulong)executorDetails, 0f);
						return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
					}
					return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "A player selector or player is required for the first argument." }, (CommandResponseType)1);
				}
				ParsedResult<OnlineClientId[]> val = Api.CommandArgumentParser.Parse<OnlineClientId[]>(args);
				IEnumerable<ulong> enumerable;
				if (val.successful)
				{
					enumerable = val.result.Select((OnlineClientId clientId) => OnlineClientId.op_Implicit(clientId));
				}
				else
				{
					ParsedResult<OnlineClientId> val2 = Api.CommandArgumentParser.Parse<OnlineClientId>(args);
					if (!val2.successful)
					{
						return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You did not select any players." }, (CommandResponseType)1);
					}
					enumerable = new <>z__ReadOnlySingleElementList<ulong>(OnlineClientId.op_Implicit(val2.result));
				}
				foreach (ulong item in enumerable)
				{
					if (!MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers.ContainsKey(item) || MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.activePlayers[item].dead)
					{
						ClientExtensions[MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.GetClient((ulong)executorDetails)] = true;
						MonoBehaviourPublicObInCoIE85SiAwVoFoCoUnique.Instance.QueueRespawn(item, 0f);
					}
				}
				return (BaseCommandResponse)new BasicCommandResponse(Array.Empty<string>(), (CommandResponseType)1);
			}
			return (BaseCommandResponse)new BasicCommandResponse(new string[1] { "You cannot respawn players right now." }, (CommandResponseType)1);
		}
	}
	internal static class Patches
	{
		[HarmonyPatch(typeof(MonoBehaviourPublicInInUnique), "LoadMap", new Type[]
		{
			typeof(int),
			typeof(int)
		})]
		[HarmonyPrefix]
		[HarmonyPriority(int.MaxValue)]
		internal static void PreServerSendLoadMap(ref int param_0, ref int param_1)
		{
			if (GameMaster.Instance.nextGameModeId != -1 && !((Il2CppArrayBase<GameModeData>)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.allGameModes)[param_1].skipAsString)
			{
				param_1 = GameMaster.Instance.nextGameModeId;
				GameMaster.Instance.nextGameModeId = -1;
				if (GameMaster.Instance.nextMapId != -1)
				{
					param_0 = GameMaster.Instance.nextMapId;
					GameMaster.Instance.nextMapId = -1;
				}
				else
				{
					param_0 = ((Il2CppArrayBase<GameModeData>)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.allGameModes)[param_1].Method_Public_Map_Int32_0(MonoBehaviourPublicDi2UIObacspDi2UIObUnique.Instance.GetPlayersAlive()).id;
				}
			}
		}

		[HarmonyPatch(typeof(MonoBehaviourPublicInInUnique), "PlayerDied")]
		[HarmonyPostfix]
		internal static void PostServerSendPlayerDied(ulong param_0)
		{
			if ((Object)(object)MonoBehaviourPublicCSDi2UIInstObUIloDiUnique.Instance.gameMode == (Object)(object)MonoBehaviourPublicGadealGaLi1pralObInUnique.Instance.defaultMode)
			{
				MonoBehaviourPublicObInCoIE85SiAwVoFoCoUnique.Instance.QueueRespawn(param_0, 3f);
			}
		}
	}
	[BepInPlugin("lammas123.GameMaster", "GameMaster", "1.1.1")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public sealed class GameMaster : BasePlugin
	{
		internal int nextGameModeId = -1;

		internal int nextMapId = -1;

		internal static GameMaster Instance { get; private set; }

		public override void Load()
		{
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Expected O, but got Unknown
			CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
			CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture;
			CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
			CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;
			Instance = this;
			Api.RegisterCommand((BaseCommand)(object)new ModesCommand());
			Api.RegisterCommand((BaseCommand)(object)new MapsCommand());
			Api.RegisterCommand((BaseCommand)(object)new ModeInfoCommand());
			Api.RegisterCommand((BaseCommand)(object)new PlayCommand());
			Api.RegisterCommand((BaseCommand)(object)new StartCommand());
			Api.RegisterCommand((BaseCommand)(object)new SkipCommand());
			Api.RegisterCommand((BaseCommand)(object)new LobbyCommand());
			Api.RegisterCommand((BaseCommand)(object)new PracticeCommand());
			Api.RegisterCommand((BaseCommand)(object)new ToggleModeCommand());
			Api.RegisterCommand((BaseCommand)(object)new RestartCommand());
			Api.RegisterCommand((BaseCommand)(object)new TimeCommand());
			Api.RegisterCommand((BaseCommand)(object)new KillCommand());
			Api.RegisterCommand((BaseCommand)(object)new ExplodeCommand());
			Api.RegisterCommand((BaseCommand)(object)new RespawnCommand());
			new Harmony("GameMaster").PatchAll(typeof(Patches));
			ManualLogSource log = ((BasePlugin)this).Log;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(15, 2, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Initialized [");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("GameMaster");
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("1.1.1");
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("]");
			}
			log.LogInfo(val);
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "lammas123.GameMaster";

		public const string PLUGIN_NAME = "GameMaster";

		public const string PLUGIN_VERSION = "1.1.1";
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}
[CompilerGenerated]
internal sealed class <>z__ReadOnlySingleElementList<T> : IEnumerable, ICollection, IList, IEnumerable<T>, IReadOnlyCollection<T>, IReadOnlyList<T>, ICollection<T>, IList<T>
{
	private sealed class Enumerator : IDisposable, IEnumerator, IEnumerator<T>
	{
		object IEnumerator.Current => _item;

		T IEnumerator<T>.Current => _item;

		public Enumerator(T item)
		{
			_item = item;
		}

		bool IEnumerator.MoveNext()
		{
			if (!_moveNextCalled)
			{
				return _moveNextCalled = true;
			}
			return false;
		}

		void IEnumerator.Reset()
		{
			_moveNextCalled = false;
		}

		void IDisposable.Dispose()
		{
		}
	}

	int ICollection.Count => 1;

	bool ICollection.IsSynchronized => false;

	object ICollection.SyncRoot => this;

	object IList.this[int index]
	{
		get
		{
			if (index != 0)
			{
				throw new IndexOutOfRangeException();
			}
			return _item;
		}
		set
		{
			throw new NotSupportedException();
		}
	}

	bool IList.IsFixedSize => true;

	bool IList.IsReadOnly => true;

	int IReadOnlyCollection<T>.Count => 1;

	T IReadOnlyList<T>.this[int index]
	{
		get
		{
			if (index != 0)
			{
				throw new IndexOutOfRangeException();
			}
			return _item;
		}
	}

	int ICollection<T>.Count => 1;

	bool ICollection<T>.IsReadOnly => true;

	T IList<T>.this[int index]
	{
		get
		{
			if (index != 0)
			{
				throw new IndexOutOfRangeException();
			}
			return _item;
		}
		set
		{
			throw new NotSupportedException();
		}
	}

	public <>z__ReadOnlySingleElementList(T item)
	{
		_item = item;
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		return new Enumerator(_item);
	}

	void ICollection.CopyTo(Array array, int index)
	{
		array.SetValue(_item, index);
	}

	int IList.Add(object value)
	{
		throw new NotSupportedException();
	}

	void IList.Clear()
	{
		throw new NotSupportedException();
	}

	bool IList.Contains(object value)
	{
		return EqualityComparer<T>.Default.Equals(_item, (T)value);
	}

	int IList.IndexOf(object value)
	{
		if (!EqualityComparer<T>.Default.Equals(_item, (T)value))
		{
			return -1;
		}
		return 0;
	}

	void IList.Insert(int index, object value)
	{
		throw new NotSupportedException();
	}

	void IList.Remove(object value)
	{
		throw new NotSupportedException();
	}

	void IList.RemoveAt(int index)
	{
		throw new NotSupportedException();
	}

	IEnumerator<T> IEnumerable<T>.GetEnumerator()
	{
		return new Enumerator(_item);
	}

	void ICollection<T>.Add(T item)
	{
		throw new NotSupportedException();
	}

	void ICollection<T>.Clear()
	{
		throw new NotSupportedException();
	}

	bool ICollection<T>.Contains(T item)
	{
		return EqualityComparer<T>.Default.Equals(_item, item);
	}

	void ICollection<T>.CopyTo(T[] array, int arrayIndex)
	{
		array[arrayIndex] = _item;
	}

	bool ICollection<T>.Remove(T item)
	{
		throw new NotSupportedException();
	}

	int IList<T>.IndexOf(T item)
	{
		if (!EqualityComparer<T>.Default.Equals(_item, item))
		{
			return -1;
		}
		return 0;
	}

	void IList<T>.Insert(int index, T item)
	{
		throw new NotSupportedException();
	}

	void IList<T>.RemoveAt(int index)
	{
		throw new NotSupportedException();
	}
}