using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using LethalCompany_Shygo.Patches;
using LethalShygo.Properties;
using LethalThings;
using Microsoft.CodeAnalysis;
using ShygoMod;
using ShygoMod.Modules;
using ShygoMod.Patches;
using ShygoMod.Utils;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("LethalShygo")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyCopyright("LethalCompany_Shygo")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("LethalShygo")]
[assembly: AssemblyTitle("LethalShygo")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
internal class <Module>
{
static <Module>()
{
}
}
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 LethalShygo.Properties
{
[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[DebuggerNonUserCode]
[CompilerGenerated]
internal class Resources
{
private static ResourceManager resourceMan;
private static CultureInfo resourceCulture;
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static ResourceManager ResourceManager
{
get
{
if (resourceMan == null)
{
ResourceManager resourceManager = new ResourceManager("LethalShygo.Properties.Resources", typeof(Resources).Assembly);
resourceMan = resourceManager;
}
return resourceMan;
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
internal static byte[] AssetsBundles
{
get
{
object @object = ResourceManager.GetObject("AssetsBundles", resourceCulture);
return (byte[])@object;
}
}
internal static byte[] AssetsBundles_manifest
{
get
{
object @object = ResourceManager.GetObject("AssetsBundles_manifest", resourceCulture);
return (byte[])@object;
}
}
internal static byte[] AssetsBundles1
{
get
{
object @object = ResourceManager.GetObject("AssetsBundles1", resourceCulture);
return (byte[])@object;
}
}
internal static byte[] AssetsBundles2
{
get
{
object @object = ResourceManager.GetObject("AssetsBundles2", resourceCulture);
return (byte[])@object;
}
}
internal static byte[] shygoobject
{
get
{
object @object = ResourceManager.GetObject("shygoobject", resourceCulture);
return (byte[])@object;
}
}
internal static byte[] shygoobject_manifest
{
get
{
object @object = ResourceManager.GetObject("shygoobject_manifest", resourceCulture);
return (byte[])@object;
}
}
internal static byte[] shygoobject1
{
get
{
object @object = ResourceManager.GetObject("shygoobject1", resourceCulture);
return (byte[])@object;
}
}
internal static byte[] shygoobject2
{
get
{
object @object = ResourceManager.GetObject("shygoobject2", resourceCulture);
return (byte[])@object;
}
}
internal Resources()
{
}
}
}
namespace LethalCompany_Shygo.Patches
{
[HarmonyPatch]
internal class RoundManager_Pathe
{
private static ExampleNetworkHandler handler;
[HarmonyPrefix]
[HarmonyPatch(typeof(RoundManager), "RefreshEnemiesList")]
private static void RefreshEnemiesList()
{
try
{
if (NetworkManager.Singleton.IsServer)
{
if ((Object)(object)handler == (Object)null)
{
handler = Object.FindObjectOfType<ExampleNetworkHandler>();
}
if ((Object)(object)handler != (Object)null)
{
handler.TeleportAllPlayerInRound();
}
}
}
catch
{
ShygoModBase.Log.LogError((object)"Failed to instantiate network prefab!");
}
}
}
}
namespace ShygoMod
{
[BepInPlugin("Shygo", "LethalCompany_Shygo", "1.0.0.0")]
public class ShygoModBase : BaseUnityPlugin
{
public static readonly Lazy<ShygoModBase> Instance = new Lazy<ShygoModBase>(() => new ShygoModBase());
private const string modGUID = "Shygo";
private const string modName = "LethalCompany_Shygo";
private const string modVersion = "1.0.0.0";
public static ManualLogSource Log = new ManualLogSource("LethalCompany_Shygo");
private readonly Harmony harmony = new Harmony("Shygo");
private void Awake()
{
Log = Logger.CreateLogSource("Shygo");
Log.LogInfo((object)"PluginName: LethalCompany_Shygo, VersionString: 1.0.0.0 is loading...");
ConfigSetup();
LoadBundle();
harmony.PatchAll(typeof(NetworkObjectManager));
harmony.PatchAll(typeof(RoundManager_Pathe));
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
Type[] array = types;
foreach (Type type in array)
{
MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
MethodInfo[] array2 = methods;
foreach (MethodInfo methodInfo in array2)
{
object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
if (customAttributes.Length != 0)
{
methodInfo.Invoke(null, null);
}
}
}
}
private void ConfigSetup()
{
}
private void LoadBundle()
{
}
}
}
namespace ShygoMod.Utils
{
public class AssetBundlesManager
{
private static AssetBundlesManager _instance;
private AssetBundle MainAssetBundle = AssetBundle.LoadFromMemory(Resources.shygoobject);
private Dictionary<string, GameObject> assetBundles = new Dictionary<string, GameObject>();
public static AssetBundlesManager Instance
{
get
{
if (_instance == null)
{
_instance = new AssetBundlesManager();
}
return _instance;
}
}
public GameObject Load(string name = "shygoobject")
{
if (!assetBundles.TryGetValue(name.ToLower(), out var value))
{
value = MainAssetBundle.LoadAsset<GameObject>(name.ToLower() + ".prefab");
if ((Object)(object)value != (Object)null)
{
assetBundles.Add(name.ToLower(), value);
}
else
{
ShygoModBase.Log.LogError((object)"Failed to LoadAsset<GameObject>()!");
}
}
return value;
}
}
}
namespace ShygoMod.Patches
{
[HarmonyPatch]
internal class NetworkObjectManager
{
private static GameObject networkPrefab;
[HarmonyPostfix]
[HarmonyPatch(typeof(GameNetworkManager), "Start")]
private static void Start_Prefix(GameNetworkManager __instance)
{
if (!((Object)(object)networkPrefab != (Object)null))
{
networkPrefab = AssetBundlesManager.Instance.Load();
if ((Object)(object)networkPrefab != (Object)null)
{
networkPrefab.AddComponent<ExampleNetworkHandler>();
NetworkManager.Singleton.AddNetworkPrefab(networkPrefab);
}
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(StartOfRound), "Awake")]
private static void SpawnNetworkHandler()
{
//IL_0024: 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)
if (NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer)
{
GameObject val = Object.Instantiate<GameObject>(networkPrefab, Vector3.zero, Quaternion.identity);
val.GetComponent<NetworkObject>().Spawn(false);
}
}
}
}
namespace ShygoMod.Modules
{
public class ExampleNetworkHandler : NetworkBehaviour
{
public void TeleportAllPlayerInRound()
{
((MonoBehaviour)this).StartCoroutine(TeleportPlayerInRoundCoroutine());
}
public void TeleportAllPlayerInSpawn()
{
((MonoBehaviour)this).StartCoroutine(TeleportPlayerInSpawnCoroutine());
}
private IEnumerator TeleportPlayerInRoundCoroutine()
{
yield return (object)new WaitForSeconds(15f);
for (int i = 0; i < NetworkManager.Singleton.ConnectedClients.Count; i++)
{
Vector3 position2 = RoundManager.Instance.insideAINodes[Random.Range(0, RoundManager.Instance.insideAINodes.Length)].transform.position;
position2 = RoundManager.Instance.GetRandomNavMeshPositionInRadiusSpherical(position2, 10f, default(NavMeshHit));
TeleportPlayerInRoundServerRpc(i, position2);
yield return null;
}
}
[ServerRpc(RequireOwnership = false)]
public void TeleportPlayerInRoundServerRpc(int playerObj, Vector3 teleportPos)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2326039350u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, playerObj);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref teleportPos);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2326039350u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
TeleportPlayerInRoundClientRpc(playerObj, teleportPos);
}
}
}
[ClientRpc]
public void TeleportPlayerInRoundClientRpc(int playerObj, Vector3 teleportPos)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1000866703u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, playerObj);
((FastBufferWriter)(ref val2)).WriteValueSafe(ref teleportPos);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1000866703u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
Utilities.TeleportPlayer(playerObj, teleportPos);
}
}
}
private IEnumerator TeleportPlayerInSpawnCoroutine()
{
yield return (object)new WaitForSeconds(4f);
for (int i = 0; i < NetworkManager.Singleton.ConnectedClients.Count; i++)
{
TeleportPlayerInSpawnServerRpc(i);
yield return null;
}
}
[ServerRpc(RequireOwnership = false)]
public void TeleportPlayerInSpawnServerRpc(int playerObj)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3853993999u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, playerObj);
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3853993999u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
TeleportPlayerInSpawnClientRpc(playerObj);
}
}
}
[ClientRpc]
public void TeleportPlayerInSpawnClientRpc(int playerObj)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(806288107u, val, (RpcDelivery)0);
BytePacker.WriteValueBitPacked(val2, playerObj);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 806288107u, val, (RpcDelivery)0);
}
if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
StartOfRound.Instance.allPlayerScripts[playerObj].TeleportPlayer(StartOfRound.Instance.GetPlayerSpawnPosition(playerObj, false), false, 0f, false, true);
}
}
}
protected override void __initializeVariables()
{
((NetworkBehaviour)this).__initializeVariables();
}
[RuntimeInitializeOnLoadMethod]
internal static void InitializeRPCS_ExampleNetworkHandler()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
NetworkManager.__rpc_func_table.Add(2326039350u, new RpcReceiveHandler(__rpc_handler_2326039350));
NetworkManager.__rpc_func_table.Add(1000866703u, new RpcReceiveHandler(__rpc_handler_1000866703));
NetworkManager.__rpc_func_table.Add(3853993999u, new RpcReceiveHandler(__rpc_handler_3853993999));
NetworkManager.__rpc_func_table.Add(806288107u, new RpcReceiveHandler(__rpc_handler_806288107));
}
private static void __rpc_handler_2326039350(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: 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_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int playerObj = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref playerObj);
Vector3 teleportPos = default(Vector3);
((FastBufferReader)(ref reader)).ReadValueSafe(ref teleportPos);
target.__rpc_exec_stage = (__RpcExecStage)1;
((ExampleNetworkHandler)(object)target).TeleportPlayerInRoundServerRpc(playerObj, teleportPos);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_1000866703(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: 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_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int playerObj = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref playerObj);
Vector3 teleportPos = default(Vector3);
((FastBufferReader)(ref reader)).ReadValueSafe(ref teleportPos);
target.__rpc_exec_stage = (__RpcExecStage)2;
((ExampleNetworkHandler)(object)target).TeleportPlayerInRoundClientRpc(playerObj, teleportPos);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3853993999(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int playerObj = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref playerObj);
target.__rpc_exec_stage = (__RpcExecStage)1;
((ExampleNetworkHandler)(object)target).TeleportPlayerInSpawnServerRpc(playerObj);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_806288107(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
int playerObj = default(int);
ByteUnpacker.ReadValueBitPacked(reader, ref playerObj);
target.__rpc_exec_stage = (__RpcExecStage)2;
((ExampleNetworkHandler)(object)target).TeleportPlayerInSpawnClientRpc(playerObj);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "ExampleNetworkHandler";
}
}
}
namespace ShygoMod.ConfigAttributes
{
internal sealed class ConfigurationManagerAttributes
{
public delegate void CustomHotkeyDrawerFunc(ConfigEntryBase setting, ref bool isCurrentlyAcceptingInput);
public bool? ShowRangeAsPercent;
public Action<ConfigEntryBase> CustomDrawer;
public CustomHotkeyDrawerFunc CustomHotkeyDrawer;
public bool? Browsable;
public string Category;
public object DefaultValue;
public bool? HideDefaultButton;
public bool? HideSettingName;
public string Description;
public string DispName;
public int? Order;
public bool? ReadOnly;
public bool? IsAdvanced;
public Func<object, string> ObjToStr;
public Func<string, object> StrToObj;
}
}