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 LethalShygo v0.0.4
plugins/LethalShygo.dll
Decompiled 2 years agousing 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; } }