Decompiled source of LethalCheat v1.5.2
BepInEx/plugins/Acromata-TwoHandedMod-1.0.0/BepInEx/plugins/TwoHandedMod.dll
Decompiled 4 months agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using TwoHanded.Patches; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("TwoHanded")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("TwoHanded")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4b54e22a-0014-42b8-b3c4-ee3db577c8bf")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace TwoHanded { [BepInPlugin("Acromata.TwoHanded", "Two Handed Mod", "1.0.0")] public class TwoHandedBase : BaseUnityPlugin { private const string modGUID = "Acromata.TwoHanded"; private const string modName = "Two Handed Mod"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Acromata.TwoHanded"); private static TwoHandedBase Instance; internal ManualLogSource logSource; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } logSource = Logger.CreateLogSource("Acromata.TwoHanded"); harmony.PatchAll(typeof(TwoHandedBase)); harmony.PatchAll(typeof(PlayerControllerBPatch)); } } } namespace TwoHanded.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { [HarmonyPatch("BeginGrabObject")] [HarmonyPostfix] private static void UpdateBeginGrabObject(ref bool ___twoHanded) { ___twoHanded = false; } [HarmonyPatch("GrabObjectClientRpc")] [HarmonyPostfix] private static void UpdateGrabObjectClientRpc(ref bool ___twoHanded) { ___twoHanded = false; } [HarmonyPatch("SwitchToItemSlot")] [HarmonyPostfix] private static void UpdateSwitchToItemSlot(ref bool ___twoHanded) { ___twoHanded = false; } } }
BepInEx/plugins/AinaVT-LethalConfig-1.4.2/plugins/LethalConfig/LethalConfig.dll
Decompiled 4 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using LethalConfig.AutoConfig; using LethalConfig.ConfigItems; using LethalConfig.ConfigItems.Options; using LethalConfig.Mods; using LethalConfig.MonoBehaviours; using LethalConfig.MonoBehaviours.Components; using LethalConfig.MonoBehaviours.Managers; using LethalConfig.Utils; using Newtonsoft.Json; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.Serialization; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { MonoScriptData result = default(MonoScriptData); result.FilePathsData = new byte[3877] { 0, 0, 0, 3, 0, 0, 0, 49, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 92, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 92, 67, 111, 110, 102, 105, 103, 69, 110, 116, 114, 121, 80, 97, 116, 104, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 66, 97, 115, 101, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 66, 97, 115, 101, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 66, 97, 115, 101, 82, 97, 110, 103, 101, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 67, 97, 110, 77, 111, 100, 105, 102, 121, 82, 101, 115, 117, 108, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 73, 110, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 26, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 38, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 37, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 80, 108, 117, 103, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 27, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 100, 115, 92, 77, 111, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 31, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 100, 115, 92, 77, 111, 100, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 100, 115, 92, 84, 104, 117, 110, 100, 101, 114, 115, 116, 111, 114, 101, 77, 97, 110, 105, 102, 101, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 77, 111, 100, 67, 111, 110, 102, 105, 103, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 73, 110, 102, 111, 66, 111, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 78, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 48, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 66, 111, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 97, 110, 97, 103, 101, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 65, 117, 100, 105, 111, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 97, 110, 97, 103, 101, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 111, 100, 73, 110, 102, 111, 66, 111, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 41, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 111, 100, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 111, 100, 76, 105, 115, 116, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 83, 101, 99, 116, 105, 111, 110, 72, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 41, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 84, 111, 111, 108, 116, 105, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 84, 111, 111, 108, 116, 105, 112, 83, 121, 115, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 48, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 84, 111, 111, 108, 116, 105, 112, 84, 114, 105, 103, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 46, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 86, 101, 114, 115, 105, 111, 110, 76, 97, 98, 101, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 80, 97, 116, 99, 104, 101, 115, 92, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 80, 97, 116, 99, 104, 101, 115, 92, 81, 117, 105, 99, 107, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 43, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 65, 115, 115, 101, 109, 98, 108, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 31, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 65, 115, 115, 101, 116, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 33, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 76, 111, 103, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 35, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 77, 101, 110, 117, 115, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 34, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 80, 97, 116, 104, 85, 116, 105, 108, 115, 46, 99, 115 }; result.TypesData = new byte[3566] { 0, 0, 0, 0, 43, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 124, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 124, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 66, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 124, 67, 111, 110, 102, 105, 103, 70, 105, 108, 101, 65, 115, 115, 101, 109, 98, 108, 121, 80, 97, 105, 114, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 124, 67, 111, 110, 102, 105, 103, 69, 110, 116, 114, 121, 80, 97, 116, 104, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 66, 97, 115, 101, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 66, 97, 115, 101, 86, 97, 108, 117, 101, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 47, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 47, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 50, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 46, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 50, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 48, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 48, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 66, 97, 115, 101, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 49, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 66, 97, 115, 101, 82, 97, 110, 103, 101, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 52, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 48, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 67, 97, 110, 77, 111, 100, 105, 102, 121, 82, 101, 115, 117, 108, 116, 0, 0, 0, 0, 52, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 55, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 51, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 55, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 53, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 53, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 49, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 73, 110, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 52, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 54, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 47, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 49, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 20, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 67, 111, 110, 102, 105, 103, 115, 0, 0, 0, 0, 32, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 23, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 80, 108, 117, 103, 105, 110, 73, 110, 102, 111, 0, 0, 0, 0, 31, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 80, 108, 117, 103, 105, 110, 0, 0, 0, 0, 21, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 100, 115, 124, 77, 111, 100, 0, 0, 0, 0, 25, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 100, 115, 124, 77, 111, 100, 73, 110, 102, 111, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 100, 115, 124, 84, 104, 117, 110, 100, 101, 114, 115, 116, 111, 114, 101, 77, 97, 110, 105, 102, 101, 115, 116, 0, 0, 0, 0, 61, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 61, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 64, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 60, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 64, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 62, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 62, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 1, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 77, 111, 100, 67, 111, 110, 102, 105, 103, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 1, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 77, 111, 100, 67, 111, 110, 102, 105, 103, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 61, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 63, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 41, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 73, 110, 102, 111, 66, 111, 120, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 76, 105, 115, 116, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 0, 0, 0, 0, 50, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 78, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 0, 0, 0, 0, 42, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 66, 111, 120, 0, 0, 0, 0, 59, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 77, 97, 110, 97, 103, 101, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 65, 117, 100, 105, 111, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 54, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 77, 97, 110, 97, 103, 101, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 77, 111, 100, 73, 110, 102, 111, 66, 111, 120, 0, 0, 0, 0, 35, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 77, 111, 100, 76, 105, 115, 116, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 77, 111, 100, 76, 105, 115, 116, 73, 116, 101, 109, 0, 0, 0, 0, 41, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 83, 101, 99, 116, 105, 111, 110, 72, 101, 97, 100, 101, 114, 0, 0, 0, 0, 35, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 84, 111, 111, 108, 116, 105, 112, 0, 0, 0, 0, 41, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 84, 111, 111, 108, 116, 105, 112, 83, 121, 115, 116, 101, 109, 0, 0, 0, 0, 42, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 84, 111, 111, 108, 116, 105, 112, 84, 114, 105, 103, 103, 101, 114, 0, 0, 0, 0, 40, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 86, 101, 114, 115, 105, 111, 110, 76, 97, 98, 101, 108, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 80, 97, 116, 99, 104, 101, 115, 124, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 80, 97, 116, 99, 104, 101, 115, 124, 81, 117, 105, 99, 107, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 0, 0, 0, 0, 37, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 65, 115, 115, 101, 109, 98, 108, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 25, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 65, 115, 115, 101, 116, 115, 0, 0, 0, 0, 27, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 76, 111, 103, 85, 116, 105, 108, 115, 0, 0, 0, 0, 29, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 77, 101, 110, 117, 115, 85, 116, 105, 108, 115, 0, 0, 0, 0, 28, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 80, 97, 116, 104, 85, 116, 105, 108, 115 }; result.TotalFiles = 65; result.TotalTypes = 70; result.IsEditorOnly = false; return result; } } namespace LethalConfig { internal static class Configs { private enum TestEnum { None, First, Second } internal static ConfigEntry<bool> IsLethalConfigHidden { get; private set; } internal static void Initialize(ConfigFile config) { CreateConfigs(config); CreateExampleConfigs(config); } private static void CreateConfigs(ConfigFile config) { IsLethalConfigHidden = config.Bind<bool>("General", "Hide Lethal Config", false, "Hides the LethalConfig menu in the game. This setting will not show up in LethalConfig itself."); LethalConfigManager.SkipAutoGenFor((ConfigEntryBase)(object)IsLethalConfigHidden); } private static void CreateExampleConfigs(ConfigFile config) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Expected O, but got Unknown //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Expected O, but got Unknown ConfigEntry<int> configEntry = config.Bind<int>("Example", "Int Slider", 30, new ConfigDescription("This is an integer slider. You can also type a value in the input field to the right of the slider.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>())); ConfigEntry<float> configEntry2 = config.Bind<float>("Example", "Float Slider", 0f, new ConfigDescription("This is a float slider. You can also type a value in the input field to the right of the slider.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), Array.Empty<object>())); ConfigEntry<float> configEntry3 = config.Bind<float>("Example", "Float Step Slider", 0f, new ConfigDescription("This is a float step slider. It set values in increments. You can also type a value in the input field to the right of the slider.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), Array.Empty<object>())); ConfigEntry<bool> configEntry4 = config.Bind<bool>("Example", "Bool Checkbox", false, new ConfigDescription("This is a bool checkbox.", (AcceptableValueBase)null, Array.Empty<object>())); ConfigEntry<TestEnum> configEntry5 = config.Bind<TestEnum>("Example", "Enum Dropdown", TestEnum.None, new ConfigDescription("This is a enum dropdown.", (AcceptableValueBase)null, Array.Empty<object>())); ConfigEntry<string> configEntry6 = config.Bind<string>("Example", "Text Input", "Example", "This is a text input field. It can have a limit of characters too."); ConfigEntry<string> configEntry7 = config.Bind<string>("Example", "Multiline Text Input", "Example", "This is a text input field. It can have a limit of characters too."); ConfigEntry<string> configEntry8 = config.Bind<string>("Example", "Text Input Dropdown", "Two", new ConfigDescription("This is a text input with an acceptable value list.", (AcceptableValueBase)(object)new AcceptableValueList<string>(new string[3] { "One", "Two", "HL:Alyx" }), Array.Empty<object>())); ConfigEntry<int> configEntry9 = config.Bind<int>("Example", "Int Input", 50, "This is an integer input field."); ConfigEntry<float> configEntry10 = config.Bind<float>("Example", "Float Input", 0.5f, "This is a float input field."); LethalConfigManager.AddConfigItem(new IntSliderConfigItem(configEntry, requiresRestart: false)); LethalConfigManager.AddConfigItem(new FloatSliderConfigItem(configEntry2, requiresRestart: false)); LethalConfigManager.AddConfigItem(new FloatStepSliderConfigItem(configEntry3, new FloatStepSliderOptions { Step = 0.1f, RequiresRestart = false, Min = -1f, Max = 1f })); LethalConfigManager.AddConfigItem(new BoolCheckBoxConfigItem(configEntry4, requiresRestart: false)); LethalConfigManager.AddConfigItem(new EnumDropDownConfigItem<TestEnum>(configEntry5, requiresRestart: false)); LethalConfigManager.AddConfigItem(new TextInputFieldConfigItem(configEntry6, requiresRestart: false)); LethalConfigManager.AddConfigItem(new TextInputFieldConfigItem(configEntry7, new TextInputFieldOptions { NumberOfLines = 0, TrimText = true })); LethalConfigManager.AddConfigItem(new GenericButtonConfigItem("Example", "Button", "This is a test button with a callback", "Open", delegate { if (Object.op_Implicit((Object)(object)ConfigMenuManager.Instance)) { ConfigMenuManager.DisplayNotification("This is a test notification", "OK"); } })); LethalConfigManager.AddConfigItem(new IntInputFieldConfigItem(configEntry9, new IntInputFieldOptions { Max = 150 })); LethalConfigManager.AddConfigItem(new FloatInputFieldConfigItem(configEntry10, new FloatInputFieldOptions { Max = 2.5f })); LethalConfigManager.AddConfigItem(new TextDropDownConfigItem(configEntry8, new TextDropDownOptions { RequiresRestart = false })); } } public static class LethalConfigManager { private static readonly List<AutoConfigGenerator.ConfigFileAssemblyPair> CustomConfigFiles = new List<AutoConfigGenerator.ConfigFileAssemblyPair>(); private static bool _hasGeneratedMissingConfigs; internal static Dictionary<string, Mod> Mods { get; } = new Dictionary<string, Mod>(); private static Dictionary<Mod, Assembly> ModToAssemblyMap { get; } = new Dictionary<Mod, Assembly>(); internal static void AutoGenerateMissingConfigsIfNeeded() { if (_hasGeneratedMissingConfigs) { return; } Mod[] second = Mods.Values.ToArray(); IEnumerable<BaseConfigItem> existingConfigsFlat = Mods.SelectMany((KeyValuePair<string, Mod> kv) => kv.Value.ConfigItems); AutoConfigGenerator.AutoConfigItem[] array = AutoConfigGenerator.AutoGenerateConfigs(CustomConfigFiles.ToArray()); Dictionary<Mod, IEnumerable<BaseConfigItem>> dictionary = (from c in array group c.ConfigItem by ModForAssembly(c.Assembly) into kv where kv.Key != null select kv).SelectMany((IGrouping<Mod, BaseConfigItem> kv) => from c in kv.Select(delegate(BaseConfigItem c) { c.Owner = kv.Key; return c; }) where !kv.Key.EntriesToSkipAutoGen.Any((ConfigEntryPath path) => path.Matches(c)) where existingConfigsFlat.FirstOrDefault(c.IsSameConfig) == null group c by c.Owner).ToDictionary((IGrouping<Mod, BaseConfigItem> kv) => kv.Key, (IGrouping<Mod, BaseConfigItem> kv) => kv.Select((BaseConfigItem c) => c)); Mod[] array2 = dictionary.Keys.Except(second).ToArray(); Mod[] array3 = array2; foreach (Mod obj in array3) { obj.IsAutoGenerated = true; obj.ModInfo.Description += "\n*This mod entry was automatically generated as it does not use LethalConfig directly."; } foreach (KeyValuePair<Mod, IEnumerable<BaseConfigItem>> item in dictionary) { Assembly valueOrDefault = ModToAssemblyMap.GetValueOrDefault(item.Key); if (valueOrDefault == null) { continue; } foreach (BaseConfigItem item2 in item.Value) { AddConfigItemForAssembly(item2, valueOrDefault); } } LogUtils.LogInfo($"Generated {array2.Length} mod entries."); LogUtils.LogInfo($"Generated {array.Length} configs, of which {dictionary.SelectMany((KeyValuePair<Mod, IEnumerable<BaseConfigItem>> kv) => kv.Value).Count()} were missing and registered."); _hasGeneratedMissingConfigs = true; } public static void AddConfigItem(BaseConfigItem configItem) { if (AddConfigItemForAssembly(configItem, Assembly.GetCallingAssembly())) { LogUtils.LogInfo($"Registered config \"{configItem}\""); } } public static void AddConfigItem(BaseConfigItem configItem, Assembly assembly) { if (AddConfigItemForAssembly(configItem, assembly)) { LogUtils.LogInfo($"Registered config \"{configItem}\""); } } private static bool AddConfigItemForAssembly(BaseConfigItem configItem, Assembly assembly) { Mod mod = ModForAssembly(assembly); if (mod == null) { LogUtils.LogWarning("Mod for assembly not found."); return false; } configItem.Owner = mod; if (mod.ConfigItems.Any((BaseConfigItem c) => c.IsSameConfig(configItem))) { LogUtils.LogWarning($"Ignoring duplicated config \"{configItem}\""); return false; } mod.AddConfigItem(configItem); return true; } private static Mod ModForAssembly(Assembly assembly) { if (!assembly.TryGetModInfo(out var modInfo)) { return null; } if (Mods.TryGetValue(modInfo.Guid, out var value)) { return value; } Mod mod = new Mod(modInfo); Mods.Add(modInfo.Guid, mod); ModToAssemblyMap.Add(mod, assembly); return mod; } public static void SetModIcon(Sprite sprite) { if (!((Object)(object)sprite == (Object)null)) { Mod mod = ModForAssembly(Assembly.GetCallingAssembly()); if (mod != null) { mod.ModInfo.Icon = sprite; } } } public static void SetModDescription(string description) { if (description != null) { Mod mod = ModForAssembly(Assembly.GetCallingAssembly()); if (mod != null) { mod.ModInfo.Description = description; } } } public static void SkipAutoGenFor(string configSection) { ModForAssembly(Assembly.GetCallingAssembly())?.EntriesToSkipAutoGen.Add(new ConfigEntryPath(configSection, "*")); } public static void SkipAutoGenFor(ConfigEntryBase configEntryBase) { ModForAssembly(Assembly.GetCallingAssembly())?.EntriesToSkipAutoGen.Add(new ConfigEntryPath(configEntryBase.Definition.Section, configEntryBase.Definition.Key)); } public static void SkipAutoGen() { ModForAssembly(Assembly.GetCallingAssembly())?.EntriesToSkipAutoGen.Add(new ConfigEntryPath("*", "*")); } public static void QueueCustomConfigFileForAutoGeneration(ConfigFile configFile) { CustomConfigFiles.Add(new AutoConfigGenerator.ConfigFileAssemblyPair { ConfigFile = configFile, Assembly = Assembly.GetCallingAssembly() }); } } internal static class PluginInfo { public const string Guid = "ainavt.lc.lethalconfig"; public const string Name = "LethalConfig"; public const string Version = "1.4.2"; } [BepInPlugin("ainavt.lc.lethalconfig", "LethalConfig", "1.4.2")] internal class LethalConfigPlugin : BaseUnityPlugin { private static LethalConfigPlugin _instance; private static Harmony _harmony; private void Awake() { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown if ((Object)(object)_instance == (Object)null) { _instance = this; } LogUtils.Init("ainavt.lc.lethalconfig"); Configs.Initialize(((BaseUnityPlugin)this).Config); if (Configs.IsLethalConfigHidden.Value) { LogUtils.LogInfo("LethalConfig is hidden and will not load."); return; } Assets.Init(); _harmony = new Harmony("ainavt.lc.lethalconfig"); _harmony.PatchAll(); LogUtils.LogInfo("LethalConfig loaded!"); } } } namespace LethalConfig.Utils { internal static class AssemblyExtensions { internal static bool TryGetModInfo(this Assembly assembly, out ModInfo modInfo) { modInfo = new ModInfo(); BepInPlugin val = assembly.FindPluginAttribute(); if (val == null) { return false; } modInfo.Name = val.Name; modInfo.Guid = val.GUID; modInfo.Version = val.Version.ToString(); return true; } private static BepInPlugin FindPluginAttribute(this Assembly assembly) { Type[] source; try { source = assembly.GetTypes(); } catch (ReflectionTypeLoadException ex) { source = ex.Types.Where((Type t) => t != null).ToArray(); } return source.Select((Type type) => ((MemberInfo)type).GetCustomAttribute<BepInPlugin>()).FirstOrDefault<BepInPlugin>((Func<BepInPlugin, bool>)((BepInPlugin plugin) => plugin != null)); } } internal static class Assets { private static AssetBundle _assetBundle; internal static GameObject ConfigMenuManagerPrefab; internal static GameObject ConfigMenuNotificationPrefab; internal static GameObject ConfigMenuPrefab; internal static GameObject ModListItemPrefab; internal static GameObject SectionHeaderPrefab; internal static GameObject IntSliderPrefab; internal static GameObject FloatSliderPrefab; internal static GameObject FloatStepSliderPrefab; internal static GameObject BoolCheckBoxPrefab; internal static GameObject EnumDropDownPrefab; internal static GameObject TextDropDownPrefab; internal static GameObject TextInputFieldPrefab; internal static GameObject IntInputFieldPrefab; internal static GameObject FloatInputFieldPrefab; internal static GameObject GenericButtonPrefab; internal static Sprite DefaultModIcon; internal static Sprite LethalConfigModIcon; internal static void Init() { _assetBundle = AssetBundle.LoadFromFile(PathUtils.PathForResourceInAssembly("ainavt_lethalconfig")); if ((Object)(object)_assetBundle == (Object)null) { LogUtils.LogError("Failed to load LethalConfig bundle."); return; } LoadAsset<GameObject>("prefabs/ConfigMenuManager.prefab", out ConfigMenuManagerPrefab); LoadAsset<GameObject>("prefabs/ConfigMenuNotification.prefab", out ConfigMenuNotificationPrefab); LoadAsset<GameObject>("prefabs/ConfigMenu.prefab", out ConfigMenuPrefab); LoadAsset<GameObject>("prefabs/ModListItem.prefab", out ModListItemPrefab); LoadAsset<GameObject>("prefabs/components/SectionHeader.prefab", out SectionHeaderPrefab); LoadAsset<GameObject>("prefabs/components/IntSliderItem.prefab", out IntSliderPrefab); LoadAsset<GameObject>("prefabs/components/FloatSliderItem.prefab", out FloatSliderPrefab); LoadAsset<GameObject>("prefabs/components/FloatStepSliderItem.prefab", out FloatStepSliderPrefab); LoadAsset<GameObject>("prefabs/components/BoolCheckBoxItem.prefab", out BoolCheckBoxPrefab); LoadAsset<GameObject>("prefabs/components/EnumDropDownItem.prefab", out EnumDropDownPrefab); LoadAsset<GameObject>("prefabs/components/TextDropDownItem.prefab", out TextDropDownPrefab); LoadAsset<GameObject>("prefabs/components/TextInputFieldItem.prefab", out TextInputFieldPrefab); LoadAsset<GameObject>("prefabs/components/IntInputFieldItem.prefab", out IntInputFieldPrefab); LoadAsset<GameObject>("prefabs/components/FloatInputFieldItem.prefab", out FloatInputFieldPrefab); LoadAsset<GameObject>("prefabs/components/GenericButtonItem.prefab", out GenericButtonPrefab); LoadAsset<Sprite>("sprite/unknown-icon.png", out DefaultModIcon); LoadAsset<Sprite>("icon.png", out LethalConfigModIcon); LogUtils.LogInfo("Finished loading assets."); } private static void LoadAsset<T>(string assetName, out T asset) where T : Object { string text = "Assets/" + assetName; asset = _assetBundle.LoadAsset<T>(text); if ((Object)(object)asset == (Object)null) { LogUtils.LogError("Failed to load asset (" + text + ")"); } } } internal static class LogUtils { private static ManualLogSource _logSource; public static void Init(string pluginGuid) { _logSource = Logger.CreateLogSource(pluginGuid); } public static void LogDebug(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogDebug((object)message); } } public static void LogInfo(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogInfo((object)message); } } public static void LogWarning(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogWarning((object)message); } } public static void LogError(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogError((object)message); } } public static void LogFatal(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogFatal((object)message); } } } internal static class MenusUtils { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__0_0; public static Func<Button, GameObject> <>9__0_1; public static Func<GameObject, RectTransform> <>9__0_3; public static Func<RectTransform, float> <>9__0_4; public static Func<float, float, float> <>9__0_5; internal void <InjectMenu>b__0_0() { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); } internal GameObject <InjectMenu>b__0_1(Button b) { return ((Component)b).gameObject; } internal RectTransform <InjectMenu>b__0_3(GameObject b) { Transform transform = b.transform; return (RectTransform)(object)((transform is RectTransform) ? transform : null); } internal float <InjectMenu>b__0_4(RectTransform t) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return t.anchoredPosition.y; } internal float <InjectMenu>b__0_5(float y1, float y2) { return Mathf.Abs(y2 - y1); } } internal static void InjectMenu(Transform parentTransform, Transform mainButtonsTransform, GameObject quitButton) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Expected O, but got Unknown //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) Object.Instantiate<GameObject>(Assets.ConfigMenuManagerPrefab, parentTransform, true).transform.localPosition = Vector3.zero; GameObject obj = Object.Instantiate<GameObject>(Assets.ConfigMenuPrefab, parentTransform, false); obj.transform.localPosition = Vector3.zero; obj.transform.localScale = Vector3.one; obj.transform.localRotation = Quaternion.identity; obj.SetActive(false); GameObject obj2 = Object.Instantiate<GameObject>(Assets.ConfigMenuNotificationPrefab, parentTransform, false); obj2.transform.localPosition = Vector3.zero; obj2.transform.localScale = Vector3.one; obj2.transform.localRotation = Quaternion.identity; obj2.SetActive(false); GameObject clonedButton = Object.Instantiate<GameObject>(quitButton, mainButtonsTransform); ((UnityEventBase)clonedButton.GetComponent<Button>().onClick).RemoveAllListeners(); clonedButton.GetComponent<Button>().onClick = new ButtonClickedEvent(); ((UnityEvent)clonedButton.GetComponent<Button>().onClick).AddListener(new UnityAction(ConfigMenuManager.ShowConfigMenu)); ButtonClickedEvent onClick = clonedButton.GetComponent<Button>().onClick; object obj3 = <>c.<>9__0_0; if (obj3 == null) { UnityAction val = delegate { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); }; <>c.<>9__0_0 = val; obj3 = (object)val; } ((UnityEvent)onClick).AddListener((UnityAction)obj3); ((TMP_Text)clonedButton.GetComponentInChildren<TextMeshProUGUI>()).text = "> LethalConfig"; List<GameObject> source = (from b in ((Component)mainButtonsTransform).GetComponentsInChildren<Button>() select ((Component)b).gameObject).ToList(); List<float> list = (from t in source.Where((GameObject b) => (Object)(object)b != (Object)(object)clonedButton).Select(delegate(GameObject b) { Transform transform = b.transform; return (RectTransform)(object)((transform is RectTransform) ? transform : null); }) select t.anchoredPosition.y).ToList(); float num = list.Zip(list.Skip(1), (float y1, float y2) => Mathf.Abs(y2 - y1)).Min(); foreach (GameObject item in source.Where((GameObject g) => (Object)(object)g != (Object)(object)quitButton)) { RectTransform component = item.GetComponent<RectTransform>(); component.anchoredPosition += new Vector2(0f, num); } clonedButton.GetComponent<RectTransform>().anchoredPosition = quitButton.GetComponent<RectTransform>().anchoredPosition + new Vector2(0f, num); } } internal static class PathUtils { public static string PathForResourceInAssembly(string resourceName, Assembly assembly = null) { return Path.Combine(Path.GetDirectoryName((assembly ?? Assembly.GetCallingAssembly()).Location), resourceName); } } } namespace LethalConfig.Patches { [HarmonyPatch(typeof(MenuManager))] internal class MenuManagerPatches { [HarmonyPatch("Start")] [HarmonyPostfix] public static void StartPostFix(MenuManager __instance) { ((MonoBehaviour)__instance).StartCoroutine(DelayedMainMenuInjection()); } private static IEnumerator DelayedMainMenuInjection() { yield return (object)new WaitForSeconds(0f); InjectToMainMenu(); } private static void InjectToMainMenu() { LogUtils.LogInfo("Injecting mod config menu into main menu..."); GameObject val = GameObject.Find("MenuContainer"); if (!Object.op_Implicit((Object)(object)val)) { return; } Transform val2 = val.transform.Find("MainButtons"); if (Object.op_Implicit((Object)(object)val2)) { Transform val3 = val2.Find("QuitButton"); if (Object.op_Implicit((Object)(object)val3)) { MenusUtils.InjectMenu(val.transform, val2, ((Component)val3).gameObject); } } } } [HarmonyPatch(typeof(QuickMenuManager))] internal class QuickMenuManagerPatches { [HarmonyPatch("CloseQuickMenuPanels")] [HarmonyPostfix] public static void CloseQuickMenuPanelsPostFix(QuickMenuManager __instance) { ConfigMenu componentInChildren = ((Component)__instance.menuContainer.transform).GetComponentInChildren<ConfigMenu>(true); if (Object.op_Implicit((Object)(object)componentInChildren)) { componentInChildren.Close(animated: false); } ConfigMenuNotification componentInChildren2 = ((Component)__instance.menuContainer.transform).GetComponentInChildren<ConfigMenuNotification>(true); if (Object.op_Implicit((Object)(object)componentInChildren2)) { componentInChildren2.Close(animated: false); } } [HarmonyPatch("Start")] [HarmonyPostfix] public static void StartPostFix(QuickMenuManager __instance) { LogUtils.LogInfo("Injecting mod config menu into quick menu..."); GameObject menuContainer = __instance.menuContainer; if (!Object.op_Implicit((Object)(object)menuContainer)) { return; } Transform val = menuContainer.transform.Find("MainButtons"); if (Object.op_Implicit((Object)(object)val)) { Transform val2 = val.Find("Quit"); if (Object.op_Implicit((Object)(object)val2)) { MenusUtils.InjectMenu(menuContainer.transform, val, ((Component)val2).gameObject); } } } } } namespace LethalConfig.MonoBehaviours { internal class ConfigInfoBox : MonoBehaviour { public TextMeshProUGUI configInfoText; public void SetConfigInfo(string configInfo) { ((TMP_Text)configInfoText).text = configInfo; } } internal class ConfigList : MonoBehaviour { public GameObject listContainerObject; public DescriptionBox descriptionBox; internal void LoadConfigsForMod(Mod mod) { //IL_006f: 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) //IL_008e: 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_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) ClearConfigList(); foreach (IGrouping<string, BaseConfigItem> item in from c in mod.ConfigItems group c by c.Section) { GameObject obj = Object.Instantiate<GameObject>(Assets.SectionHeaderPrefab, listContainerObject.transform, true); obj.GetComponent<SectionHeader>().SetSectionName(item.Key); obj.transform.localPosition = Vector3.zero; obj.transform.localScale = Vector3.one; obj.transform.localRotation = Quaternion.identity; foreach (BaseConfigItem item2 in item) { GameObject val = item2.CreateGameObjectForConfig(); ModConfigController controller = val.GetComponent<ModConfigController>(); if (!controller.SetConfigItem(item2)) { Object.DestroyImmediate((Object)(object)val); return; } val.transform.SetParent(listContainerObject.transform); val.transform.localPosition = Vector3.zero; val.transform.localScale = Vector3.one; val.transform.localRotation = Quaternion.identity; controller.OnHoverEnter += delegate { descriptionBox.ShowConfigInfo(controller.GetDescription()); ConfigMenuManager.Instance.menuAudio.PlayHoverSfx(); }; } } } private void ClearConfigList() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) foreach (Transform item in listContainerObject.transform) { Object.Destroy((Object)(object)((Component)item).gameObject); } } } internal class ConfigMenu : MonoBehaviour { private static readonly int TriggerIdOpen = Animator.StringToHash("Open"); private static readonly int TriggerIdForceClose = Animator.StringToHash("ForceClose"); private static readonly int TriggerIdClose = Animator.StringToHash("Close"); public ConfigList configList; public Animator menuAnimator; private void Awake() { LethalConfigManager.AutoGenerateMissingConfigsIfNeeded(); } public void Open() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = menuAnimator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuNormal") && !((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuAppear")) { ((Component)this).gameObject.SetActive(true); menuAnimator.SetTrigger(TriggerIdOpen); ((Component)this).transform.SetAsLastSibling(); } } public void Close(bool animated = true) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = menuAnimator.GetCurrentAnimatorStateInfo(0); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuClosed") || ((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuDisappear")) { return; } foreach (BaseConfigItem item in LethalConfigManager.Mods.SelectMany((KeyValuePair<string, Mod> m) => m.Value.ConfigItems)) { item.CancelChanges(); } UpdateAppearanceOfCurrentComponents(); if (!animated) { ((Component)this).gameObject.SetActive(false); menuAnimator.SetTrigger(TriggerIdForceClose); } else { menuAnimator.SetTrigger(TriggerIdClose); } } public void OnCloseAnimationEnd() { ((Component)this).gameObject.SetActive(false); } public void OnCancelButtonClicked() { Close(); ConfigMenuManager.Instance.menuAudio.PlayCancelSfx(); } public void OnApplyButtonClicked() { List<BaseConfigItem> list = (from c in LethalConfigManager.Mods.SelectMany((KeyValuePair<string, Mod> m) => m.Value.ConfigItems) where c.HasValueChanged select c).ToList(); List<BaseConfigItem> list2 = list.Where((BaseConfigItem c) => c.RequiresRestart).ToList(); foreach (BaseConfigItem item in list) { item.ApplyChanges(); } UpdateAppearanceOfCurrentComponents(); ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); LogUtils.LogInfo($"Saved config values for {list.Count} items."); LogUtils.LogInfo($"Modified {list2.Count} item(s) that requires a restart."); if (list2.Count > 0) { ConfigMenuManager.DisplayNotification("Some of the modified settings may require a restart to take effect.", "OK"); } } private void UpdateAppearanceOfCurrentComponents() { ModConfigController[] componentsInChildren = ((Component)configList).GetComponentsInChildren<ModConfigController>(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].UpdateAppearance(); } } } internal class ConfigMenuNotification : MonoBehaviour { private static readonly int TriggerIdOpen = Animator.StringToHash("Open"); private static readonly int TriggerIdForceClose = Animator.StringToHash("ForceClose"); private static readonly int TriggerIdClose = Animator.StringToHash("Close"); public TextMeshProUGUI messageTextComponent; public TextMeshProUGUI buttonTextComponent; public Animator notificationAnimator; public void SetNotificationContent(string text, string button) { ((TMP_Text)messageTextComponent).text = text; ((TMP_Text)buttonTextComponent).text = "[" + button + "]"; } public void Open() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = notificationAnimator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationNormal") && !((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationAppear")) { ((Component)this).gameObject.SetActive(true); notificationAnimator.SetTrigger(TriggerIdOpen); ((Component)this).transform.SetAsLastSibling(); } } public void Close(bool animated = true) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = notificationAnimator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationClosed") && !((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationDisappear")) { if (!animated) { ((Component)this).gameObject.SetActive(false); notificationAnimator.SetTrigger(TriggerIdForceClose); } else { notificationAnimator.SetTrigger(TriggerIdClose); } } } public void OnButtonClick() { Close(); ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); } public void OnCloseAnimationEnd() { ((Component)this).gameObject.SetActive(false); } } internal class DescriptionBox : MonoBehaviour { public ModInfoBox modInfoBox; public ConfigInfoBox configInfoBox; private void Awake() { ((Component)modInfoBox).gameObject.SetActive(false); ((Component)configInfoBox).gameObject.SetActive(false); } public void ShowConfigInfo(string configInfo) { ((Component)configInfoBox).gameObject.SetActive(true); configInfoBox.SetConfigInfo(configInfo); HideModInfo(); } public void HideConfigInfo() { ((Component)configInfoBox).gameObject.SetActive(false); } public void ShowModInfo(Mod mod) { ((Component)modInfoBox).gameObject.SetActive(true); modInfoBox.SetModInfo(mod); HideConfigInfo(); } public void HideModInfo() { ((Component)modInfoBox).gameObject.SetActive(false); } } internal class ModInfoBox : MonoBehaviour { public Image modIconImage; public TextMeshProUGUI modInfoText; public void SetModInfo(Mod mod) { modIconImage.sprite = mod.ModInfo.Icon; ((TMP_Text)modInfoText).text = $"{mod.ModInfo}"; } } internal class ModList : MonoBehaviour { public GameObject modItemPrefab; public GameObject listContainerObject; public ConfigList configList; public DescriptionBox descriptionBox; private List<ModListItem> _items; private void Awake() { _items = new List<ModListItem>(); BuildModList(); } private void BuildModList() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) _items.Clear(); foreach (Transform item in listContainerObject.transform) { Object.Destroy((Object)(object)((Component)item).gameObject); } foreach (Mod mod in from m in LethalConfigManager.Mods.Values orderby m.ModInfo.Guid != "ainavt.lc.lethalconfig", m.IsAutoGenerated, m.ModInfo.Name select m) { GameObject val = Object.Instantiate<GameObject>(modItemPrefab, listContainerObject.transform); val.transform.localScale = Vector3.one; val.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity); ModListItem component = val.GetComponent<ModListItem>(); component.Mod = mod; component.ModSelected += ModSelected; component.OnHoverEnter += delegate { descriptionBox.ShowModInfo(mod); ConfigMenuManager.Instance.menuAudio.PlayHoverSfx(); }; component.OnHoverExit += delegate { descriptionBox.HideModInfo(); }; _items.Add(val.GetComponent<ModListItem>()); } } private void ModSelected(Mod mod) { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); configList.LoadConfigsForMod(mod); _items.First((ModListItem i) => i.Mod == mod).SetSelected(selected: true); foreach (ModListItem item in _items.Where((ModListItem i) => i.Mod != mod)) { item.SetSelected(selected: false); } } } internal class ModListItem : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler, IPointerExitHandler { public delegate void OnHoverHandler(); internal delegate void ModSelectedHandler(Mod mod); public TextMeshProUGUI textMesh; public GameObject selectedBorder; public Image modIcon; private Mod _mod; internal Mod Mod { get { return _mod; } set { _mod = value; ((TMP_Text)textMesh).text = _mod.ModInfo.Name; modIcon.sprite = _mod.ModInfo.Icon; } } public event OnHoverHandler OnHoverEnter; public event OnHoverHandler OnHoverExit; internal event ModSelectedHandler ModSelected; public void OnPointerEnter(PointerEventData eventData) { this.OnHoverEnter?.Invoke(); } public void OnPointerExit(PointerEventData eventData) { this.OnHoverExit?.Invoke(); } public void OnClick() { this.ModSelected?.Invoke(_mod); } public void SetSelected(bool selected) { selectedBorder.SetActive(selected); } public string GetDescription() { return _mod.ModInfo.Name + "\n" + _mod.ModInfo.Guid + "\n" + _mod.ModInfo.Version; } } internal class SectionHeader : MonoBehaviour { public TextMeshProUGUI textMesh; public void SetSectionName(string sectionName) { ((TMP_Text)textMesh).text = "[" + sectionName + "]"; } } internal class Tooltip : MonoBehaviour { public TextMeshProUGUI textComponent; private RectTransform _rectTransform; private Camera _uiCamera; public void SetText(string text) { ((TMP_Text)textComponent).text = text; } public void SetTarget(GameObject newTargetGameObject) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.position = newTargetGameObject.transform.position; } } internal class TooltipSystem : MonoBehaviour { private static TooltipSystem _instance; public Tooltip tooltip; private void Awake() { _instance = this; } public static void Show(string content, GameObject target) { if (!((Object)(object)_instance == (Object)null)) { ((Component)_instance.tooltip).gameObject.SetActive(true); _instance.tooltip.SetText(content); _instance.tooltip.SetTarget(target); } } public static void Hide() { if (!((Object)(object)_instance == (Object)null)) { ((Component)_instance.tooltip).gameObject.SetActive(false); } } } internal class TooltipTrigger : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler, IPointerExitHandler { public string tooltipText; public void OnPointerEnter(PointerEventData eventData) { TooltipSystem.Show(tooltipText, ((Component)this).gameObject); } public void OnPointerExit(PointerEventData eventData) { TooltipSystem.Hide(); } } internal class VersionLabel : MonoBehaviour { private void Start() { ((TMP_Text)((Component)this).GetComponent<TextMeshProUGUI>()).text = "LethalConfig v1.4.2"; } } } namespace LethalConfig.MonoBehaviours.Managers { internal class ConfigMenuAudioManager : MonoBehaviour { [FormerlySerializedAs("confirmSFX")] public AudioClip confirmSfx; [FormerlySerializedAs("cancelSFX")] public AudioClip cancelSfx; [FormerlySerializedAs("selectSFX")] public AudioClip selectSfx; [FormerlySerializedAs("hoverSFX")] public AudioClip hoverSfx; [FormerlySerializedAs("changeValueSFX")] public AudioClip changeValueSfx; public AudioSource audioSource; public void PlayConfirmSfx() { audioSource.PlayOneShot(confirmSfx); } public void PlayCancelSfx() { audioSource.PlayOneShot(cancelSfx); } public void PlayHoverSfx() { audioSource.PlayOneShot(hoverSfx); } public void PlaySelectSfx() { audioSource.PlayOneShot(selectSfx); } public void PlayChangeValueSfx() { audioSource.PlayOneShot(changeValueSfx); } } internal class ConfigMenuManager : MonoBehaviour { public ConfigMenuAudioManager menuAudio; public static ConfigMenuManager Instance { get; private set; } private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } public static void ShowConfigMenu() { ConfigMenu configMenu = Object.FindObjectOfType<ConfigMenu>(true); if (!Object.op_Implicit((Object)(object)configMenu)) { LogUtils.LogWarning("ConfigMenu object not found"); } else { configMenu.Open(); } } public static void DisplayNotification(string message, string button) { ConfigMenuNotification configMenuNotification = Object.FindObjectOfType<ConfigMenuNotification>(true); if (!Object.op_Implicit((Object)(object)configMenuNotification)) { LogUtils.LogWarning("Notification object not found"); return; } configMenuNotification.SetNotificationContent(message, button); configMenuNotification.Open(); EventSystem.current.SetSelectedGameObject(((Component)((Component)configMenuNotification).GetComponentInChildren<Button>()).gameObject); } } } namespace LethalConfig.MonoBehaviours.Components { internal class BoolCheckBoxController : ModConfigController<BoolCheckBoxConfigItem, bool> { public Toggle toggleComponent; public override void UpdateAppearance() { base.UpdateAppearance(); toggleComponent.SetIsOnWithoutNotify(base.ConfigItem.CurrentValue); } protected override void OnSetConfigItem() { toggleComponent.SetIsOnWithoutNotify(base.ConfigItem.CurrentValue); UpdateAppearance(); } public void OnCheckBoxValueChanged(bool value) { base.ConfigItem.CurrentValue = value; UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } } internal class EnumDropDownController : ModConfigController { public TMP_Dropdown dropdownComponent; private List<string> _enumNames = new List<string>(); private Type _enumType; private void OnDestroy() { BaseConfigItem.OnCurrentValueChanged -= OnCurrentValueChanged; } public override string GetDescription() { return base.GetDescription() + "\n\nDefault: " + Enum.GetName(_enumType, BaseConfigItem.BoxedDefaultValue); } public override void UpdateAppearance() { base.UpdateAppearance(); int valueWithoutNotify = _enumNames.FindIndex((string e) => e == Enum.GetName(_enumType, BaseConfigItem.CurrentBoxedValue)); dropdownComponent.SetValueWithoutNotify(valueWithoutNotify); } protected override void OnSetConfigItem() { BaseConfigItem.OnCurrentValueChanged += OnCurrentValueChanged; _enumType = BaseConfigItem.BaseConfigEntry.SettingType; _enumNames = Enum.GetNames(_enumType).ToList(); dropdownComponent.ClearOptions(); dropdownComponent.AddOptions(_enumNames); int valueWithoutNotify = _enumNames.FindIndex((string e) => e == Enum.GetName(_enumType, BaseConfigItem.CurrentBoxedValue)); dropdownComponent.SetValueWithoutNotify(valueWithoutNotify); UpdateAppearance(); } public void OnDropDownValueChanged(int index) { BaseConfigItem.CurrentBoxedValue = Enum.Parse(_enumType, _enumNames[index]); UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } private void OnCurrentValueChanged() { UpdateAppearance(); } } internal class FloatInputFieldController : ModConfigController<FloatInputFieldConfigItem, float> { public TMP_InputField textInputField; public override string GetDescription() { string text = base.GetDescription(); if (base.ConfigItem.MinValue != float.MinValue) { text += $"\nMin: {base.ConfigItem.MinValue:0.0#}"; } if (base.ConfigItem.MaxValue != float.MaxValue) { text += $"\nMax: {base.ConfigItem.MaxValue:0.0#}"; } return text; } protected override void OnSetConfigItem() { textInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue}"); UpdateAppearance(); } public void OnInputFieldEndEdit(string value) { if (float.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) base.UpdateAppearance(); textInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue}"); ((Transform)textInputField.textComponent.rectTransform).localPosition = Vector3.zero; } } internal class FloatSliderController : ModConfigController<FloatSliderConfigItem, float> { public Slider sliderComponent; public TMP_InputField valueInputField; public override string GetDescription() { return $"{base.GetDescription()}\nMin: {base.ConfigItem.MinValue:0.0#}\nMax: {base.ConfigItem.MaxValue:0.0#}"; } protected override void OnSetConfigItem() { sliderComponent.SetValueWithoutNotify(base.ConfigItem.CurrentValue); sliderComponent.maxValue = base.ConfigItem.MaxValue; sliderComponent.minValue = base.ConfigItem.MinValue; UpdateAppearance(); } public void OnSliderValueChanged(float value) { base.ConfigItem.CurrentValue = value; UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public void OnInputFieldEndEdit(string value) { if (float.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { base.UpdateAppearance(); sliderComponent.SetValueWithoutNotify(base.ConfigItem.CurrentValue); valueInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue:0.0#}"); } } internal class FloatStepSliderController : ModConfigController<FloatStepSliderConfigItem, float> { public Slider sliderComponent; public TMP_InputField valueInputField; public override string GetDescription() { return $"{base.GetDescription()}\nMin: {base.ConfigItem.MinValue:0.0#}\nMax: {base.ConfigItem.MaxValue:0.0#}"; } protected override void OnSetConfigItem() { sliderComponent.SetValueWithoutNotify(base.ConfigItem.CurrentValue); int num = (int)MathF.Ceiling((base.ConfigItem.MaxValue - base.ConfigItem.MinValue) / MathF.Max(base.ConfigItem.Step, float.Epsilon)); sliderComponent.maxValue = num; sliderComponent.minValue = 0f; sliderComponent.wholeNumbers = true; UpdateAppearance(); } public void OnSliderValueChanged(float value) { base.ConfigItem.CurrentValue = MathF.Round(base.ConfigItem.MinValue + base.ConfigItem.Step * (float)(int)value, 4); UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public void OnInputFieldEndEdit(string value) { if (float.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { base.UpdateAppearance(); sliderComponent.SetValueWithoutNotify((base.ConfigItem.CurrentValue - base.ConfigItem.MinValue) / MathF.Max(base.ConfigItem.Step, float.Epsilon)); valueInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue:0.0#}"); } } internal class GenericButtonController : ModConfigController { public TextMeshProUGUI buttonTextComponent; private GenericButtonConfigItem ConfigItem => BaseConfigItem as GenericButtonConfigItem; public override void UpdateAppearance() { base.UpdateAppearance(); ((TMP_Text)buttonTextComponent).text = ConfigItem?.ButtonOptions?.ButtonText ?? "Button"; } protected override void OnSetConfigItem() { UpdateAppearance(); } public void OnButtonClicked() { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); ConfigItem?.ButtonOptions?.ButtonHandler?.Invoke(); } } internal class IntInputFieldController : ModConfigController<IntInputFieldConfigItem, int> { public TMP_InputField textInputField; public override string GetDescription() { string text = base.GetDescription(); if (base.ConfigItem.MinValue != int.MinValue) { text += $"\nMin: {base.ConfigItem.MinValue}"; } if (base.ConfigItem.MaxValue != int.MaxValue) { text += $"\nMax: {base.ConfigItem.MaxValue}"; } return text; } protected override void OnSetConfigItem() { textInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue}"); UpdateAppearance(); } public void OnInputFieldEndEdit(string value) { if (int.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) base.UpdateAppearance(); textInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue}"); ((Transform)textInputField.textComponent.rectTransform).localPosition = Vector3.zero; } } internal class IntSliderController : ModConfigController<IntSliderConfigItem, int> { public Slider sliderComponent; public TMP_InputField valueInputField; public override string GetDescription() { return $"{base.GetDescription()}\nMin: {base.ConfigItem.MinValue}\nMax: {base.ConfigItem.MaxValue}"; } protected override void OnSetConfigItem() { sliderComponent.SetValueWithoutNotify((float)base.ConfigItem.CurrentValue); sliderComponent.maxValue = base.ConfigItem.MaxValue; sliderComponent.minValue = base.ConfigItem.MinValue; UpdateAppearance(); } public void OnSliderValueChanged(float value) { base.ConfigItem.CurrentValue = (int)value; UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public void OnInputFieldEndEdit(string value) { if (int.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { base.UpdateAppearance(); sliderComponent.SetValueWithoutNotify((float)base.ConfigItem.CurrentValue); valueInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue}"); } } internal abstract class ModConfigController : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler, IPointerExitHandler { public delegate void OnHoverHandler(); public TextMeshProUGUI nameTextComponent; public TooltipTrigger tooltipTrigger; private readonly List<Selectable> _selectables = new List<Selectable>(); protected BaseConfigItem BaseConfigItem; protected bool IsOnSetup; private CanModifyResult CanModify { get { if (BaseConfigItem.Options.CanModifyCallback == null) { return true; } return BaseConfigItem.Options.CanModifyCallback(); } } public event OnHoverHandler OnHoverEnter; public event OnHoverHandler OnHoverExit; protected virtual void Awake() { ((Behaviour)tooltipTrigger).enabled = false; if (_selectables.Count <= 0) { _selectables.AddRange(((Component)this).GetComponentsInChildren<Selectable>()); } } public void OnPointerEnter(PointerEventData eventData) { this.OnHoverEnter?.Invoke(); } public void OnPointerExit(PointerEventData eventData) { this.OnHoverExit?.Invoke(); } public virtual bool SetConfigItem(BaseConfigItem configItem) { BaseConfigItem = configItem; IsOnSetup = true; OnSetConfigItem(); IsOnSetup = false; if (BaseConfigItem.Options.CanModifyCallback != null) { tooltipTrigger.tooltipText = "<b>Modifying this entry is currently disabled:</b>\n<b>" + CanModify.Reason + "</b>"; } return true; } protected abstract void OnSetConfigItem(); public virtual void UpdateAppearance() { ((TMP_Text)nameTextComponent).text = (BaseConfigItem.HasValueChanged ? "* " : "") + BaseConfigItem.Name; CanModifyResult canModify = CanModify; foreach (Selectable selectable in _selectables) { selectable.interactable = canModify; } ((Behaviour)tooltipTrigger).enabled = !canModify; } public virtual void ResetToDefault() { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); BaseConfigItem.ChangeToDefault(); UpdateAppearance(); } public virtual string GetDescription() { string text = "<b>" + BaseConfigItem.Name + "</b>"; if (BaseConfigItem.IsAutoGenerated) { text += "\n\n<b>*This config entry was automatically generated and may require a restart*</b>"; } else if (BaseConfigItem.RequiresRestart) { text += "\n\n<b>*REQUIRES RESTART*</b>"; } return text + "\n\n" + BaseConfigItem.Description; } } internal abstract class ModConfigController<T, TV> : ModConfigController where T : BaseValueConfigItem<TV> { protected T ConfigItem => (T)BaseConfigItem; private void OnDestroy() { ConfigItem.OnCurrentValueChanged -= OnCurrentValueChanged; } public override string GetDescription() { return $"{base.GetDescription()}\n\nDefault: {ConfigItem.DefaultValue}"; } public override bool SetConfigItem(BaseConfigItem configItem) { if (!(configItem is T val)) { LogUtils.LogError("Expected config item of type " + typeof(T).Name + ", but got " + configItem.GetType().Name + " instead."); return false; } val.OnCurrentValueChanged += OnCurrentValueChanged; return base.SetConfigItem(val); } private void OnCurrentValueChanged() { UpdateAppearance(); } } internal class TextDropDownController : ModConfigController<TextDropDownConfigItem, string> { public TMP_Dropdown dropdownComponent; private List<string> _textValues = new List<string>(); public override void UpdateAppearance() { base.UpdateAppearance(); int valueWithoutNotify = _textValues.FindIndex((string e) => e == (string)BaseConfigItem.CurrentBoxedValue); dropdownComponent.SetValueWithoutNotify(valueWithoutNotify); } protected override void OnSetConfigItem() { _textValues = base.ConfigItem.Values.ToList(); dropdownComponent.ClearOptions(); dropdownComponent.AddOptions(_textValues); int valueWithoutNotify = _textValues.FindIndex((string e) => e == (string)BaseConfigItem.CurrentBoxedValue); dropdownComponent.SetValueWithoutNotify(valueWithoutNotify); UpdateAppearance(); } public void OnDropDownValueChanged(int index) { base.ConfigItem.CurrentValue = _textValues[index]; UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } } internal class TextInputFieldController : ModConfigController<TextInputFieldConfigItem, string> { public TMP_InputField textInputField; private LayoutElement _layoutElement; protected override void Awake() { base.Awake(); _layoutElement = ((Component)this).GetComponent<LayoutElement>(); } private void Update() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) if (textInputField.isFocused && (int)textInputField.lineType != 0) { bool isPressed = Keyboard.current.shiftKey.isPressed; textInputField.lineType = (LineType)((!isPressed) ? 1 : 2); } } protected override void OnSetConfigItem() { textInputField.text = base.ConfigItem.CurrentValue; int num = Mathf.Clamp((base.ConfigItem.NumberOfLines <= 0) ? 4 : base.ConfigItem.NumberOfLines, 1, 4); float num2 = 16 + num * 19; _layoutElement.minHeight = num2; _layoutElement.preferredHeight = num2; textInputField.lineType = (LineType)(num != 1); textInputField.lineLimit = base.ConfigItem.NumberOfLines; UpdateAppearance(); } public void OnInputFieldEndEdit(string value) { int caretPosition = textInputField.caretPosition; if (base.ConfigItem.NumberOfLines != 1) { ((MonoBehaviour)this).StartCoroutine(RemoveNewLineFromSubmitDelayed(caretPosition)); } base.ConfigItem.CurrentValue = (base.ConfigItem.TrimText ? value.Trim() : value); UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) base.UpdateAppearance(); textInputField.text = base.ConfigItem.CurrentValue; ((Transform)textInputField.textComponent.rectTransform).localPosition = Vector3.zero; } private IEnumerator RemoveNewLineFromSubmitDelayed(int caretPosition) { yield return null; textInputField.text = textInputField.text.Remove(Mathf.Clamp(caretPosition, 0, textInputField.text.Length - 1), 1); } } } namespace LethalConfig.Mods { internal class Mod { public readonly List<BaseConfigItem> ConfigItems; public readonly List<ConfigEntryPath> EntriesToSkipAutoGen; public readonly ModInfo ModInfo; public bool IsAutoGenerated; internal Mod(ModInfo modInfo) { ConfigItems = new List<BaseConfigItem>(); EntriesToSkipAutoGen = new List<ConfigEntryPath>(); ModInfo = modInfo; TryResolveIconAndDesc(); } private void TryResolveIconAndDesc() { if (ModInfo.TryGetPluginInfo(out var pluginInfo)) { string text = Path.GetFullPath(pluginInfo.Location); DirectoryInfo parent = Directory.GetParent(text); while (parent != null && !string.Equals(parent.Name, "plugins", StringComparison.OrdinalIgnoreCase)) { text = parent.FullName; parent = Directory.GetParent(text); } if (!text.EndsWith(".dll")) { string iconPath = Directory.EnumerateFiles(text, "icon.png", SearchOption.AllDirectories).FirstOrDefault(); LoadIcon(iconPath); string manifestPath = Directory.EnumerateFiles(text, "manifest.json", SearchOption.AllDirectories).FirstOrDefault(); LoadDesc(manifestPath); } } } private void LoadIcon(string iconPath) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) try { if (iconPath != null) { Texture2D val = new Texture2D(256, 256); if (ImageConversion.LoadImage(val, File.ReadAllBytes(iconPath), true)) { ModInfo.Icon = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f), 100f); } } } catch { } } private void LoadDesc(string manifestPath) { try { if (manifestPath != null) { ThunderstoreManifest thunderstoreManifest = JsonConvert.DeserializeObject<ThunderstoreManifest>(File.ReadAllText(manifestPath)); if (thunderstoreManifest != null) { ModInfo.Description = thunderstoreManifest.Description; } } } catch { } } internal void AddConfigItem(BaseConfigItem item) { ConfigItems.Add(item); } } internal class ModInfo { internal string Name { get; set; } internal string Guid { get; set; } internal string Version { get; set; } internal string Description { get; set; } = ""; internal Sprite Icon { get; set; } = Assets.DefaultModIcon; public override string ToString() { return "<b>" + Name + "</b>\n" + Guid + "\nv" + Version + "\n\n" + Description; } public bool TryGetPluginInfo(out PluginInfo pluginInfo) { return Chainloader.PluginInfos.TryGetValue(Guid, out pluginInfo); } } internal class ThunderstoreManifest { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("version_number")] public string VersionNumber { get; set; } [JsonProperty("website_url")] public string WebsiteURL { get; set; } [JsonProperty("description")] public string Description { get; set; } [JsonProperty("dependencies")] public IList<string> Dependencies { get; set; } } } namespace LethalConfig.ConfigItems { public abstract class BaseConfigItem { internal delegate void CurrentValueChangedHandler(); private object _currentBoxedValue; internal ConfigEntryBase BaseConfigEntry { get; } internal BaseOptions Options { get; } internal bool RequiresRestart => Options.RequiresRestart; internal Mod Owner { get; set; } internal bool IsAutoGenerated { get; set; } private string UnderlyingSection { get { ConfigEntryBase baseConfigEntry = BaseConfigEntry; return ((baseConfigEntry != null) ? baseConfigEntry.Definition.Section : null) ?? string.Empty; } } private string UnderlyingName { get { ConfigEntryBase baseConfigEntry = BaseConfigEntry; return ((baseConfigEntry != null) ? baseConfigEntry.Definition.Key : null) ?? string.Empty; } } private string UnderlyingDescription { get { ConfigEntryBase baseConfigEntry = BaseConfigEntry; return ((baseConfigEntry != null) ? baseConfigEntry.Description.Description : null) ?? string.Empty; } } internal string Section => Options.Section ?? UnderlyingSection; internal string Name => Options.Name ?? UnderlyingName; internal string Description => Options.Description ?? UnderlyingDescription; private object OriginalBoxedValue { get { ConfigEntryBase baseConfigEntry = BaseConfigEntry; if (baseConfigEntry == null) { return null; } return baseConfigEntry.BoxedValue; } } internal object BoxedDefaultValue { get { ConfigEntryBase baseConfigEntry = BaseConfigEntry; if (baseConfigEntry == null) { return null; } return baseConfigEntry.DefaultValue; } } internal object CurrentBoxedValue { get { return _currentBoxedValue; } set { _currentBoxedValue = value; this.OnCurrentValueChanged?.Invoke(); } } internal bool HasValueChanged { get { object currentBoxedValue = CurrentBoxedValue; if (currentBoxedValue == null) { return false; } return !currentBoxedValue.Equals(OriginalBoxedValue); } } internal event CurrentValueChangedHandler OnCurrentValueChanged; internal BaseConfigItem(BaseOptions options) : this(null, options) { } internal BaseConfigItem(ConfigEntryBase configEntry, BaseOptions options) { BaseConfigEntry = configEntry; Options = options; CurrentBoxedValue = OriginalBoxedValue; } internal abstract GameObject CreateGameObjectForConfig(); public void ApplyChanges() { if (BaseConfigEntry != null) { BaseConfigEntry.BoxedValue = CurrentBoxedValue; } } public void CancelChanges() { CurrentBoxedValue = OriginalBoxedValue; } public void ChangeToDefault() { CurrentBoxedValue = BoxedDefaultValue; } internal virtual bool IsSameConfig(BaseConfigItem configItem) { bool num = configItem.UnderlyingSection == UnderlyingSection; bool flag = configItem.UnderlyingName == UnderlyingName; bool flag2 = configItem.Owner.ModInfo.Guid == Owner.ModInfo.Guid; return num && flag && flag2; } } public abstract class BaseValueConfigItem<T> : BaseConfigItem { private ConfigEntry<T> ConfigEntry => (ConfigEntry<T>)(object)base.BaseConfigEntry; internal T CurrentValue { get { return (T)base.CurrentBoxedValue; } set { base.CurrentBoxedValue = value; } } private T OriginalValue => ConfigEntry.Value; internal T DefaultValue => (T)((ConfigEntryBase)ConfigEntry).DefaultValue; internal BaseValueConfigItem(ConfigEntry<T> configEntry, BaseOptions options) : base((ConfigEntryBase)(object)configEntry, options) { CurrentValue = OriginalValue; if (ConfigEntry != null) { ConfigEntry.SettingChanged += OnUnderlyingEntryChanged; } } ~BaseValueConfigItem() { if (ConfigEntry != null) { ConfigEntry.SettingChanged -= OnUnderlyingEntryChanged; } } private void OnUnderlyingEntryChanged(object sender, EventArgs args) { CurrentValue = OriginalValue; } public override string ToString() { return base.Owner.ModInfo.Name + "/" + ((ConfigEntryBase)ConfigEntry).Definition.Section + "/" + ((ConfigEntryBase)ConfigEntry).Definition.Key; } } public class BoolCheckBoxConfigItem : BaseValueConfigItem<bool> { public BoolCheckBoxConfigItem(ConfigEntry<bool> configEntry) : this(configEntry, requiresRestart: true) { } public BoolCheckBoxConfigItem(ConfigEntry<bool> configEntry, bool requiresRestart) : this(configEntry, new BoolCheckBoxOptions { RequiresRestart = requiresRestart }) { } public BoolCheckBoxConfigItem(ConfigEntry<bool> configEntry, BoolCheckBoxOptions options) : base(configEntry, (BaseOptions)options) { } internal override GameObject CreateGameObjectForConfig() { return Object.Instantiate<GameObject>(Assets.BoolCheckBoxPrefab); } } public class EnumDropDownConfigItem<T> : BaseValueConfigItem<T> where T : Enum { public EnumDropDownConfigItem(ConfigEntry<T> configEntry) : this(configEntry, requiresRestart: true) { } public EnumDropDown
BepInEx/plugins/AllTheLinks-InfiniteStamina-1.0.0/InfiniteStamina.dll
Decompiled 4 months agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using InfiniteStamina.Patches; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("InfiniteStamina")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("InfiniteStamina")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("1f3e863c-fe85-4da9-8d5d-c08079d0c2f3")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace InfiniteStamina { [BepInPlugin("AllTheLinks.InfiniteStamina", "InfiniteStamina", "1.0.0")] public class InfiniteStaminaBase : BaseUnityPlugin { private const string modGUID = "AllTheLinks.InfiniteStamina"; private const string modName = "InfiniteStamina"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("AllTheLinks.InfiniteStamina"); private static InfiniteStaminaBase Instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("AllTheLinks.InfiniteStamina"); mls.LogInfo((object)"InfiniteStamina Mod running..."); harmony.PatchAll(typeof(InfiniteStaminaBase)); harmony.PatchAll(typeof(PlayerCharacterBPatch)); } } } namespace InfiniteStamina.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerCharacterBPatch { [HarmonyPatch("Update")] [HarmonyPostfix] private static void infiniteSprintPatch(ref float ___sprintMeter) { ___sprintMeter = 1f; } } }
BepInEx/plugins/boring-InfiniteShotgunAmmo-1.0.3/InfiniteShotgunAmmo.dll
Decompiled 4 months agousing System; using System.Diagnostics; using System.Reflection; 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 Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: AssemblyCompany("InfiniteShotgunAmmo")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A template for Lethal Company")] [assembly: AssemblyFileVersion("1.0.3.0")] [assembly: AssemblyInformationalVersion("1.0.3+43206f0475d7dae18e393eaa115cfd192399712f")] [assembly: AssemblyProduct("InfiniteShotgunAmmo")] [assembly: AssemblyTitle("InfiniteShotgunAmmo")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.3.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 InfiniteShotgunAmmo { [BepInPlugin("InfiniteShotgunAmmo", "InfiniteShotgunAmmo", "1.0.3")] public class Plugin : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("InfiniteShotgunAmmo"); private static Plugin Instance; public static ManualLogSource Logger; public static ConfigEntry<int> MaxCharLength; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } Logger = ((BaseUnityPlugin)this).Logger; Logger.LogInfo((object)"Plugin InfiniteShotgunAmmo is loaded!"); harmony.PatchAll(Assembly.GetExecutingAssembly()); } } public static class PluginInfo { public const string PLUGIN_GUID = "InfiniteShotgunAmmo"; public const string PLUGIN_NAME = "InfiniteShotgunAmmo"; public const string PLUGIN_VERSION = "1.0.3"; } } namespace InfiniteShotgunAmmo.Patches { [HarmonyPatch] internal class ShotgunItemPatch { [HarmonyPatch(typeof(ShotgunItem), "ItemActivate")] [HarmonyPostfix] public static void PatchItemActivate(ShotgunItem __instance) { Plugin.Logger.LogInfo((object)("ShotgunItem::ItemActivate: " + __instance.shellsLoaded)); __instance.shellsLoaded = 999; Plugin.Logger.LogInfo((object)("ShotgunItem::ItemActivate: " + __instance.shellsLoaded)); } [HarmonyPatch(typeof(ShotgunItem), "ShootGun")] [HarmonyPostfix] public static void PatchShootGun(ShotgunItem __instance) { Plugin.Logger.LogInfo((object)("ShotgunItem::PatchShootGun: " + __instance.shellsLoaded)); __instance.shellsLoaded = 999; Plugin.Logger.LogInfo((object)("ShotgunItem::PatchShootGun: " + __instance.shellsLoaded)); } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }
BepInEx/plugins/Brew-WeightlessCompany-1.0.0/BepInEx/plugins/WeightlessCompany.dll
Decompiled 4 months agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; using WeightlessCompany.Patches; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("WeightlessCompany")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("WeightlessCompany")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("c80c0725-649f-4399-a48d-0423def480c9")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace WeightlessCompany { [BepInPlugin("Brew.WeightlessCompany", "WeightlessCompany", "1.0.0")] public class WCBase : BaseUnityPlugin { private const string modGUID = "Brew.WeightlessCompany"; private const string modName = "WeightlessCompany"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Brew.WeightlessCompany"); private static WCBase Instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("Brew.WeightlessCompany"); mls.LogInfo((object)"Weightless Company has initialised."); harmony.PatchAll(typeof(WCBase)); harmony.PatchAll(typeof(PlayerControllerBPatch)); } } } namespace WeightlessCompany.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { [HarmonyPatch("Update")] [HarmonyPostfix] private static void updatePatch(ref float ___carryWeight) { ___carryWeight = 1f; } } }
BepInEx/plugins/Cutor-JetpackInfinite-1.0.0/JetpackInfinite.dll
Decompiled 4 months agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using OPJosMod.Patches; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("OPJosMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("OPJosMod")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("70095872-b952-4e27-bbc4-3d70d0238f39")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace OPJosMod.SaferJeptack { [BepInPlugin("OpJosMod.SaferJetpack", "SaferJetpack", "1.0.0.0")] public class OpJosMod : BaseUnityPlugin { private const string modGUID = "OpJosMod.SaferJetpack"; private const string modName = "SaferJetpack"; private const string modVersion = "1.0.0.0"; private readonly Harmony harmony = new Harmony("OpJosMod.SaferJetpack"); private static OpJosMod Instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("OpJosMod.SaferJetpack"); mls.LogInfo((object)"SaferJetpack mod has started"); harmony.PatchAll(typeof(OpJosMod)); JetpackItemPatch.SetLogSource(mls); harmony.PatchAll(typeof(JetpackItemPatch)); } } } namespace OPJosMod.Patches { [HarmonyPatch(typeof(JetpackItem))] internal class JetpackItemPatch { private static ManualLogSource mls; public static void SetLogSource(ManualLogSource logSource) { mls = logSource; } [HarmonyPatch("Update")] [HarmonyPrefix] private static void Update(JetpackItem __instance) { //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)((GrabbableObject)__instance).playerHeldBy == (Object)null || !((NetworkBehaviour)__instance).IsOwner || (Object)(object)((GrabbableObject)__instance).playerHeldBy != (Object)(object)GameNetworkManager.Instance.localPlayerController) { return; } if ((Object)(object)__instance != (Object)null) { FieldInfo field = typeof(JetpackItem).GetField("rayHit", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo field2 = typeof(JetpackItem).GetField("forces", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo field3 = typeof(JetpackItem).GetField("jetpackPower", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo field4 = typeof(JetpackItem).GetField("jetpackActivated", BindingFlags.Instance | BindingFlags.NonPublic); if (field != null && field2 != null && field3 != null && field4 != null) { RaycastHit val = (RaycastHit)field.GetValue(__instance); Vector3 val2 = (Vector3)field2.GetValue(__instance); float num = (float)field3.GetValue(__instance); bool flag = (bool)field4.GetValue(__instance); ((GrabbableObject)__instance).playerHeldBy.takingFallDamage = false; ((GrabbableObject)__instance).playerHeldBy.averageVelocity = 0f; ((GrabbableObject)__instance).itemProperties.requiresBattery = false; if (flag) { num = Mathf.Clamp(num + Time.deltaTime * 10f, 0f, 500f); } else { num = Mathf.Clamp(num - Time.deltaTime * 75f, 0f, 1000f); if (((GrabbableObject)__instance).playerHeldBy.thisController.isGrounded) { num = 0f; } } val2 = Vector3.Lerp(val2, Vector3.ClampMagnitude(((Component)((GrabbableObject)__instance).playerHeldBy).transform.up * num, 400f), Time.deltaTime); if (!((GrabbableObject)__instance).playerHeldBy.isPlayerDead && Physics.Raycast(((Component)((GrabbableObject)__instance).playerHeldBy).transform.position, val2, ref val, 25f, StartOfRound.Instance.allPlayersCollideWithMask) && ((Vector3)(ref val2)).magnitude - ((RaycastHit)(ref val)).distance > 50f && ((RaycastHit)(ref val)).distance < 4f) { PlayerControllerB playerHeldBy = ((GrabbableObject)__instance).playerHeldBy; playerHeldBy.externalForces += val2; throw new Exception("SaferJetpack: Cancelling original Update method"); } } else if (mls != null) { mls.LogInfo((object)"SaferJetpack(error): couldn't find a private field"); } } else if (mls != null) { mls.LogInfo((object)"SaferJetpack(error): __instance == null"); } } } }
BepInEx/plugins/DannyVD-MonitorLabels-2.0.0/MonitorLabels.dll
Decompiled 4 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalConfig; using LethalConfig.ConfigItems; using LethalConfig.ConfigItems.Options; using Microsoft.CodeAnalysis; using MonitorLabels.BaseClasses; using MonitorLabels.Components; using MonitorLabels.Components.Tools; using MonitorLabels.Constants; using MonitorLabels.Dependencies.LethalConfig; using MonitorLabels.ExtensionMethods; using MonitorLabels.Structs; using MonitorLabels.Utils; using MonitorLabels.Utils.ModUtils; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("DannyVD")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Adds a label to the icons on the monitor for players, radar boosters, enemies and scrap")] [assembly: AssemblyFileVersion("2.0.0.0")] [assembly: AssemblyInformationalVersion("2.0.0+0bbf54eabf9e2f14bfcf5bd92e03759ea900af7d")] [assembly: AssemblyProduct("MonitorLabels")] [assembly: AssemblyTitle("MonitorLabels")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.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 MonitorLabels { public static class AIMapLabelManager { public static readonly Dictionary<Type, CustomLabelData> CustomAINames = new Dictionary<Type, CustomLabelData>(); public static bool TryAddNewAI(Type type, CustomLabelData labelData) { return CustomAINames.TryAdd(type, labelData); } public static bool TryAddNewAI(Type type, string label, bool showLabel = true) { return CustomAINames.TryAdd(type, new CustomLabelData(label, showLabel)); } public static void SetAI(Type type, CustomLabelData customLabelData) { CustomAINames[type] = customLabelData; } public static void SetAI(Type type, string label, bool showLabel = true) { SetAI(type, new CustomLabelData(label, showLabel)); } public static void RemoveAI(Type type) { CustomAINames.Remove(type); } public static void AddLabelToAI(EnemyAI enemyAI) { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_009b: 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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0060: 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) bool showLabel; string aILabel = GetAILabel(enemyAI, out showLabel); if (!showLabel) { return; } Transform mapDot = MapLabelUtil.GetMapDot(((Component)enemyAI).transform); if (mapDot == null) { LoggerUtil.LogWarning("Child MapDot cannot be found for enemy: " + ((Object)((Component)enemyAI).gameObject).name); return; } if (enemyAI is SandSpiderAI) { Vector3 localScale = mapDot.localScale; float num = Mathf.Max(new float[3] { localScale.x, localScale.y, localScale.z }); mapDot.localScale = new Vector3(num, num, num); } TMP_Text obj = MapLabelUtil.AddLabelObject(((Component)mapDot).gameObject, ConfigUtil.EnemyLabelOffset.Value); ((Graphic)obj).color = ConfigUtil.EnemyLabelColour.Value; obj.text = aILabel; } public static void UpdateAILabel(EnemyAI enemyAI) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) Transform mapDot = MapLabelUtil.GetMapDot(((Component)enemyAI).transform); if (mapDot == null) { return; } MapLabelUtil.GetRadarLabel(mapDot, out var label); if (label != null) { if (!ConfigUtil.ShowLabelOnDeadEnemies.Value) { Object.Destroy((Object)(object)((Component)label).gameObject); } else { ((Graphic)label).color = ConfigUtil.DeadEnemyLabelColour.Value; } } } private static string GetAILabel(EnemyAI enemyAI, out bool showLabel) { showLabel = true; if (!(enemyAI is BaboonBirdAI)) { if (!(enemyAI is BlobAI)) { if (!(enemyAI is CentipedeAI)) { if (!(enemyAI is CrawlerAI)) { if (!(enemyAI is DocileLocustBeesAI)) { if (!(enemyAI is DoublewingAI)) { if (!(enemyAI is DressGirlAI)) { if (!(enemyAI is FlowermanAI)) { if (!(enemyAI is ForestGiantAI)) { if (!(enemyAI is HoarderBugAI)) { if (!(enemyAI is JesterAI)) { if (!(enemyAI is LassoManAI)) { if (!(enemyAI is MaskedPlayerEnemy)) { if (!(enemyAI is MouthDogAI)) { if (!(enemyAI is NutcrackerEnemyAI)) { if (!(enemyAI is PufferAI)) { if (!(enemyAI is SandSpiderAI)) { if (!(enemyAI is SandWormAI)) { if (!(enemyAI is SpringManAI)) { if (!(enemyAI is TestEnemy)) { if (!(enemyAI is ButlerEnemyAI)) { if (!(enemyAI is RadMechAI)) { if (enemyAI is FlowerSnakeEnemy) { if (ConfigUtil.HideLabelOnSomeEnemies.Value) { showLabel = false; } return ConfigUtil.FlowerSnakeLabel.Value; } return GetUnknownAILabel(enemyAI, out showLabel); } return ConfigUtil.RadMechLabel.Value; } return ConfigUtil.ButlerLabel.Value; } return "Obunga"; } return ConfigUtil.CoilHeadLabel.Value; } if (ConfigUtil.HideLabelOnSomeEnemies.Value) { showLabel = false; } return ConfigUtil.SandWormLabel.Value; } return ConfigUtil.SpiderLabel.Value; } return ConfigUtil.SporeLizardLabel.Value; } return ConfigUtil.NutCrackerLabel.Value; } return ConfigUtil.DogLabel.Value; } return ConfigUtil.MaskedLabel.Value; } return "Lasso"; } return ConfigUtil.JesterLabel.Value; } return ConfigUtil.HoarderBugLabel.Value; } return ConfigUtil.ForestGiantLabel.Value; } return ConfigUtil.BrackenLabel.Value; } showLabel = false; return "Girl"; } if (ConfigUtil.HideLabelOnSomeEnemies.Value) { showLabel = false; } return ConfigUtil.ManticoilLabel.Value; } showLabel = false; return "Bees"; } return ConfigUtil.CrawlerLabel.Value; } return ConfigUtil.CentipedeLabel.Value; } return ConfigUtil.BlobLabel.Value; } return ConfigUtil.BaboonHawkLabel.Value; } private static string GetUnknownAILabel(EnemyAI enemyAISubclassInstance, out bool showLabel) { foreach (KeyValuePair<Type, CustomLabelData> customAIName in CustomAINames) { if (customAIName.Key.IsInstanceOfType(enemyAISubclassInstance)) { showLabel = customAIName.Value.ShowLabel; return customAIName.Value.Label; } } showLabel = true; string value = ConfigUtil.UnknownLabel.Value; if (!value.Equals(string.Empty)) { return value; } return MapLabelUtil.RemoveCloneFromString(((Object)((Component)enemyAISubclassInstance).gameObject).name).InsertSpaceBeforeCapitals(); } } [BepInPlugin("DannyVD.mods.LethalCompany.MonitorLabels", "MonitorLabels", "2.0.0")] [BepInProcess("Lethal Company.exe")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MonitorLabelsPlugin : BaseUnityPlugin { public const string GUID = "DannyVD.mods.LethalCompany.MonitorLabels"; public const string PLUGIN_NAME = "MonitorLabels"; public const string PLUGIN_VERSION = "2.0.0"; public const string DEPENDENCY_STRING = "DannyVD-MonitorLabels-2.0.0"; private void Awake() { ConfigUtil.Initialize(((BaseUnityPlugin)this).Config); ConfigUtil.ReadConfig(); LoggerUtil.Initialize(ConfigUtil.LoggingLevel, ((BaseUnityPlugin)this).Logger); LoggerUtil.Log((LogLevel)16, "Plugin DannyVD-MonitorLabels-2.0.0 is loaded!"); PatchUtil.PatchFunctions(); DependencyUtils.CheckDependencies(); } } internal static class ObjectLabelManager { internal static void TryAddLabelToScrap(GrabbableObject item) { Transform radarIcon = item.radarIcon; if (!((Object)(object)radarIcon == (Object)null)) { AddLabelToScrap(item, ((Component)radarIcon).gameObject); } } internal static void UpdateScrapLabel(GrabbableObject item) { UpdateItemSlotLabel(item, null, null); } internal static void UpdateItemSlotLabel(GrabbableObject item, GrabbableObject firstToolInItemSlots, GrabbableObject firstToolInUseInItemSlots) { Transform radarIcon = item.radarIcon; if ((Object)(object)radarIcon == (Object)null) { return; } ContinuouslyUpdateToolLabel component = ((Component)item).GetComponent<ContinuouslyUpdateToolLabel>(); if (!((Object)(object)component != (Object)null) || !component.IsUpdating) { MapLabelUtil.GetRadarLabel(radarIcon, out var label); if (label != null) { SetScrapLabel(item, label, firstToolInItemSlots, firstToolInUseInItemSlots); } } } internal static void SetScrapLabel(GrabbableObject item, TMP_Text radarLabel, GrabbableObject firstToolInItemSlots = null, GrabbableObject firstToolInUseInItemSlots = null) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) radarLabel.text = GetScrapLabelString(item, out var labelColour, firstToolInItemSlots, firstToolInUseInItemSlots); ((Graphic)radarLabel).color = labelColour; } private static void AddLabelToScrap(GrabbableObject item, GameObject radarParent) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) bool isScrap = item.itemProperties.isScrap; TMP_Text val = MapLabelUtil.AddLabelObject(radarParent, isScrap ? ConfigUtil.ScrapLabelOffset.Value : ConfigUtil.ToolLabelOffset.Value, continuouslyUpdateRotationAndOffset: false); if (isScrap) { val.fontSize *= ConfigUtil.ScrapLabelScaleFactor.Value; } else { val.fontSize = ConfigUtil.ToolLabelFontSize.Value; } SetScrapLabel(item, val); if (item.itemProperties.requiresBattery && ConfigUtil.ShowBatteryChargeOnLabel.Value) { ((Component)item).gameObject.AddComponent<ContinuouslyUpdateToolLabel>().Initialize(item, val); } } private static string GetScrapLabelString(GrabbableObject item, out Color labelColour, GrabbableObject firstToolInItemSlots, GrabbableObject firstToolInUseInItemSlots) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)item == (Object)null) { labelColour = Color.white; return string.Empty; } bool flag = !item.itemProperties.isScrap; int scrapValue = item.scrapValue; if (item.isHeld) { if (flag && (Object)(object)item.playerHeldBy != (Object)null) { labelColour = ConfigUtil.CarriedToolLabelColour.Value; GrabbableObject currentlyHeldObjectServer = item.playerHeldBy.currentlyHeldObjectServer; bool flag2 = (Object)(object)currentlyHeldObjectServer != (Object)null && !currentlyHeldObjectServer.itemProperties.isScrap; if (item.isPocketed && ConfigUtil.HideToolLabelIfPocketed.Value) { if (!item.isBeingUsed || !ConfigUtil.ShowToolIfInUseAndNoOtherToolHeld.Value || flag2) { return string.Empty; } if (ConfigUtil.OnlyShow1PocketedLabel.Value) { GrabbableObject val = ((IEnumerable<GrabbableObject>)item.playerHeldBy.ItemSlots).FirstOrDefault((Func<GrabbableObject, bool>)((GrabbableObject grabbableObject) => (Object)(object)grabbableObject != (Object)null && grabbableObject.isBeingUsed)); if ((Object)(object)item != (Object)(object)val) { return string.Empty; } } } else if (item.isPocketed && ConfigUtil.OnlyShow1PocketedLabel.Value) { if (flag2 && !ConfigUtil.HideToolLabelIfInHand.Value) { return string.Empty; } if (ConfigUtil.ShowToolIfInUseAndNoOtherToolHeld.Value) { if ((Object)(object)firstToolInUseInItemSlots != (Object)null) { if ((Object)(object)firstToolInUseInItemSlots != (Object)(object)item) { return string.Empty; } } else if ((Object)(object)firstToolInItemSlots != (Object)(object)item) { return string.Empty; } } else if ((Object)(object)item != (Object)(object)firstToolInItemSlots) { return string.Empty; } } else if (!item.isPocketed && ConfigUtil.HideToolLabelIfInHand.Value) { return string.Empty; } } else if (flag) { labelColour = ConfigUtil.CarriedToolLabelColour.Value; if (ConfigUtil.HideToolLabelIfInHand.Value) { return string.Empty; } } else { labelColour = ConfigUtil.CarriedScrapLabelColour.Value; if (ConfigUtil.HideScrapLabelIfCarried.Value) { return string.Empty; } } } else if (item.isInShipRoom) { if (flag) { labelColour = ConfigUtil.InShipToolLabelColour.Value; if (ConfigUtil.HideToolLabelIfOnShip.Value) { return string.Empty; } } else { labelColour = ConfigUtil.InShipScrapLabelColour.Value; if (ConfigUtil.HideScrapLabelIfOnShip.Value) { return string.Empty; } } } else if (flag) { labelColour = ConfigUtil.ToolLabelColour.Value; } else { labelColour = ((scrapValue >= ConfigUtil.HighValueScrapThreshold.Value) ? ConfigUtil.HighValueScrapLabelColour.Value : ConfigUtil.ScrapLabelColour.Value); } if (TryGetCustomLabel(item, out var label)) { return label; } return GetFormattedScrapLabel(item, scrapValue, flag); } private static bool TryGetCustomLabel(GrabbableObject item, out string label) { label = string.Empty; if (ConfigUtil.HideScrapLabelOnNutcracker.Value && item is ShotgunItem && item.isHeldByEnemy) { return true; } return false; } private static string GetFormattedScrapLabel(GrabbableObject item, int scrapValue, bool isTool) { string scrapName = GetScrapName(item); if (isTool) { string arg = string.Empty; if (item.itemProperties.requiresBattery && ConfigUtil.ShowBatteryChargeOnLabel.Value && item.insertedBattery != null) { float num = (item.insertedBattery.empty ? 0f : item.insertedBattery.charge); arg = string.Format(ConfigUtil.ToolBatteryStringFormat.Value, num); } return string.Format(ConfigUtil.ToolLabelStringFormat.Value, scrapName, arg); } return string.Format(ConfigUtil.ScrapLabelStringFormat.Value, scrapName, scrapValue); } private static string GetScrapName(GrabbableObject item) { Item itemProperties = item.itemProperties; if (Object.op_Implicit((Object)(object)itemProperties) && !string.IsNullOrEmpty(itemProperties.itemName)) { return itemProperties.itemName; } ScanNodeProperties componentInChildren = ((Component)item).GetComponentInChildren<ScanNodeProperties>(); if (Object.op_Implicit((Object)(object)componentInChildren)) { return componentInChildren.headerText; } return MapLabelUtil.RemoveCloneFromString(((Object)((Component)item).gameObject).name).InsertSpaceBeforeCapitals(); } } internal static class Patches { [HarmonyPatch(typeof(ManualCameraRenderer), "Awake")] [HarmonyPostfix] [HarmonyPriority(200)] private static void ManualCameraRendererAwakePatch(ManualCameraRenderer __instance) { LoggerUtil.LogDebug("ManualCameraRenderer.Awake patch run"); NetworkManager networkManager = ((NetworkBehaviour)__instance).NetworkManager; if (!((Object)(object)networkManager == (Object)null) && networkManager.IsListening) { RadarTargetLabelManager.UpdateLabels(); if (__instance.mapCamera != null) { ((Component)__instance.mapCamera).gameObject.AddComponent<MapCameraRotationObserver>(); } } } [HarmonyPatch(typeof(ManualCameraRenderer), "AddTransformAsTargetToRadar")] [HarmonyPostfix] [HarmonyPriority(200)] private static void ManualCameraRendererAddTransformAsTargetToRadarPatch() { LoggerUtil.LogDebug("ManualCameraRenderer.AddTransformAsTargetToRadar patch run"); RadarTargetLabelManager.UpdateLabels(); } [HarmonyPatch(typeof(ManualCameraRenderer), "updateMapTarget")] [HarmonyPostfix] [HarmonyPriority(200)] private static void ManualCameraRendererUpdateMapTargetPatch(int setRadarTargetIndex, bool calledFromRPC = true) { if (calledFromRPC) { LoggerUtil.LogDebug("ManualCameraRenderer.updateMapTarget patch run"); RadarTargetLabelManager.UpdateLabels(setRadarTargetIndex); } } [HarmonyPatch(typeof(PlayerControllerB), "SendNewPlayerValuesClientRpc")] [HarmonyPostfix] [HarmonyPriority(200)] private static void PlayerControllerBSendNewPlayerValuesClientRpcPatch(PlayerControllerB __instance) { LoggerUtil.LogDebug("PlayerControllerB.SendNewPlayerValuesClientRpc patch run"); RadarTargetLabelManager.UpdateLabels(); } [HarmonyPatch(typeof(PlayerControllerB), "DamagePlayerClientRpc")] [HarmonyPostfix] [HarmonyPriority(200)] private static void PlayerControllerBDamagePlayerPatch(PlayerControllerB __instance) { LoggerUtil.LogDebug("PlayerControllerB.DamagePlayer patch run"); RadarTargetLabelManager.UpdateLabel(((Component)__instance).transform); } [HarmonyPatch(typeof(PlayerControllerB), "KillPlayerClientRpc")] [HarmonyPostfix] [HarmonyPriority(200)] private static void PlayerControllerBKillPlayerClientRpcPatch(PlayerControllerB __instance) { LoggerUtil.LogDebug("PlayerControllerB.KillPlayerClientRpc patch run"); RadarTargetLabelManager.UpdateLabel(((Component)__instance).transform); } [HarmonyPatch(typeof(EnemyAI), "Start")] [HarmonyPostfix] [HarmonyPriority(200)] private static void EnemyAIStartPatch(EnemyAI __instance) { LoggerUtil.LogDebug("EnemyAI.Start patch run"); if (ConfigUtil.ShowLabelOnEnemies.Value) { AIMapLabelManager.AddLabelToAI(__instance); } } [HarmonyPatch(typeof(MaskedPlayerEnemy), "Start")] [HarmonyPostfix] [HarmonyPriority(200)] private static void MaskedPlayerEnemyStartPatch(MaskedPlayerEnemy __instance) { LoggerUtil.LogDebug("MaskedPlayerEnemy.Start patch run"); if (ConfigUtil.ShowLabelOnEnemies.Value) { AIMapLabelManager.AddLabelToAI((EnemyAI)(object)__instance); } } [HarmonyPatch(typeof(EnemyAI), "KillEnemy")] [HarmonyPostfix] [HarmonyPriority(200)] private static void EnemyAIKillEnemyPatch(EnemyAI __instance, bool destroy = false) { LoggerUtil.LogDebug("EnemyAI.KillEnemy patch run"); if (!destroy && ConfigUtil.ShowLabelOnEnemies.Value && !((Object)(object)__instance == (Object)null)) { AIMapLabelManager.UpdateAILabel(__instance); } } [HarmonyPatch(typeof(NutcrackerEnemyAI), "GrabGun")] [HarmonyPostfix] [HarmonyPriority(200)] private static void NutcrackerEnemyAIGrabGunPatch(NutcrackerEnemyAI __instance) { LoggerUtil.LogDebug("NutcrackerEnemyAI.GrabGun patch run"); if (ConfigUtil.ShowLabelOnScrap.Value && !((Object)(object)__instance.gun == (Object)null)) { ObjectLabelManager.UpdateScrapLabel((GrabbableObject)(object)__instance.gun); } } [HarmonyPatch(typeof(NutcrackerEnemyAI), "DropGun")] [HarmonyPostfix] [HarmonyPriority(200)] private static void NutcrackerEnemyAIDropGunPatch(NutcrackerEnemyAI __instance) { LoggerUtil.LogDebug("NutcrackerEnemyAI.DropGun patch run"); if (ConfigUtil.ShowLabelOnScrap.Value && !((Object)(object)__instance.gun == (Object)null)) { ObjectLabelManager.UpdateScrapLabel((GrabbableObject)(object)__instance.gun); } } [HarmonyPatch(typeof(GrabbableObject), "Start")] [HarmonyPostfix] [HarmonyPriority(200)] private static void GrabbableObjectStartPatch(GrabbableObject __instance) { LoggerUtil.LogDebug("GrabbableObject.Start patch run"); if (!__instance.itemProperties.isScrap) { if (ConfigUtil.ShowIconOnTools.Value && (Object)(object)__instance.radarIcon == (Object)null) { ToolIconSpawner.SpawnIcon(__instance); } if (ConfigUtil.ShowLabelOnTools.Value) { ObjectLabelManager.TryAddLabelToScrap(__instance); } } else if (ConfigUtil.ShowLabelOnScrap.Value) { ObjectLabelManager.TryAddLabelToScrap(__instance); } } [HarmonyPatch(typeof(GrabbableObject), "OnBroughtToShip")] [HarmonyPrefix] [HarmonyPriority(200)] private static bool GrabbableObjectOnBroughtToShipPatch(GrabbableObject __instance) { LoggerUtil.LogDebug("GrabbableObject.OnBroughtToShip patch run"); return __instance.itemProperties.isScrap; } [HarmonyPatch(typeof(GrabbableObject), "SetScrapValue")] [HarmonyPostfix] [HarmonyPriority(200)] private static void GrabbableObjectSetScrapValuePatch(GrabbableObject __instance) { LoggerUtil.LogDebug("GrabbableObject.SetScrapValue patch run"); if (ConfigUtil.ShowLabelOnScrap.Value) { PlayerControllerB playerHeldBy = __instance.playerHeldBy; if ((Object)(object)playerHeldBy != (Object)null) { RadarTargetLabelManager.UpdateLabel(((Component)playerHeldBy).transform); PlayerItemSlotsUtil.GetFirstToolAndFirstToolInUse(playerHeldBy, out var firstTool, out var firstToolInUse); ObjectLabelManager.UpdateItemSlotLabel(__instance, firstTool, firstToolInUse); } else { ObjectLabelManager.UpdateScrapLabel(__instance); } } } [HarmonyPatch(typeof(PlayerControllerB), "SwitchToItemSlot")] [HarmonyPostfix] [HarmonyPriority(200)] private static void PlayerControllerBSwitchToItemSlotPatch(PlayerControllerB __instance) { LoggerUtil.LogDebug("PlayerControllerB.SwitchToItemSlot patch run"); if (__instance != null) { PlayerItemSlotsUtil.UpdateLabelsOfItemSlots(__instance); } } [HarmonyPatch(typeof(GrabbableObject), "UseItemOnClient")] [HarmonyPostfix] [HarmonyPriority(200)] private static void GrabbableObjectUseItemOnClientPatch(GrabbableObject __instance) { LoggerUtil.LogDebug("GrabbableObject.UseItemOnClient patch run"); PlayerControllerB playerHeldBy = __instance.playerHeldBy; if (playerHeldBy != null) { PlayerItemSlotsUtil.UpdateLabelsOfItemSlots(playerHeldBy); } else if (!__instance.itemProperties.isScrap && ConfigUtil.ShowLabelOnTools.Value) { ObjectLabelManager.UpdateScrapLabel(__instance); } } [HarmonyPatch(typeof(PlayerControllerB), "SetItemInElevator")] [HarmonyPostfix] [HarmonyPriority(200)] private static void PlayerControllerBSetItemInElevatorPatch(PlayerControllerB __instance, GrabbableObject gObject) { LoggerUtil.LogDebug("PlayerControllerB.SetItemInElevator patch run"); RadarTargetLabelManager.UpdateLabel(((Component)__instance).transform); if ((Object)(object)gObject == (Object)null) { return; } if (gObject.itemProperties.isScrap) { if (!ConfigUtil.ShowLabelOnScrap.Value) { return; } } else if (!ConfigUtil.ShowLabelOnTools.Value) { return; } ObjectLabelManager.UpdateScrapLabel(gObject); } [HarmonyPatch(typeof(GrabbableObject), "DiscardItemOnClient")] [HarmonyPostfix] [HarmonyPriority(200)] private static void GrabbableObjectDiscardItemOnClientPatch(GrabbableObject __instance) { LoggerUtil.LogDebug("GrabbableObject.DiscardItemOnClient patch run"); ObjectLabelManager.UpdateScrapLabel(__instance); } [HarmonyPatch(typeof(PlayerControllerB), "DiscardHeldObject")] [HarmonyPostfix] [HarmonyPriority(200)] private static void PlayerControllerBDiscardHeldObjectPatch(PlayerControllerB __instance) { LoggerUtil.LogDebug("PlayerControllerB.DiscardHeldObject patch run"); RadarTargetLabelManager.UpdateLabel(((Component)__instance).transform); PlayerItemSlotsUtil.UpdateLabelsOfItemSlots(__instance); } [HarmonyPatch(typeof(PlayerControllerB), "GrabObjectClientRpc")] [HarmonyPostfix] [HarmonyPriority(200)] private static void PlayerControllerBGrabObjectClientRpcPatch(PlayerControllerB __instance, NetworkObjectReference grabbedObject) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) LoggerUtil.LogDebug("PlayerControllerB.GrabObjectClientRpc patch run"); RadarTargetLabelManager.UpdateLabel(((Component)__instance).transform); GrabbableObject componentInChildren = ((Component)NetworkObjectReference.op_Implicit(grabbedObject)).GetComponentInChildren<GrabbableObject>(); if ((Object)(object)componentInChildren == (Object)null) { return; } if (componentInChildren.itemProperties.isScrap) { if (ConfigUtil.ShowLabelOnScrap.Value) { ObjectLabelManager.UpdateScrapLabel(componentInChildren); } } else if (ConfigUtil.ShowLabelOnTools.Value) { PlayerItemSlotsUtil.UpdateLabelsOfItemSlots(__instance); } } [HarmonyPatch(typeof(Landmine), "Detonate")] [HarmonyPostfix] [HarmonyPriority(200)] private static void LandMineDetonatePatch(Landmine __instance) { LoggerUtil.LogDebug("Landmine.Detonate patch run"); if (ConfigUtil.RemoveDetonatedMineLabel.Value) { TerminalAccessibleObject component = ((Component)__instance).GetComponent<TerminalAccessibleObject>(); if (component != null && component.mapRadarText != null) { ((Component)component.mapRadarText).gameObject.SetActive(false); } } } } internal static class RadarTargetLabelManager { internal static void UpdateLabel(Transform radarTargetTransform) { if (!((Object)(object)radarTargetTransform == (Object)null)) { int index; bool isCurrentRadarTarget; TransformAndName matchingRadarTarget = RadarTargetUtils.GetMatchingRadarTarget(radarTargetTransform, out index, out isCurrentRadarTarget); if (matchingRadarTarget == null || (Object)(object)matchingRadarTarget.transform == (Object)null) { LoggerUtil.LogWarning("Tried to update an invalid transform!\nUpdating all radar targets to make sure everything is correct!"); UpdateLabels(); } else { AddTargetLabel(matchingRadarTarget, index, isCurrentRadarTarget); } } } internal static void UpdateLabels(int radarTargetIndex = -1) { if ((Object)(object)StartOfRound.Instance == (Object)null || (Object)(object)StartOfRound.Instance.mapScreen == (Object)null) { return; } int num = ((radarTargetIndex != -1) ? radarTargetIndex : StartOfRound.Instance.mapScreen.targetTransformIndex); for (int i = 0; i < StartOfRound.Instance.mapScreen.radarTargets.Count; i++) { bool isCurrentTarget = num == i; TransformAndName val = StartOfRound.Instance.mapScreen.radarTargets[i]; if (val != null && (Object)(object)val.transform != (Object)null) { AddTargetLabel(val, i, isCurrentTarget); } } } internal static void AddTargetLabel(TransformAndName transformAndName, int index, bool isCurrentTarget) { //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB component = ((Component)transformAndName.transform).gameObject.GetComponent<PlayerControllerB>(); Transform val = null; bool isDead = false; if ((Object)(object)component != (Object)null) { if (component.isPlayerDead) { isDead = true; if ((Object)(object)component.redirectToEnemy != (Object)null) { val = FindRadarDotOfPlayer(((Component)component.redirectToEnemy).transform); } else { if (!((Object)(object)component.deadBody != (Object)null)) { return; } val = MapLabelUtil.GetMapDot(((Component)component.deadBody).transform); } } else { val = FindRadarDotOfPlayer(((Component)component).transform); } } else { val = MapLabelUtil.GetRadarBoosterMapDot(transformAndName.transform); } if ((Object)(object)val == (Object)null) { LoggerUtil.LogError("Cannot find radar icon for " + transformAndName.name); return; } TMP_Text label; Transform radarLabel = MapLabelUtil.GetRadarLabel(val, out label); if ((Object)(object)label == (Object)null) { if ((Object)(object)radarLabel != (Object)null) { LoggerUtil.LogError("The LabelObject exists but the TMP_Text component does not, this should never happen!\nDestroying the object and reinstantiating it..."); Object.Destroy((Object)(object)((Component)radarLabel).gameObject); } label = MapLabelUtil.AddLabelObject(((Component)val).gameObject, ConfigUtil.RadarTargetLabelOffset.Value); } label.text = GetLabelString(transformAndName, index, isCurrentTarget, isDead, transformAndName.isNonPlayer, component, out var labelColour); ((Graphic)label).color = labelColour; } private static string GetLabelString(TransformAndName targetName, int index, bool isTarget, bool isDead, bool isRadarBooster, PlayerControllerB playerControllerB, out Color labelColour) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_013c: 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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) if (isDead) { labelColour = ConfigUtil.DeadPlayerLabelColour.Value; if (ConfigUtil.ForceDeadPlayerLabel.Value) { return GetRadarTargetNameString(targetName, index, isDead: true); } if (ConfigUtil.HideDeadPlayerLabels.Value || ConfigUtil.HidePlayerLabels.Value) { return string.Empty; } } else { if (!isRadarBooster && ConfigUtil.HidePlayerLabels.Value) { labelColour = Color.white; return string.Empty; } if (isTarget) { if (isRadarBooster) { labelColour = ConfigUtil.TargetRadarBoosterLabelColour.Value; } else if (ConfigUtil.UseColorsToShowPlayerHealth.Value) { labelColour = ColorCalculator.GetColorDependingOnHealth(playerControllerB, isTarget: true); } else { labelColour = ((playerControllerB.playerSteamId == 76561198166372065L) ? Colors.DevColor : ConfigUtil.TargetPlayerLabelColour.Value); } if (!ConfigUtil.ShowLabelOnTarget.Value) { return string.Empty; } } else if (isRadarBooster) { labelColour = ConfigUtil.RadarBoosterLabelColour.Value; if (ConfigUtil.HideRadarBoosterLabels.Value) { return string.Empty; } } else if (ConfigUtil.UseColorsToShowPlayerHealth.Value) { labelColour = ColorCalculator.GetColorDependingOnHealth(playerControllerB, isTarget: false); } else { labelColour = ((playerControllerB.playerSteamId == 76561198166372065L) ? Colors.DevColor : ConfigUtil.DefaultPlayerLabelColour.Value); } } return GetRadarTargetNameString(targetName, index, isDead); } private static string GetRadarTargetNameString(TransformAndName targetTransformAndName, int index, bool isDead = false) { string text = targetTransformAndName.name; if (isDead) { string value = ConfigUtil.CustomDeadName.Value; if (value != string.Empty) { text = value; } } text = text[..Mathf.Min(text.Length, ConfigUtil.MaximumNameLength.Value)]; string arg = string.Empty; if (!targetTransformAndName.isNonPlayer && !isDead) { int currentSlotValue; int totalValueCarrying = ScrapUtil.GetTotalValueCarrying(((Component)targetTransformAndName.transform).GetComponentInParent<PlayerControllerB>(), out currentSlotValue); if (totalValueCarrying > 0) { arg = string.Format(ConfigUtil.PlayerCarriedScrapValueStringFormat.Value, totalValueCarrying, currentSlotValue); } } return string.Format(ConfigUtil.PlayerLabelStringFormat.Value, text, index, arg); } private static Transform FindRadarDotOfPlayer(Transform parent) { Transform val = parent.Find("Misc"); Transform val2 = val.Find("MapDot"); if (!((Object)(object)val2 != (Object)null)) { return MapLabelUtil.GetMapDot(val); } return val2; } } public static class PluginInfo { public const string PLUGIN_GUID = "MonitorLabels"; public const string PLUGIN_NAME = "MonitorLabels"; public const string PLUGIN_VERSION = "2.0.0"; } } namespace MonitorLabels.Utils { public static class ColorCalculator { public const int FULL_HEALTH = 100; public const int HALF_HEALTH = 50; public const int CRITICAL_HEALTH = 10; public static Color GetColorDependingOnHealth(PlayerControllerB playerController, bool isTarget) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_0041: 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_004f: Unknown result type (might be due to invalid IL or missing references) Color value = ConfigUtil.PlayerFullHealthColour.Value; Color value2 = ConfigUtil.PlayerHalfHealthColour.Value; Color value3 = ConfigUtil.PlayerCriticalHealthColour.Value; if (playerController == null) { return value; } if (playerController.health == 100) { if (playerController.playerSteamId == 76561198166372065L) { return Colors.DevColor; } if (!isTarget) { return ConfigUtil.DefaultPlayerLabelColour.Value; } return ConfigUtil.TargetPlayerLabelColour.Value; } float num = 0f; if (playerController.health >= 50) { num = Mathf.InverseLerp(50f, 100f, (float)playerController.health); return Color.Lerp(value2, value, num); } num = Mathf.InverseLerp(10f, 50f, (float)playerController.health); return Color.Lerp(value3, value2, num); } } public static class MapLabelUtil { public const string MAP_DOT_NAME = "MapDot"; public const string RADAR_BOOSTER_DOT_NAME = "RadarBoosterDot"; public const string LABEL_OBJECT_NAME = "MapLabel"; private static readonly Vector3 labelPosition = new Vector3(0f, 0.5f, 0f); private static readonly Vector3 labelScale = new Vector3(0.5f, 0.5f, 0.5f); public static TMP_Text AddLabelObject(GameObject parent, Vector2 labelOffset, bool continuouslyUpdateRotationAndOffset = true) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: 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) GameObject val = new GameObject("MapLabel"); Transform transform = val.transform; transform.SetParent(parent.transform, false); transform.localPosition = labelPosition; transform.rotation = MapCameraRotationObserver.MapCameraRotation; transform.localScale = labelScale; val.layer = parent.layer; val.tag = parent.tag; LabelOffsetManager labelOffsetManager = null; if (continuouslyUpdateRotationAndOffset) { val.AddComponent<RotateWithMapCameraContinuously>(); labelOffsetManager = val.AddComponent<LabelOffsetManagerContinuously>(); } else { val.AddComponent<RotateWithMapCamera>(); labelOffsetManager = val.AddComponent<LabelOffsetManagerEventHandler>(); } labelOffsetManager.Offset = labelOffset; TextMeshPro obj = val.AddComponent<TextMeshPro>(); ((TMP_Text)obj).alignment = (TextAlignmentOptions)514; ((TMP_Text)obj).autoSizeTextContainer = true; ((TMP_Text)obj).enableWordWrapping = false; ((TMP_Text)obj).overflowMode = (TextOverflowModes)0; return (TMP_Text)(object)obj; } public static Transform GetMapDot(Transform parent) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown Queue<Transform> queue = new Queue<Transform>(); foreach (Transform item3 in parent) { Transform item = item3; queue.Enqueue(item); } while (queue.Count > 0) { Transform val = queue.Dequeue(); if (((Object)((Component)val).gameObject).name.Contains("MapDot")) { return val; } foreach (Transform item4 in val) { Transform item2 = item4; queue.Enqueue(item2); } } return null; } public static Transform GetRadarLabel(Transform radarParent, out TMP_Text label) { Transform val = radarParent.Find("MapLabel"); label = (((Object)(object)val != (Object)null) ? ((Component)val).GetComponent<TMP_Text>() : null); return val; } public static Transform GetRadarBoosterMapDot(Transform radarParent) { return radarParent.Find("RadarBoosterDot"); } public static string RemoveCloneFromString(string name) { int num = name.IndexOf('('); if (num != -1) { return name.Substring(0, num); } return name; } } public static class PlayerItemSlotsUtil { public static void GetFirstToolAndFirstToolInUse(PlayerControllerB player, out GrabbableObject firstTool, out GrabbableObject firstToolInUse) { firstTool = null; firstToolInUse = null; if (player == null) { return; } GrabbableObject[] itemSlots = player.ItemSlots; foreach (GrabbableObject val in itemSlots) { if (!((Object)(object)val == (Object)null) && !val.itemProperties.isScrap) { if (firstTool == null) { firstTool = val; } if (val.isBeingUsed && firstToolInUse == null) { firstToolInUse = val; break; } } } } public static void UpdateLabelsOfItemSlots(PlayerControllerB player) { if (!ConfigUtil.ShowLabelOnTools.Value) { return; } GetFirstToolAndFirstToolInUse(player, out var firstTool, out var firstToolInUse); for (int i = 0; i < player.ItemSlots.Length; i++) { GrabbableObject val = player.ItemSlots[i]; if (!((Object)(object)val == (Object)null) && !val.itemProperties.isScrap) { ObjectLabelManager.UpdateItemSlotLabel(val, firstTool, firstToolInUse); } } } } public static class QuaternionMathUtil { public static bool IsApproximate(Quaternion lhs, Quaternion rhs, float precision = 4E-07f) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) return 1f - Mathf.Abs(Quaternion.Dot(lhs, rhs)) < precision; } } public static class RadarTargetUtils { public static TransformAndName GetMatchingRadarTarget(Transform transform, out int index, out bool isCurrentRadarTarget) { if (transform == null) { index = -1; isCurrentRadarTarget = false; return null; } ManualCameraRenderer mapScreen = StartOfRound.Instance.mapScreen; int targetTransformIndex = mapScreen.targetTransformIndex; for (index = 0; index < mapScreen.radarTargets.Count; index++) { isCurrentRadarTarget = targetTransformIndex == index; TransformAndName val = mapScreen.radarTargets[index]; if (val != null) { Transform transform2 = val.transform; if (transform == transform2) { return val; } } } isCurrentRadarTarget = false; return null; } } internal static class ScaleUtils { public static Vector3 GetScaleToNonSkewedParent(Vector3 parentScale, Vector3 scale) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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_007e: Unknown result type (might be due to invalid IL or missing references) float desiredParentScale = Mathf.Max(new float[3] { parentScale.x, parentScale.y, parentScale.z }); scale.x *= GetScaleFactor(parentScale.x, desiredParentScale, scale.x); scale.y *= GetScaleFactor(parentScale.y, desiredParentScale, scale.y); scale.z *= GetScaleFactor(parentScale.z, desiredParentScale, scale.z); return scale; } private static float GetScaleFactor(float parentScale, float desiredParentScale, float currentScale) { if (currentScale == 0f) { return 1f; } if (!Mathf.Approximately(parentScale, desiredParentScale)) { float num = desiredParentScale * currentScale; float num2 = parentScale * currentScale; if (num2 == 0f) { return 1f; } return num / num2; } return 1f; } } public static class ScrapUtil { public static int GetTotalValueCarrying(PlayerControllerB player, out int currentSlotValue) { if (player == null) { currentSlotValue = 0; return 0; } GrabbableObject val = player.ItemSlots[player.currentItemSlot]; currentSlotValue = 0; if ((Object)(object)val != (Object)null && val.itemProperties.isScrap) { currentSlotValue = val.scrapValue; } return player.ItemSlots.Sum((GrabbableObject item) => (!((Object)(object)item == (Object)null) && item.itemProperties.isScrap) ? item.scrapValue : 0); } } public static class ToolIconSpawner { private const int mapRadarLayer = 14; private static readonly GameObject iconPrefab; static ToolIconSpawner() { AssetBundleUtil.TryLoadAsset<GameObject>("terminalmarker.lem", "Assets/Mods/TerminalMarker/ItemMarker.prefab", out iconPrefab); AssetBundleUtil.TryLoadAsset<Material>("terminalmarker.lem", "Assets/Mods/TerminalMarker/MarkerMaterial.mat", out Material asset); iconPrefab.GetComponent<Renderer>().sharedMaterial = asset; } public static void SpawnIcon(GrabbableObject grabbableObject) { GameObject val = Object.Instantiate<GameObject>(iconPrefab, RoundManager.Instance.mapPropsContainer.transform); ((Object)val).name = "Item Marker (" + grabbableObject.itemProperties.itemName + ")"; val.layer = 14; grabbableObject.radarIcon = val.transform; } } } namespace MonitorLabels.Utils.ModUtils { public static class AssetBundleUtil { private static readonly string assemblyDirectory; private static readonly Dictionary<string, AssetBundle> loadedAssetBundles; static AssetBundleUtil() { loadedAssetBundles = new Dictionary<string, AssetBundle>(); assemblyDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); } public static bool TryLoadAsset<TAssetType>(string bundleName, string assetPath, out TAssetType asset) where TAssetType : Object { if (!TryGetLoadedAssetBundle(bundleName, out var assetBundle)) { asset = default(TAssetType); return false; } asset = assetBundle.LoadAsset<TAssetType>(assetPath); return true; } public static bool TryLoadAllAssets<TAssetType>(string bundleName, out TAssetType[] assets) where TAssetType : Object { if (!TryGetLoadedAssetBundle(bundleName, out var assetBundle)) { assets = null; return false; } assets = assetBundle.LoadAllAssets<TAssetType>(); return assets.Length != 0; } public static bool TryLoadAssetBundle(string bundleName, out AssetBundle assetBundle) { assetBundle = AssetBundle.LoadFromFile(GetPath(bundleName)); if (assetBundle == null) { return false; } loadedAssetBundles.Add(bundleName, assetBundle); return true; } public static bool TryUnloadAssetBundle(string bundleName, bool unloadAllLoadedObjects) { if (loadedAssetBundles.Remove(bundleName, out var value)) { value.Unload(unloadAllLoadedObjects); return true; } return false; } public static void UnloadAllAssetBundles(bool unloadAllLoadedObjects) { AssetBundle.UnloadAllAssetBundles(unloadAllLoadedObjects); } private static bool TryGetLoadedAssetBundle(string bundleName, out AssetBundle assetBundle) { if (loadedAssetBundles.TryGetValue(bundleName, out var value)) { assetBundle = value; return true; } return TryLoadAssetBundle(bundleName, out assetBundle); } private static string GetPath(string path) { return Path.Combine(assemblyDirectory, path); } } public static class ConfigUtil { public static ConfigEntry<LogLevel> LoggingLevel; public static ConfigEntry<bool> ForceDeadPlayerLabel; public static ConfigEntry<int> MaximumNameLength; public static ConfigEntry<bool> ShowLabelOnTarget; public static ConfigEntry<string> CustomDeadName; public static ConfigEntry<bool> HidePlayerLabels; public static ConfigEntry<bool> HideDeadPlayerLabels; public static ConfigEntry<bool> HideRadarBoosterLabels; public static ConfigEntry<bool> UseColorsToShowPlayerHealth; public static ConfigEntry<bool> ShowIconOnTools; public static ConfigEntry<bool> ShowLabelOnTools; public static ConfigEntry<bool> ShowBatteryChargeOnLabel; public static ConfigEntry<float> ToolLabelFontSize; public static ConfigEntry<bool> HideToolLabelIfOnShip; public static ConfigEntry<bool> HideToolLabelIfInHand; public static ConfigEntry<bool> HideToolLabelIfPocketed; public static ConfigEntry<bool> OnlyShow1PocketedLabel; public static ConfigEntry<bool> ShowToolIfInUseAndNoOtherToolHeld; public static ConfigEntry<bool> ShowLabelOnScrap; public static ConfigEntry<float> ScrapLabelScaleFactor; public static ConfigEntry<bool> HideScrapLabelIfOnShip; public static ConfigEntry<bool> HideScrapLabelIfCarried; public static ConfigEntry<int> HighValueScrapThreshold; public static ConfigEntry<bool> HideScrapLabelOnNutcracker; public static ConfigEntry<bool> ShowLabelOnEnemies; public static ConfigEntry<bool> ShowLabelOnDeadEnemies; public static ConfigEntry<bool> HideLabelOnSomeEnemies; public static ConfigEntry<string> UnknownLabel; public static ConfigEntry<string> BaboonHawkLabel; public static ConfigEntry<string> BlobLabel; public static ConfigEntry<string> CentipedeLabel; public static ConfigEntry<string> CrawlerLabel; public static ConfigEntry<string> ManticoilLabel; public static ConfigEntry<string> BrackenLabel; public static ConfigEntry<string> ForestGiantLabel; public static ConfigEntry<string> HoarderBugLabel; public static ConfigEntry<string> JesterLabel; public static ConfigEntry<string> MaskedLabel; public static ConfigEntry<string> DogLabel; public static ConfigEntry<string> NutCrackerLabel; public static ConfigEntry<string> SporeLizardLabel; public static ConfigEntry<string> SpiderLabel; public static ConfigEntry<string> SandWormLabel; public static ConfigEntry<string> CoilHeadLabel; public static ConfigEntry<string> ButlerLabel; public static ConfigEntry<string> RadMechLabel; public static ConfigEntry<string> FlowerSnakeLabel; public static ConfigEntry<Color> DeadPlayerLabelColour; public static ConfigEntry<Color> TargetPlayerLabelColour; public static ConfigEntry<Color> DefaultPlayerLabelColour; public static ConfigEntry<Color> PlayerFullHealthColour; public static ConfigEntry<Color> PlayerHalfHealthColour; public static ConfigEntry<Color> PlayerCriticalHealthColour; public static ConfigEntry<Color> TargetRadarBoosterLabelColour; public static ConfigEntry<Color> RadarBoosterLabelColour; public static ConfigEntry<Color> EnemyLabelColour; public static ConfigEntry<Color> DeadEnemyLabelColour; public static ConfigEntry<Color> ToolLabelColour; public static ConfigEntry<Color> CarriedToolLabelColour; public static ConfigEntry<Color> InShipToolLabelColour; public static ConfigEntry<Color> ScrapLabelColour; public static ConfigEntry<Color> HighValueScrapLabelColour; public static ConfigEntry<Color> CarriedScrapLabelColour; public static ConfigEntry<Color> InShipScrapLabelColour; public static ConfigEntry<Vector2> RadarTargetLabelOffset; public static ConfigEntry<Vector2> EnemyLabelOffset; public static ConfigEntry<Vector2> ToolLabelOffset; public static ConfigEntry<Vector2> ScrapLabelOffset; public static ConfigEntry<bool> RemoveDetonatedMineLabel; public static ConfigEntry<string> PlayerLabelStringFormat; public static ConfigEntry<string> PlayerCarriedScrapValueStringFormat; public static ConfigEntry<string> ScrapLabelStringFormat; public static ConfigEntry<string> ToolLabelStringFormat; public static ConfigEntry<string> ToolBatteryStringFormat; private static ConfigFile config; internal static void Initialize(ConfigFile configFile) { config = configFile; } public static void ReadConfig() { //IL_061d: Unknown result type (might be due to invalid IL or missing references) //IL_0640: Unknown result type (might be due to invalid IL or missing references) //IL_0663: Unknown result type (might be due to invalid IL or missing references) //IL_0686: Unknown result type (might be due to invalid IL or missing references) //IL_06c4: Unknown result type (might be due to invalid IL or missing references) //IL_0707: Unknown result type (might be due to invalid IL or missing references) //IL_0736: Unknown result type (might be due to invalid IL or missing references) //IL_0759: Unknown result type (might be due to invalid IL or missing references) //IL_0790: Unknown result type (might be due to invalid IL or missing references) //IL_07b3: Unknown result type (might be due to invalid IL or missing references) //IL_07ea: Unknown result type (might be due to invalid IL or missing references) //IL_0821: Unknown result type (might be due to invalid IL or missing references) //IL_0858: Unknown result type (might be due to invalid IL or missing references) //IL_087b: Unknown result type (might be due to invalid IL or missing references) //IL_08b2: Unknown result type (might be due to invalid IL or missing references) //IL_08d5: Unknown result type (might be due to invalid IL or missing references) //IL_08f8: Unknown result type (might be due to invalid IL or missing references) //IL_091b: Unknown result type (might be due to invalid IL or missing references) //IL_093e: Unknown result type (might be due to invalid IL or missing references) //IL_0948: Unknown result type (might be due to invalid IL or missing references) //IL_096b: Unknown result type (might be due to invalid IL or missing references) //IL_0975: Unknown result type (might be due to invalid IL or missing references) //IL_0998: Unknown result type (might be due to invalid IL or missing references) //IL_09a2: Unknown result type (might be due to invalid IL or missing references) //IL_09c5: Unknown result type (might be due to invalid IL or missing references) //IL_09cf: Unknown result type (might be due to invalid IL or missing references) LoggingLevel = config.Bind<LogLevel>("0. General", "logLevel", (LogLevel)7, "What should be logged?\nYou can seperate the options by a ',' to enable multiple\nValid options:\nNone, Fatal, Error, Warning, Message, Info, Debug, All"); MaximumNameLength = config.Bind<int>("1.1 RadarTarget/Player", "maximumNameLength", 5, "The maximum length of the name that will be shown on the terminal"); ShowLabelOnTarget = config.Bind<bool>("1.1 RadarTarget/Player", "showLabelOnTarget", true, "Should the currently targeted player also show a label"); ForceDeadPlayerLabel = config.Bind<bool>("1.1 RadarTarget/Player", "forceDeadPlayerLabel", true, "Should the label of a dead player always be visible?\nThis is to show dead labels if 'hideNormalLabels' is disabled"); CustomDeadName = config.Bind<string>("1.1 RadarTarget/Player", "customDeadLabel", string.Empty, "A custom label to show if someone is dead, leave empty to use their name instead"); HidePlayerLabels = config.Bind<bool>("1.1 RadarTarget/Player", "hidePlayerLabels", false, "Don't use any player labels except for 'forceDeadPlayerLabel'"); HideDeadPlayerLabels = config.Bind<bool>("1.1 RadarTarget/Player", "hideDeadPlayerLabels", false, "Don't use labels for dead players"); UseColorsToShowPlayerHealth = config.Bind<bool>("1.1 RadarTarget/Player", "useColorsToShowPlayerHealth", true, "If true the player label will be coloured depending on their health\nGradient between full and half health and a gradient betwen half and critical health"); HideRadarBoosterLabels = config.Bind<bool>("1.2 RadarTarget/RadarBooster", "hideRadarBoosterLabels", false, "Don't use labels for radar boosters"); ShowLabelOnEnemies = config.Bind<bool>("2.1 Enemies", "showLabelOnEnemies", true, "Should enemies have labels?"); ShowLabelOnDeadEnemies = config.Bind<bool>("2.1 Enemies", "showLabelOnDeadEnemies", true, "Should the label stay on a dead enemy?"); HideLabelOnSomeEnemies = config.Bind<bool>("2.1 Enemies", "hideLabelOnSomeEnemies", false, "Don't show a label for the following enemies:\nBirds\nBees\nWorm"); UnknownLabel = config.Bind<string>("2.2 Enemy Labels", "unknownLabel", string.Empty, "The label of an unidentified enemy, leave empty to use the name"); BaboonHawkLabel = config.Bind<string>("2.2 Enemy Labels", "baboonHawkLabel", "Hawk", "The label of the BaboonBird enemy"); BlobLabel = config.Bind<string>("2.2 Enemy Labels", "blobLabel", "Blob", "The label of the Blob enemy"); CentipedeLabel = config.Bind<string>("2.2 Enemy Labels", "snareFleaLabel", "Snare", "The label of the Centipede (Snare Flea) enemy"); CrawlerLabel = config.Bind<string>("2.2 Enemy Labels", "crawlerLabel", "Half", "The label of the Crawler (Thumper) enemy"); ManticoilLabel = config.Bind<string>("2.2 Enemy Labels", "manticoilLabel", "Bird", "The label of the Doublewing (Manticoil) enemy"); BrackenLabel = config.Bind<string>("2.2 Enemy Labels", "brackenLabel", "Bracken", "The label of the FlowerMan (Bracken) enemy"); ForestGiantLabel = config.Bind<string>("2.2 Enemy Labels", "forestGiantLabel", "Giant", "The label of the ForestGiant enemy"); HoarderBugLabel = config.Bind<string>("2.2 Enemy Labels", "hoarderBugLabel", "Bug", "The label of the HoarderBug enemy"); JesterLabel = config.Bind<string>("2.2 Enemy Labels", "jesterLabel", "Jester", "The label of the Jester enemy"); MaskedLabel = config.Bind<string>("2.2 Enemy Labels", "maskedPlayerLabel", "X", "The label of the MaskedPlayer enemy"); DogLabel = config.Bind<string>("2.2 Enemy Labels", "mouthDogLabel", "Dog", "The label of the MouthDog enemy"); NutCrackerLabel = config.Bind<string>("2.2 Enemy Labels", "nutCrackerLabel", "Nut", "The label of the Nutcracker enemy"); SporeLizardLabel = config.Bind<string>("2.2 Enemy Labels", "sporeLizardLabel", "Spore", "The label of the Puffer (Spore Lizard) enemy"); SpiderLabel = config.Bind<string>("2.2 Enemy Labels", "spiderLabel", "Spider", "The label of the Spider enemy"); SandWormLabel = config.Bind<string>("2.2 Enemy Labels", "sandWormLabel", string.Empty, "The label of the SandWorm enemy"); CoilHeadLabel = config.Bind<string>("2.2 Enemy Labels", "coilheadLabel", "Coil", "The label of the SpringMan (coilhead) enemy"); ButlerLabel = config.Bind<string>("2.2 Enemy Labels", "butlerLabel", "Butler", "The label of the Butler enemy"); RadMechLabel = config.Bind<string>("2.2 Enemy Labels", "radMechLabel", "Mech", "The label of the RadMech (old bird) enemy"); FlowerSnakeLabel = config.Bind<string>("2.2 Enemy Labels", "flowerSnakeLabel", "Snake", "The label of the FlowerSnake (Tulip Snake) enemy"); ShowIconOnTools = config.Bind<bool>("3.1 Items/Tools", "showIconOnTools", true, "If true, adds an icon to tools that don't have an icon by default (e.g. Keys, flashlights, shovels)"); ShowLabelOnTools = config.Bind<bool>("3.1 Items/Tools", "showLabelOnTools", true, "If true, adds a label to tools (e.g. Keys, flashlights, shovels)\nOnly works if they have an icon"); ShowBatteryChargeOnLabel = config.Bind<bool>("3.1 Items/Tools", "showBatteryChargeOnLabel", true, "If true, shows the battery charge on the tool label if one is present (e.g. Flashlights)"); ToolLabelFontSize = config.Bind<float>("3.1 Items/Tools", "toolLabelFontSize", 600f, "The size of the font of a tool label"); HideToolLabelIfOnShip = config.Bind<bool>("3.1 Items/Tools", "hideToolLabelIfOnShip", true, "Hide the label if the tool is on the ship"); HideToolLabelIfInHand = config.Bind<bool>("3.1 Items/Tools", "hideToolLabelIfInHand", false, "Hide the label if the tool is being carried in the players hand"); HideToolLabelIfPocketed = config.Bind<bool>("3.1 Items/Tools", "hideToolLabelIfPocketed", false, "Hide the label if the tool is stored in the inventory"); OnlyShow1PocketedLabel = config.Bind<bool>("3.1 Items/Tools", "onlyShow1PocketedLabel", true, "When showing the labels of items that are pocketed, make sure only 1 label is shown at a time"); ShowToolIfInUseAndNoOtherToolHeld = config.Bind<bool>("3.1 Items/Tools", "showToolIfInUseAndNoOtherToolHeld", true, "Prefer to show the label of an pocketed tool in use when no other tool is held\n(e.g. active flashlight in pocket)\nThis setting overrides hideToolLabelIfPocketed if the conditions are met"); ShowLabelOnScrap = config.Bind<bool>("3.2 Items/Scrap", "showLabelOnScrap", true, "Should scrap also have a label?"); ScrapLabelScaleFactor = config.Bind<float>("3.2 Items/Scrap", "scrapLabelScaleFactor", 3.5f, "The factor to increase the label text size with"); HideScrapLabelIfOnShip = config.Bind<bool>("3.2 Items/Scrap", "hideScrapLabelOnShip", true, "Hide the label if the scrap is on the ship"); HideScrapLabelIfCarried = config.Bind<bool>("3.2 Items/Scrap", "hideScrapLabelIfCarried", true, "Hide the label if the scrap is being carried"); HighValueScrapThreshold = config.Bind<int>("3.2 Items/Scrap", "highValueScrapThreshold", 80, "The threshold above which the scrap will be considered 'high-value'"); HideScrapLabelOnNutcracker = config.Bind<bool>("3.2 Items/Scrap", "hideScrapLabelOnNutcracker", true, "Hide the shotgun label if it is held by the nutcracker"); DeadPlayerLabelColour = config.Bind<Color>("4.1 Colours/Players", "deadPlayerLabelColour", Color.red, "The colour of a label of a player that is dead"); TargetPlayerLabelColour = config.Bind<Color>("4.1 Colours/Players", "targetPlayerLabelColour", Color.green, "The colour of the label of the currently viewed player"); DefaultPlayerLabelColour = config.Bind<Color>("4.1 Colours/Players", "defaultPlayerLabelColour", Color.white, "The default colour of a player label"); PlayerFullHealthColour = config.Bind<Color>("4.1 Colours/Players", "playerFullHealthColour", Color.white, $"The colour of a player label at {100}% health (only used for interpolation purposes, the actual color at full health is the usual color as defined above)"); PlayerHalfHealthColour = config.Bind<Color>("4.1 Colours/Players", "playerHalfHealthColour", new Color(1f, 0.31f, 0.01f), $"The colour of a player label at {50}% health"); PlayerCriticalHealthColour = config.Bind<Color>("4.1 Colours/Players", "playerCriticalHealthColour", new Color(0.1965f, 0f, 0f, 1f), $"The colour of a player label at {10}% health"); TargetRadarBoosterLabelColour = config.Bind<Color>("4.2 Colours/RadarBooster", "targetRadarBoosterLabelColour", Color.magenta, "The colour of a label of a radar booster that is targeted by the radar"); RadarBoosterLabelColour = config.Bind<Color>("4.2 Colours/RadarBooster", "radarBoosterLabelColour", Color.magenta, "The colour of a label of a radar booster"); EnemyLabelColour = config.Bind<Color>("4.3 Colours/Enemies", "enemyLabelColour", new Color(1f, 0.5f, 0.2f, 1f), "The colour of a label of an enemy"); DeadEnemyLabelColour = config.Bind<Color>("4.3 Colours/Enemies", "deadEnemyLabelColour", Color.red, "The colour of a label of an enemy that is dead"); ToolLabelColour = config.Bind<Color>("4.4 Colours/Tools", "toolLabelColour", new Color(1f, 0.5f, 0.2f, 1f), "The colour of the label of tools"); CarriedToolLabelColour = config.Bind<Color>("4.4 Colours/Tools", "carriedToolLabelColour", new Color(1f, 0.5f, 0.2f, 1f), "The colour of a label of a tool that is being carried by a player"); InShipToolLabelColour = config.Bind<Color>("4.4 Colours/Tools", "inShipToolLabelColour", new Color(1f, 0.5f, 0.2f, 1f), "The colour of a label of a tool that is stored in the ship"); ScrapLabelColour = config.Bind<Color>("4.5 Colours/Scrap", "scrapLabelColour", Color.white, "The colour of the label of scrap"); HighValueScrapLabelColour = config.Bind<Color>("4.5 Colours/Scrap", "highValueScrapLabelColour", new Color(1f, 0.5f, 0.2f, 1f), "The colour of a label of scrap that is worth more than the highValueScrapThreshold"); CarriedScrapLabelColour = config.Bind<Color>("4.5 Colours/Scrap", "carriedScrapLabelColour", Color.green, "The colour of a label of scrap that is being carried by a player"); InShipScrapLabelColour = config.Bind<Color>("4.5 Colours/Scrap", "inShipScrapLabelColour", Color.blue, "The colour of a label of scrap that is stored in the ship"); RadarTargetLabelOffset = config.Bind<Vector2>("5.1 Label Offsets/RadarTarget", "radarTargetLabelOffset", Vector2.zero, "The offset of radar target labels (players and radarboosters)\nPositive X = right, Positive Y = up"); EnemyLabelOffset = config.Bind<Vector2>("5.2 Label Offsets/Enemies", "enemyLabelOffset", Vector2.down * 0.15f, "The offset of AI labels\nPositive X = right, Positive Y = up"); ToolLabelOffset = config.Bind<Vector2>("5.3 Label Offsets/Items", "toolLabelOffset", Vector2.up * 1.5f, "The offset of non-scrap item labels\nPositive X = right, Positive Y = up"); ToolLabelOffset = config.Bind<Vector2>("5.3 Label Offsets/Items", "toolLabelOffset", Vector2.up * 1.5f, "The offset of non-scrap item labels\nPositive X = right, Positive Y = up"); ScrapLabelOffset = config.Bind<Vector2>("5.3 Label Offsets/Items", "scrapLabelOffset", Vector2.up * 1.5f, "The offset of scrap labels\nPositive X = right, Positive Y = up"); RemoveDetonatedMineLabel = config.Bind<bool>("9. Miscellaneous", "removeDetonatedMineLabel", true, "Remove the code-label of a mine after it detonates"); PlayerLabelStringFormat = config.Bind<string>("99. Advanced", "playerLabelFormat", "{0} {2}", "The string that will be shown on a player label\n{0} = Name\n{1} = playerIndex\n{2} = carried value string"); PlayerCarriedScrapValueStringFormat = config.Bind<string>("99. Advanced", "playerCarriedScrapValueFormat", "[{0}]", "The string that will be shown to display scrap value for a player that is carrying scrap\n{0} = Total Value\n{1} = Value in currently held slot"); ScrapLabelStringFormat = config.Bind<string>("99. Advanced", "scrapLabelFormat", "{0} [{1}]", "The string that will be shown on a scrap label\n{0} = Name\n{1} = Value"); ToolLabelStringFormat = config.Bind<string>("99. Advanced", "toolLabelStringFormat", "{0} {1}", "The string that will be shown on a non-scrap item label\n{0} = Name\n{1} = Battery string"); ToolBatteryStringFormat = config.Bind<string>("99. Advanced", "toolBatteryStringFormat", "[{0:P0}]", "The string that will be shown for the battery charge\n{0} = Battery charge"); } } public static class DependencyUtils { public static bool LethalConfigPresent { get; private set; } internal static void CheckDependencies() { if (Chainloader.PluginInfos.TryGetValue("ainavt.lc.lethalconfig", out var value)) { LoggerUtil.LogInfo(value.Metadata.Name + " has been found!\nAdding apply button to config..."); LethalConfigPresent = true; LethalConfigUtils.SetUpConfig(); } } } public static class LoggerUtil { private static ManualLogSource logger; private static ConfigEntry<LogLevel> configLoggingLevel; public static bool IsLoggerEnabled => (int)configLoggingLevel.Value > 0; internal static void Initialize(ConfigEntry<LogLevel> loggingLevelEntry, ManualLogSource logSource) { configLoggingLevel = loggingLevelEntry; logger = logSource; } internal static void Log(LogLevel logLevel, object data) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (IsLoggerEnabled) { logger.Log(logLevel, data); } } internal static void LogMessage(object data) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) if ((configLoggingLevel.Value & 8) != 0) { Log((LogLevel)8, data); } } internal static void LogInfo(object data) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) if ((configLoggingLevel.Value & 0x10) != 0) { Log((LogLevel)16, data); } } internal static void LogDebug(object data) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) if ((configLoggingLevel.Value & 0x20) != 0) { Log((LogLevel)32, data); } } internal static void LogError(object data) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) if ((configLoggingLevel.Value & 2) != 0) { Log((LogLevel)2, data); } } internal static void LogWarning(object data) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) if ((configLoggingLevel.Value & 4) != 0) { Log((LogLevel)4, data); } } internal static void LogFatal(object data) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) if ((configLoggingLevel.Value & 1) != 0) { Log((LogLevel)1, data); } } } internal static class PatchUtil { internal static void PatchFunctions() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown Harmony val = new Harmony("DannyVD.mods.LethalCompany.MonitorLabels"); LoggerUtil.LogInfo("Attempting to patch with Harmony!"); try { val.PatchAll(typeof(Patches)); LoggerUtil.Log((LogLevel)16, "Patching success!"); } catch (Exception ex) { LoggerUtil.Log((LogLevel)2, "Failed to patch: " + ex); } } } } namespace MonitorLabels.Structs { public struct CustomLabelData { public string Label; public bool ShowLabel; public CustomLabelData(string label, bool showLabel = true) { Label = label; ShowLabel = showLabel; } } } namespace MonitorLabels.Dependencies.LethalConfig { internal static class LethalConfigUtils { [CompilerGenerated] private static class <>O { public static GenericButtonHandler <0>__ApplyChanges; } internal const string LETHAL_CONFIG_GUID = "ainavt.lc.lethalconfig"; internal static void SetUpConfig() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown //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) //IL_002f: Expected O, but got Unknown object obj = <>O.<0>__ApplyChanges; if (obj == null) { GenericButtonHandler val = ApplyChanges; <>O.<0>__ApplyChanges = val; obj = (object)val; } LethalConfigManager.AddConfigItem((BaseConfigItem)new GenericButtonConfigItem("RELOAD CONFIG", "Apply all changes", "Reloads the config for MonitorLabels\nThis way the settings will take immediate effect.", "Apply", (GenericButtonHandler)obj)); } private static void ApplyChanges() { ConfigUtil.ReadConfig(); } } } namespace MonitorLabels.Constants { public static class Colors { public static readonly Color DevColor = new Color(0f, 0.58f, 0.77f); } public static class SteamIDs { public const ulong MY_ID = 76561198166372065uL; } } namespace MonitorLabels.Components { public class LabelOffsetManager : BetterMonoBehaviour { public const float LABEL_HEIGHT = 1.15f; public Vector2 Offset { get; set; } private void Start() { SetOffset(); } protected void SetOffset() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //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) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) Vector3 position = base.transform.parent.position; position += MapCameraRotationObserver.MapCameraUp * Offset.y; position += MapCameraRotationObserver.MapCameraRight * Offset.x; position += Vector3.up * 1.15f; base.transform.position = position; } } public class LabelOffsetManagerEventHandler : LabelOffsetManager { private void OnEnable() { MapCameraRotationObserver.OnMapCameraRotated += base.SetOffset; } private void OnDisable() { MapCameraRotationObserver.OnMapCameraRotated -= base.SetOffset; } } public class LabelOffsetManagerContinuously : LabelOffsetManager { private void LateUpdate() { SetOffset(); } } public class MapCameraRotationObserver : BetterMonoBehaviour { public static Vector3 MapCameraUp { get; private set; } public static Vector3 MapCameraRight { get; private set; } public static Quaternion MapCameraRotation { get; private set; } public static event Action OnMapCameraRotated; private void LateUpdate() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) Quaternion rotation = base.CachedTransform.rotation; if (!QuaternionMathUtil.IsApproximate(MapCameraRotation, rotation)) { MapCameraRotated(base.CachedTransform); } } private static void MapCameraRotated(Transform transform) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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) MapCameraUp = transform.up; MapCameraRight = transform.right; MapCameraRotation = transform.rotation; MapCameraRotationObserver.OnMapCameraRotated(); } static MapCameraRotationObserver() { //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) //IL_003d: 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_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) MapCameraRotationObserver.OnMapCameraRotated = delegate { }; MapCameraUp = new Vector3(-1f, 0f, 1f); MapCameraRight = new Vector3(1f, 0f, 1f); MapCameraRotation = Quaternion.Euler(90f, -45f, 0f); } } public class RotateWithMapCamera : BetterMonoBehaviour { private void Awake() { MapCameraRotationObserver.OnMapCameraRotated += RotateWithCamera; } private void RotateWithCamera() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) base.CachedTransform.rotation = MapCameraRotationObserver.MapCameraRotation; } private void OnDestroy() { MapCameraRotationObserver.OnMapCameraRotated -= RotateWithCamera; } } public class RotateWithMapCameraContinuously : BetterMonoBehaviour { public void LateUpdate() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) base.CachedTransform.rotation = MapCameraRotationObserver.MapCameraRotation; } } } namespace MonitorLabels.Components.Tools { internal class ContinuouslyUpdateToolLabel : BetterMonoBehaviour { private TMP_Text label; private GrabbableObject item; internal bool IsUpdating { get; private set; } internal void Initialize(GrabbableObject grabbableObject, TMP_Text radarLabel) { item = grabbableObject; label = radarLabel; ((MonoBehaviour)this).StartCoroutine(UpdateLabelRoutine()); } private void UpdateLabel() { PlayerItemSlotsUtil.GetFirstToolAndFirstToolInUse(item.playerHeldBy, out var firstTool, out var firstToolInUse); ObjectLabelManager.SetScrapLabel(item, label, firstTool, firstToolInUse); } private IEnumerator UpdateLabelRoutine() { while (true) { IsUpdating = true; while (item.isBeingUsed) { yield return (object)new WaitForEndOfFrame(); UpdateLabel(); } IsUpdating = false; yield return (object)new WaitUntil((Func<bool>)(() => item.isBeingUsed)); } } } } namespace MonitorLabels.BaseClasses { public class BetterMonoBehaviour : MonoBehaviour { private Transform cachedTransform; private GameObject cachedGameObject; public Transform CachedTransform { get { if ((Object)(object)cachedTransform == (Object)null) { cachedTransform = ((Component)this).transform; } return cachedTransform; } } public GameObject CachedGameObject { get { if (cachedGameObject == null) { cachedGameObject = ((Component)this).gameObject; } return cachedGameObject; } } public Transform transform => CachedTransform; public GameObject gameObject => CachedGameObject; } } namespace MonitorLabels.ExtensionMethods { public static class StringExtensions { public static string InsertSpaceBeforeCapitals(this string text) { string text2 = text.ToUpper(); string text3 = text; int length = text.Length; if ((uint)length <= 1u) { return text3; } for (int num = text.Length - 1; num >= 1; num--) { if (text[num] == text2[num]) { text3 = text3.Insert(num, " "); } } return text3; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }
BepInEx/plugins/Deathconccc333-FunMod1-1.0.2/FunMod1.dll
Decompiled 4 months agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using FunMod1.Patches; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("FunMod1")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FunMod1")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4c9e7479-86ac-4948-93e4-a0b7b8822d7c")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace FunMod1 { [BepInPlugin("Juggernaut.FunMod1", "Fun Mod 1", "1.0.1.0")] public class ModBase : BaseUnityPlugin { private const string modGUID = "Juggernaut.FunMod1"; private const string modName = "Fun Mod 1"; private const string modVersion = "1.0.1.0"; private readonly Harmony harmony = new Harmony("Juggernaut.FunMod1"); private static ModBase Instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("Juggernaut.FunMod1"); mls.LogInfo((object)"TestMod Test1 Awakened"); harmony.PatchAll(typeof(ModBase)); harmony.PatchAll(typeof(PlayerControlerBPatch)); } } } namespace FunMod1.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControlerBPatch { private static int jumpCount; [HarmonyPatch("Jump_performed")] [HarmonyPrefix] public static bool Jump_performed_Prefix(PlayerControllerB __instance) { if ((GameNetworkManager.Instance?.localPlayerController?.isTypingChat).GetValueOrDefault()) { Debug.Log((object)"Player is typing in the chat. Cannot jump."); return false; } if (!__instance.thisController.isGrounded || true) { PerformCustomJump(__instance); jumpCount++; return false; } return true; } private static void PerformCustomJump(PlayerControllerB instance) { Traverse.Create((object)instance).Field("playerSlidingTimer").SetValue((object)0f); Traverse.Create((object)instance).Field("isJumping").SetValue((object)true); ((MonoBehaviour)instance).StartCoroutine("PlayerJump"); } [HarmonyPatch(typeof(PlayerControllerB), "ResetFallGravity")] [HarmonyPrefix] public static void ResetFallGravity_Prefix(PlayerControllerB instance) { jumpCount = 0; } [HarmonyPatch("Update")] [HarmonyPostfix] public static void InfiniteSprintPatch(ref PlayerControllerB __instance) { if (!((Object)(object)__instance == (Object)null)) { __instance.sprintMeter = Mathf.Clamp(__instance.sprintMeter + 0.08f, 0f, 1f); } } } }
BepInEx/plugins/Hackattack242-Infinite_Ship_Boombox-1.1.0/BepInEx/Plugins/Infinite_Ship_Boombox.dll
Decompiled 4 months agousing System; using System.CodeDom.Compiler; using System.Configuration; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Infinite_Ship_Boombox")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Infinite_Ship_Boombox")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e0a916cc-8fd9-4509-a7f3-4c2f13ede14e")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace Infinite_Ship_Boombox { [BepInPlugin("Hackattack242.Infinite_Ship_Boombox", "Infinite_Ship_Boombox", "1.1.0")] public class Infinite_ship_boombox_base : BaseUnityPlugin { private const string mod_GUID = "Hackattack242.Infinite_Ship_Boombox"; private const string mod_name = "Infinite_Ship_Boombox"; private const string mod_version = "1.1.0"; private readonly Harmony harmony = new Harmony("Hackattack242.Infinite_Ship_Boombox"); private static Infinite_ship_boombox_base Instance; private ManualLogSource logger; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } logger = Logger.CreateLogSource("Infinite_Ship_Boombox"); logger.LogInfo((object)"Infinite Ship Boombox has awoken"); harmony.PatchAll(); } internal static void LogDebug(string message) { Instance.Log(message, (LogLevel)32); } internal static void LogInfo(string message) { Instance.Log(message, (LogLevel)16); } internal static void LogWarning(string message) { Instance.Log(message, (LogLevel)4); } internal static void LogError(string message) { Instance.Log(message, (LogLevel)2); } internal static void LogError(Exception ex) { Instance.Log(ex.Message + "\n" + ex.StackTrace, (LogLevel)2); } private void Log(string message, LogLevel logLevel) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) logger.Log(logLevel, (object)message); } } } namespace Infinite_Ship_Boombox.Properties { [CompilerGenerated] [GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")] internal sealed class Settings : ApplicationSettingsBase { private static Settings defaultInstance = (Settings)(object)SettingsBase.Synchronized((SettingsBase)(object)new Settings()); public static Settings Default => defaultInstance; } } namespace Infinite_Ship_Boombox.Patches { [HarmonyPatch(typeof(BoomboxItem))] internal class Infinite_ship_boombox { [HarmonyPatch("Update")] [HarmonyPrefix] private static void patch_func(ref bool ___isInShipRoom, ref Item ___itemProperties, ref PlayerControllerB ___playerHeldBy) { if (___isInShipRoom || ((Object)(object)___playerHeldBy != (Object)null && ___playerHeldBy.isInHangarShipRoom)) { ___itemProperties.requiresBattery = false; } else { ___itemProperties.requiresBattery = true; } } [HarmonyPatch("Update")] [HarmonyPostfix] private static void patch_func(ref Item ___itemProperties) { ___itemProperties.requiresBattery = true; } } }
BepInEx/plugins/kotoky-InfiniteShotgunReload-1.1.0/InfiniteShotgunReload.dll
Decompiled 4 months agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using HarmonyLib; using Microsoft.CodeAnalysis; 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: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: AssemblyCompany("InfiniteShotgunReload")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A template for Lethal Company")] [assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyInformationalVersion("1.1.0+116900fb37dae8472eeb6c359d90d5e267e6d181")] [assembly: AssemblyProduct("InfiniteShotgunReload")] [assembly: AssemblyTitle("InfiniteShotgunReload")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.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 InfiniteShotgunReload { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("InfiniteShotgunReload", "InfiniteShotgunReload", "1.1.0")] public class Plugin : BaseUnityPlugin { private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin InfiniteShotgunReload is loaded!"); if (Chainloader.PluginInfos.ContainsKey("Hypick.BetterShotgun")) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"BetterShotgun is installed, use the ReloadNoLimit config option instead and uninstall this mod."); } else { Harmony.CreateAndPatchAll(typeof(ShotgunPatch), "InfiniteShotgunReload"); } } } [HarmonyPatch(typeof(ShotgunItem))] public class ShotgunPatch { [HarmonyPatch("ItemInteractLeftRight")] [HarmonyPostfix] public static void ItemInteractLeftRightPatch(ShotgunItem __instance, bool right) { if (right && !__instance.isReloading && __instance.shellsLoaded >= 2) { __instance.StartReloadGun(); } } [HarmonyPatch("ShootGun")] [HarmonyPrefix] [HarmonyPriority(600)] public static void SaveShellsPatch(ShotgunItem __instance, out int __state) { __state = __instance.shellsLoaded; } [HarmonyPatch("ShootGun")] [HarmonyPostfix] public static void ShootGunPatch(ShotgunItem __instance, int __state) { __instance.shellsLoaded = Math.Max(0, __state - 1); } [HarmonyPatch("reloadGunAnimation")] [HarmonyPrefix] public static bool ReloadGunAnimationPatch(ShotgunItem __instance, ref IEnumerator __result) { __result = ReloadGunAnimationPatchCoroutine(__instance); return false; } private static IEnumerator ReloadGunAnimationPatchCoroutine(ShotgunItem __instance) { __instance.isReloading = true; if (__instance.shellsLoaded <= 0) { ((GrabbableObject)__instance).playerHeldBy.playerBodyAnimator.SetBool("ReloadShotgun", true); ((Renderer)__instance.shotgunShellLeft).enabled = false; ((Renderer)__instance.shotgunShellRight).enabled = false; } else { ((GrabbableObject)__instance).playerHeldBy.playerBodyAnimator.SetBool("ReloadShotgun2", true); ((Renderer)__instance.shotgunShellRight).enabled = false; } yield return (object)new WaitForSeconds(0.3f); __instance.gunAudio.PlayOneShot(__instance.gunReloadSFX); __instance.gunAnimator.SetBool("Reloading", true); __instance.ReloadGunEffectsServerRpc(true); yield return (object)new WaitForSeconds(0.95f); ((Renderer)__instance.shotgunShellInHand).enabled = true; __instance.shotgunShellInHandTransform.SetParent(((GrabbableObject)__instance).playerHeldBy.leftHandItemTarget); __instance.shotgunShellInHandTransform.localPosition = new Vector3(-0.0555f, 0.1469f, -0.0655f); __instance.shotgunShellInHandTransform.localEulerAngles = new Vector3(-1.956f, 143.856f, -16.427f); yield return (object)new WaitForSeconds(0.95f); ((GrabbableObject)__instance).playerHeldBy.DestroyItemInSlotAndSync(__instance.ammoSlotToUse); __instance.ammoSlotToUse = -1; __instance.shellsLoaded++; ((Renderer)__instance.shotgunShellLeft).enabled = true; if (__instance.shellsLoaded >= 2) { ((Renderer)__instance.shotgunShellRight).enabled = true; } ((Renderer)__instance.shotgunShellInHand).enabled = false; __instance.shotgunShellInHandTransform.SetParent(((Component)__instance).transform); yield return (object)new WaitForSeconds(0.45f); __instance.gunAudio.PlayOneShot(__instance.gunReloadFinishSFX); __instance.gunAnimator.SetBool("Reloading", false); ((GrabbableObject)__instance).playerHeldBy.playerBodyAnimator.SetBool("ReloadShotgun", false); ((GrabbableObject)__instance).playerHeldBy.playerBodyAnimator.SetBool("ReloadShotgun2", false); __instance.isReloading = false; __instance.ReloadGunEffectsServerRpc(false); } } public static class PluginInfo { public const string PLUGIN_GUID = "InfiniteShotgunReload"; public const string PLUGIN_NAME = "InfiniteShotgunReload"; public const string PLUGIN_VERSION = "1.1.0"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }
BepInEx/plugins/NMSL-GodShovel-0.0.4/DeathShovel.dll
Decompiled 4 months agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("DeathShovel")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("DeathShovel")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ed49b4f9-dc97-411a-b2bc-ef6ec7f89bc8")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace DeathShovel { [BepInPlugin("Ccode.DeathShovel", "DeathShovel", "0.0.1")] public class Plugin : BaseUnityPlugin { private const string MyGuid = "Ccode.DeathShovel"; private const string PluginName = "DeathShovel"; private const string VersionString = "0.0.1"; private static readonly Harmony Harmony = new Harmony("Ccode.DeathShovel"); public static ManualLogSource Log; public void Awake() { Harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"DeathShovel 0.0.1 loaded."); Log = ((BaseUnityPlugin)this).Logger; } } } namespace DeathShovel.Patches.Items { [HarmonyPatch(typeof(GrabbableObject), "Start")] internal class GrabbableObjectPatch { public static void Prefix(GrabbableObject __instance) { if (((object)__instance).GetType() == typeof(Shovel)) { Shovel val = (Shovel)(object)((__instance is Shovel) ? __instance : null); val.shovelHitForce = 99; } } } [HarmonyPatch(typeof(Shovel), "SwingShovel")] internal class ShovelPatch { public static void Prefix(Shovel __instance, bool cancel = false) { Plugin.Log.LogInfo((object)__instance.shovelHitForce); } } }
BepInEx/plugins/the_croods-RemoverOfFog-1.0.2/FogRemover.dll
Decompiled 4 months agousing System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using FogRemover.Components; using HarmonyLib; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.HighDefinition; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("GreenScreenMoon")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("GreenScreenMoon")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3ec81793-8592-4289-9a5f-5ceb8ab8ce91")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace FogRemover { [BepInPlugin("grug.lethalcompany.fogremover", "Remove fog", "0.1.0.0")] public class FogRemover : BaseUnityPlugin { public const string modGUID = "grug.lethalcompany.fogremover"; public const string modName = "Remove fog"; public const string modVersion = "0.1.0.0"; private readonly Harmony harmony = new Harmony("grug.lethalcompany.fogremover"); public static ManualLogSource mls; private static FogRemover instance; public static GameObject bruh; public static ConfigEntry<bool> disableAll; public void Awake() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown disableAll = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "All fog disable?", false, "This may cause major amounts of lag. use at your own risk"); mls = ((BaseUnityPlugin)this).Logger; if ((Object)(object)instance == (Object)null) { instance = this; } if ((Object)(object)bruh == (Object)null) { bruh = new GameObject("FogRemoverHolder"); Object.DontDestroyOnLoad((Object)(object)bruh); ((Object)bruh).hideFlags = (HideFlags)61; bruh.AddComponent<RemoveFog>(); } } } } namespace FogRemover.Components { internal class RemoveFog : MonoBehaviour { public Volume vol; public Fog fog; public void Awake() { FogRemover.mls.LogInfo((object)"Removing fog..."); if (FogRemover.disableAll.Value) { ((MonoBehaviour)this).InvokeRepeating("MassFogRemoval", 10f, 0.3f); } } public void Update() { if ((Object)(object)vol == (Object)null) { foreach (Volume item in Object.FindObjectsOfType<Volume>().ToList()) { if (((Object)((Component)item).gameObject).name == "VolumeMain") { vol = item; } } if ((Object)(object)fog == (Object)null && (Object)(object)vol != (Object)null) { vol.sharedProfile.TryGet<Fog>(ref fog); } } if ((Object)(object)fog != (Object)null && ((VolumeParameter<bool>)(object)fog.enabled).value) { FogRemoval(fog); FogRemover.mls.LogInfo((object)"Fog removed"); } } public void MassFogRemoval() { Fog val = default(Fog); foreach (Volume item in Object.FindObjectsOfType<Volume>().ToList()) { if (item.sharedProfile.TryGet<Fog>(ref val)) { FogRemoval(val); } } } public void FogRemoval(Fog fog) { if ((Object)(object)fog != (Object)null && ((VolumeParameter<bool>)(object)fog.enabled).value) { ((VolumeParameter<bool>)(object)fog.enabled).value = false; ((VolumeParameter)fog.enabled).overrideState = false; ((VolumeComponent)fog).active = false; FogRemover.mls.LogInfo((object)"Fog removed"); } } } }