Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of LightningItemSlot v0.0.1
LightningItemSlot.dll
Decompiled 2 years 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.Logging; using GameNetcodeStuff; using HarmonyLib; using LightningItemSlot.Patches; using LightningItemSlot.Utilities; using Microsoft.CodeAnalysis; using Mono.Cecil; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("LightningItemSlot")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("A template for Lethal Company")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+43206f0475d7dae18e393eaa115cfd192399712f")] [assembly: AssemblyProduct("LightningItemSlot")] [assembly: AssemblyTitle("LightningItemSlot")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.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 LightningItemSlot { public class Enums { public enum eAutoLaunchOption { NONE, ONLINE, LAN } public enum eShowHiddenMoons { Never, AfterDiscovery, Always } public enum eMaskedEntityCopyLook { None, Suit, SuitAndCosmetics } public enum eSaveFurniturePlacement { None, StartingFurniture, All } public enum eShipCamRotation { None, North, East, South, West } public enum eMonitorNames { None, Credits, DangerLevel, DaysSinceDeath, Deadline, DoorPower, FancyWeather, PlayerHealth, PlayerHealthExact, ProfitQuota, Sales, ScrapLeft, ShipScrap, Time, TotalDays, TotalDeaths, TotalQuotas, Weather, ExternalCam, InternalCam } public enum eValidKeys { None, Space, Enter, Tab, Backquote, Quote, Semicolon, Comma, Period, Slash, Backslash, LeftBracket, RightBracket, Minus, Equals, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, Digit1, Digit2, Digit3, Digit4, Digit5, Digit6, Digit7, Digit8, Digit9, Digit0, LeftShift, RightShift, LeftAlt, AltGr, LeftCtrl, RightCtrl, LeftWindows, RightCommand, ContextMenu, Escape, LeftArrow, RightArrow, UpArrow, DownArrow, Backspace, PageDown, PageUp, Home, End, Insert, Delete, CapsLock, NumLock, PrintScreen, ScrollLock, Pause, NumpadEnter, NumpadDivide, NumpadMultiply, NumpadPlus, NumpadMinus, NumpadPeriod, NumpadEquals, Numpad0, Numpad1, Numpad2, Numpad3, Numpad4, Numpad5, Numpad6, Numpad7, Numpad8, Numpad9, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, MouseLeft, MouseRight, MouseMiddle, MouseBackButton, MouseForwardButton } public enum eItemsToKeep { None, Held, NonScrap, All } public static ButtonControl GetMouseButtonMapping(eValidKeys mouseButton) { if (1 == 0) { } ButtonControl result = (ButtonControl)(mouseButton switch { eValidKeys.MouseLeft => Mouse.current.leftButton, eValidKeys.MouseRight => Mouse.current.rightButton, eValidKeys.MouseMiddle => Mouse.current.middleButton, eValidKeys.MouseBackButton => Mouse.current.backButton, eValidKeys.MouseForwardButton => Mouse.current.forwardButton, _ => throw new NotImplementedException(), }); if (1 == 0) { } return result; } } internal class Metadata { public const string GUID = "Blinov34.LightningItemSlot"; public const string PLUGIN_NAME = "LightningItemSlot"; public const string VERSION = "0.0.1"; } [BepInPlugin("LightningItemSlot", "LightningItemSlot", "1.0.0")] public class Plugin : BaseUnityPlugin { private const string UISection = "UI"; private readonly Harmony harmony = new Harmony("Blinov34.LightningItemSlot"); private static Plugin Instance; public static ManualLogSource MLS { get; private set; } private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } MLS = ((BaseUnityPlugin)this).Logger; AssetBundleHelper.Initialize(); MLS.LogInfo((object)"Configuration Initialized."); harmony.PatchAll(typeof(StormyWeatherPatch)); harmony.PatchAll(typeof(HUDManagerPatch)); MLS.LogInfo((object)"StormyWeather patched."); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin LightningItemSlot is loaded!"); } } public static class PluginInfo { public const string PLUGIN_GUID = "LightningItemSlot"; public const string PLUGIN_NAME = "LightningItemSlot"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace LightningItemSlot.Utilities { internal class AssetBundleHelper { private static AssetBundle _bundle; public static GameObject MonitorsPrefab { get; private set; } public static Sprite Reticle { get; private set; } public static GameObject MedStationPrefab { get; private set; } public static GameObject LightningOverlay { get; private set; } public static void Initialize() { if ((Object)(object)_bundle == (Object)null) { string text = Path.Combine(new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName, "LightningItemSlotAssets"); if (!new FileInfo(text).Exists) { Plugin.MLS.LogError((object)Path.Combine(new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName)); Plugin.MLS.LogError((object)"Could not find asset bundle!"); return; } _bundle = AssetBundle.LoadFromFile(text, 2424832663u); Plugin.MLS.LogInfo((object)"Loading assets..."); MonitorsPrefab = _bundle.LoadAsset<GameObject>("MonitorGroup.prefab"); Reticle = _bundle.LoadAsset<Sprite>("reticle.png"); MedStationPrefab = _bundle.LoadAsset<GameObject>("MedStation.prefab"); LightningOverlay = _bundle.LoadAsset<GameObject>("LightningOverlay.prefab"); } } } internal static class OtherModHelper { private static bool _initialized; public const string MimicsGUID = "x753.Mimics"; public const string TwoRadarCamsGUID = "Zaggy1024.TwoRadarMaps"; public const string WeatherTweaksGUID = "WeatherTweaks"; private static Type _reservedPlayerPatcherType; private static Type _reservedPlayerDataType; private static FieldInfo _reservedPlayerData; private static MethodInfo _isReservedSlot; public static bool AdvancedCompanyActive { get; private set; } public static bool ReservedItemSlotCoreActive { get; private set; } public static bool FlashlightFixActive { get; private set; } public static bool MimicsActive { get; private set; } public static bool TwoRadarCamsActive { get; private set; } public static bool WeatherTweaksActive { get; private set; } public static ManualCameraRenderer TwoRadarCamsMapRenderer { get; set; } private static FieldInfo PlayerData => _reservedPlayerData ?? (_reservedPlayerData = _reservedPlayerPatcherType.GetField("allPlayerData", BindingFlags.Static | BindingFlags.NonPublic)); private static MethodInfo IsReservedSlot => _isReservedSlot ?? (_isReservedSlot = _reservedPlayerDataType.GetMethod("IsReservedItemSlot")); public static void Initialize() { if (!_initialized) { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); Assembly assembly = assemblies.FirstOrDefault((Assembly a) => a.FullName.Contains("ReservedItemSlotCore,")); if (assembly != null) { _reservedPlayerPatcherType = assembly.GetType("ReservedItemSlotCore.Patches.PlayerPatcher"); _reservedPlayerDataType = assembly.GetType("ReservedItemSlotCore.ReservedPlayerData"); } AdvancedCompanyActive = AppDomain.CurrentDomain.GetAssemblies().Any((Assembly a) => a.FullName.Contains("AdvancedCompany,")); ReservedItemSlotCoreActive = assembly != null; PluginInfo val = TypeLoader.FindPluginTypes<PluginInfo>(Paths.PluginPath, (Func<TypeDefinition, PluginInfo>)Chainloader.ToPluginInfo, (Func<AssemblyDefinition, bool>)null, (string)null).FirstOrDefault(delegate(KeyValuePair<string, List<PluginInfo>> p) { PluginInfo? obj = p.Value.FirstOrDefault(); return ((obj != null) ? obj.Metadata.GUID : null) == "ShaosilGaming.FlashlightFix"; }).Value?.FirstOrDefault(); FlashlightFixActive = val != null && val.Metadata.Version.Minor < 2; MimicsActive = Chainloader.PluginInfos.ContainsKey("x753.Mimics"); TwoRadarCamsActive = Chainloader.PluginInfos.ContainsKey("Zaggy1024.TwoRadarMaps"); WeatherTweaksActive = Chainloader.PluginInfos.ContainsKey("WeatherTweaks"); if (AdvancedCompanyActive) { Plugin.MLS.LogDebug((object)"Advanced Company Detected"); } if (ReservedItemSlotCoreActive) { Plugin.MLS.LogDebug((object)"Reserved Item Slot Core Detected"); } if (MimicsActive) { Plugin.MLS.LogDebug((object)"Mimics Detected"); } if (TwoRadarCamsActive) { Plugin.MLS.LogDebug((object)"Two Radar Cams Detected"); } if (WeatherTweaksActive) { Plugin.MLS.LogDebug((object)"Weather Tweaks Detected"); } _initialized = true; } } public static bool IsReservedItemSlot(PlayerControllerB player, int slot) { if (!ReservedItemSlotCoreActive) { return false; } if (PlayerData == null || IsReservedSlot == null) { Plugin.MLS.LogWarning((object)"Could not load one or more ReservedItemSlot types when checking slot is reserved type. Assuming >= 4 is reserved"); return slot >= 4; } object obj = ((IDictionary)PlayerData.GetValue(null))[player]; return (bool)IsReservedSlot.Invoke(obj, new object[1] { slot }); } } } namespace LightningItemSlot.Patches { internal static class HUDManagerPatch { public static GrabbableObject CurrentLightningTarget; private static List<SpriteRenderer> _lightningOverlays; [HarmonyPatch(typeof(HUDManager), "Start")] [HarmonyPostfix] [HarmonyPriority(200)] private static void Start(HUDManager __instance) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) _lightningOverlays = new List<SpriteRenderer>(); for (int i = 0; i < __instance.itemSlotIconFrames.Length; i++) { GameObject val = Object.Instantiate<GameObject>(AssetBundleHelper.LightningOverlay, ((Component)__instance.itemSlotIconFrames[i]).transform); val.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity); val.transform.localScale = Vector3.one; SpriteRenderer component = val.GetComponent<SpriteRenderer>(); ((Renderer)component).enabled = false; _lightningOverlays.Add(component); } } [HarmonyPatch(typeof(HUDManager), "Update")] [HarmonyPostfix] private static void Update(HUDManager __instance) { if (_lightningOverlays.Count <= 0 || !((Object)(object)HUDManager.Instance != (Object)null) || !((Object)(object)StartOfRound.Instance.localPlayerController != (Object)null)) { return; } for (int num = 0; num < Mathf.Min(new int[3] { HUDManager.Instance.itemSlotIconFrames.Length, _lightningOverlays.Count, StartOfRound.Instance.localPlayerController.ItemSlots.Length }); num++) { bool flag = (Object)(object)CurrentLightningTarget != (Object)null && (Object)(object)StartOfRound.Instance.localPlayerController.ItemSlots[num] == (Object)(object)CurrentLightningTarget; if (((Renderer)_lightningOverlays[num]).enabled != flag) { ((Renderer)_lightningOverlays[num]).enabled = flag; } } } } internal static class StormyWeatherPatch { public static StormyWeather Instance { get; private set; } [HarmonyPatch(typeof(StormyWeather), "OnEnable")] [HarmonyPostfix] private static void OnEnable(StormyWeather __instance) { if ((Object)(object)Instance != (Object)(object)__instance) { Instance = __instance; } } [HarmonyPatch(typeof(StormyWeather), "OnDisable")] [HarmonyPostfix] private static void OnDisable() { Instance = null; } [HarmonyPatch(typeof(StormyWeather), "SetStaticElectricityWarning")] [HarmonyPostfix] private static void SetStaticElectricityWarning(NetworkObject warningObject) { ((Component)warningObject).TryGetComponent<GrabbableObject>(ref HUDManagerPatch.CurrentLightningTarget); } [HarmonyPatch(typeof(StormyWeather), "LightningStrike")] [HarmonyPostfix] private static void LightningStrike(bool useTargetedObject) { if (useTargetedObject) { HUDManagerPatch.CurrentLightningTarget = null; } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { internal IgnoresAccessChecksToAttribute(string assemblyName) { } } }