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 PillarsDropItems v1.1.0
PillarsDropItems.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using On.RoR2; using RoR2; using UnityEngine; using UnityEngine.Networking; [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 = "")] [assembly: AssemblyCompany("Pillars")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Pillars")] [assembly: AssemblyTitle("Pillars")] [assembly: AssemblyVersion("1.0.0.0")] namespace BenPillarSpace; [BepInPlugin("com.Ben.PillarsDropItems", "Moon Pillars Drop Items", "1.1.0")] public class PillarsDropItems : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnBatteryCharged <>9__42_0; internal void <MoonPillars>b__42_0(orig_OnBatteryCharged orig, MoonBatteryMissionController self, HoldoutZoneController holdoutZone) { //IL_0017: 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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, holdoutZone); if (!NetworkServer.active) { return; } PickupIndex val = SelectItem(); ItemTier itemTier = PickupCatalog.GetPickupDef(val).itemTier; if (!(val != PickupIndex.none)) { return; } int participatingPlayerCount = Run.instance.participatingPlayerCount; if (participatingPlayerCount == 0 || !Object.op_Implicit((Object)(object)((Component)holdoutZone).transform)) { return; } int num = participatingPlayerCount * RewardMultiplier.Value; float num2 = 360f / (float)num; Vector3 val2 = Quaternion.AngleAxis((float)Random.Range(0, 360), Vector3.up) * (Vector3.up * 40f + Vector3.forward * 5f); Quaternion val3 = Quaternion.AngleAxis(num2, Vector3.up); int num3 = 0; while (num3 < num) { bool flag = true; PickupIndex val4 = PickupIndex.none; if (Run.instance.bossRewardRng.RangeFloat(0f, 100f) < OverrideChance.Value) { val4 = ((!RandomOverride.Value) ? SelectSpecificItem() : SelectItem()); } if (val4 == PickupIndex.none) { flag = false; } PickupDropletController.CreatePickupDroplet(flag ? val4 : val, ((Component)holdoutZone).transform.position + rewardPositionOffset, val2); num3++; val2 = val3 * val2; } } } private static Vector3 rewardPositionOffset = new Vector3(0f, 3f, 0f); public static ConfigEntry<float> WhiteChance { get; set; } public static ConfigEntry<float> GreenChance { get; set; } public static ConfigEntry<float> RedChance { get; set; } public static ConfigEntry<float> BlueChance { get; set; } public static ConfigEntry<float> PearlChance { get; set; } public static ConfigEntry<float> YellowChance { get; set; } public static ConfigEntry<float> OverrideChance { get; set; } public static ConfigEntry<bool> RandomOverride { get; set; } public static ConfigEntry<int> RewardMultiplier { get; set; } public static ConfigEntry<int> SpecificTierOverride { get; set; } public void Awake() { ((BaseUnityPlugin)this).Logger.LogMessage((object)"Execute Order 67"); WhiteChance = ((BaseUnityPlugin)this).Config.Bind<float>("PillarsDropItems", "WhiteChance", 0f, "Relative chance a white item is dropped. Total chance is the sum of all chances i.e. a 50 white chance and having all other chancess (including white) add up to 100, then their is a 50% chance that white is dropped. Total chance does NOT need to add up to 100."); GreenChance = ((BaseUnityPlugin)this).Config.Bind<float>("PillarsDropItems", "GreenChance", 80f, "Relative chance a green item is dropped. "); RedChance = ((BaseUnityPlugin)this).Config.Bind<float>("PillarsDropItems", "RedChance", 0f, "Relative chance a red item is dropped. "); BlueChance = ((BaseUnityPlugin)this).Config.Bind<float>("PillarsDropItems", "BlueChance", 0f, "Relative chance a lunar item is dropped. "); PearlChance = ((BaseUnityPlugin)this).Config.Bind<float>("PillarsDropItems", "PearlChance", 0f, "Relative chance a pearl (regular or irrradiant) item is dropped. "); YellowChance = ((BaseUnityPlugin)this).Config.Bind<float>("PillarsDropItems", "PearlChance", 20f, "Relative chance a boss (non-peral) item is dropped. "); RewardMultiplier = ((BaseUnityPlugin)this).Config.Bind<int>("PillarsDropItems", "RewardMultiplier", 2, "Multiplies Number of Items per player."); OverrideChance = ((BaseUnityPlugin)this).Config.Bind<float>("PillarsDropItems", "OverrideChance", 10f, "Chance for an item to Be rerolled after the above set chance determined. Must be float between 0 and 100."); RandomOverride = ((BaseUnityPlugin)this).Config.Bind<bool>("PillarsDropItems", "randomOveride", false, "Rerolls the overiding item from the same chance as above. This gives you basically the same spread of item rarity but this time they will be different. "); SpecificTierOverride = ((BaseUnityPlugin)this).Config.Bind<int>("PillarsDropItems", "SpecificTierOverride", 3, "Limits the Override to a specifc Tier. RandomOverride takes precedence if true. 1 is white, 2 is green, 3 is red, 4 is blue, 5 is boss/yellow, 6 is pearls. Overwise will not overright if int not one of these."); MoonPillars(); } private void MoonPillars() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__42_0; if (obj == null) { hook_OnBatteryCharged val = delegate(orig_OnBatteryCharged orig, MoonBatteryMissionController self, HoldoutZoneController holdoutZone) { //IL_0017: 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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, holdoutZone); if (NetworkServer.active) { PickupIndex val2 = SelectItem(); ItemTier itemTier = PickupCatalog.GetPickupDef(val2).itemTier; if (val2 != PickupIndex.none) { int participatingPlayerCount = Run.instance.participatingPlayerCount; if (participatingPlayerCount != 0 && Object.op_Implicit((Object)(object)((Component)holdoutZone).transform)) { int num = participatingPlayerCount * RewardMultiplier.Value; float num2 = 360f / (float)num; Vector3 val3 = Quaternion.AngleAxis((float)Random.Range(0, 360), Vector3.up) * (Vector3.up * 40f + Vector3.forward * 5f); Quaternion val4 = Quaternion.AngleAxis(num2, Vector3.up); int num3 = 0; while (num3 < num) { bool flag = true; PickupIndex val5 = PickupIndex.none; if (Run.instance.bossRewardRng.RangeFloat(0f, 100f) < OverrideChance.Value) { val5 = ((!RandomOverride.Value) ? SelectSpecificItem() : SelectItem()); } if (val5 == PickupIndex.none) { flag = false; } PickupDropletController.CreatePickupDroplet(flag ? val5 : val2, ((Component)holdoutZone).transform.position + rewardPositionOffset, val3); num3++; val3 = val4 * val3; } } } } }; <>c.<>9__42_0 = val; obj = (object)val; } MoonBatteryMissionController.OnBatteryCharged += (hook_OnBatteryCharged)obj; } private static PickupIndex SelectItem() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: 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_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0230: 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_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) Xoroshiro128Plus bossRewardRng = Run.instance.bossRewardRng; PickupIndex result = PickupIndex.none; float num = WhiteChance.Value + GreenChance.Value + RedChance.Value + BlueChance.Value + YellowChance.Value + PearlChance.Value; if (bossRewardRng.RangeFloat(0f, num) <= WhiteChance.Value) { List<PickupIndex> availableTier1DropList = Run.instance.availableTier1DropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else { num -= WhiteChance.Value; if (bossRewardRng.RangeFloat(0f, num) <= GreenChance.Value) { List<PickupIndex> availableTier1DropList = Run.instance.availableTier2DropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else { num -= GreenChance.Value; if (bossRewardRng.RangeFloat(0f, num) <= BlueChance.Value) { List<PickupIndex> availableTier1DropList = Run.instance.availableLunarCombinedDropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else { num -= BlueChance.Value; if (bossRewardRng.RangeFloat(0f, num) <= RedChance.Value) { List<PickupIndex> availableTier1DropList = Run.instance.availableTier3DropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else { num -= RedChance.Value; if (bossRewardRng.RangeFloat(0f, num) <= YellowChance.Value) { List<PickupIndex> availableTier1DropList = Run.instance.availableBossDropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else { num -= YellowChance.Value; if (bossRewardRng.RangeFloat(0f, num) <= PearlChance.Value) { result = ((!(Run.instance.bossRewardRng.RangeFloat(0f, 100f) <= 20f)) ? PickupCatalog.FindPickupIndex(Items.Pearl.itemIndex) : PickupCatalog.FindPickupIndex(Items.ShinyPearl.itemIndex)); } } } } } } return result; } private static PickupIndex SelectSpecificItem() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: 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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) Xoroshiro128Plus bossRewardRng = Run.instance.bossRewardRng; PickupIndex result = PickupIndex.none; if (SpecificTierOverride.Value == 1) { List<PickupIndex> availableTier1DropList = Run.instance.availableTier1DropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else if (SpecificTierOverride.Value == 2) { List<PickupIndex> availableTier1DropList = Run.instance.availableTier2DropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else if (SpecificTierOverride.Value == 4) { List<PickupIndex> availableTier1DropList = Run.instance.availableLunarCombinedDropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else if (SpecificTierOverride.Value == 3) { List<PickupIndex> availableTier1DropList = Run.instance.availableTier3DropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else if (SpecificTierOverride.Value == 5) { List<PickupIndex> availableTier1DropList = Run.instance.availableBossDropList; result = bossRewardRng.NextElementUniform<PickupIndex>(availableTier1DropList); } else if (SpecificTierOverride.Value == 6) { result = ((!(Run.instance.bossRewardRng.RangeFloat(0f, 100f) <= 20f)) ? PickupCatalog.FindPickupIndex(Items.Pearl.itemIndex) : PickupCatalog.FindPickupIndex(Items.ShinyPearl.itemIndex)); } return result; } }