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 SharedConfigurableUpgradesChance v1.0.0
SharedConfigurableUpgradesChance.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq.Expressions; 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.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("AutoChrome")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("SharedConfigurableUpgradesChance")] [assembly: AssemblyTitle("SharedConfigurableUpgradesChance")] [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 SharedConfigurableUpgradesChance { public class ConfigHelper { public readonly ConfigEntry<int> playerValue; public readonly ConfigEntry<int> maxCap; public ConfigHelper(ConfigFile cfg) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown playerValue = cfg.Bind<int>("General", "Player Percent Value", 5, new ConfigDescription("The percentage increase in chance for each additional player. For example, if set to 5, each player increases the chance by 5%.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>())); maxCap = cfg.Bind<int>("General", "Max cap", 50, new ConfigDescription("The maximum percentage cap for the chance. This value ensures that the chance does not exceed this percentage, regardless of the number of players.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 100), Array.Empty<object>())); } } [BepInPlugin("AutoChrome.SharedConfigurableUpgradesChance", "SharedConfigurableUpgradesChance", "1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class SharedConfigurableUpgradesChance : BaseUnityPlugin { internal static SharedConfigurableUpgradesChance Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Expected O, but got Unknown Instance = this; Harmony val = new Harmony("SharedConfigurableUpgradesChance"); ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Upgrader.InitializeConfig(((BaseUnityPlugin)this).Config); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); List<MethodInfo> list = new List<MethodInfo>(); List<MethodInfo> list2 = new List<MethodInfo>(); list.Add(AccessTools.Method(typeof(ItemUpgradeMapPlayerCount), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradeMapPlayerCount_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerEnergy), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerEnergy_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerExtraJump), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerExtraJump_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerGrabRange), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerGrabRange_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerGrabStrength), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerGrabStrength_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerGrabThrow), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerGrabThrow_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerHealth), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerHealth_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerSprintSpeed), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerSprintSpeed_Patch.Upgrade_Patch()))); list.Add(AccessTools.Method(typeof(ItemUpgradePlayerTumbleLaunch), "Upgrade", (Type[])null, (Type[])null)); list2.Add(SymbolExtensions.GetMethodInfo((Expression<Action>)(() => Upgrader.ItemUpgradePlayerTumbleLaunch_Patch.Upgrade_Patch()))); for (int i = 0; i < list.Count; i++) { val.Patch((MethodBase)list[i], new HarmonyMethod(list2[i]), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } } } public class Upgrader { public class ItemUpgradeMapPlayerCount_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradeMapPlayerCount(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Map Player Count upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerEnergy_Patch : MonoBehaviour { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerEnergy(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Player Energy upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerExtraJump_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerExtraJump(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Extra Jump upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerGrabRange_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerGrabRange(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Grab Range upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerGrabStrength_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerGrabStrength(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Grab Strength upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerGrabThrow_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerThrowStrength(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Throw Strength upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerHealth_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerHealth(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Health upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerSprintSpeed_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerSprintSpeed(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Sprint Speed upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } public class ItemUpgradePlayerTumbleLaunch_Patch { public static bool Upgrade_Patch() { List<PlayerAvatar> list = SemiFunc.PlayerGetAll(); foreach (PlayerAvatar item in list) { double num = (double)configHelper.playerValue.Value / 100.0; double num2 = (double)configHelper.maxCap.Value / 100.0; int count = list.Count; double num3 = Math.Min(num2, (double)count * num); Random random = new Random(); double num4 = random.NextDouble(); SharedConfigurableUpgradesChance.Logger.LogInfo((object)$"Chance generated for: {SemiFunc.PlayerGetName(item)} : {num4}, Less than or equal to: {num3}, Max Cap: {num2}, Player Value: {num}"); if (num4 <= num3) { PunManager.instance.UpgradePlayerTumbleLaunch(SemiFunc.PlayerGetSteamID(item)); SharedConfigurableUpgradesChance.Logger.LogInfo((object)("Tumble Launch upgrade given to: " + SemiFunc.PlayerGetName(item))); } } return true; } } internal static ConfigHelper configHelper { get; private set; } public static void InitializeConfig(ConfigFile configFile) { configHelper = new ConfigHelper(configFile); } } }