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 FruityCradles v1.0.9
FruityCradles.dll
Decompiled 4 months agousing 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 On.RoR2; using RoR2; using RoR2.Items; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; 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("FruityCradles")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("FruityCradles")] [assembly: AssemblyTitle("FruityCradles")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace FruityCradles; internal class FruityCradleBehavior : OptionChestBehavior { internal PurchaseInteraction purchaseInteraction; public GameObject voidExecuteEffect => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/CritGlassesVoid/CritGlassesVoidExecuteEffect.prefab").WaitForCompletion(); private void Start() { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Expected O, but got Unknown if (NetworkServer.active) { if ((Object)(object)purchaseInteraction == (Object)null) { purchaseInteraction = ((Component)this).GetComponent<PurchaseInteraction>(); } if ((Object)(object)purchaseInteraction != (Object)null) { ((UnityEvent<Interactor>)(object)purchaseInteraction.onPurchase).AddListener((UnityAction<Interactor>)SoTrue); } base.rng = new Xoroshiro128Plus(Run.instance.treasureRng.nextUlong); ((OptionChestBehavior)this).Roll(); } } private void VoidCancel(TeleporterInteraction obj) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown TeleporterInteraction.onTeleporterBeginChargingGlobal -= VoidCancel; if (Object.op_Implicit((Object)(object)((Component)this).gameObject)) { if ((Object)(object)voidExecuteEffect != (Object)null) { EffectManager.SpawnEffect(voidExecuteEffect, new EffectData { origin = ((Component)this).transform.position, scale = 3f }, true); } Object.Destroy((Object)(object)((Component)this).gameObject); } } public void SoTrue(Interactor interactor) { ((OptionChestBehavior)this).Open(); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.RiskOfBrainrot.FruityCradles", "FruityCradles", "1.0.7")] public class FruityCradlesPlugin : BaseUnityPlugin { public const string guid = "com.RiskOfBrainrot.FruityCradles"; public const string teamName = "RiskOfBrainrot"; public const string modName = "FruityCradles"; public const string version = "1.0.7"; private GameObject voidPotentialPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/OptionPickup/OptionPickup.prefab").WaitForCompletion(); private GameObject voidCradlePrefab; public static float cradleHealthCost = 0.2f; public static PluginInfo PInfo { get; private set; } internal static ConfigFile CustomConfigFile { get; set; } public static ConfigEntry<bool> DoCradleSoulCost { get; set; } public static ConfigEntry<float> CradleSoulPayCost { get; set; } public static ConfigEntry<bool> DoCradlePotential { get; set; } private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown CustomConfigFile = new ConfigFile(Paths.ConfigPath + "\\FruityCradles.cfg", true); DoCradleSoulCost = CustomConfigFile.Bind<bool>("FruityCradles: Reworks", "Change Cradle To Soul Cost", true, ""); DoCradlePotential = CustomConfigFile.Bind<bool>("FruityCradles: Reworks", "Change Cradle To Drop Potentials", true, ""); CradleSoulPayCost = CustomConfigFile.Bind<float>("FruityCradles: Reworks", "Cradle Pay Cost", cradleHealthCost, "Expressed as a decimal, i.e 0.2 is 20%. Rounded to the nearest 10%"); VoidCradleRework(); } private void VoidCradleRework() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) voidCradlePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidChest/VoidChest.prefab").WaitForCompletion(); if (!Object.op_Implicit((Object)(object)voidCradlePrefab)) { return; } PurchaseInteraction component = voidCradlePrefab.GetComponent<PurchaseInteraction>(); if (Object.op_Implicit((Object)(object)component)) { component.cost = Mathf.RoundToInt(CradleSoulPayCost.Value * 10f) * 10; if (DoCradleSoulCost.Value) { component.costType = (CostTypeIndex)15; component.setUnavailableOnTeleporterActivated = true; component.saleStarCompatible = false; } } if (DoCradlePotential.Value) { ChestBehavior component2 = voidCradlePrefab.GetComponent<ChestBehavior>(); FruityCradleBehavior fruityCradleBehavior = voidCradlePrefab.AddComponent<FruityCradleBehavior>(); OptionChestBehavior.Roll += new hook_Roll(DoOptionCradleBehavior); if (Object.op_Implicit((Object)(object)component2)) { fruityCradleBehavior.purchaseInteraction = component; ((OptionChestBehavior)fruityCradleBehavior).dropTable = component2.dropTable; ((OptionChestBehavior)fruityCradleBehavior).displayTier = (ItemTier)6; ((OptionChestBehavior)fruityCradleBehavior).dropUpVelocityStrength = 20f; ((OptionChestBehavior)fruityCradleBehavior).dropForwardVelocityStrength = 0f; ((OptionChestBehavior)fruityCradleBehavior).openState = component2.openState; ((OptionChestBehavior)fruityCradleBehavior).pickupPrefab = voidPotentialPrefab; ((OptionChestBehavior)fruityCradleBehavior).numOptions = 1; Object.Destroy((Object)(object)component2); } } } private void DoOptionCradleBehavior(orig_Roll orig, OptionChestBehavior self) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Invalid comparison between Unknown and I4 //IL_009c: 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_00a8: 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_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Invalid comparison between Unknown and I4 //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) if (self is FruityCradleBehavior) { if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void RoR2.OptionChestBehavior::Roll()' called on client"); return; } List<UniquePickup> list = new List<UniquePickup>(); self.dropTable.canDropBeReplaced = false; UniquePickup val = self.dropTable.GeneratePickup(self.rng); list.Add(val); Pair[] array = ItemCatalog.itemRelationships[ItemRelationshipTypes.ContagiousItem]; Pair[] array2 = array; foreach (Pair val2 in array2) { if ((int)val2.itemDef1.tier == 5) { continue; } PickupIndex val3 = PickupCatalog.FindPickupIndex(val2.itemDef2.itemIndex); if (!(val3 != val.pickupIndex)) { if ((int)val2.itemDef2.tier == 8) { break; } PickupIndex val4 = PickupCatalog.FindPickupIndex(val2.itemDef1.itemIndex); list.Add(new UniquePickup(val4)); } } self.generatedPickups = list; RandomlyLunarUtils.CheckForLunarReplacementUniqueArray<List<UniquePickup>>(self.generatedPickups, self.rng); self.dropTable.canDropBeReplaced = true; } else { orig.Invoke(self); } } }