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 BetterVoid v1.2.2
BetterVoid.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; 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 BetterVoid.Enemies; using BetterVoid.Interactables; using BetterVoid.Items; using EntityStates; using EntityStates.Barrel; using EntityStates.VoidCamp; using IL.RoR2; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.VoidCamp; using On.RoR2; using On.RoR2.UI; using R2API; using RoR2; using RoR2.CharacterAI; using RoR2.EntityLogic; using RoR2.Items; using RoR2.Projectile; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.UI; [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.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("BetterVoid")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BetterVoid")] [assembly: AssemblyTitle("BetterVoid")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BetterVoid { [BepInPlugin("HIFU.BetterVoid", "BetterVoid", "1.2.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { public const string PluginGUID = "HIFU.BetterVoid"; public const string PluginAuthor = "HIFU"; public const string PluginName = "BetterVoid"; public const string PluginVersion = "1.2.1"; public static ManualLogSource btsLogger; public static BuffDef uselessBuff; public static ConfigEntry<bool> enableCradleChanges { get; set; } public static ConfigEntry<float> cursePercent { get; set; } public static ConfigEntry<bool> destroyVoidCradleAfterTeleporter { get; set; } public static ConfigEntry<bool> destroyVoidPotentialAfterTeleporter { get; set; } public static ConfigEntry<int> choiceCount { get; set; } public static ConfigEntry<bool> alterPotentials { get; set; } public static ConfigEntry<bool> alterVoidSeeds { get; set; } public static ConfigEntry<bool> enableVoidInfestors { get; set; } public static ConfigEntry<int> voidInfestorCount { get; set; } public static ConfigEntry<int> voidSeedLimit { get; set; } public static ConfigEntry<float> voidSeedRadius { get; set; } public static ConfigEntry<bool> rebalanceSingularityBand { get; set; } public static ConfigEntry<bool> pluripotentLarvaDownside { get; set; } public static ConfigEntry<string> blacklistedItems { get; set; } public static ConfigEntry<bool> voidBarnacleTweaks { get; set; } public static ConfigEntry<bool> voidReaverTweaks { get; set; } public static ConfigEntry<bool> voidDevastatorTweaks { get; set; } public void Awake() { btsLogger = ((BaseUnityPlugin)this).Logger; enableCradleChanges = ((BaseUnityPlugin)this).Config.Bind<bool>("Void Cradle", "Enable Changes?", true, ""); cursePercent = ((BaseUnityPlugin)this).Config.Bind<float>("Void Cradle", "Curse Percent", 0.1f, "Decimal."); destroyVoidCradleAfterTeleporter = ((BaseUnityPlugin)this).Config.Bind<bool>("Void Cradle", "Destroy Void Cradles after Teleporter?", true, "This is to prevent cheese"); choiceCount = ((BaseUnityPlugin)this).Config.Bind<int>("Void Cradle", "Corruptible Max Choice Count", 3, ""); enableVoidInfestors = ((BaseUnityPlugin)this).Config.Bind<bool>("Void Cradle", "Enable Void Infestor spawns?", true, ""); voidInfestorCount = ((BaseUnityPlugin)this).Config.Bind<int>("Void Cradle", "Void Infestor Count", 2, ""); alterPotentials = ((BaseUnityPlugin)this).Config.Bind<bool>("Void Potential", "Alter Void Potentials?", true, "This is to make acquiring void reds and void yellows easier, since you need the prerequisite to corrupt from the cradle now"); destroyVoidPotentialAfterTeleporter = ((BaseUnityPlugin)this).Config.Bind<bool>("Void Potential", "Destroy Void Potentials after Teleporter?", true, "This is to prevent Eclipse cheese"); alterVoidSeeds = ((BaseUnityPlugin)this).Config.Bind<bool>("Void Seed", "Alter Void Seeds?", true, "Makes Void Stalks less likely to appear in Void Seeds, and as a result, Void Cradles and Void Potentials are more likely to appear inside them"); voidSeedLimit = ((BaseUnityPlugin)this).Config.Bind<int>("Void Seed", "Void Seed Spawn Limit Per Stage", 1, ""); voidSeedRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Void Seed", "Radius", 70f, "Vanilla is 60"); rebalanceSingularityBand = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Rebalance Singularity Band?", true, "Makes Singularity Band do much more total damage and stack radius instead of damage"); pluripotentLarvaDownside = ((BaseUnityPlugin)this).Config.Bind<bool>("Items", "Add a downside to Pluripotent Larva?", true, "Makes Pluripotent Larva reroll your white and green item stacks on pickup"); blacklistedItems = ((BaseUnityPlugin)this).Config.Bind<string>("Items", "Blacklisted Items", "", "Takes the non-void counterparts of items and makes them uncorruptable, use DebugToolkits list_item command to see internal item names, separate each one with a comma and a space afterwards, e.g. ChainLightning, Missile"); voidBarnacleTweaks = ((BaseUnityPlugin)this).Config.Bind<bool>("Enemies", "Change Void Barnacle Skills, Stats and AI?", true, "Currently removes Void Barnacle regen"); voidReaverTweaks = ((BaseUnityPlugin)this).Config.Bind<bool>("Enemies", "Change Void Reaver Skills, Stats and AI?", true, "Currently makes Void Reavers follow you closely, and explode faster"); voidDevastatorTweaks = ((BaseUnityPlugin)this).Config.Bind<bool>("Enemies", "Change Void Devastator Skills and AI?", true, "Currently makes Void Devastators explode faster"); uselessBuff = ScriptableObject.CreateInstance<BuffDef>(); uselessBuff.isDebuff = false; uselessBuff.isHidden = true; uselessBuff.canStack = false; uselessBuff.isCooldown = false; VoidPotential.Init(); VoidSeed.Init(); SingularityBand.Init(); if (enableCradleChanges.Value) { VoidCradle.Init(); } if (voidBarnacleTweaks.Value) { VoidBarnacle.Init(); } if (voidReaverTweaks.Value) { VoidReaver.Init(); } if (voidDevastatorTweaks.Value) { VoidDevastator.Init(); } } } } namespace BetterVoid.Items { public static class PluripotentLarva { [CompilerGenerated] private static class <>O { public static hook_GiveItem_ItemIndex_int <0>__Inventory_GiveItem_ItemIndex_int; } public static void Init() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown if (Main.pluripotentLarvaDownside.Value) { object obj = <>O.<0>__Inventory_GiveItem_ItemIndex_int; if (obj == null) { hook_GiveItem_ItemIndex_int val = Inventory_GiveItem_ItemIndex_int; <>O.<0>__Inventory_GiveItem_ItemIndex_int = val; obj = (object)val; } Inventory.GiveItem_ItemIndex_int += (hook_GiveItem_ItemIndex_int)obj; LanguageAPI.Add("ITEM_EXTRALIFEVOID_PICKUP", "Shuffle your inventory, and get a <style=cIsVoid>corrupted</style> extra life. Consumed on use. <style=cIsVoid>Corrupts all Dio's Best Friends.</style>."); LanguageAPI.Add("ITEM_EXTRALIFEVOID_DESC", "<style=cIsUtility>Shuffle your inventory</style>. <style=cIsUtility>Upon death</style>, this item will be <style=cIsUtility>consumed</style> and you will <style=cIsHealing>return to life</style> with <style=cIsHealing>3 seconds of invulnerability</style>, and all of your items that can be <style=cIsUtility>corrupted</style> will be. <style=cIsVoid>Corrupts all Dio's Best Friends</style>."); LanguageAPI.Add("PLURI_CORRUPTED", "<style=cWorldEvent>{0} has been... corrupted.</color>"); LanguageAPI.Add("PLURI_CORRUPTED_2P", "<style=cWorldEvent>You have been... corrupted.</color>"); } } public static void Inventory_GiveItem_ItemIndex_int(orig_GiveItem_ItemIndex_int orig, Inventory self, ItemIndex itemIndex, int count) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Invalid comparison between Unknown and I4 //IL_007b: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Invalid comparison between Unknown and I4 //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: 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_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Expected O, but got Unknown orig.Invoke(self, itemIndex, count); if (itemIndex != Items.ExtraLifeVoid.itemIndex) { return; } List<ItemIndex> list = new List<ItemIndex>(); List<int> list2 = new List<int>(); for (int i = 0; i < self.itemAcquisitionOrder.Count; i++) { ItemIndex val = self.itemAcquisitionOrder[i]; ItemDef itemDef = ItemCatalog.GetItemDef(val); if ((int)itemDef.tier == 0 || (int)itemDef.deprecatedTier == 0 || (int)itemDef.tier == 1 || (int)itemDef.deprecatedTier == 1) { list.Add(val); list2.Add(self.GetItemCount(val)); } } int num = list2.Count; while (num > 1) { num--; int index = Random.Range(0, num + 1); int value = list2[index]; list2[index] = list2[num]; list2[num] = value; } for (int j = 0; j < list.Count; j++) { ItemIndex val2 = list[j]; int num2 = list2[j]; self.RemoveItem(val2, self.GetItemCount(val2)); self.GiveItem(val2, num2); } CharacterMaster component = ((Component)self).gameObject.GetComponent<CharacterMaster>(); CharacterBody val3 = ((component != null) ? component.GetBody() : null); if (NetworkServer.active && Object.op_Implicit((Object)(object)val3) && val3.isPlayerControlled) { Chat.SendBroadcastChat((ChatMessageBase)new SubjectFormatChatMessage { subjectAsCharacterBody = val3, baseToken = "PLURI_CORRUPTED" }); } } } public static class SingularityBand { [CompilerGenerated] private static class <>O { public static Action<DamageReport> <0>__GlobalEventManager_onServerDamageDealt; public static Manipulator <1>__GlobalEventManager_OnHitEnemy; } public static void Init() { //IL_0041: 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) //IL_004c: Expected O, but got Unknown if (Main.rebalanceSingularityBand.Value) { GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; object obj = <>O.<1>__GlobalEventManager_OnHitEnemy; if (obj == null) { Manipulator val = GlobalEventManager_OnHitEnemy; <>O.<1>__GlobalEventManager_OnHitEnemy = val; obj = (object)val; } GlobalEventManager.OnHitEnemy += (Manipulator)obj; LanguageAPI.Add("ITEM_ELEMENTALRINGVOID_DESC", "Hits that deal <style=cIsDamage>more than 400% damage</style> also fire a black hole that <style=cIsUtility>draws enemies within 12m <style=cStack>(+6m per stack)</style> into its center</style>. Lasts <style=cIsUtility>5</style> seconds before collapsing, dealing <style=cIsDamage>175%</style> TOTAL damage. Recharges every <style=cIsUtility>15</style> seconds. <style=cIsVoid>Corrupts all Runald's and Kjaro's Bands</style>."); } } public static void GlobalEventManager_OnHitEnemy(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0044: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "ElementalRingVoidReady") })) { val.Remove(); val.Emit<Main>(OpCodes.Ldsfld, "uselessBuff"); } else { Main.btsLogger.LogError((object)"Failed to apply Singularity Band Deletion hook"); } } public static void GlobalEventManager_onServerDamageDealt(DamageReport damageReport) { //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0215: 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_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)damageReport.attacker)) { return; } CharacterBody attackerBody = damageReport.attackerBody; if (!Object.op_Implicit((Object)(object)attackerBody)) { return; } Inventory inventory = attackerBody.inventory; if (Object.op_Implicit((Object)(object)inventory) && damageReport.damageInfo.procCoefficient > 0f && !((ProcChainMask)(ref damageReport.damageInfo.procChainMask)).HasProc((ProcType)12) && damageReport.damageInfo.damage / damageReport.attackerBody.damage >= 4f && attackerBody.HasBuff(Buffs.ElementalRingVoidReady)) { attackerBody.RemoveBuff(Buffs.ElementalRingVoidReady); for (int i = 1; (float)i <= 15f; i++) { attackerBody.AddTimedBuff(Buffs.ElementalRingVoidCooldown, (float)i); } ProcChainMask procChainMask = damageReport.damageInfo.procChainMask; ((ProcChainMask)(ref procChainMask)).AddProc((ProcType)12); int itemCount = inventory.GetItemCount(Items.ElementalRingVoid); if (itemCount > 0) { GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/ElementalRingVoidBlackHole"); RadialForce component = val.GetComponent<RadialForce>(); ProjectileExplosion component2 = val.GetComponent<ProjectileExplosion>(); float num = (12f + 6f * (float)(itemCount - 1)) / 15f; val.transform.localScale = new Vector3(num, num, num); component.radius = 12f + 6f * (float)(itemCount - 1); component2.blastRadius = 12f + 6f * (float)(itemCount - 1); float num2 = 1.75f; float damage = Util.OnHitProcDamage(damageReport.damageInfo.damage, attackerBody.damage, num2); ProjectileManager.instance.FireProjectile(new FireProjectileInfo { damage = damage, crit = damageReport.damageInfo.crit, damageColorIndex = (DamageColorIndex)9, position = damageReport.damageInfo.position, procChainMask = procChainMask, force = 6000f, owner = damageReport.damageInfo.attacker, projectilePrefab = val, rotation = Quaternion.identity, target = null }); } } } } } namespace BetterVoid.Interactables { public static class VoidCradle { [CompilerGenerated] private static class <>O { public static hook_SelectCard <0>__SceneDirector_SelectCard; } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static BuildCostStringDelegate <>9__4_4; public static IsAffordableDelegate <>9__4_5; public static PayCostDelegate <>9__4_6; public static hook_Init <>9__4_0; public static Func<Instruction, bool> <>9__4_7; public static Func<int, int> <>9__4_8; public static Manipulator <>9__4_1; public static hook_OnCreateButton <>9__4_2; public static hook_OnInteractionBegin <>9__4_3; internal void <Init>b__4_4(CostTypeDef def, BuildCostStringContext c) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) c.stringBuilder.Append("<style=cDeath>" + Main.cursePercent.Value * 100f + "% Curse</style>"); } internal bool <Init>b__4_5(CostTypeDef def, IsAffordableContext c) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return HasAtLeastOneItem(((Component)c.activator).GetComponent<CharacterBody>().inventory); } internal void <Init>b__4_6(CostTypeDef def, PayCostContext c) { } internal void <Init>b__4_0(orig_Init orig) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(); CostTypeCatalog.Register(costTypeIndex, def); } internal void <Init>b__4_1(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 15) })) { int index = val.Index; val.Index = index + 1; val.EmitDelegate<Func<int, int>>((Func<int, int>)((int c) => 20)); } else { Main.btsLogger.LogError((object)"Failed to apply CostTypeCatalog IL hook"); } } internal bool <Init>b__4_7(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 15); } internal int <Init>b__4_8(int c) { return 20; } internal void <Init>b__4_2(orig_OnCreateButton orig, PickupPickerPanel self, int i, MPButton button) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, i, button); if (((Object)((Component)self).gameObject).name.Contains("VoidChest")) { TooltipProvider val = ((Component)button).gameObject.AddComponent<TooltipProvider>(); TooltipContent content = default(TooltipContent); ItemDef itemDef = ItemCatalog.GetItemDef(GetCorruption(((PickupIndex)(ref self.pickerController.options[i].pickupIndex)).itemIndex)); if (Object.op_Implicit((Object)(object)itemDef)) { content.bodyColor = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)25)); content.titleColor = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)26)); content.overrideTitleText = "Transmutes into: " + Language.GetString(itemDef.nameToken); content.bodyToken = itemDef.descriptionToken; content.titleToken = "gdfgdfgdfghgh"; val.SetContent(content); } } } internal void <Init>b__4_3(orig_OnInteractionBegin orig, PickupPickerController self, Interactor interactor) { if (!((Object)((Component)self).gameObject).name.Contains("VoidChest")) { orig.Invoke(self, interactor); } } } public static CostTypeIndex costTypeIndex = (CostTypeIndex)19; public static CostTypeDef def; public static GameObject optionPanel; public static InteractableSpawnCard vradle; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_0022: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_026f: 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_029a: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Expected O, but got Unknown //IL_02c0: 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_02b4: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Expected O, but got Unknown //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0229: 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_02eb: Expected O, but got Unknown //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Expected O, but got Unknown //IL_02ff: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_030a: Expected O, but got Unknown //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Expected O, but got Unknown //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_034e: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Expected O, but got Unknown //IL_036a: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Expected O, but got Unknown //IL_038f: Unknown result type (might be due to invalid IL or missing references) //IL_0394: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Expected O, but got Unknown GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidChest/VoidChest.prefab").WaitForCompletion(); PurchaseInteraction component = val.GetComponent<PurchaseInteraction>(); component.costType = costTypeIndex; component.cost = 0; component.contextToken = "WRB_VOIDCHEST_CONTEXT"; Object.Destroy((Object)(object)val.GetComponent<ChestBehavior>()); val.AddComponent<NetworkUIPromptController>(); val.AddComponent<PickupIndexNetworker>(); PickupPickerController val2 = val.AddComponent<PickupPickerController>(); val2.cutoffDistance = 10f; optionPanel = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/OptionPickup/OptionPickerPanel.prefab").WaitForCompletion(), "VoidCradleOptionPicker", false); Transform val3 = optionPanel.transform.Find("MainPanel").Find("Juice").Find("BG, Colored"); Transform val4 = val3.Find("BG, Colored Center"); ((Graphic)((Component)val3).GetComponent<Image>()).color = Color32.op_Implicit(new Color32((byte)237, (byte)127, (byte)205, byte.MaxValue)); ((Graphic)((Component)val4).GetComponent<Image>()).color = Color32.op_Implicit(new Color32((byte)237, (byte)127, (byte)205, byte.MaxValue)); Transform val5 = optionPanel.transform.Find("MainPanel").Find("Juice").Find("Label"); ((TMP_Text)((Component)val5).GetComponent<HGTextMeshProUGUI>()).text = "Awaiting Transmutation..."; val2.panelPrefab = optionPanel; LanguageAPI.Add("WRB_VOIDCHEST_CONTEXT", "Open?"); val.AddComponent<CradleManager>(); Transform child = val.transform.GetChild(3); CharacterSpawnCard spawnCard = Addressables.LoadAssetAsync<CharacterSpawnCard>((object)"RoR2/DLC1/EliteVoid/cscVoidInfestor.asset").WaitForCompletion(); if (Main.destroyVoidCradleAfterTeleporter.Value) { val.AddComponent<FuckMinMaxers>(); } if (!Main.enableVoidInfestors.Value) { Object.Destroy((Object)(object)val.GetComponent<ScriptedCombatEncounter>()); } if (Main.enableVoidInfestors.Value) { ScriptedCombatEncounter component2 = val.GetComponent<ScriptedCombatEncounter>(); Array.Resize(ref component2.spawns, Main.voidInfestorCount.Value); for (int j = 0; j < component2.spawns.Length; j++) { component2.spawns[j] = new SpawnInfo { cullChance = 0f, explicitSpawnPosition = child, spawnCard = (SpawnCard)(object)spawnCard }; } } Object.Destroy((Object)(object)val.GetComponent<DelayedEvent>()); vradle = Addressables.LoadAssetAsync<InteractableSpawnCard>((object)"RoR2/DLC1/VoidChest/iscVoidChest.asset").WaitForCompletion(); CostTypeDef val6 = new CostTypeDef(); object obj = <>c.<>9__4_4; if (obj == null) { BuildCostStringDelegate val7 = delegate(CostTypeDef def, BuildCostStringContext c) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) c.stringBuilder.Append("<style=cDeath>" + Main.cursePercent.Value * 100f + "% Curse</style>"); }; <>c.<>9__4_4 = val7; obj = (object)val7; } val6.buildCostString = (BuildCostStringDelegate)obj; object obj2 = <>c.<>9__4_5; if (obj2 == null) { IsAffordableDelegate val8 = (CostTypeDef def, IsAffordableContext c) => HasAtLeastOneItem(((Component)c.activator).GetComponent<CharacterBody>().inventory); <>c.<>9__4_5 = val8; obj2 = (object)val8; } val6.isAffordable = (IsAffordableDelegate)obj2; object obj3 = <>c.<>9__4_6; if (obj3 == null) { PayCostDelegate val9 = delegate { }; <>c.<>9__4_6 = val9; obj3 = (object)val9; } val6.payCost = (PayCostDelegate)obj3; def = val6; object obj4 = <>c.<>9__4_0; if (obj4 == null) { hook_Init val10 = delegate(orig_Init orig) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(); CostTypeCatalog.Register(costTypeIndex, def); }; <>c.<>9__4_0 = val10; obj4 = (object)val10; } CostTypeCatalog.Init += (hook_Init)obj4; object obj5 = <>c.<>9__4_1; if (obj5 == null) { Manipulator val11 = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val16 = new ILCursor(il); if (val16.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 15) })) { int index = val16.Index; val16.Index = index + 1; val16.EmitDelegate<Func<int, int>>((Func<int, int>)((int c) => 20)); } else { Main.btsLogger.LogError((object)"Failed to apply CostTypeCatalog IL hook"); } }; <>c.<>9__4_1 = val11; obj5 = (object)val11; } CostTypeCatalog.Init += (Manipulator)obj5; object obj6 = <>c.<>9__4_2; if (obj6 == null) { hook_OnCreateButton val12 = delegate(orig_OnCreateButton orig, PickupPickerPanel self, int i, MPButton button) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, i, button); if (((Object)((Component)self).gameObject).name.Contains("VoidChest")) { TooltipProvider val15 = ((Component)button).gameObject.AddComponent<TooltipProvider>(); TooltipContent content = default(TooltipContent); ItemDef itemDef = ItemCatalog.GetItemDef(GetCorruption(((PickupIndex)(ref self.pickerController.options[i].pickupIndex)).itemIndex)); if (Object.op_Implicit((Object)(object)itemDef)) { content.bodyColor = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)25)); content.titleColor = Color32.op_Implicit(ColorCatalog.GetColor((ColorIndex)26)); content.overrideTitleText = "Transmutes into: " + Language.GetString(itemDef.nameToken); content.bodyToken = itemDef.descriptionToken; content.titleToken = "gdfgdfgdfghgh"; val15.SetContent(content); } } }; <>c.<>9__4_2 = val12; obj6 = (object)val12; } PickupPickerPanel.OnCreateButton += (hook_OnCreateButton)obj6; object obj7 = <>O.<0>__SceneDirector_SelectCard; if (obj7 == null) { hook_SelectCard val13 = SceneDirector_SelectCard; <>O.<0>__SceneDirector_SelectCard = val13; obj7 = (object)val13; } SceneDirector.SelectCard += (hook_SelectCard)obj7; object obj8 = <>c.<>9__4_3; if (obj8 == null) { hook_OnInteractionBegin val14 = delegate(orig_OnInteractionBegin orig, PickupPickerController self, Interactor interactor) { if (!((Object)((Component)self).gameObject).name.Contains("VoidChest")) { orig.Invoke(self, interactor); } }; <>c.<>9__4_3 = val14; obj8 = (object)val14; } PickupPickerController.OnInteractionBegin += (hook_OnInteractionBegin)obj8; } public static DirectorCard SceneDirector_SelectCard(orig_SelectCard orig, SceneDirector self, WeightedSelection<DirectorCard> deck, int max) { DirectorCard val = null; for (int i = 0; i < 10; i++) { DirectorCard val2 = orig.Invoke(self, deck, max); if (val2 == null || !Object.op_Implicit((Object)(object)val2.spawnCard) || !((Object)(object)val2.spawnCard == (Object)(object)vradle) || !ShouldBlockCradles()) { val = val2; } } return (val == null) ? orig.Invoke(self, deck, max) : val; } public static bool ShouldBlockCradles() { foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if (Object.op_Implicit((Object)(object)instance.master) && HasAtLeastOneItem(instance.master.inventory)) { return false; } } return true; } public static bool HasAtLeastOneItem(Inventory inventory) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) foreach (ItemIndex item in inventory.itemAcquisitionOrder) { if (IsCorruptible(item)) { return true; } } return false; } public static bool IsCorruptible(ItemIndex index) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Invalid comparison between Unknown and I4 //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Invalid comparison between Unknown and I4 ItemDef itemDef = ItemCatalog.GetItemDef(index); if ((int)itemDef.tier == 4) { return false; } if (Main.blacklistedItems.Value.Contains(((Object)itemDef).name)) { return false; } ItemIndex transformedItemIndex = ContagiousItemManager.GetTransformedItemIndex(index); return (int)transformedItemIndex != -1; } public static ItemIndex GetCorruption(ItemIndex index) { //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_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) return ContagiousItemManager.GetTransformedItemIndex(index); } } public class FuckMinMaxers : MonoBehaviour { public float timer; public float interval = 1f; public bool wasDisabled = false; public void FixedUpdate() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Invalid comparison between Unknown and I4 //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown timer += Time.fixedDeltaTime; if (timer >= interval) { TeleporterInteraction instance = TeleporterInteraction.instance; if (Object.op_Implicit((Object)(object)instance) && (int)instance.activationState == 3 && !wasDisabled) { EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/ExplodeOnDeathVoid/ExplodeOnDeathVoidExplosionEffect.prefab").WaitForCompletion(), new EffectData { origin = ((Component)this).transform.position, scale = 3f }, true); ((Component)this).gameObject.SetActive(false); wasDisabled = true; } } } } public class CradleManager : MonoBehaviour { public List<Option> options = new List<Option>(); public bool hasSet = false; public ScriptedCombatEncounter scriptedCombatEncounter; public PurchaseInteraction interaction => ((Component)this).GetComponent<PurchaseInteraction>(); public PickupPickerController controller => ((Component)this).GetComponent<PickupPickerController>(); private void Start() { scriptedCombatEncounter = ((Component)this).GetComponent<ScriptedCombatEncounter>(); ((UnityEvent<Interactor>)(object)interaction.onPurchase).AddListener((UnityAction<Interactor>)OnPurchase); ((UnityEvent<int>)(object)controller.onPickupSelected).AddListener((UnityAction<int>)Corrupt); } public void Corrupt(int i) { //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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Expected O, but got Unknown scriptedCombatEncounter.BeginEncounter(); PickupIndex val = default(PickupIndex); ((PickupIndex)(ref val))..ctor(i); ItemIndex itemIndex = ((PickupIndex)(ref val)).itemIndex; Interactor lastActivator = interaction.lastActivator; CharacterBody component = ((Component)lastActivator).GetComponent<CharacterBody>(); int itemCount = component.inventory.GetItemCount(itemIndex); component.inventory.RemoveItem(itemIndex, itemCount); component.inventory.GiveItem(VoidCradle.GetCorruption(itemIndex), itemCount); CharacterMasterNotificationQueue.PushItemTransformNotification(component.master, itemIndex, VoidCradle.GetCorruption(itemIndex), (TransformationType)1); interaction.SetAvailable(false); float num = component.healthComponent.fullCombinedHealth * Main.cursePercent.Value; float num2 = Mathf.RoundToInt(num / component.healthComponent.fullCombinedHealth * 100f); controller.networkUIPromptController.SetParticipantMaster((CharacterMaster)null); for (int j = 0; (float)j < num2; j++) { component.AddBuff(Buffs.PermanentCurse); } EntityStateMachine component2 = ((Component)this).GetComponent<EntityStateMachine>(); if (Object.op_Implicit((Object)(object)component2)) { component2.SetNextState((EntityState)new Opening()); } } public void OnPurchase(Interactor interactor) { //IL_0029: 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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Invalid comparison between Unknown and I4 //IL_0133: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: 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) if (!Object.op_Implicit((Object)(object)((Component)interactor).GetComponent<CharacterBody>())) { return; } CharacterBody component = ((Component)interactor).GetComponent<CharacterBody>(); int num = 0; for (int i = 0; i < options.Count; i++) { Option item = options[i]; if (component.inventory.GetItemCount(((PickupIndex)(ref item.pickupIndex)).itemIndex) <= 0) { options.Remove(item); } } if (options.Count == 0) { hasSet = false; } foreach (ItemIndex item2 in component.inventory.itemAcquisitionOrder.OrderBy((ItemIndex x) => Random.value)) { if (!hasSet && VoidCradle.IsCorruptible(item2)) { ItemDef itemDef = ItemCatalog.GetItemDef(item2); if ((int)itemDef.tier != 4 && num < Main.choiceCount.Value) { options.Add(new Option { pickupIndex = PickupCatalog.FindPickupIndex(item2), available = true }); num++; } } } if (options.Count >= 1) { hasSet = true; controller.SetOptionsInternal(options.ToArray()); controller.SetOptionsServer(options.ToArray()); ((UnityEvent<Interactor>)(object)controller.onServerInteractionBegin).Invoke(interactor); controller.networkUIPromptController.SetParticipantMasterFromInteractor(interactor); } interaction.SetAvailableTrue(); } } public static class VoidPotential { public static void Init() { //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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) if (Main.alterPotentials.Value) { BasicPickupDropTable val = Addressables.LoadAssetAsync<BasicPickupDropTable>((object)"RoR2/DLC1/VoidTriple/dtVoidTriple.asset").WaitForCompletion(); val.tier1Weight = 0.14f; val.tier2Weight = 0.35f; val.tier3Weight = 0.01f; val.voidTier3Weight = 0.25f; val.voidBossWeight = 0.25f; } if (Main.destroyVoidPotentialAfterTeleporter.Value) { GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidTriple/VoidTriple.prefab").WaitForCompletion(); val2.AddComponent<FuckMinMaxers>(); } } } public static class VoidSeed { [CompilerGenerated] private static class <>O { public static hook_OnEnter <0>__Idle_OnEnter; } public static GameObject positionIndicatorPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidCamp/VoidCampPositionIndicator.prefab").WaitForCompletion(); public static void Init() { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: 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_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //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_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Expected O, but got Unknown if (Main.alterVoidSeeds.Value) { DirectorCardCategorySelection val = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/DLC1/VoidCamp/dccsVoidCampInteractables.asset").WaitForCompletion(); DirectorCard val2 = val.categories[0].cards[1]; val2.selectionWeight = 2; } InteractableSpawnCard val3 = Addressables.LoadAssetAsync<InteractableSpawnCard>((object)"RoR2/DLC1/VoidCamp/iscVoidCamp.asset").WaitForCompletion(); val3.maxSpawnsPerStage = Main.voidSeedLimit.Value; GameObject val4 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidCamp/VoidCamp.prefab").WaitForCompletion(); Transform transform = val4.transform; OutsideInteractableLocker component = val4.GetComponent<OutsideInteractableLocker>(); component.radius = Main.voidSeedRadius.Value; PlayerSpawnInhibitor component2 = val4.GetComponent<PlayerSpawnInhibitor>(); component2.radius = Main.voidSeedRadius.Value; Light component3 = ((Component)transform.GetChild(3)).GetComponent<Light>(); component3.color = Color32.op_Implicit(new Color32((byte)119, (byte)58, (byte)150, byte.MaxValue)); component3.intensity = 20f; component3.range = Main.voidSeedRadius.Value; ((Component)component3).gameObject.SetActive(true); Transform child = transform.GetChild(4); child.localScale = Vector3.one * 2.08f * Main.voidSeedRadius.Value; Transform child2 = transform.GetChild(0); CampDirector component4 = ((Component)child2).GetComponent<CampDirector>(); component4.campMaximumRadius = Main.voidSeedRadius.Value; SphereZone component5 = ((Component)child2).GetComponent<SphereZone>(); component5.radius = Main.voidSeedRadius.Value; CombatDirector component6 = ((Component)child2).GetComponent<CombatDirector>(); component6.maximumNumberToSpawnBeforeSkipping = 3; component6.creditMultiplier = 2.2f; Transform child3 = transform.GetChild(1); CampDirector component7 = ((Component)child3).GetComponent<CampDirector>(); component7.campMaximumRadius = Main.voidSeedRadius.Value; component7.baseInteractableCredit = Convert.ToInt32(Main.voidSeedRadius.Value / 4f); Object.Destroy((Object)(object)val4.GetComponent<DelayedEvent>()); object obj = <>O.<0>__Idle_OnEnter; if (obj == null) { hook_OnEnter val5 = Idle_OnEnter; <>O.<0>__Idle_OnEnter = val5; obj = (object)val5; } Idle.OnEnter += (hook_OnEnter)obj; } public static void Idle_OnEnter(orig_OnEnter orig, Idle self) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); PositionIndicator component = Object.Instantiate<GameObject>(positionIndicatorPrefab, ((EntityState)self).transform.position, Quaternion.identity).GetComponent<PositionIndicator>(); component.targetTransform = ((EntityState)self).transform; } } } namespace BetterVoid.Enemies { public static class VoidBarnacle { public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidBarnacle/VoidBarnacleBody.prefab").WaitForCompletion(); CharacterBody component = val.GetComponent<CharacterBody>(); component.baseRegen = 0f; component.levelRegen = 0f; } } public static class VoidDevastator { public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidMegaCrab/VoidMegaCrabDeathBombProjectile.prefab").WaitForCompletion(); ProjectileImpactExplosion component = val.GetComponent<ProjectileImpactExplosion>(); component.lifetime = 3.5f; } } public static class VoidReaver { public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_001f: 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_003b: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) GameObject master = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Nullifier/NullifierMaster.prefab").WaitForCompletion(); GameObject body = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Nullifier/NullifierBody.prefab").WaitForCompletion(); Tweak(master, body); GameObject master2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Nullifier/NullifierAllyMaster.prefab").WaitForCompletion(); GameObject body2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Nullifier/NullifierAllyBody.prefab").WaitForCompletion(); Tweak(master2, body2); GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Nullifier/NullifierDeathBombProjectile.prefab").WaitForCompletion(); ProjectileImpactExplosion component = val.GetComponent<ProjectileImpactExplosion>(); component.lifetime = 2.4f; } public static void Tweak(GameObject master, GameObject body) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) AISkillDriver val = (from x in master.GetComponents<AISkillDriver>() where x.customName == "PanicFireWhenClose" select x).First(); val.movementType = (MovementType)1; AISkillDriver val2 = (from x in master.GetComponents<AISkillDriver>() where x.customName == "FireAndStrafe" select x).First(); val2.movementType = (MovementType)1; AISkillDriver val3 = (from x in master.GetComponents<AISkillDriver>() where x.customName == "FireAndChase" select x).First(); val3.movementType = (MovementType)1; CharacterBody component = body.GetComponent<CharacterBody>(); component.baseMoveSpeed = 17f; } } }