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 OverchargeUpgrade v0.0.4
plugins/OverchargeUpgrade.dll
Decompiled a year agousing System; using System.Diagnostics; using System.IO; 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 REPOLib.Modules; using UnityEngine; [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("SolarAaron")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("OverchargeUpgrade")] [assembly: AssemblyTitle("OverchargeUpgrade")] [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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 OverchargeUpgrade { [BepInPlugin("SolarAaron.OverchargeUpgrade", "OverchargeUpgrade", "0.0.4")] public class OverchargeUpgrade : BaseUnityPlugin { public static ConfigEntry<bool> overchargeUpgradeEnabled; public static ConfigEntry<float> overchargeUpgradeAmount; public static ConfigEntry<bool> overchargeUpgradeExponential; public static ConfigEntry<float> overchargeUpgradeExpAmount; public static int UpgradeLevel; internal static OverchargeUpgrade Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } public PlayerUpgrade OverchargeUpgradeRegister { get; private set; } private void Awake() { Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; _logger.LogInfo((object)"Configuring Overcharge upgrade..."); string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); string text = Path.Combine(directoryName, "SLR_assets.bundle"); AssetBundle val = AssetBundle.LoadFromFile(text); overchargeUpgradeEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Overcharge Upgrade", "Enabled", true, "Should the Overcharge rate Upgrade be enabled?"); overchargeUpgradeAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Overcharge Upgrade", "Overcharge Upgrade Power", 0.1f, "How much should Overcharge rate decrease per upgrade?"); overchargeUpgradeExponential = ((BaseUnityPlugin)this).Config.Bind<bool>("Overcharge Upgrade", "Exponential upgrade", false, "Should the Overcharge rate Upgrade stack exponentially?"); overchargeUpgradeExpAmount = ((BaseUnityPlugin)this).Config.Bind<float>("Overcharge Upgrade", "Overcharge Upgrade Exponential Power", 0.99f, "How much should Overcharge rate decrease per upgrade multiplicatively?"); Patch(); if (overchargeUpgradeEnabled.Value) { string[] allAssetNames = val.GetAllAssetNames(); foreach (string text2 in allAssetNames) { _logger.LogInfo((object)("Found asset: " + text2)); } Item val2 = val.LoadAsset<Item>("assets/repo/mods/resources/items/items/item upgrade overcharge.asset"); Items.RegisterItem(val2); OverchargeUpgradeRegister = Upgrades.RegisterUpgrade("OverchargeUpgrade", val2, (Action<PlayerAvatar, int>)InitOverchargeUpgrade, (Action<PlayerAvatar, int>)UseOverchargeUpgrade); } Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } internal void Patch() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_0026: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private static void InitOverchargeUpgrade(PlayerAvatar player, int level) { if (Traverse.Create((object)player).Field<bool>("isLocal").Value) { UpgradeLevel = level; Logger.LogInfo((object)("Init: " + string.Join(Environment.NewLine, Instance.OverchargeUpgradeRegister.PlayerDictionary))); } } private static void UseOverchargeUpgrade(PlayerAvatar player, int level) { if (Traverse.Create((object)player).Field<bool>("isLocal").Value) { UpgradeLevel = level; Logger.LogInfo((object)("Used: " + string.Join(Environment.NewLine, Instance.OverchargeUpgradeRegister.PlayerDictionary))); } } public static float CalculateOverchargeRate(PlayerAvatar player, int level) { PlayerUpgrade upgrade = Upgrades.GetUpgrade("OverchargeUpgrade"); if (upgrade != null && upgrade.GetLevel(player) > 0) { if (overchargeUpgradeExponential.Value) { return (float)(1.0 * Math.Pow(overchargeUpgradeExpAmount.Value, level)); } return 1f / (1f + overchargeUpgradeAmount.Value * (float)level); } return 1f; } } [HarmonyPatch(typeof(PhysGrabber), "PhysGrabOverCharge")] public class PhysGrabberPatch { private static void Prefix(PhysGrabber __instance, ref float _amount) { OverchargeUpgrade.Logger.LogDebug((object)$"Original overcharge amount: {_amount}"); _amount *= OverchargeUpgrade.CalculateOverchargeRate(__instance.playerAvatar, OverchargeUpgrade.UpgradeLevel); OverchargeUpgrade.Logger.LogDebug((object)string.Format("After calculation with level {0}: {1}", Upgrades.GetUpgrade("OverchargeUpgrade").GetLevel(__instance.playerAvatar), _amount)); } } }