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 RandomItemQuantity v1.1.0
RandomItemQuantity.dll
Decompiled 8 months agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using On.RoR2; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; 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("ok")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ok")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3c9913da-dd36-4e3d-8731-3f1a7ecb3505")] [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 RandomItemQuantity; [BepInPlugin("com.beeru.randomitemquantity", "RandomItemQuantity", "1.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class RandomItemQuantityMod : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static IsDisabledDelegate <>9__41_0; public static IsDisabledDelegate <>9__41_1; public static IsDisabledDelegate <>9__41_2; public static IsDisabledDelegate <>9__41_3; public static IsDisabledDelegate <>9__41_4; public static IsDisabledDelegate <>9__41_5; public static IsDisabledDelegate <>9__41_6; public static IsDisabledDelegate <>9__41_7; internal bool <Awake>b__41_0() { return !enableMod.Value; } internal bool <Awake>b__41_1() { return !enableMod.Value; } internal bool <Awake>b__41_2() { return !enableMod.Value; } internal bool <Awake>b__41_3() { return !enableMod.Value; } internal bool <Awake>b__41_4() { return !enableMod.Value; } internal bool <Awake>b__41_5() { return !enableMod.Value; } internal bool <Awake>b__41_6() { return !enableMod.Value; } internal bool <Awake>b__41_7() { return !enableMod.Value; } } public const string PluginGUID = "com.beeru.randomitemquantity"; public const string PluginName = "RandomItemQuantity"; public const string PluginVersion = "1.1.0"; public static ManualLogSource logger; private static Random rng = new Random(); public static ConfigEntry<bool> enableMod { get; set; } public static ConfigEntry<float> minQuantity { get; set; } public static ConfigEntry<float> maxQuantity { get; set; } public static ConfigEntry<float> speedItemCap { get; set; } public static ConfigEntry<bool> affectWhiteItems { get; set; } public static ConfigEntry<bool> affectGreenItems { get; set; } public static ConfigEntry<bool> affectRedItems { get; set; } public static ConfigEntry<bool> affectYellowItems { get; set; } public static ConfigEntry<bool> affectLunarItems { get; set; } public void Awake() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Expected O, but got Unknown //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Expected O, but got Unknown //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Expected O, but got Unknown //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Expected O, but got Unknown //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: 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_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Expected O, but got Unknown //IL_02f0: Expected O, but got Unknown //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Expected O, but got Unknown //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Expected O, but got Unknown //IL_0335: Expected O, but got Unknown //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Expected O, but got Unknown //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Expected O, but got Unknown //IL_037a: Expected O, but got Unknown //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Expected O, but got Unknown //IL_0385: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_0365: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Expected O, but got Unknown //IL_03bf: Expected O, but got Unknown //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Expected O, but got Unknown //IL_03ca: Unknown result type (might be due to invalid IL or missing references) //IL_03cf: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: Unknown result type (might be due to invalid IL or missing references) //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Expected O, but got Unknown //IL_0404: Expected O, but got Unknown //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Expected O, but got Unknown //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_0414: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Expected O, but got Unknown //IL_0449: Expected O, but got Unknown //IL_0444: Unknown result type (might be due to invalid IL or missing references) //IL_044e: Expected O, but got Unknown //IL_0454: Unknown result type (might be due to invalid IL or missing references) //IL_0459: Unknown result type (might be due to invalid IL or missing references) //IL_0464: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_047b: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Unknown result type (might be due to invalid IL or missing references) //IL_0434: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Expected O, but got Unknown //IL_04b0: Expected O, but got Unknown //IL_04ab: Unknown result type (might be due to invalid IL or missing references) //IL_04b5: Expected O, but got Unknown //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_04f5: Expected O, but got Unknown //IL_049b: Unknown result type (might be due to invalid IL or missing references) //IL_04a0: Unknown result type (might be due to invalid IL or missing references) //IL_04a6: Expected O, but got Unknown logger = ((BaseUnityPlugin)this).Logger; enableMod = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enable Mod", true, (ConfigDescription)null); minQuantity = ((BaseUnityPlugin)this).Config.Bind<float>("Quantity", "Min", 1f, new ConfigDescription("", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1000f), Array.Empty<object>())); maxQuantity = ((BaseUnityPlugin)this).Config.Bind<float>("Quantity", "Max", 50f, new ConfigDescription("", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1000f), Array.Empty<object>())); speedItemCap = ((BaseUnityPlugin)this).Config.Bind<float>("Items", "Speed Item Cap", 10f, new ConfigDescription("", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 1000f), Array.Empty<object>())); affectWhiteItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "White", true, (ConfigDescription)null); affectGreenItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Green", true, (ConfigDescription)null); affectRedItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Red", true, (ConfigDescription)null); affectYellowItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Boss", true, (ConfigDescription)null); affectLunarItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Lunar", false, (ConfigDescription)null); if (minQuantity.Value < 1f) { minQuantity.Value = 1f; } if (maxQuantity.Value > 1000f) { maxQuantity.Value = 1000f; } if (minQuantity.Value > maxQuantity.Value) { minQuantity.Value = maxQuantity.Value; } Sprite val = LoadIcon(); if ((Object)(object)val != (Object)null) { ModSettingsManager.SetModIcon(val); } ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableMod, new CheckBoxConfig { description = "Toggle On/Off" })); ConfigEntry<float> obj = minQuantity; SliderConfig val2 = new SliderConfig { min = 1f, max = 1000f, FormatString = "{0:0}", description = "Min Quantity to recieve" }; object obj2 = <>c.<>9__41_0; if (obj2 == null) { IsDisabledDelegate val3 = () => !enableMod.Value; <>c.<>9__41_0 = val3; obj2 = (object)val3; } ((BaseOptionConfig)val2).checkIfDisabled = (IsDisabledDelegate)obj2; ModSettingsManager.AddOption((BaseOption)new SliderOption(obj, val2)); ConfigEntry<float> obj3 = maxQuantity; SliderConfig val4 = new SliderConfig { min = 1f, max = 1000f, FormatString = "{0:0}", description = "Max Quantity to recieve" }; object obj4 = <>c.<>9__41_1; if (obj4 == null) { IsDisabledDelegate val5 = () => !enableMod.Value; <>c.<>9__41_1 = val5; obj4 = (object)val5; } ((BaseOptionConfig)val4).checkIfDisabled = (IsDisabledDelegate)obj4; ModSettingsManager.AddOption((BaseOption)new SliderOption(obj3, val4)); ConfigEntry<bool> obj5 = affectWhiteItems; CheckBoxConfig val6 = new CheckBoxConfig { description = "Enable/Disable Randomness for White Items" }; object obj6 = <>c.<>9__41_2; if (obj6 == null) { IsDisabledDelegate val7 = () => !enableMod.Value; <>c.<>9__41_2 = val7; obj6 = (object)val7; } ((BaseOptionConfig)val6).checkIfDisabled = (IsDisabledDelegate)obj6; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj5, val6)); ConfigEntry<bool> obj7 = affectGreenItems; CheckBoxConfig val8 = new CheckBoxConfig { description = "Enable/Disable Randomness for Green Items" }; object obj8 = <>c.<>9__41_3; if (obj8 == null) { IsDisabledDelegate val9 = () => !enableMod.Value; <>c.<>9__41_3 = val9; obj8 = (object)val9; } ((BaseOptionConfig)val8).checkIfDisabled = (IsDisabledDelegate)obj8; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj7, val8)); ConfigEntry<bool> obj9 = affectRedItems; CheckBoxConfig val10 = new CheckBoxConfig { description = "Enable/Disable Randomness for Red Items" }; object obj10 = <>c.<>9__41_4; if (obj10 == null) { IsDisabledDelegate val11 = () => !enableMod.Value; <>c.<>9__41_4 = val11; obj10 = (object)val11; } ((BaseOptionConfig)val10).checkIfDisabled = (IsDisabledDelegate)obj10; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj9, val10)); ConfigEntry<bool> obj11 = affectYellowItems; CheckBoxConfig val12 = new CheckBoxConfig { description = "Enable/Disable Randomness for Yellow Items" }; object obj12 = <>c.<>9__41_5; if (obj12 == null) { IsDisabledDelegate val13 = () => !enableMod.Value; <>c.<>9__41_5 = val13; obj12 = (object)val13; } ((BaseOptionConfig)val12).checkIfDisabled = (IsDisabledDelegate)obj12; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj11, val12)); ConfigEntry<bool> obj13 = affectLunarItems; CheckBoxConfig val14 = new CheckBoxConfig { description = "Enable/Disable Randomness for Lunar Items" }; object obj14 = <>c.<>9__41_6; if (obj14 == null) { IsDisabledDelegate val15 = () => !enableMod.Value; <>c.<>9__41_6 = val15; obj14 = (object)val15; } ((BaseOptionConfig)val14).checkIfDisabled = (IsDisabledDelegate)obj14; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(obj13, val14)); ConfigEntry<float> obj15 = speedItemCap; SliderConfig val16 = new SliderConfig { min = 1f, max = 1000f, FormatString = "{0:0}", description = "Modify amount of speed items (dlc items don't work like Mocha or Hunter's Harpoon)" }; object obj16 = <>c.<>9__41_7; if (obj16 == null) { IsDisabledDelegate val17 = () => !enableMod.Value; <>c.<>9__41_7 = val17; obj16 = (object)val17; } ((BaseOptionConfig)val16).checkIfDisabled = (IsDisabledDelegate)obj16; ModSettingsManager.AddOption((BaseOption)new SliderOption(obj15, val16)); minQuantity.SettingChanged += OnQuantityChanged; maxQuantity.SettingChanged += OnQuantityChanged; Inventory.GiveItem_ItemIndex_int += new hook_GiveItem_ItemIndex_int(Inventory_GiveItem_ItemIndex_int); } private void OnQuantityChanged(object sender, EventArgs e) { if (minQuantity.Value > maxQuantity.Value) { if (sender == minQuantity) { maxQuantity.Value = minQuantity.Value; } else { minQuantity.Value = maxQuantity.Value; } } } private Sprite LoadIcon() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_0088: 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) try { string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "icon.png"); if (!File.Exists(path)) { return null; } byte[] array = File.ReadAllBytes(path); Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false); if (ImageConversion.LoadImage(val, array)) { ((Texture)val).filterMode = (FilterMode)0; ((Texture)val).wrapMode = (TextureWrapMode)1; ((Texture)val).anisoLevel = 0; val.Apply(); return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f), 100f); } } catch { } return null; } private bool IsSpeedItem(ItemIndex itemIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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_0046: Unknown result type (might be due to invalid IL or missing references) if (itemIndex == Items.Hoof.itemIndex) { return true; } if (itemIndex == Items.SprintBonus.itemIndex) { return true; } if (itemIndex == Items.JumpBoost.itemIndex) { return true; } if (itemIndex == Items.SprintOutOfCombat.itemIndex) { return true; } return false; } private bool ShouldAffectItem(ItemTier tier) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected I4, but got Unknown return (int)tier switch { 0 => affectWhiteItems.Value, 1 => affectGreenItems.Value, 2 => affectRedItems.Value, 4 => affectYellowItems.Value, 3 => affectLunarItems.Value, 6 => affectWhiteItems.Value, 7 => affectGreenItems.Value, 8 => affectRedItems.Value, 9 => affectYellowItems.Value, _ => false, }; } private void Inventory_GiveItem_ItemIndex_int(orig_GiveItem_ItemIndex_int orig, Inventory self, ItemIndex itemIndex, int count) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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: Invalid comparison between Unknown and I4 //IL_00a5: 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) PlayerCharacterMasterController component = ((Component)self).GetComponent<PlayerCharacterMasterController>(); ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); if (enableMod.Value && (Object)(object)component != (Object)null && (Object)(object)itemDef != (Object)null && (int)itemDef.tier != 5 && !itemDef.hidden && ShouldAffectItem(itemDef.tier)) { int minValue = (int)minQuantity.Value; int num = (int)maxQuantity.Value; if (IsSpeedItem(itemIndex)) { num = Math.Min(num, (int)speedItemCap.Value); } int num2 = rng.Next(minValue, num + 1); orig.Invoke(self, itemIndex, num2); } else { orig.Invoke(self, itemIndex, count); } } }