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 WolfoItemBuffs v1.2.1
WolfoItemBuffs.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EntityStates; using EntityStates.Duplicator; using EntityStates.LaserTurbine; using EntityStates.Missions.LunarScavengerEncounter; using EntityStates.ScavMonster; using IL.RoR2; using IL.RoR2.Items; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates; using On.EntityStates.Duplicator; using On.EntityStates.LaserTurbine; using On.EntityStates.Missions.LunarScavengerEncounter; using On.EntityStates.ScavMonster; using On.RoR2; using On.RoR2.Artifacts; using On.RoR2.Projectile; using R2API; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.Audio; using RoR2.Items; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using WolfoItemBuffs.Properties; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("WolfoItemBuffs")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+a19637e166769b2344382d3d32ae06bd1dc4c174")] [assembly: AssemblyProduct("WolfoItemBuffs")] [assembly: AssemblyTitle("WolfoItemBuffs")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: UnverifiableCode] 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 WolfoItemBuffs { public class WConfig { public enum ConfigChoice { Off, Buff, Rework } public enum ICBM { Off, AllExplosives } public enum Harpoon { Off, ReturnsTweaked, ReturnsExact } public static ConfigFile ConfigFileUNSORTED = new ConfigFile(Paths.ConfigPath + "\\Wolfo.Wolfo_Item_Buffs.cfg", true); public static ConfigEntry<bool> cfg_White_Warbanner; public static ConfigEntry<bool> cfg_Green_LeechSeed; public static ConfigEntry<bool> cfg_Green_Harpoon; public static ConfigEntry<float> cfg_Green_Harpoon_VAL; public static ConfigEntry<bool> cfg_Green_Squid; public static ConfigEntry<bool> cfg_Green_Stealthkit; public static ConfigEntry<bool> cfg_Green_WarCry; public static ConfigEntry<bool> cfg_Green_RegenScrap; public static ConfigEntry<bool> cfg_Green_IgnitionTank; public static ConfigEntry<bool> cfg_Red_Aegis; public static ConfigEntry<float> cfg_Red_Aegis_VAL; public static ConfigEntry<ConfigChoice> cfg_Red_LaserScope; public static ConfigEntry<bool> cfg_Red_ICBM; public static ConfigEntry<bool> cfg_Red_Nkuhana; public static ConfigEntry<bool> cfg_Yellow_Knurl; public static ConfigEntry<bool> cfg_Yellow_DefenseNuc; public static ConfigEntry<bool> cfg_Pink_Ring; public static ConfigEntry<bool> cfg_Blue_Eulogy; public static ConfigEntry<bool> cfg_Blue_Focus; public static ConfigEntry<bool> cfg_Orange_EliteInherit; public static ConfigEntry<bool> cfg_Orange_OcularHud; public static ConfigEntry<bool> cfg_Orange_Molotov; public static void InitConfig() { cfg_White_Warbanner = ConfigFileUNSORTED.Bind<bool>("White", "Warbanner", true, "Spawns on stage start and special boss fights like Mithrix. Stacks more Radius. Special Boss automatically disabled with RiskyMod as it does the same thing."); cfg_Green_RegenScrap = ConfigFileUNSORTED.Bind<bool>("Green", "Regenerating Scrap Rework Off", false, "Works on any printer. Consumed all at once for chance of multiple items. Basically Sale Star for printers with different stacking."); cfg_Green_Harpoon = ConfigFileUNSORTED.Bind<bool>("Green", "Hunters Harpoon", true, "Hunters Harpoon works like in Returns."); cfg_Green_Harpoon_VAL = ConfigFileUNSORTED.Bind<float>("Green", "Hunters Harpoon - Speed Buff", 100f, "How much speed should it give you in %"); cfg_Green_WarCry = ConfigFileUNSORTED.Bind<bool>("Green", "Berzerkers Pauldron", true, "Berzerker Pauldron longer consecutive kill window for easier activation."); cfg_Green_Squid = ConfigFileUNSORTED.Bind<bool>("Green", "Squid Polyp : Mechanical", false, "Squids count as mechanical, making them immune to Void Infestors and benefit from Microbots and Drone Parts."); cfg_Green_IgnitionTank = ConfigFileUNSORTED.Bind<bool>("Green", "Ignition Tank Off", false, "Fire items also ignite. (Kjaros, WilloWisp). Small chance to fire an ignition tank to ignite enemies in a small area."); cfg_Green_Stealthkit = ConfigFileUNSORTED.Bind<bool>("Green", "Old War Stealthkit", true, "Activate at 50% instead of 25%"); cfg_Green_LeechSeed = ConfigFileUNSORTED.Bind<bool>("Green", "Leech Seed", true, "Heals on damage over time effects like burn or bleed."); cfg_Red_Aegis = ConfigFileUNSORTED.Bind<bool>("Red", "Aegis", true, "Slow Barrier Decay Rate by a lot on first stack."); cfg_Red_ICBM = ConfigFileUNSORTED.Bind<bool>("Red", "Pocket I.C.B.M Off", false, "Activates on all explosive projectiles."); cfg_Red_Aegis_VAL = ConfigFileUNSORTED.Bind<float>("Red", "Aegis - Barrier Decay", 0.2f, "Barrier Decay Multiplier"); cfg_Red_Nkuhana = ConfigFileUNSORTED.Bind<bool>("Red", "Nkuhanas Opinion", true, "Proc Coeff buff and overall QoL"); cfg_Red_LaserScope = ConfigFileUNSORTED.Bind<ConfigChoice>("Red", "Laser Scope Buff", ConfigChoice.Buff, "Rework : A lot of crit, no crit damage mult, crit damage above 100% turns into crit damage. \n\nBuff : +15% crit"); cfg_Yellow_Knurl = ConfigFileUNSORTED.Bind<bool>("Yellow", "Titanic Knurl", true, "12 armor per stack. Similiar to RoR:Returns."); cfg_Yellow_DefenseNuc = ConfigFileUNSORTED.Bind<bool>("Yellow", "Defense Nucleus", true, "Now stacks stats instead of spawn limit. Give them 200 Wake of Vultures."); cfg_Pink_Ring = ConfigFileUNSORTED.Bind<bool>("Void", "Singularity Band", true, "150% Total Damage instead of 100%"); cfg_Blue_Eulogy = ConfigFileUNSORTED.Bind<bool>("Lunar", "Eulogy Zero", true, "Elites have a chance to spawn as perfected."); cfg_Blue_Focus = ConfigFileUNSORTED.Bind<bool>("Lunar", "Focused Convergence", true, "Exponential stacking instead linear divided. Removed item cap of 3. Shrinkage capped"); cfg_Orange_EliteInherit = ConfigFileUNSORTED.Bind<bool>("Equipment", "Elite Equipment Inheritance", true, "Minions spawn as elite when you have a Elite Equipment"); cfg_Orange_Molotov = ConfigFileUNSORTED.Bind<bool>("Equipment", "Molotov Pack", true, "Molotov 8 Pack instead of 6."); RiskConfig(); } public static void RiskConfig() { //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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Expected O, but got Unknown //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Expected O, but got Unknown //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Expected O, but got Unknown //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Expected O, but got Unknown //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Expected O, but got Unknown //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Expected O, but got Unknown //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Expected O, but got Unknown //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Expected O, but got Unknown //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Expected O, but got Unknown //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Expected O, but got Unknown //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Expected O, but got Unknown //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Expected O, but got Unknown ModSettingsManager.SetModIcon(Addressables.LoadAssetAsync<Sprite>((object)"RoR2/DLC1/MoveSpeedOnKill/texGrappleHookIcon.png").WaitForCompletion()); ModSettingsManager.SetModDescription("Various item buffs."); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Red_Aegis, true)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(cfg_Red_Aegis_VAL, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Red_Nkuhana, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Green_Harpoon, true)); ModSettingsManager.AddOption((BaseOption)new FloatFieldOption(cfg_Green_Harpoon_VAL, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Green_LeechSeed, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Green_Squid, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Green_Stealthkit, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Green_WarCry, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_White_Warbanner, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Yellow_Knurl, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Yellow_DefenseNuc, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Pink_Ring, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Blue_Eulogy, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Blue_Focus, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Orange_EliteInherit, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Orange_Molotov, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Red_ICBM, true)); ModSettingsManager.AddOption((BaseOption)new ChoiceOption((ConfigEntryBase)(object)cfg_Red_LaserScope, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Green_IgnitionTank, true)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(cfg_Green_RegenScrap, true)); } } public static class ArrayUtil { public static T[] Add<T>(this T[] array, params T[] items) { return (array ?? Enumerable.Empty<T>()).Concat(items).ToArray(); } public static T[] Remove<T>(this T[] array, params T[] items) { return (array ?? Enumerable.Empty<T>()).Except(items).ToArray(); } } public class WRect { public static readonly Random random = new Random(); public static Rect rec128 = new Rect(0f, 0f, 128f, 128f); public static Vector2 half = new Vector2(0.5f, 0.5f); } public class Equipment { [CompilerGenerated] private static class <>O { public static hook_AddMinion <0>__Minion_Inherit_Elite; } public static void Start() { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VendingMachine/VendingMachine.prefab").WaitForCompletion(); BoxCollider component = ((Component)val.transform.GetChild(0)).gameObject.GetComponent<BoxCollider>(); ((Collider)component).isTrigger = false; component.size = component.extents; Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/Base/Jetpack/Jetpack.asset").WaitForCompletion().canBeRandomlyTriggered = true; if (WConfig.cfg_Orange_EliteInherit.Value) { object obj = <>O.<0>__Minion_Inherit_Elite; if (obj == null) { hook_AddMinion val2 = Minion_Inherit_Elite; <>O.<0>__Minion_Inherit_Elite = val2; obj = (object)val2; } MinionGroup.AddMinion += (hook_AddMinion)obj; } if (WConfig.cfg_Orange_Molotov.Value) { GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Molotov/MolotovClusterProjectile.prefab").WaitForCompletion(); ((ProjectileExplosion)val3.GetComponent<ProjectileImpactExplosion>()).childrenCount = 8; GameObject val4 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Molotov/MolotovSingleProjectile.prefab").WaitForCompletion(); val4.GetComponent<ProjectileImpactExplosion>().destroyOnEnemy = true; } } private static void Occular(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(Buffs.FullCrit) && sender.crit > 100f) { args.critDamageMultAdd += (sender.crit - 100f) * 0.02f; } } public static void Minion_Inherit_Elite(orig_AddMinion orig, NetworkInstanceId ownerId, MinionOwnership minion) { //IL_0002: 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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Invalid comparison between Unknown and I4 //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00b8: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(ownerId, minion); if (!NetworkServer.active || !Object.op_Implicit((Object)(object)minion.ownerMaster) || !Object.op_Implicit((Object)(object)minion.ownerMaster.playerCharacterMasterController)) { return; } EquipmentIndex equipmentIndex = minion.ownerMaster.inventory.GetEquipmentIndex(); if ((int)equipmentIndex != -1) { EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex); if (Object.op_Implicit((Object)(object)equipmentDef.passiveBuffDef) && equipmentDef.passiveBuffDef.isElite && !((Object)minion).name.StartsWith("AffixEarth")) { Inventory component = ((Component)minion).gameObject.GetComponent<Inventory>(); component.SetEquipment(new EquipmentState(equipmentIndex, FixedTimeStamp.negativeInfinity, (byte)0, false), 0u); } } } } public class T1_White { public static void Start() { } } public class T2_Green { [CompilerGenerated] private static class <>O { public static Manipulator <0>__Seed2; public static Manipulator <1>__Longer_WarCryWindow; public static hook_UpdateLastHitTime <2>__StealthKitElixir; public static Manipulator <3>__PhasingBodyBehavior_FixedUpdate; } public static void Start() { //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_0041: Expected O, but got Unknown //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: 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_00d7: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown //IL_00f7: 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_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Expected O, but got Unknown //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Expected O, but got Unknown if (!Chainloader.PluginInfos.ContainsKey("OakPrime.LeechingSeedBuff") && WConfig.cfg_Green_LeechSeed.Value) { object obj = <>O.<0>__Seed2; if (obj == null) { Manipulator val = Seed2; <>O.<0>__Seed2 = val; obj = (object)val; } HealthComponent.TakeDamageProcess += (Manipulator)obj; LanguageAPI.Add("ITEM_SEED_DESC", "Dealing damage <style=cIsHealing>heals</style> you for <style=cIsHealing>1 <style=cStack>(+1 per stack)</style> health</style>. Damage over time effects <style=cIsHealing>heal</style> <style=cIsHealing>0.25 <style=cStack>(+0.25 per stack)</style> health</style> per tick.", "en"); } if (WConfig.cfg_Green_WarCry.Value) { object obj2 = <>O.<1>__Longer_WarCryWindow; if (obj2 == null) { Manipulator val2 = Longer_WarCryWindow; <>O.<1>__Longer_WarCryWindow = val2; obj2 = (object)val2; } CharacterBody.AddMultiKill += (Manipulator)obj2; LanguageAPI.Add("ITEM_WARCRYONMULTIKILL_DESC", "<style=cIsDamage>Killing 4 enemies</style> within <style=cIsDamage>2</style> second of each other sends you into a <style=cIsDamage>frenzy</style> for <style=cIsDamage>6s</style> <style=cStack>(+4s per stack)</style>. Increases <style=cIsUtility>movement speed</style> by <style=cIsUtility>50%</style> and <style=cIsDamage>attack speed</style> by <style=cIsDamage>100%</style>.", "en"); } BetterRedWhipCheck(); if (WConfig.cfg_Green_Squid.Value) { CharacterBody component = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Squid/SquidTurretBody.prefab").WaitForCompletion().GetComponent<CharacterBody>(); component.bodyFlags = (BodyFlags)(component.bodyFlags | 2); } if (WConfig.cfg_Green_Stealthkit.Value) { ItemDef val3 = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/Base/Phasing/Phasing.asset").WaitForCompletion(); val3.tags = val3.tags.Remove((ItemTag)16); object obj3 = <>O.<2>__StealthKitElixir; if (obj3 == null) { hook_UpdateLastHitTime val4 = StealthKitElixir; <>O.<2>__StealthKitElixir = val4; obj3 = (object)val4; } HealthComponent.UpdateLastHitTime += (hook_UpdateLastHitTime)obj3; object obj4 = <>O.<3>__PhasingBodyBehavior_FixedUpdate; if (obj4 == null) { Manipulator val5 = PhasingBodyBehavior_FixedUpdate; <>O.<3>__PhasingBodyBehavior_FixedUpdate = val5; obj4 = (object)val5; } PhasingBodyBehavior.FixedUpdate += (Manipulator)obj4; LanguageAPI.Add("ITEM_PHASING_PICKUP", "Turn invisible and gain speed below half health. Recharges over time.", "en"); LanguageAPI.Add("ITEM_PHASING_DESC", "Falling below <style=cIsHealth>50% health</style> causes you to gain <style=cIsUtility>40% movement speed</style> and <style=cIsUtility>invisibility</style> for <style=cIsUtility>5s</style>. Recharges every <style=cIsUtility>30 seconds</style> <style=cStack>(-50% per stack)</style>.", "en"); } } private static void PhasingBodyBehavior_FixedUpdate(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.MatchCallvirt(x, "RoR2.HealthComponent", "get_isHealthLow") })) { val.Remove(); val.EmitDelegate<Func<HealthComponent, bool>>((Func<HealthComponent, bool>)((HealthComponent health) => health.IsHealthBelowThreshold(0.5f))); } else { Debug.LogWarning((object)"IL Failed: Longer_WarCryWindow"); } } public static void BetterRedWhipCheck() { //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_001e: 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_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_004e: 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_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) //IL_007e: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: 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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_016e: 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_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Huntress/AimArrowSnipe.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Toolbot/ToolbotBodyToolbotDash.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Engi/EngiBodyPlaceBubbleShield.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Mage/MageBodyFlyUp.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Merc/MercBodyAssaulter.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Merc/MercBodyFocusedAssault.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Treebot/TreebotBodyPlantSonicBoom.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Treebot/TreebotBodySonicBoom.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Loader/FireHook.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Loader/FireYankHook.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Croco/CrocoLeap.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Croco/CrocoChainableLeap.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/PrepSupplyDrop.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC1/Railgunner/RailgunnerBodyScopeLight.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC1/Railgunner/RailgunnerBodyScopeHeavy.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC1/VoidSurvivor/VoidBlinkDown.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Seeker/SeekerBodySojourn.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefRolyPoly.asset").WaitForCompletion().isCombatSkill = false; Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefRolyPolyBoosted.asset").WaitForCompletion().isCombatSkill = false; } public static void StealthKitElixir(orig_UpdateLastHitTime orig, HealthComponent self, float damageValue, Vector3 damagePosition, bool damageIsSilent, GameObject attacker, bool delayedDamage, bool firstHitOfDelayedDamage) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active && Object.op_Implicit((Object)(object)self.body) && damageValue > 0f) { PhasingBodyBehavior component = ((Component)self).GetComponent<PhasingBodyBehavior>(); if (Object.op_Implicit((Object)(object)component)) { component.FixedUpdate(); } } orig.Invoke(self, damageValue, damagePosition, damageIsSilent, attacker, delayedDamage, firstHitOfDelayedDamage); } public static void Longer_WarCryWindow(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0042: 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.MatchStfld(x, "RoR2.CharacterBody", "multiKillTimer") })) { val.Prev.OpCode = OpCodes.Ldc_R4; val.Prev.Operand = 2f; } else { Debug.LogWarning((object)"IL Failed: Longer_WarCryWindow"); } } public static void Seed2(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); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC1Content/Items", "FragileDamageBonus") }); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.DamageInfo", "procCoefficient") })) { val.EmitDelegate<Func<DamageInfo, DamageInfo>>((Func<DamageInfo, DamageInfo>)delegate(DamageInfo damageInfo) { //IL_0028: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); int itemCount = component.inventory.GetItemCount(Items.Seed); if (itemCount > 0 && ((Enum)damageInfo.damageType.damageType).HasFlag((Enum)(object)(DamageType)67108864)) { HealthComponent component2 = ((Component)component).GetComponent<HealthComponent>(); if (Object.op_Implicit((Object)(object)component2)) { ProcChainMask procChainMask = damageInfo.procChainMask; ((ProcChainMask)(ref procChainMask)).AddProc((ProcType)6); component2.Heal((float)itemCount * 0.25f, procChainMask, true); } } return damageInfo; }); } else { Debug.LogWarning((object)"IL Failed: Leeching Seed"); } } } public class T3_Red { [CompilerGenerated] private static class <>O { public static hook_RecalculateStats <0>__AegisNoDecay; } public static float AegisDrainMult = 0.2f; public static void Start() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown AegisDrainMult = WConfig.cfg_Red_Aegis_VAL.Value; if (!Chainloader.PluginInfos.ContainsKey("com.Wolfo.AegisRemovesBarrierDecay") && WConfig.cfg_Red_Aegis.Value) { object obj = <>O.<0>__AegisNoDecay; if (obj == null) { hook_RecalculateStats val = AegisNoDecay; <>O.<0>__AegisNoDecay = val; obj = (object)val; } CharacterBody.RecalculateStats += (hook_RecalculateStats)obj; LanguageAPI.Add("ITEM_BARRIERONOVERHEAL_PICKUP", "Healing past full grants you a barrier. Barrier no longer decays.", "en"); if (WConfig.cfg_Red_Aegis_VAL.Value == 0f) { LanguageAPI.Add("ITEM_BARRIERONOVERHEAL_DESC", "Healing past full grants you a <style=cIsHealing>barrier</style> for <style=cIsHealing>50% <style=cStack>(+50% per stack)</style></style> of the amount you <style=cIsHealing>healed</style>. All <style=cIsHealing>barrier</style> no longer naturally decays.", "en"); } else { LanguageAPI.Add("ITEM_BARRIERONOVERHEAL_DESC", "Healing past full grants you a <style=cIsHealing>barrier</style> for <style=cIsHealing>50% <style=cStack>(+50% per stack)</style></style> of the amount you <style=cIsHealing>healed</style>. All <style=cIsHealing>barrier</style> decays <style=cIsHealing>" + (1f - WConfig.cfg_Red_Aegis_VAL.Value) * 100f + "%</style> slower.", "en"); } } } public static void AegisNoDecay(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(Items.BarrierOnOverHeal) > 0) { self.barrierDecayRate *= AegisDrainMult; } } } public class T_Boss { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__KnurlArmor; public static hook_SpawnMaster <1>__Nucleus_MoreStatsPerStack; public static hook_GetDeployableSameSlotLimit <2>__OnlyFourAlphaConstruct; } public static void Start() { //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //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_0108: Expected O, but got Unknown //IL_011e: 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_0129: Expected O, but got Unknown bool flag = Chainloader.PluginInfos.ContainsKey("OakPrime.KnurlBuff"); if (WConfig.cfg_Yellow_Knurl.Value && !flag) { object obj = <>O.<0>__KnurlArmor; if (obj == null) { StatHookEventHandler val = KnurlArmor; <>O.<0>__KnurlArmor = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; LanguageAPI.Add("ITEM_KNURL_PICKUP", "Boosts health, regeneration, and armor"); LanguageAPI.Add("ITEM_KNURL_DESC", "<style=cIsHealing>Increase maximum health</style> by <style=cIsHealing>40</style> <style=cStack>(+40 per stack)</style>, <style=cIsHealing>base health regeneration</style> by <style=cIsHealing>+1.6 hp/s</style> <style=cStack>(+1.6 hp/s per stack)</style>, and <style=cIsHealing>armor</style> by <style=cIsHealing>12</style> <style=cStack>(+12 per stack)</style>."); } if (!WConfig.cfg_Yellow_DefenseNuc.Value) { return; } ItemDef itemDef = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/Base/HeadHunter/HeadHunter.asset").WaitForCompletion(); GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/MajorAndMinorConstruct/MinorConstructOnKillMaster.prefab").WaitForCompletion(); ItemDefInfo[] itemDefInfos = (ItemDefInfo[])(object)new ItemDefInfo[1] { new ItemDefInfo { itemDef = itemDef, count = 200 } }; val2.AddComponent<GivePickupsOnStart>().itemDefInfos = itemDefInfos; if (Main.mod_riskyMod) { object obj2 = <>O.<1>__Nucleus_MoreStatsPerStack; if (obj2 == null) { hook_SpawnMaster val3 = Nucleus_MoreStatsPerStack; <>O.<1>__Nucleus_MoreStatsPerStack = val3; obj2 = (object)val3; } ProjectileSpawnMaster.SpawnMaster += (hook_SpawnMaster)obj2; object obj3 = <>O.<2>__OnlyFourAlphaConstruct; if (obj3 == null) { hook_GetDeployableSameSlotLimit val4 = OnlyFourAlphaConstruct; <>O.<2>__OnlyFourAlphaConstruct = val4; obj3 = (object)val4; } CharacterMaster.GetDeployableSameSlotLimit += (hook_GetDeployableSameSlotLimit)obj3; LanguageAPI.Add("ITEM_MINORCONSTRUCTONKILL_DESC", "Killing elite monsters spawns an <style=cIsDamage>Alpha Construct</style> with 400% <style=cStack>(+300% per stack)</style> <style=cIsHealing>health</style> and <style=cIsDamage>damage</style> that lasts <style=cIsUtility>30s</style>. Limited to <style=cIsUtility>4</style> constructs."); } } private static void Nucleus_MoreStatsPerStack(orig_SpawnMaster orig, ProjectileSpawnMaster self) { if (((Object)self.spawnCard).name.StartsWith("cscMino")) { ProjectileController component = ((Component)self).GetComponent<ProjectileController>(); if (Object.op_Implicit((Object)(object)component.owner)) { CharacterBody component2 = component.owner.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component2)) { int itemCount = component2.inventory.GetItemCount(Items.MinorConstructOnKill); self.spawnCard.itemsToGrant[0].count = 30 * itemCount; self.spawnCard.itemsToGrant[1].count = 30 * itemCount; } } } orig.Invoke(self); } private static int OnlyFourAlphaConstruct(orig_GetDeployableSameSlotLimit orig, CharacterMaster self, DeployableSlot slot) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Invalid comparison between Unknown and I4 //IL_0011: Unknown result type (might be due to invalid IL or missing references) if ((int)slot == 20) { return 4; } return orig.Invoke(self, slot); } private static void KnurlArmor(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory)) { args.armorAdd += (float)(sender.inventory.GetItemCount(Items.Knurl) * 12); } } } public class T_Lunar { [CompilerGenerated] private static class <>O { public static hook_Spawn <0>__LunarEulogyHook; public static hook_ApplyRate <1>__FocusConvergenceController_ApplyRate; } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Awake <>9__1_0; public static hook_BeginEncounter <>9__1_1; public static hook_OnEnter <>9__1_2; public static hook_OnPreDestroyBodyServer <>9__1_3; internal void <Start>b__1_0(orig_Awake orig, HoldoutZoneController self) { orig.Invoke(self); if (self.minimumRadius == 0f) { self.minimumRadius = 10f; } } internal void <Start>b__1_1(orig_BeginEncounter orig, ScriptedCombatEncounter self) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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_00b3: Unknown result type (might be due to invalid IL or missing references) if (((Object)self).name.StartsWith("ScavLunar")) { int num = Util.GetItemCountForTeam((TeamIndex)1, Items.LunarTrinket.itemIndex, false, true); if (num == 0) { num = 1; } float num2 = self.spawns[0].explicitSpawnPosition.localPosition.x + 8f; float y = self.spawns[0].explicitSpawnPosition.localPosition.y; float num3 = self.spawns[0].explicitSpawnPosition.localPosition.z; int num4 = 1; for (int i = 0; i < num; i++) { self.spawns[0].explicitSpawnPosition.localPosition = new Vector3(num2, y, num3); num2 -= 8f; if (num4 == 4) { num4 = 0; num2 += 32f; num3 -= 8f; } num4++; self.hasSpawnedServer = false; orig.Invoke(self); } } else { orig.Invoke(self); } } internal void <Start>b__1_2(orig_OnEnter orig, FadeOut self) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); int num = Util.GetItemCountForTeam((TeamIndex)1, Items.LunarTrinket.itemIndex, false, true); if (num > 1) { if (num > 10) { num = 10; } float num2 = FadeOut.duration / 4f * (float)(num - 1); Reflection.SetFieldValue<float>((object)self, "duration", FadeOut.duration + num2); } } internal void <Start>b__1_3(orig_OnPreDestroyBodyServer orig, Death self) { if (((Object)((EntityState)self).outer).name.StartsWith("ScavLunar")) { self.shouldDropPack = true; } orig.Invoke(self); } } public static EliteDef EliteDefLunarEulogy = ScriptableObject.CreateInstance<EliteDef>(); public static void Start() { //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_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Expected O, but got Unknown //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_00d0: Expected O, but got Unknown //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Expected O, but got Unknown //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Expected O, but got Unknown //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Expected O, but got Unknown //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Expected O, but got Unknown Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC2/FalseSon/bdlunarruin.asset").WaitForCompletion().flags = (Flags)0; EliteDef val = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/Base/EliteLunar/edLunar.asset").WaitForCompletion(); EliteDefLunarEulogy.modifierToken = val.modifierToken; EliteDefLunarEulogy.eliteEquipmentDef = val.eliteEquipmentDef; EliteDefLunarEulogy.color = val.color; EliteDefLunarEulogy.shaderEliteRampIndex = val.shaderEliteRampIndex; EliteDefLunarEulogy.healthBoostCoefficient = 3.2f; EliteDefLunarEulogy.damageBoostCoefficient = val.damageBoostCoefficient; ((Object)EliteDefLunarEulogy).name = "edLunarEulogy"; ContentAddition.AddEliteDef(EliteDefLunarEulogy); if (WConfig.cfg_Blue_Eulogy.Value) { object obj = <>O.<0>__LunarEulogyHook; if (obj == null) { hook_Spawn val2 = LunarEulogyHook; <>O.<0>__LunarEulogyHook = val2; obj = (object)val2; } CombatDirector.Spawn += (hook_Spawn)obj; LanguageAPI.Add("ITEM_RANDOMLYLUNAR_PICKUP", "Items, equipment and elites have a small chance to transform into a Lunar version instead.", "en"); LanguageAPI.Add("ITEM_RANDOMLYLUNAR_DESC", "Items and equipment have a <style=cIsUtility>5% <style=cStack>(+5% per stack)</style></style> chance to become a <style=cIsLunar>Lunar</style> item or equipment and Elite Enemies have a <style=cIsUtility>10% <style=cStack>(+5% per stack)</style></style> spawn as <style=cIsLunar>Perfected</style> instead.", "en"); } FocusConvergenceController.cap = 999999; object obj2 = <>c.<>9__1_0; if (obj2 == null) { hook_Awake val3 = delegate(orig_Awake orig, HoldoutZoneController self) { orig.Invoke(self); if (self.minimumRadius == 0f) { self.minimumRadius = 10f; } }; <>c.<>9__1_0 = val3; obj2 = (object)val3; } HoldoutZoneController.Awake += (hook_Awake)obj2; if (WConfig.cfg_Blue_Focus.Value) { object obj3 = <>O.<1>__FocusConvergenceController_ApplyRate; if (obj3 == null) { hook_ApplyRate val4 = FocusConvergenceController_ApplyRate; <>O.<1>__FocusConvergenceController_ApplyRate = val4; obj3 = (object)val4; } FocusConvergenceController.ApplyRate += (hook_ApplyRate)obj3; } LanguageAPI.Add("ITEM_LUNARTRINKET_DESC", "Once guided to the <style=cIsUtility>monolith</style>, become whole and <style=cIsDamage>fight 1 <style=cStack>(+1 per stack)</style> guardians</style>", "en"); object obj4 = <>c.<>9__1_1; if (obj4 == null) { hook_BeginEncounter val5 = delegate(orig_BeginEncounter orig, ScriptedCombatEncounter self) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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_00b3: Unknown result type (might be due to invalid IL or missing references) if (((Object)self).name.StartsWith("ScavLunar")) { int num3 = Util.GetItemCountForTeam((TeamIndex)1, Items.LunarTrinket.itemIndex, false, true); if (num3 == 0) { num3 = 1; } float num4 = self.spawns[0].explicitSpawnPosition.localPosition.x + 8f; float y = self.spawns[0].explicitSpawnPosition.localPosition.y; float num5 = self.spawns[0].explicitSpawnPosition.localPosition.z; int num6 = 1; for (int i = 0; i < num3; i++) { self.spawns[0].explicitSpawnPosition.localPosition = new Vector3(num4, y, num5); num4 -= 8f; if (num6 == 4) { num6 = 0; num4 += 32f; num5 -= 8f; } num6++; self.hasSpawnedServer = false; orig.Invoke(self); } } else { orig.Invoke(self); } }; <>c.<>9__1_1 = val5; obj4 = (object)val5; } ScriptedCombatEncounter.BeginEncounter += (hook_BeginEncounter)obj4; object obj5 = <>c.<>9__1_2; if (obj5 == null) { hook_OnEnter val6 = delegate(orig_OnEnter orig, FadeOut self) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); int num = Util.GetItemCountForTeam((TeamIndex)1, Items.LunarTrinket.itemIndex, false, true); if (num > 1) { if (num > 10) { num = 10; } float num2 = FadeOut.duration / 4f * (float)(num - 1); Reflection.SetFieldValue<float>((object)self, "duration", FadeOut.duration + num2); } }; <>c.<>9__1_2 = val6; obj5 = (object)val6; } FadeOut.OnEnter += (hook_OnEnter)obj5; object obj6 = <>c.<>9__1_3; if (obj6 == null) { hook_OnPreDestroyBodyServer val7 = delegate(orig_OnPreDestroyBodyServer orig, Death self) { if (((Object)((EntityState)self).outer).name.StartsWith("ScavLunar")) { self.shouldDropPack = true; } orig.Invoke(self); }; <>c.<>9__1_3 = val7; obj6 = (object)val7; } Death.OnPreDestroyBodyServer += (hook_OnPreDestroyBodyServer)obj6; } private static void FocusConvergenceController_ApplyRate(orig_ApplyRate orig, MonoBehaviour self, ref float rate) { if (((FocusConvergenceController)((self is FocusConvergenceController) ? self : null)).currentFocusConvergenceCount > 0) { rate *= 1f / MathF.Pow(0.7f, ((FocusConvergenceController)((self is FocusConvergenceController) ? self : null)).currentFocusConvergenceCount); } } public static bool LunarEulogyHook(orig_Spawn orig, CombatDirector self, SpawnCard spawnCard, EliteDef eliteDef, Transform spawnTarget, MonsterSpawnDistance spawnDistance, bool preventOverhead, float valueMultiplier, PlacementMode placementMode) { //IL_0063: 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_0011: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)eliteDef)) { int itemCountFromPlayers = Main.GetItemCountFromPlayers(Items.RandomlyLunar.itemIndex); if (itemCountFromPlayers > 0) { itemCountFromPlayers++; if (eliteDef.healthBoostCoefficient < 8f && self.rng.nextNormalizedFloat < 0.05f * (float)itemCountFromPlayers) { eliteDef = EliteDefLunarEulogy; } } } return orig.Invoke(self, spawnCard, eliteDef, spawnTarget, spawnDistance, preventOverhead, valueMultiplier, placementMode); } } public class T_Void { public class VoidAffixPlayer : MonoBehaviour { public void OnEnable() { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Invalid comparison between Unknown and I4 CharacterModel component = ((Component)((Component)this).transform.root).GetComponent<CharacterModel>(); TeamComponent val = ((Component)((Component)this).transform.root).GetComponent<TeamComponent>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.body)) { val = component.body.teamComponent; } if (Object.op_Implicit((Object)(object)val) && (int)val.teamIndex == 1) { ((Component)((Component)this).transform.GetChild(1).GetChild(1)).gameObject.SetActive(false); ((Component)((Component)this).transform.GetChild(1).GetChild(2)).gameObject.SetActive(true); } } } [CompilerGenerated] private static class <>O { public static Manipulator <0>__BuffSingularityBand; public static hook_OnEnable <1>__AffixVoidBehavior_OnEnable; } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_RespawnExtraLifeVoid <>9__1_0; public static Func<Instruction, bool> <>9__4_1; public static Func<Instruction, bool> <>9__4_0; internal void <VoidAffix>b__1_0(orig_RespawnExtraLifeVoid orig, CharacterMaster self) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_001d: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_006d: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if ((int)self.inventory.currentEquipmentIndex != -1 && Object.op_Implicit((Object)(object)EquipmentCatalog.GetEquipmentDef(self.inventory.currentEquipmentIndex).passiveBuffDef)) { CharacterMasterNotificationQueue.PushEquipmentTransformNotification(self, self.inventory.currentEquipmentIndex, Equipment.EliteVoidEquipment.equipmentIndex, (TransformationType)1); self.inventory.SetEquipment(new EquipmentState(Equipment.EliteVoidEquipment.equipmentIndex, FixedTimeStamp.negativeInfinity, (byte)0, false), 0u); } } internal bool <BuffSingularityBand>b__4_1(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "Prefabs/Projectiles/ElementalRingVoidBlackHole"); } internal bool <BuffSingularityBand>b__4_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 1f); } } public static void Start() { //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_005e: Unknown result type (might be due to invalid IL or missing references) //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 (WConfig.cfg_Pink_Ring.Value) { object obj = <>O.<0>__BuffSingularityBand; if (obj == null) { Manipulator val = BuffSingularityBand; <>O.<0>__BuffSingularityBand = val; obj = (object)val; } GlobalEventManager.ProcessHitEnemy += (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 15m into its center</style>. Lasts <style=cIsUtility>5</style> seconds before collapsing, dealing <style=cIsDamage>150%</style> <style=cStack>(+150% per stack)</style> TOTAL damage. Recharges every <style=cIsUtility>20</style> seconds. <style=cIsVoid>Corrupts all Runald's and Kjaro's Bands</style>.", "en"); Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/ElementalRingVoid/ElementalRingVoidBlackHole.prefab").WaitForCompletion().GetComponent<ProjectileExplosion>() .falloffModel = (FalloffModel)0; } VoidAffix(); } public static void VoidAffix() { //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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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_0149: 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_0176: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Expected O, but got Unknown //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: 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_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Expected O, but got Unknown //IL_025a: 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_0265: Expected O, but got Unknown EquipmentDef val = Addressables.LoadAssetAsync<EquipmentDef>((object)"RoR2/DLC1/EliteVoid/EliteVoidEquipment.asset").WaitForCompletion(); GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteVoid/DisplayAffixVoid.prefab").WaitForCompletion(); GameObject val3 = PrefabAPI.InstantiateClone(val2, "PickupAffixVoidW", false); val3.transform.GetChild(0).GetChild(1).SetAsFirstSibling(); val3.transform.GetChild(1).localPosition = new Vector3(0f, 0.7f, 0f); val3.transform.GetChild(1).GetChild(0).localPosition = new Vector3(0f, -0.5f, -0.6f); val3.transform.GetChild(1).GetChild(0).localScale = new Vector3(1.5f, 1.5f, 1.5f); ((Component)val3.transform.GetChild(1).GetChild(1)).gameObject.SetActive(false); ((Component)val3.transform.GetChild(1).GetChild(3)).gameObject.SetActive(false); val3.transform.GetChild(0).eulerAngles = new Vector3(310f, 0f, 0f); val3.transform.GetChild(0).localScale = new Vector3(0.75f, 0.75f, 0.75f); ItemDisplay component = val3.GetComponent<ItemDisplay>(); component.rendererInfos = component.rendererInfos.Remove(component.rendererInfos[4]); LanguageAPI.Add("EQUIPMENT_AFFIXVOID_NAME", "Voidborne Curiosity", "en"); LanguageAPI.Add("EQUIPMENT_AFFIXVOID_PICKUP", "Lose your aspect of self.", "en"); LanguageAPI.Add("EQUIPMENT_AFFIXVOID_DESC", "Increases <style=cIsHealing>maximum health</style> by <style=cIsHealing>50%</style> and decrease <style=cIsDamage>base damage</style> by <style=cIsDamage>30%</style>. <style=cIsDamage>Collapse</style> enemies on hit and <style=cIsHealing>block</style> incoming damage once every <style=cIsUtility>15 seconds</style>. ", "en"); Texture2D val4 = new Texture2D(128, 128, (TextureFormat)12, false); ImageConversion.LoadImage(val4, Resources.UniqueAffixVoid, true); ((Texture)val4).filterMode = (FilterMode)1; ((Texture)val4).wrapMode = (TextureWrapMode)1; Sprite pickupIconSprite = Sprite.Create(val4, WRect.rec128, WRect.half); val.pickupIconSprite = pickupIconSprite; val.pickupModelPrefab = val3; val.dropOnDeathChance = 0.00025f; object obj = <>c.<>9__1_0; if (obj == null) { hook_RespawnExtraLifeVoid val5 = delegate(orig_RespawnExtraLifeVoid orig, CharacterMaster self) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_001d: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_006d: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if ((int)self.inventory.currentEquipmentIndex != -1 && Object.op_Implicit((Object)(object)EquipmentCatalog.GetEquipmentDef(self.inventory.currentEquipmentIndex).passiveBuffDef)) { CharacterMasterNotificationQueue.PushEquipmentTransformNotification(self, self.inventory.currentEquipmentIndex, Equipment.EliteVoidEquipment.equipmentIndex, (TransformationType)1); self.inventory.SetEquipment(new EquipmentState(Equipment.EliteVoidEquipment.equipmentIndex, FixedTimeStamp.negativeInfinity, (byte)0, false), 0u); } }; <>c.<>9__1_0 = val5; obj = (object)val5; } CharacterMaster.RespawnExtraLifeVoid += (hook_RespawnExtraLifeVoid)obj; object obj2 = <>O.<1>__AffixVoidBehavior_OnEnable; if (obj2 == null) { hook_OnEnable val6 = AffixVoidBehavior_OnEnable; <>O.<1>__AffixVoidBehavior_OnEnable = val6; obj2 = (object)val6; } AffixVoidBehavior.OnEnable += (hook_OnEnable)obj2; val2.AddComponent<VoidAffixPlayer>(); } private static void AffixVoidBehavior_OnEnable(orig_OnEnable orig, AffixVoidBehavior self) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Invalid comparison between Unknown and I4 //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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) orig.Invoke(self); if (Object.op_Implicit((Object)(object)((ItemBehavior)self).body) && Object.op_Implicit((Object)(object)((ItemBehavior)self).body.teamComponent) && (int)((ItemBehavior)self).body.teamComponent.teamIndex == 1 && !self.wasVoidBody) { CharacterBody body = ((ItemBehavior)self).body; body.bodyFlags = (BodyFlags)(body.bodyFlags & -1025); } } public static void BuffSingularityBand(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.MatchLdstr(x, "Prefabs/Projectiles/ElementalRingVoidBlackHole") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1f) }); val.Next.Operand = 1.5f; } else { Debug.LogWarning((object)"IL Failed: Singularity Band"); } } } public class T1_APRounds { [CompilerGenerated] private static class <>O { public static Manipulator <0>__APR_DamageAgainstChampion; } public static void Start() { //IL_0011: 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: Expected O, but got Unknown object obj = <>O.<0>__APR_DamageAgainstChampion; if (obj == null) { Manipulator val = APR_DamageAgainstChampion; <>O.<0>__APR_DamageAgainstChampion = val; obj = (object)val; } HealthComponent.TakeDamage += (Manipulator)obj; } private static void APR_DamageAgainstChampion(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.MatchLdfld(x, "RoR2.RoR2Content/Items", "BossDamageBonus") })) { val.TryGotoPrev((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStfld(x, "RoR2.CharacterBody", "get_isBoss") }); } else { Debug.LogWarning((object)"IL FAILED : APR_DamageAgainstChampion"); } } } public class T1_Warbanner { [CompilerGenerated] private static class <>O { public static hook_Start <0>__WarbannerOnSpawn; public static hook_BeginEncounter <1>__Warbanner_ScriptedCombat; public static hook_OnBodyTeleport <2>__Warbanner_AfterVoidlingTeleport; public static hook_PerformInvasion <3>__Warbanner_OnVengence; public static Manipulator <4>__Warbanner_BiggerRadius; } public static void Start() { //IL_0038: 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_0043: Expected O, but got Unknown //IL_0088: 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_0093: Expected O, but got Unknown //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) //IL_0071: Expected O, but got Unknown //IL_00bf: 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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown if (!WConfig.cfg_White_Warbanner.Value) { return; } LanguageAPI.Add("ITEM_WARDONLEVEL_DESC", "On <style=cIsUtility>level up, stage start</style> or starting a <style=cIsUtility>boss fight</style>, drop a banner that strengthens all allies within <style=cIsUtility>16m</style> <style=cStack>(+12m per stack)</style>. Raise <style=cIsDamage>attack</style> and <style=cIsUtility>movement speed</style> by <style=cIsDamage>30%</style>.", "en"); object obj = <>O.<0>__WarbannerOnSpawn; if (obj == null) { hook_Start val = WarbannerOnSpawn; <>O.<0>__WarbannerOnSpawn = val; obj = (object)val; } CharacterBody.Start += (hook_Start)obj; if (!Main.mod_riskyMod) { object obj2 = <>O.<1>__Warbanner_ScriptedCombat; if (obj2 == null) { hook_BeginEncounter val2 = Warbanner_ScriptedCombat; <>O.<1>__Warbanner_ScriptedCombat = val2; obj2 = (object)val2; } ScriptedCombatEncounter.BeginEncounter += (hook_BeginEncounter)obj2; } object obj3 = <>O.<2>__Warbanner_AfterVoidlingTeleport; if (obj3 == null) { hook_OnBodyTeleport val3 = Warbanner_AfterVoidlingTeleport; <>O.<2>__Warbanner_AfterVoidlingTeleport = val3; obj3 = (object)val3; } VoidRaidGauntletExitController.OnBodyTeleport += (hook_OnBodyTeleport)obj3; object obj4 = <>O.<3>__Warbanner_OnVengence; if (obj4 == null) { hook_PerformInvasion val4 = Warbanner_OnVengence; <>O.<3>__Warbanner_OnVengence = val4; obj4 = (object)val4; } DoppelgangerInvasionManager.PerformInvasion += (hook_PerformInvasion)obj4; ItemDef val5 = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/Base/WardOnLevel/WardOnLevel.asset").WaitForCompletion(); val5.tags = val5.tags.Remove((ItemTag)13); object obj5 = <>O.<4>__Warbanner_BiggerRadius; if (obj5 == null) { Manipulator val6 = Warbanner_BiggerRadius; <>O.<4>__Warbanner_BiggerRadius = val6; obj5 = (object)val6; } WardOnLevelManager.OnCharacterLevelUp += (Manipulator)obj5; } private static void Warbanner_BiggerRadius(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)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 8f) })) { val.Prev.Operand = 4f; val.Next.Operand = 12f; } else { Debug.LogWarning((object)"Failed to apply Hunter's Harpoon Move Speed Increase hook"); } } private static void Warbanner_AfterVoidlingTeleport(orig_OnBodyTeleport orig, VoidRaidGauntletExitController self, CharacterBody body) { orig.Invoke(self, body); WardOnLevelManager.OnCharacterLevelUp(body); } public static void Warbanner_OnVengence(orig_PerformInvasion orig, Xoroshiro128Plus rng) { orig.Invoke(rng); foreach (CharacterBody instances in CharacterBody.instancesList) { WardOnLevelManager.OnCharacterLevelUp(instances); } } public static void Warbanner_ScriptedCombat(orig_BeginEncounter orig, ScriptedCombatEncounter self) { orig.Invoke(self); if (!Object.op_Implicit((Object)(object)((Component)self).GetComponent<BossGroup>())) { return; } foreach (CharacterBody instances in CharacterBody.instancesList) { WardOnLevelManager.OnCharacterLevelUp(instances); } } public static void WarbannerOnSpawn(orig_Start orig, CharacterBody self) { orig.Invoke(self); WardOnLevelManager.OnCharacterLevelUp(self); } } public class T1_WarpedEcho { [CompilerGenerated] private static class <>O { public static Manipulator <0>__WarpedEcho_WorkWithAll; } public static void Start() { //IL_0011: 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: Expected O, but got Unknown object obj = <>O.<0>__WarpedEcho_WorkWithAll; if (obj == null) { Manipulator val = WarpedEcho_WorkWithAll; <>O.<0>__WarpedEcho_WorkWithAll = val; obj = (object)val; } HealthComponent.TakeDamageProcess += (Manipulator)obj; } public static void WarpedEcho_WorkWithAll(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.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "DelayedDamageBuff") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 2114) }); Debug.Log((object)val); val.Next.Operand = 2048; Debug.Log((object)val); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 2115) }); Debug.Log((object)val); val.Next.Operand = 2049; Debug.Log((object)val); } else { Debug.LogWarning((object)"IL FAILED : Harpoon_ChangeMoveSpeed"); } } } public class T2_HuntersHarpoon { [CompilerGenerated] private static class <>O { public static Manipulator <0>__Harpoon_ChangeMoveSpeed; public static Manipulator <1>__Harpoon_ChangeDuration; } public static float HarpoonSpeed = 1f; public static void Start() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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) //IL_0071: Expected O, but got Unknown //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_0087: 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: Expected O, but got Unknown HarpoonSpeed = WConfig.cfg_Green_Harpoon_VAL.Value / 100f; bool flag = Chainloader.PluginInfos.ContainsKey("com.Wolfo.RoRRHuntersHarpoon"); Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC1/MoveSpeedOnKill/bdKillMoveSpeed.asset").WaitForCompletion().canStack = false; if (!flag && WConfig.cfg_Green_Harpoon.Value) { object obj = <>O.<0>__Harpoon_ChangeMoveSpeed; if (obj == null) { Manipulator val = Harpoon_ChangeMoveSpeed; <>O.<0>__Harpoon_ChangeMoveSpeed = val; obj = (object)val; } CharacterBody.RecalculateStats += (Manipulator)obj; object obj2 = <>O.<1>__Harpoon_ChangeDuration; if (obj2 == null) { Manipulator val2 = Harpoon_ChangeDuration; <>O.<1>__Harpoon_ChangeDuration = val2; obj2 = (object)val2; } GlobalEventManager.OnCharacterDeath += (Manipulator)obj2; Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC1/MoveSpeedOnKill/bdKillMoveSpeed.asset").WaitForCompletion().canStack = false; LanguageAPI.Add("ITEM_MOVESPEEDONKILL_DESC", "Killing an enemy increases <style=cIsUtility>movement speed</style> by <style=cIsUtility>" + WConfig.cfg_Green_Harpoon_VAL.Value + "%</style> for <style=cIsUtility>1.25</style> <style=cStack>(+1 per stack)</style> seconds. Consecutive kills increase buff duration for up to <style=cIsUtility>20</style> <style=cStack>(+4 per stack)</style> seconds.", "en"); } } public static void Harpoon_ChangeMoveSpeed(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>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.25f), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC1Content/Buffs", "KillMoveSpeed") })) { val.Next.Operand = HarpoonSpeed; val.Index += 4; val.EmitDelegate<Func<int, int>>((Func<int, int>)((int num) => (num > 0) ? 1 : 0)); } else { Debug.LogWarning((object)"IL FAILED : Harpoon_ChangeMoveSpeed"); } } private static void Harpoon_ChangeDuration(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00ba: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); int num3 = default(int); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1f), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num3), (Instruction x) => ILPatternMatchingExt.MatchConvR4(x), (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.5f) })) { val.Index -= 2; val.Next.OpCode = OpCodes.Ldc_I4_0; val.Index += 9; val.RemoveRange(3); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_corePosition") }); val.EmitDelegate<Func<CharacterBody, CharacterBody>>((Func<CharacterBody, CharacterBody>)delegate(CharacterBody attackerBody) { int itemCount = attackerBody.master.inventory.GetItemCount(Items.MoveSpeedOnKill); float num = (float)itemCount + 0.25f; if (attackerBody.HasBuff(Buffs.KillMoveSpeed)) { float num2 = itemCount * 4 + 16; attackerBody.ExtendTimedBuffIfPresent(Buffs.KillMoveSpeed, num, num2); } else { attackerBody.AddTimedBuff(Buffs.KillMoveSpeed, num); } return attackerBody; }); } else { Debug.LogWarning((object)"IL FAILED : Harpoon_ChangeDuration"); } } } public class T2_IgnitionTank { public class IgnitionTankBehavior : MonoBehaviour { public static GameObject effect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/OmniExplosionVFXLemurianBruiserFireballImpact.prefab").WaitForCompletion(); private GameObject owner; public float radius; public void Start() { //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: 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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Expected O, but got Unknown bool flag = false; DelayBlast component = ((Component)this).GetComponent<DelayBlast>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.attacker)) { owner = component.attacker; radius = component.radius; } else { ProjectileController component2 = ((Component)this).GetComponent<ProjectileController>(); if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component2.owner)) { owner = component2.owner; radius = 10f; } } if (Object.op_Implicit((Object)(object)owner) && owner.GetComponent<CharacterBody>().inventory.GetItemCount(Items.StrengthenBurn) > 0) { EffectData val = new EffectData { origin = ((Component)this).transform.position, scale = radius }; EffectManager.SpawnEffect(effect, val, false); } } } [CompilerGenerated] private static class <>O { public static Manipulator <0>__IgnitionTank_LowBurn; public static hook_OnPassengerEnter <1>__IgnitionTank_Egg; public static Manipulator <2>__IgnitonTank_BurnForTrail; public static hook_Detonate <3>__SpawnUpgrade_Effect; public static Manipulator <4>__Proc_TankProjectile; } private static float igniteReplaceFrac = 0.6f; public static BuffDef ignitionTankFireTrail; public static GameObject GasTankProjectile; public static GameObject ignitionTank_UpgradeEffect; public static ProjectileImpactExplosion impactExplosion; public static void Start() { //IL_0011: 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: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: 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_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0179: 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_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0234: 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_023e: Unknown result type (might be due to invalid IL or missing references) //IL_024f: 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_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_0295: 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_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_0349: 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_0387: Unknown result type (might be due to invalid IL or missing references) //IL_03a9: Unknown result type (might be due to invalid IL or missing references) //IL_03fb: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown object obj = <>O.<0>__IgnitionTank_LowBurn; if (obj == null) { Manipulator val = IgnitionTank_LowBurn; <>O.<0>__IgnitionTank_LowBurn = val; obj = (object)val; } HealthComponent.TakeDamageProcess += (Manipulator)obj; object obj2 = <>O.<1>__IgnitionTank_Egg; if (obj2 == null) { hook_OnPassengerEnter val2 = IgnitionTank_Egg; <>O.<1>__IgnitionTank_Egg = val2; obj2 = (object)val2; } FireballVehicle.OnPassengerEnter += (hook_OnPassengerEnter)obj2; object obj3 = <>O.<2>__IgnitonTank_BurnForTrail; if (obj3 == null) { Manipulator val3 = IgnitonTank_BurnForTrail; <>O.<2>__IgnitonTank_BurnForTrail = val3; obj3 = (object)val3; } DamageTrail.DoDamage += (Manipulator)obj3; object obj4 = <>O.<3>__SpawnUpgrade_Effect; if (obj4 == null) { hook_Detonate val4 = SpawnUpgrade_Effect; <>O.<3>__SpawnUpgrade_Effect = val4; obj4 = (object)val4; } DelayBlast.Detonate += (hook_Detonate)obj4; object obj5 = <>O.<4>__Proc_TankProjectile; if (obj5 == null) { Manipulator val5 = Proc_TankProjectile; <>O.<4>__Proc_TankProjectile = val5; obj5 = (object)val5; } GlobalEventManager.ProcessHitEnemy += (Manipulator)obj5; LanguageAPI.Add("ITEM_STRENGTHENBURN_PICKUP", "Your ignite effects deal quadruple damage. Small chance to fire an explosive gas canister."); LanguageAPI.Add("ITEM_STRENGTHENBURN_DESC", "Ignite effects deal <style=cIsDamage>+300%</style> <style=cStack>(+300% per stack)</style> more damage over time. Non-igniting fire items inflict <style=cIsDamage>burn</style> for <style=cIsDamage>+80%</style><style=cStack> (+60% per stack)</style> TOTAL damage. <style=cIsDamage>2%</style> chance to fire a <style=cIsDamage>gas tank</style> inflicting <style=cIsDamage>600%</style><style=cStack> (+450% per stack)</style> base damage as <style=cIsDamage>burn</style>."); BuffDef val6 = LegacyResourcesAPI.Load<BuffDef>("BuffDefs/OnFire"); BuffDef val7 = LegacyResourcesAPI.Load<BuffDef>("BuffDefs/KillMoveSpeed"); ignitionTankFireTrail = ScriptableObject.CreateInstance<BuffDef>(); ignitionTankFireTrail.iconSprite = val7.iconSprite; ignitionTankFireTrail.buffColor = val6.buffColor; ((Object)ignitionTankFireTrail).name = "ignitionTankFireTrail"; ContentAddition.AddBuffDef(ignitionTankFireTrail); GameObject val8 = LegacyResourcesAPI.Load<GameObject>("Prefabs/FireTrail"); val8 = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/FireTornado"); ProjectileDamage component = val8.GetComponent<ProjectileDamage>(); component.damageType |= DamageTypeCombo.op_Implicit((DamageType)8192); val8.AddComponent<IgnitionTankBehavior>(); val8 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ExplodeOnDeath/WilloWispDelay.prefab").WaitForCompletion(); DelayBlast component2 = val8.GetComponent<DelayBlast>(); component2.damageType |= DamageTypeCombo.op_Implicit((DamageType)8192); val8.AddComponent<IgnitionTankBehavior>(); val8 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/ExplodeOnDeathVoid/ExplodeOnDeathVoidExplosion.prefab").WaitForCompletion(); DelayBlast component3 = val8.GetComponent<DelayBlast>(); component3.damageType |= DamageTypeCombo.op_Implicit((DamageType)8192); val8.AddComponent<IgnitionTankBehavior>(); val8 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Chef/BoostedSearFireballProjectile.prefab").WaitForCompletion(); ProjectileDamage component4 = val8.GetComponent<ProjectileDamage>(); component4.damageType |= DamageTypeCombo.op_Implicit((DamageType)8192); val8.AddComponent<IgnitionTankBehavior>(); val8 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/FireBallDash/FireballVehicle.prefab").WaitForCompletion(); FireballVehicle component5 = val8.GetComponent<FireballVehicle>(); component5.blastDamageType |= DamageTypeCombo.op_Implicit((DamageType)8192); val8.AddComponent<IgnitionTankBehavior>(); GameObject val9 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/StrengthenBurn/PickupGasTank.prefab").WaitForCompletion(); GasTankProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Toolbot/ToolbotGrenadeLauncherProjectile.prefab").WaitForCompletion(), "IgnitionTankProjectile", true); impactExplosion = GasTankProjectile.GetComponent<ProjectileImpactExplosion>(); GameObject val10 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/OmniExplosionVFXLemurianBruiserFireballImpact.prefab").WaitForCompletion(), "IgnitionTankImpactVFX", true); GameObject val11 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Molotov/MolotovGhost.prefab").WaitForCompletion(), "IgnitionTankGhost", true); ContentAddition.AddProjectile(GasTankProjectile); ContentAddition.AddEffect(val10); Transform child = val11.transform.GetChild(0); ((Component)child).GetComponent<MeshFilter>().mesh = ((Component)val9.transform.GetChild(0)).GetComponent<MeshFilter>().mesh; ((Renderer)((Component)child).GetComponent<MeshRenderer>()).materials = ((Renderer)((Component)val9.transform.GetChild(0)).GetComponent<MeshRenderer>()).materials; child.localScale = new Vector3(0.7f, 0.7f, 0.7f); child.localEulerAngles = new Vector3(0f, 180f, 0f); child.GetChild(0).localPosition = new Vector3(0f, 0f, 4f); child.GetChild(0).localScale = new Vector3(0.8f, 0.8f, 1.6f); ProjectileController component6 = GasTankProjectile.GetComponent<ProjectileController>(); component6.ghostPrefab = val11; ProjectileDamage component7 = GasTankProjectile.GetComponent<ProjectileDamage>(); GasTankProjectile.GetComponent<ProjectileSimple>().desiredForwardSpeed = 160f; impactExplosion.impactEffect = val10; ((ProjectileExplosion)impactExplosion).falloffModel = (FalloffModel)1; impactExplosion.timerAfterImpact = false; ((ProjectileExplosion)impactExplosion).applyDot = true; ((ProjectileExplosion)impactExplosion).dotIndex = (DotIndex)1; ((ProjectileExplosion)impactExplosion).blastProcCoefficient = 0f; ((ProjectileExplosion)impactExplosion).blastDamageCoefficient = 0f; ((ProjectileExplosion)impactExplosion).calculateTotalDamage = true; ((ProjectileExplosion)impactExplosion).dotDamageMultiplier = 1f; ((ProjectileExplosion)impactExplosion).totalDamageMultiplier = 1.5f; ((ProjectileExplosion)impactExplosion).blastRadius = 8f; AntiGravityForce val12 = GasTankProjectile.AddComponent<AntiGravityForce>(); val12.rb = GasTankProjectile.GetComponent<Rigidbody>(); val12.antiGravityCoefficient = 1.03f; } private static void SpawnUpgrade_Effect(orig_Detonate orig, DelayBlast self) { orig.Invoke(self); } private static void Proc_TankProjectile(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallvirt(x, "RoR2.CharacterMaster", "get_inventory") })) { val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<Inventory, DamageInfo, Inventory>>((Func<Inventory, DamageInfo, Inventory>)delegate(Inventory inventory, DamageInfo damageInfo) { //IL_004b: 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_0062: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: 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_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) int itemCount = inventory.GetItemCount(Items.StrengthenBurn); if (itemCount > 0) { CharacterMaster component = ((Component)inventory).GetComponent<CharacterMaster>(); CharacterBody body = component.GetBody(); if (Util.CheckRoll(2f * damageInfo.procCoefficient, component)) { Ray val2 = default(Ray); ((Ray)(ref val2))..ctor(body.inputBank.aimOrigin, body.inputBank.aimDirection); Quaternion rotation = Quaternion.LookRotation(((Ray)(ref val2)).direction); FireProjectileInfo val3 = default(FireProjectileInfo); val3.projectilePrefab = GasTankProjectile; val3.crit = false; val3.damage = 0f; val3.damageColorIndex = (DamageColorIndex)3; val3.force = 8000f; val3.owner = ((Component)body).gameObject; val3.position = body.aimOrigin; val3.rotation = rotation; val3.procChainMask = damageInfo.procChainMask; FireProjectileInfo val4 = val3; ProjectileManager.instance.FireProjectile(val4); } } return inventory; }); } else { Debug.LogWarning((object)"IL Failed: IgnitionTank_NerfDamage"); } } private static void IgnitionTank_Egg(orig_OnPassengerEnter orig, FireballVehicle self, GameObject passenger) { //IL_001f: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, passenger); if (self.overlapAttack != null) { OverlapAttack overlapAttack = self.overlapAttack; overlapAttack.damageType |= DamageTypeCombo.op_Implicit((DamageType)8192); } } private static void IgnitionTank_NerfDamage(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0042: 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.MatchLdcI4(x, 3) })) { val.Next.OpCode = OpCodes.Ldc_R4; val.Next.Operand = 2.5f; } else { Debug.LogWarning((object)"IL Failed: IgnitionTank_NerfDamage"); } } private static void IgnitionTank_FireTrailOnKIll(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.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "HandleOnKillEffectsServer") })) { int index = val.Index; val.Index = index - 1; val.EmitDelegate<Func<CharacterBody, CharacterBody>>((Func<CharacterBody, CharacterBody>)delegate(CharacterBody body) { if (Object.op_Implicit((Object)(object)body.inventory)) { int itemCount = body.inventory.GetItemCount(Items.StrengthenBurn); if (itemCount > 0) { body.AddTimedBuff(ignitionTankFireTrail, 8f); } } return body; }); } else { Debug.LogWarning((object)"IL Failed:IgnitionTank_FireTrailOnKIll"); } } private static void IgnitionTank_FireTrail(orig_UpdateItemAvailability orig, CharacterBody self) { orig.Invoke(self); if (!self.itemAvailability.hasFireTrail) { self.itemAvailability.hasFireTrail = self.HasBuff(ignitionTankFireTrail); } } private static void IgnitonTank_BurnForTrail(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.MatchCallvirt(x, "RoR2.HealthComponent", "TakeDamage") })) { val.EmitDelegate<Func<DamageInfo, DamageInfo>>((Func<DamageInfo, DamageInfo>)delegate(DamageInfo damageInfo) { //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) damageInfo.damageType = DamageTypeCombo.op_Implicit((DamageType)8192); return damageInfo; }); } else { Debug.LogWarning((object)"IL Failed:IgnitonTank_BurnForTrail"); } } public static void IgnitionTank_LowBurn(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC1Content/Items", "FragileDamageBonus") }); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.DamageInfo", "procCoefficient") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<DamageInfo, HealthComponent, DamageInfo>>((Func<DamageInfo, HealthComponent, DamageInfo>)delegate(DamageInfo damageInfo, HealthComponent healthComponent) { //IL_0002: 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_0011: 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) //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_00c6: Unknown result type (might be due to invalid IL or missing references) if (DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)8192)) != 0 && Object.op_Implicit((Object)(object)damageInfo.attacker)) { Inventory inventory = damageInfo.attacker.GetComponent<CharacterBody>().inventory; if (Object.op_Implicit((Object)(object)inventory) && inventory.GetItemCount(Items.StrengthenBurn) > 0) { InflictDotInfo val2 = default(InflictDotInfo); val2.attackerObject = damageInfo.attacker; val2.victimObject = ((Component)healthComponent).gameObject; val2.totalDamage = damageInfo.damage * 0.2f; val2.damageMultiplier = 1f; val2.dotIndex = (DotIndex)1; val2.maxStacksFromAttacker = null; InflictDotInfo val3 = val2; StrengthenBurnUtils.CheckDotForUpgrade(inventory, ref val3); DotController.InflictDot(ref val3); } } return damageInfo; }); } else { Debug.LogWarning((object)"IL Failed:IgnitionTank_BurnOnProc0"); } } public static bool HasIgnitionTank(GameObject owner) { if (Object.op_Implicit((Object)(object)owner) && owner.GetComponent<CharacterBody>().inventory.GetItemCount(Items.StrengthenBurn) > 0) { return true; } return false; } } public class T2_Lepton { public static void Start() { } } public class LeptonNovaOnSpecialBoss : MonoBehaviour { public Transform root; public int LeptonCount; public void OnEnable() { } public void FixedUpdate() { } } public class T2_Predatory { [CompilerGenerated] private static class <>O { public static hook_AddTimedBuff_BuffDef_float <0>__CharacterBody_AddTimedBuff_BuffDef_float; } public static void Start() { //IL_0011: 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: Expected O, but got Unknown object obj = <>O.<0>__CharacterBody_AddTimedBuff_BuffDef_float; if (obj == null) { hook_AddTimedBuff_BuffDef_float val = CharacterBody_AddTimedBuff_BuffDef_float; <>O.<0>__CharacterBody_AddTimedBuff_BuffDef_float = val; obj = (object)val; } CharacterBody.AddTimedBuff_BuffDef_float += (hook_AddTimedBuff_BuffDef_float)obj; } private static void CharacterBody_AddTimedBuff_BuffDef_float(orig_AddTimedBuff_BuffDef_float orig, CharacterBody self, BuffDef buffDef, float duration) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, buffDef, duration); if ((Object)(object)buffDef == (Object)(object)Buffs.AttackSpeedOnCrit) { RefreshBuffs(self, buffDef.buffIndex, duration); } } public static void RefreshBuffs(CharacterBody self, BuffIndex buff, float duration) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) int num = 0; for (int i = 0; i < self.timedBuffs.Count; i++) { TimedBuff val = self.timedBuffs[i]; if (val.buffIndex == buff) { num++; if (val.timer < duration) { val.timer = duration; val.totalDuration = duration; } } } } } public class T2_RegenScrap { public class RegenScrapExtraItemTracker : MonoBehaviour { public bool isJuicy; public bool failedRoll; public bool inProgress; public int bonusItems; public bool addedDuration; public float duration; public static bool IsBubbetInstalled; public void FixBubbet(bool start, CharacterBody body, int Items) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_013a: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknow