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 Better Upgrade Cost Scaling v1.1.0
Better Upgrade Cost Scaling.dll
Decompiled a year agousing System; using System.Collections.Generic; 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; [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-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("Autodesk.Fbx")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("FbxBuildTestAssets")] [assembly: IgnoresAccessChecksTo("Klattersynth")] [assembly: IgnoresAccessChecksTo("Photon3Unity3D")] [assembly: IgnoresAccessChecksTo("PhotonChat")] [assembly: IgnoresAccessChecksTo("PhotonRealtime")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking")] [assembly: IgnoresAccessChecksTo("PhotonUnityNetworking.Utilities")] [assembly: IgnoresAccessChecksTo("PhotonVoice.API")] [assembly: IgnoresAccessChecksTo("PhotonVoice")] [assembly: IgnoresAccessChecksTo("PhotonVoice.PUN")] [assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime")] [assembly: IgnoresAccessChecksTo("SingularityGroup.HotReload.Runtime.Public")] [assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Attributes")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization.Config")] [assembly: IgnoresAccessChecksTo("Sirenix.Serialization")] [assembly: IgnoresAccessChecksTo("Sirenix.Utilities")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Formats.Fbx.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Postprocessing.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Antlr3.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Core")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.Flow")] [assembly: IgnoresAccessChecksTo("Unity.VisualScripting.State")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("websocket-sharp")] [assembly: AssemblyCompany("Furiante")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Better Upgrade Cost Scaling")] [assembly: AssemblyTitle("Better Upgrade Cost Scaling")] [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 UpgradeScaling { [BepInPlugin("BetterUpgradeCostScaling", "Better Upgrade Cost Scaling", "1.0")] public class Better_Upgrade_Cost_Scaling : BaseUnityPlugin { private const string modGUID = "BetterUpgradeCostScaling"; private const string modName = "Better Upgrade Cost Scaling"; private const string modVersion = "1.0"; private readonly Harmony _harmony = new Harmony("BetterUpgradeCostScaling"); internal static ConfigEntry<int> minUpgradeCount; internal static Better_Upgrade_Cost_Scaling Instance { get; private set; } private void Awake() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown Instance = this; Logger.Initialize(Logger.CreateLogSource("BetterUpgradeCostScaling")); minUpgradeCount = ((BaseUnityPlugin)this).Config.Bind<int>("General", "MinUpgrades", 0, new ConfigDescription("Guarantees a Minimum Number of Upgrades in the Shop. Vanilla max is 14, but other mods can increase this. A Value of 0 will lead to no changes.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 50), Array.Empty<object>())); _harmony.PatchAll(); Logger.LogInfo($"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } } internal static class Logger { public static ManualLogSource? ManualLogSource { get; private set; } public static void Initialize(ManualLogSource manualLogSource) { ManualLogSource = manualLogSource; } public static void LogInfo(object data) { ManualLogSource? manualLogSource = ManualLogSource; if (manualLogSource != null) { manualLogSource.LogInfo(data); } } } } namespace UpgradeScaling.Patch { internal class Patch { [HarmonyPatch(typeof(ShopManager), "GetAllItemsFromStatsManager")] internal class GetAllItemsFromStatsManager { private static List<string> upgrades = new List<string> { "hp", "stamina", "strength", "sprint", "jump", "map", "tumble", "throw", "range" }; private static void Prefix() { getUpgrades(); if (Better_Upgrade_Cost_Scaling.minUpgradeCount.Value != 0) { ShopManager.instance.itemUpgradesAmount = Better_Upgrade_Cost_Scaling.minUpgradeCount.Value; } } private static void getUpgrades() { foreach (string upgrade in upgrades) { int num = 0; switch (upgrade) { case "hp": foreach (PlayerAvatar item in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeHealth[SemiFunc.PlayerGetSteamID(item)] > num) { num = StatsManager.instance.playerUpgradeHealth[SemiFunc.PlayerGetSteamID(item)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Player Health", num); break; case "stamina": foreach (PlayerAvatar item2 in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeStamina[SemiFunc.PlayerGetSteamID(item2)] > num) { num = StatsManager.instance.playerUpgradeStamina[SemiFunc.PlayerGetSteamID(item2)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Player Energy", num); break; case "strength": foreach (PlayerAvatar item3 in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeStrength[SemiFunc.PlayerGetSteamID(item3)] > num) { num = StatsManager.instance.playerUpgradeStrength[SemiFunc.PlayerGetSteamID(item3)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Player Grab Strength", num); break; case "sprint": foreach (PlayerAvatar item4 in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeSpeed[SemiFunc.PlayerGetSteamID(item4)] > num) { num = StatsManager.instance.playerUpgradeSpeed[SemiFunc.PlayerGetSteamID(item4)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Player Sprint Speed", num); break; case "jump": foreach (PlayerAvatar item5 in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeExtraJump[SemiFunc.PlayerGetSteamID(item5)] > num) { num = StatsManager.instance.playerUpgradeExtraJump[SemiFunc.PlayerGetSteamID(item5)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Player Extra Jump", num); break; case "map": foreach (PlayerAvatar item6 in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(item6)] > num) { num = StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(item6)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Map Player Count", num); break; case "tumble": foreach (PlayerAvatar item7 in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeLaunch[SemiFunc.PlayerGetSteamID(item7)] > num) { num = StatsManager.instance.playerUpgradeLaunch[SemiFunc.PlayerGetSteamID(item7)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Player Tumble Launch", num); break; case "range": foreach (PlayerAvatar item8 in SemiFunc.PlayerGetAll()) { if (StatsManager.instance.playerUpgradeRange[SemiFunc.PlayerGetSteamID(item8)] > num) { num = StatsManager.instance.playerUpgradeRange[SemiFunc.PlayerGetSteamID(item8)]; } } StatsManager.instance.SetItemsUpgradesPurchased("Item Upgrade Player Grab Range", num); break; } } } } } }