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 StormItemBuffs v1.2.0
StormItemBuffs.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.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.Configuration; using HG; using IL.RoR2; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using R2API; using RoR2; using RoR2.Audio; using RoR2.Items; using RoR2.Orbs; using RoR2.Projectile; using StormItemBuffs.Properties; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("StormItemBuffs")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("StormItemBuffs")] [assembly: AssemblyTitle("StormItemBuffs")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: UnverifiableCode] namespace StormItemBuffs { 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 WConfig { public static ConfigFile ConfigFileUNSORTED = new ConfigFile(Paths.ConfigPath + "\\Wolfo.Storm_Item_Buffs.cfg", true); public static ConfigEntry<bool> cfg_White_Antler; public static ConfigEntry<bool> cfg_White_Antler_FIX; public static ConfigEntry<bool> cfg_White_Chronic; public static ConfigEntry<bool> cfg_White_Chronic_SPEED; public static ConfigEntry<bool> cfg_White_Chronic_FIX; public static ConfigEntry<bool> cfg_White_BolsterLantern; public static ConfigEntry<bool> cfg_White_BolsterLantern_FIX; public static ConfigEntry<bool> cfg_White_WarpedEcho; public static ConfigEntry<bool> cfg_White_WarpedEcho_FIX; public static ConfigEntry<bool> cfg_White_KnockbackFin; public static ConfigEntry<bool> cfg_White_KnockbackFin_FIX; public static ConfigEntry<bool> cfg_Green_Beads; public static ConfigEntry<bool> cfg_Green_Beads_FIX; public static ConfigEntry<bool> cfg_Green_NoxThorn; public static ConfigEntry<bool> cfg_Green_NoxThorn_FIX; public static ConfigEntry<bool> cfg_Green_UnstableTrans; public static ConfigEntry<bool> cfg_Green_UnstableTrans_FIX; public static ConfigEntry<bool> cfg_Green_LumShot; public static ConfigEntry<bool> cfg_Green_LumShot_FIX; public static ConfigEntry<bool> cfg_Red_WarBonds; public static ConfigEntry<bool> cfg_Red_WarBonds_FIX; public static ConfigEntry<bool> cfg_Red_Meteor; public static ConfigEntry<bool> cfg_Red_Nectar; public static ConfigEntry<bool> cfg_Red_Nectar_FIX; public static ConfigEntry<bool> cfg_Red_Boomerang; public static ConfigEntry<bool> cfg_Red_Sonch_FIX; public static ConfigEntry<bool> cfg_Elite_Twisted; public static ConfigEntry<bool> cfg_Elite_Gilded; public static void InitConfig() { cfg_White_Antler = ConfigFileUNSORTED.Bind<bool>("White", "Antler Shield", true, "Changes as described on store page."); cfg_White_Antler_FIX = ConfigFileUNSORTED.Bind<bool>("White - Fixes", "Antler Shield", true, "Fixes as described on store page."); cfg_White_Chronic = ConfigFileUNSORTED.Bind<bool>("White", "Chronic Expansion", true, "Changes as described on store page."); cfg_White_Chronic_SPEED = ConfigFileUNSORTED.Bind<bool>("White", "Chronic Expansion - Speed", true, "Make it speed instead of damage."); cfg_White_Chronic_FIX = ConfigFileUNSORTED.Bind<bool>("White - Fixes", "Chronic Expansion", true, "Fixes as described on store page."); cfg_White_BolsterLantern = ConfigFileUNSORTED.Bind<bool>("White", "Bolstering Lantern", true, "Changes as described on store page."); cfg_White_BolsterLantern_FIX = ConfigFileUNSORTED.Bind<bool>("White - Fix", "Bolstering Lantern", true, "Fixes not working on enemy."); cfg_White_KnockbackFin = ConfigFileUNSORTED.Bind<bool>("White", "Knockback Fin", true, "Buffs as described on store page."); cfg_White_KnockbackFin_FIX = ConfigFileUNSORTED.Bind<bool>("White - Fixes", "Knockback Fin", true, "Fixes as described on store page."); cfg_White_WarpedEcho = ConfigFileUNSORTED.Bind<bool>("White", "Warped Echo", true, "Buffs as described on store page."); cfg_White_WarpedEcho_FIX = ConfigFileUNSORTED.Bind<bool>("White - Fixes", "Warped Echo", true, "Fixes as described on store page."); cfg_Green_Beads = ConfigFileUNSORTED.Bind<bool>("Green", "Prayer Beads", true, "Buffs as described on store page."); cfg_Green_Beads_FIX = ConfigFileUNSORTED.Bind<bool>("Green - Fixes", "Prayer Beads", true, "Fixes as described on store page."); cfg_Green_NoxThorn = ConfigFileUNSORTED.Bind<bool>("Green", "Noxious Thorn", true, "Buffs as described on store page."); cfg_Green_NoxThorn_FIX = ConfigFileUNSORTED.Bind<bool>("Green - Fixes", "Noxious Thorn", true, "Fixes as described on store page."); cfg_Green_UnstableTrans = ConfigFileUNSORTED.Bind<bool>("Green", "Unstable Transmitter", true, "Buffs as described on store page."); cfg_Green_UnstableTrans_FIX = ConfigFileUNSORTED.Bind<bool>("Green - Fixes", "Unstable Transmitter", true, "Fixes as described on store page."); cfg_Green_LumShot = ConfigFileUNSORTED.Bind<bool>("Green", "Luminous Shot", true, "Buffs as described on store page."); cfg_Green_LumShot_FIX = ConfigFileUNSORTED.Bind<bool>("Green - Fixes", "Luminous Shot", true, "Fixes as described on store page."); cfg_Red_WarBonds_FIX = ConfigFileUNSORTED.Bind<bool>("Red - Fixes", "War Bonds", true, "Fix giving 25 less gold than intended."); cfg_Red_WarBonds = ConfigFileUNSORTED.Bind<bool>("Red", "War Bonds", true, "Buffs as described on store page. Golden Gun."); cfg_Red_Meteor = ConfigFileUNSORTED.Bind<bool>("Red", "Runic Lens", true, "Uncapped as described on store page."); cfg_Red_Nectar = ConfigFileUNSORTED.Bind<bool>("Red", "Growth Nectar", true, "Buffs as described on store page."); cfg_Red_Nectar_FIX = ConfigFileUNSORTED.Bind<bool>("Red - Fixes", "Growth Nectar", true, "Fixes as described on store page."); cfg_Red_Sonch_FIX = ConfigFileUNSORTED.Bind<bool>("Red - Fixes", "Sonorous Whispers", true, "Fix it being 3% at one stack instead of 4% that they said it would be."); cfg_Red_Boomerang = ConfigFileUNSORTED.Bind<bool>("Red", "Electric Boomerang", true, "Changes as described on store page."); cfg_Elite_Twisted = ConfigFileUNSORTED.Bind<bool>("Elite", "Twisted Elite", true, "Nerfs as described on store page."); cfg_Elite_Gilded = ConfigFileUNSORTED.Bind<bool>("Elite", "Gilded Elite", true, "Nerfs as described on store page."); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Wolfo.StormItemBuffs", "StormItemBuffs", "1.2.0")] public class StormItemBuffs : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__5_0; public static Func<Instruction, bool> <>9__5_1; public static Func<Instruction, bool> <>9__5_2; public static Func<Instruction, bool> <>9__6_0; public static Func<Instruction, bool> <>9__7_0; public static Func<Instruction, bool> <>9__7_2; public static Func<DamageInfo, DamageInfo, GameObject, DamageInfo> <>9__7_1; public static Func<Instruction, bool> <>9__8_3; public static Func<Instruction, bool> <>9__8_0; public static Func<Instruction, bool> <>9__8_1; public static Func<float, DamageInfo, float> <>9__8_2; public static Func<Instruction, bool> <>9__9_3; public static Func<Instruction, bool> <>9__9_0; public static Func<Instruction, bool> <>9__9_1; public static Func<float, HealthComponent, float> <>9__9_2; public static Func<Instruction, bool> <>9__10_2; public static Func<Instruction, bool> <>9__10_0; public static Func<float, HealthComponent, float> <>9__10_1; public static Func<Instruction, bool> <>9__11_0; public static Func<Instruction, bool> <>9__11_2; public static Func<DamageInfo, DamageInfo> <>9__11_1; public static Func<Instruction, bool> <>9__12_0; public static Func<Instruction, bool> <>9__12_5; public static Func<bool, bool> <>9__12_1; public static Func<Instruction, bool> <>9__12_2; public static Func<Instruction, bool> <>9__12_3; public static Func<bool, CharacterBody, bool> <>9__12_4; public static Func<Instruction, bool> <>9__14_6; public static Func<Instruction, bool> <>9__14_0; public static Func<int, int> <>9__14_1; public static Func<Instruction, bool> <>9__14_2; public static Func<Instruction, bool> <>9__14_3; public static Func<Instruction, bool> <>9__14_4; public static Func<float, CharacterBody, float> <>9__14_5; public static Func<Instruction, bool> <>9__17_1; public static Func<Instruction, bool> <>9__17_0; public static Func<EliteRules, bool> <>9__21_1; public static Action <>9__21_0; public static Func<Instruction, bool> <>9__22_1; public static Func<Instruction, bool> <>9__22_0; public static Func<Instruction, bool> <>9__23_1; public static Func<float, DamageReport, float> <>9__23_0; public static Func<Instruction, bool> <>9__25_4; public static Func<float, DamageInfo, float> <>9__25_0; public static Func<Instruction, bool> <>9__25_1; public static Func<DifficultyIndex, DamageInfo, DifficultyIndex> <>9__25_2; public static Func<Instruction, bool> <>9__25_5; public static Func<Instruction, bool> <>9__25_3; public static Func<Instruction, bool> <>9__27_2; public static Func<Instruction, bool> <>9__27_0; public static Func<float, CharacterBody, float> <>9__27_1; public static Func<Instruction, bool> <>9__28_0; public static Func<Instruction, bool> <>9__28_2; public static Func<Instruction, bool> <>9__28_1; public static Func<Instruction, bool> <>9__29_2; public static Func<Instruction, bool> <>9__29_0; public static Func<float, DamageInfo, float> <>9__29_1; public static Func<Instruction, bool> <>9__31_1; public static Func<Instruction, bool> <>9__31_0; public static Func<Instruction, bool> <>9__33_2; public static Func<Instruction, bool> <>9__33_0; public static Func<Instruction, bool> <>9__33_1; public static Func<Instruction, bool> <>9__34_7; public static Func<Instruction, bool> <>9__34_0; public static Func<Instruction, bool> <>9__34_1; public static Func<CharacterBody, CharacterBody> <>9__34_2; public static Func<Instruction, bool> <>9__34_3; public static Func<Instruction, bool> <>9__34_4; public static Func<Instruction, bool> <>9__34_5; public static Func<LightningOrb, DamageInfo, CharacterBody, LightningOrb> <>9__34_6; public static Func<Instruction, bool> <>9__36_2; public static Func<Instruction, bool> <>9__36_0; public static Func<float, CharacterBody, float> <>9__36_1; public static Func<Instruction, bool> <>9__38_9; public static Func<Instruction, bool> <>9__38_0; public static Func<Instruction, bool> <>9__38_1; public static Func<Instruction, bool> <>9__38_2; public static Func<Instruction, bool> <>9__38_3; public static Func<Instruction, bool> <>9__38_4; public static Func<CharacterBody, DamageInfo, CharacterBody> <>9__38_5; public static Func<Instruction, bool> <>9__38_6; public static Func<Instruction, bool> <>9__38_7; public static Func<CharacterMotor, float, float> <>9__38_8; public static Func<Instruction, bool> <>9__39_2; public static Func<float, float> <>9__39_0; public static Func<Instruction, bool> <>9__39_1; public static StatHookEventHandler <>9__40_0; public static Func<Instruction, bool> <>9__41_1; public static Func<int, int> <>9__41_0; public static Func<Instruction, bool> <>9__42_6; public static Func<Instruction, bool> <>9__42_0; public static Func<Instruction, bool> <>9__42_1; public static Func<float, HealthComponent, float> <>9__42_2; public static Func<Instruction, bool> <>9__42_3; public static Func<float, float> <>9__42_4; public static Func<Instruction, bool> <>9__42_5; public static Func<Instruction, bool> <>9__44_0; public static Func<Instruction, bool> <>9__44_2; public static Func<int, CharacterBody, int> <>9__44_1; public static Func<Instruction, bool> <>9__45_2; public static Func<Instruction, bool> <>9__45_0; public static Func<Instruction, bool> <>9__45_1; public static Func<Instruction, bool> <>9__46_5; public static Func<Instruction, bool> <>9__46_0; public static Func<Instruction, bool> <>9__46_1; public static Func<float, CharacterBody, float> <>9__46_2; public static Func<Instruction, bool> <>9__46_3; public static Func<float, CharacterBody, float> <>9__46_4; public static StatHookEventHandler <>9__48_0; public static StatHookEventHandler <>9__49_0; public static StatHookEventHandler <>9__50_0; internal bool <FixSonchWhisperChance>b__5_0(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "ResetChest"); } internal bool <FixSonchWhisperChance>b__5_1(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_isElite"); } internal bool <FixSonchWhisperChance>b__5_2(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 2f); } internal bool <LanternTeamFix>b__6_0(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.TeamComponent", "get_teamIndex"); } internal bool <LumShot_TryProc>b__7_0(Instruction x) { return ILPatternMatchingExt.MatchLdstr(x, "Prefabs/Effects/IncreasePrimaryDamageImpact"); } internal bool <LumShot_TryProc>b__7_2(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.HealthComponent", "TakeDamage"); } internal DamageInfo <LumShot_TryProc>b__7_1(DamageInfo val, DamageInfo og, GameObject victim) { og.attacker.GetComponent<CharacterBody>().IncreasePrimaryDamageReset(); GlobalEventManager.instance.ProcessHitEnemy(val, victim); return val; } internal bool <LUCK_FIN>b__8_3(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "KnockBackHitEnemies"); } internal bool <LUCK_FIN>b__8_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 7.5f); } internal bool <LUCK_FIN>b__8_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0f); } internal float <LUCK_FIN>b__8_2(float val, DamageInfo self) { if (Object.op_Implicit((Object)(object)self.attacker)) { CharacterBody component = self.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.master)) { return component.master.luck; } return val; } return val; } internal bool <LUCK_ANTLER>b__9_3(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.HealthComponent/ItemCounts", "antlerShield"); } internal bool <LUCK_ANTLER>b__9_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 50f); } internal bool <LUCK_ANTLER>b__9_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0f); } internal float <LUCK_ANTLER>b__9_2(float val, HealthComponent self) { if (!Object.op_Implicit((Object)(object)self.body) || !Object.op_Implicit((Object)(object)self.body.master)) { return val; } return self.body.master.luck; } internal bool <LUCK_NOX>b__10_2(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "TriggerEnemyDebuffs"); } internal bool <LUCK_NOX>b__10_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0f); } internal float <LUCK_NOX>b__10_1(float val, HealthComponent self) { if (!Object.op_Implicit((Object)(object)self.body) || !Object.op_Implicit((Object)(object)self.body.master)) { return val; } return self.body.master.luck; } internal bool <Chronic0Proc>b__11_0(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "LowerHealthHigherDamageBuff"); } internal bool <Chronic0Proc>b__11_2(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.DamageInfo", "procCoefficient"); } internal DamageInfo <Chronic0Proc>b__11_1(DamageInfo damageInfo) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); int itemCount = component.inventory.GetItemCount(Items.Seed); if (component.inventory.GetItemCount(Items.IncreaseDamageOnMultiKill) > 0) { component.AddIncreasedDamageMultiKillTime(); } return damageInfo; } internal bool <GrowthNectarTimerThing>b__12_0(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff"); } internal bool <GrowthNectarTimerThing>b__12_5(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff"); } internal bool <GrowthNectarTimerThing>b__12_1(bool numberdy) { return false; } internal bool <GrowthNectarTimerThing>b__12_2(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff"); } internal bool <GrowthNectarTimerThing>b__12_3(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff"); } internal bool <GrowthNectarTimerThing>b__12_4(bool result, CharacterBody characterBody) { //IL_000f: 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) if (!result) { EntitySoundManager.EmitSoundServer(NectarSound.index, characterBody.networkIdentity); EntitySoundManager.EmitSoundServer(NectarSound.index, characterBody.networkIdentity); } return false; } internal bool <ChronicFixNOBUFF>b__14_6(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "IncreaseDamageBuff"); } internal bool <ChronicFixNOBUFF>b__14_0(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 5); } internal int <ChronicFixNOBUFF>b__14_1(int val) { return val + 1; } internal bool <ChronicFixNOBUFF>b__14_2(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 1); } internal bool <ChronicFixNOBUFF>b__14_3(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 1); } internal bool <ChronicFixNOBUFF>b__14_4(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.CharacterBody", "baseDamage"); } internal float <ChronicFixNOBUFF>b__14_5(float damage, CharacterBody body) { damage += body.levelDamage * (body.level - 1f); return damage; } internal bool <Chronic4Kill>b__17_1(Instruction x) { return ILPatternMatchingExt.MatchStfld(x, "RoR2.CharacterBody", "increasedDamageKillTimer"); } internal bool <Chronic4Kill>b__17_0(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 5); } internal void <GildedTierFix>b__21_0() { Debug.LogWarning((object)"Gilded Elite tier 1.5x"); if (CombatDirector.eliteTiers.Length >= 6) { CombatDirector.eliteTiers[1].isAvailable = (EliteRules rules) => CombatDirector.NotEliteOnlyArtifactActive() && (int)rules == 0; CombatDirector.eliteTiers[3].costMultiplier = 9f; CombatDirector.eliteTiers[3].eliteTypes = (EliteDef[])(object)new EliteDef[1] { Elites.Aurelionite }; } } internal bool <GildedTierFix>b__21_1(EliteRules rules) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Invalid comparison between Unknown and I4 return CombatDirector.NotEliteOnlyArtifactActive() && (int)rules == 0; } internal bool <NoxThornChance>b__22_1(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "TriggerEnemyDebuffs"); } internal bool <NoxThornChance>b__22_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 25f); } internal bool <EchoNoFuckShieldHard>b__23_1(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.DamageReport", "damageDealt"); } internal float <EchoNoFuckShieldHard>b__23_0(float value, DamageReport damage) { if (damage.damageInfo.delayedDamageSecondHalf) { return -1f; } return value; } internal bool <EchoArmorAndE8>b__25_4(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_armor"); } internal float <EchoArmorAndE8>b__25_0(float value, DamageInfo damage) { if (damage.delayedDamageSecondHalf) { return 0f; } return value; } internal bool <EchoArmorAndE8>b__25_1(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.Run", "get_selectedDifficulty"); } internal DifficultyIndex <EchoArmorAndE8>b__25_2(DifficultyIndex value, DamageInfo damage) { //IL_0010: 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_000d: 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) if (damage.delayedDamageSecondHalf) { return (DifficultyIndex)0; } return value; } internal bool <EchoArmorAndE8>b__25_5(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "DelayedDamageBuff"); } internal bool <EchoArmorAndE8>b__25_3(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0.5f); } internal bool <LumShotStatsIL>b__27_2(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.SkillLocator", "get_secondaryBonusStockSkill"); } internal bool <LumShotStatsIL>b__27_0(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.GenericSkill", "set_cooldownScale"); } internal float <LumShotStatsIL>b__27_1(float number, CharacterBody body) { if (Object.op_Implicit((Object)(object)body.inventory)) { int itemCount = body.inventory.GetItemCount(Items.IncreasePrimaryDamage); if (itemCount > 0) { number *= 0.85f; } } return number; } internal bool <NoGoldPerLevel>b__28_0(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "GoldOnStageStart"); } internal bool <NoGoldPerLevel>b__28_2(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "GoldOnStageStart"); } internal bool <NoGoldPerLevel>b__28_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 1.5f); } internal bool <WarBondsDamage>b__29_2(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_canPerformBackstab"); } internal bool <WarBondsDamage>b__29_0(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.DamageInfo", "damage"); } internal float <WarBondsDamage>b__29_1(float flot, DamageInfo damageInfo) { if (flot > 0f) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); int buffCount = component.GetBuffCount(WarBondsBuff); if (buffCount > 0) { flot *= 1f + (float)buffCount * 0.03f; } } return flot; } internal bool <LowerLanternDamage>b__31_1(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "LowerHealthHigherDamageBuff"); } internal bool <LowerLanternDamage>b__31_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0.2f); } internal bool <LanterHealthVal>b__33_2(Instruction x) { return ILPatternMatchingExt.MatchLdcR8(x, 0.5); } internal bool <LanterHealthVal>b__33_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR8(x, 0.5); } internal bool <LanterHealthVal>b__33_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR8(x, 0.5); } internal bool <NerfTwistedElites>b__34_7(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "EliteBeadCorruption"); } internal bool <NerfTwistedElites>b__34_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0.025f); } internal bool <NerfTwistedElites>b__34_1(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_teamComponent"); } internal CharacterBody <NerfTwistedElites>b__34_2(CharacterBody body) { body.ClearTimedBuffs(Buffs.EliteBeadCorruption); return body; } internal bool <NerfTwistedElites>b__34_3(Instruction x) { return ILPatternMatchingExt.MatchStfld(x, "RoR2.Orbs.LightningOrb", "procCoefficient"); } internal bool <NerfTwistedElites>b__34_4(Instruction x) { return ILPatternMatchingExt.MatchStfld(x, "RoR2.Orbs.LightningOrb", "range"); } internal bool <NerfTwistedElites>b__34_5(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.Orbs.OrbManager", "AddOrb"); } internal LightningOrb <NerfTwistedElites>b__34_6(LightningOrb orb, DamageInfo damageInfo, CharacterBody characterBody) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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) orb.bouncedObjects = new List<HealthComponent>(); orb.teamIndex = characterBody.teamComponent.teamIndex; HurtBox val = orb.PickNextTarget(damageInfo.position); if (Object.op_Implicit((Object)(object)val)) { ((Orb)orb).target = val; } else { ((Orb)orb).target = null; } return orb; } internal bool <LumShotWorkBetter>b__36_2(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_luminousShotReady"); } internal bool <LumShotWorkBetter>b__36_0(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.GenericSkill", "set_cooldownScale"); } internal float <LumShotWorkBetter>b__36_1(float number, CharacterBody body) { if (Object.op_Implicit((Object)(object)body.inventory)) { int itemCount = body.inventory.GetItemCount(Items.IncreasePrimaryDamage); if (itemCount > 0) { number *= 0.85f; } } return number; } internal bool <KnockMeUp>b__38_9(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "KnockBackHitEnemies"); } internal bool <KnockMeUp>b__38_0(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_isBoss"); } internal bool <KnockMeUp>b__38_1(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.CharacterBody", "isChampion"); } internal bool <KnockMeUp>b__38_2(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 7.5f); } internal bool <KnockMeUp>b__38_3(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "KnockUpHitEnemies"); } internal bool <KnockMeUp>b__38_4(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "KnockUpHitEnemies"); } internal CharacterBody <KnockMeUp>b__38_5(CharacterBody characterBody, DamageInfo damageInfo) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0042: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0060: 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_0078: Expected O, but got Unknown float damage = Util.OnHitProcDamage(damageInfo.damage, 0f, KnockbackFinDamage); DamageInfo val = new DamageInfo { damage = damage, damageColorIndex = (DamageColorIndex)3, damageType = DamageTypeCombo.op_Implicit((DamageType)0), attacker = damageInfo.attacker, crit = damageInfo.crit, force = Vector3.zero, inflictor = null, position = damageInfo.position, procCoefficient = 0f }; characterBody.healthComponent.TakeDamage(val); return characterBody; } internal bool <KnockMeUp>b__38_6(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 5f); } internal bool <KnockMeUp>b__38_7(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.CharacterMotor", "mass"); } internal float <KnockMeUp>b__38_8(CharacterMotor motor, float mass) { if (motor.body.isChampion && motor.body.isBoss) { return motor.mass * mass * 0.1f; } if (motor.body.isChampion) { return motor.mass * mass * 0.4f; } return motor.mass * mass; } internal bool <BetterUnstableTransmitter>b__39_2(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 3.5f); } internal float <BetterUnstableTransmitter>b__39_0(float mass) { return mass + 4f; } internal bool <BetterUnstableTransmitter>b__39_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 25f); } internal void <LumShotStats>b__40_0(CharacterBody body, StatHookEventArgs args) { if (!((Object)(object)body.inventory != (Object)null)) { return; } int itemCount = body.inventory.GetItemCount(Items.IncreasePrimaryDamage); if (itemCount > 0) { float num = Mathf.Pow(0.85f, (float)itemCount); args.secondaryCooldownMultAdd += num; if (Object.op_Implicit((Object)(object)body.skillLocator.secondaryBonusStockSkill)) { GenericSkill secondaryBonusStockSkill = body.skillLocator.secondaryBonusStockSkill; secondaryBonusStockSkill.cooldownScale *= num; } } } internal bool <NoMoreBuffMaxIncrease>b__41_1(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 4); } internal int <NoMoreBuffMaxIncrease>b__41_0(int number) { return 5; } internal bool <BetterAntlerReflect>b__42_6(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.HealthComponent/ItemCounts", "antlerShield"); } internal bool <BetterAntlerReflect>b__42_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 50f); } internal bool <BetterAntlerReflect>b__42_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 10f); } internal float <BetterAntlerReflect>b__42_2(float damage, HealthComponent healthComponent) { float num = (float)healthComponent.itemCounts.antlerShield * 4f + 4f; if (damage > healthComponent.body.damage * num) { damage = healthComponent.body.damage * num; } return damage; } internal bool <BetterAntlerReflect>b__42_3(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.HealthComponent/ItemCounts", "antlerShield"); } internal float <BetterAntlerReflect>b__42_4(float itemCount) { return 1f; } internal bool <BetterAntlerReflect>b__42_5(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0.3f); } internal bool <MoreGrowthNectarCanditates>b__44_0(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff"); } internal bool <MoreGrowthNectarCanditates>b__44_2(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff"); } internal int <MoreGrowthNectarCanditates>b__44_1(int number, CharacterBody body) { if (Object.op_Implicit((Object)(object)body.inventory)) { if (body.inventory.GetItemCount(Items.HealWhileSafe) > 0 && body.outOfDanger) { number++; } if (body.inventory.GetItemCount(Items.SprintArmor) > 0 && body.isSprinting) { number++; } if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<IcicleBodyBehavior>()) && ((Component)body).GetComponent<IcicleBodyBehavior>().icicleAura.icicleLifetimes.Count > 0) { number++; } } return number; } internal bool <UncapMeteor>b__45_2(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "MeteorAttackOnHighDamage"); } internal bool <UncapMeteor>b__45_0(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 50f); } internal bool <UncapMeteor>b__45_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 75f); } internal bool <ChronicExpansionFixBuff>b__46_5(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "IncreaseDamageBuff"); } internal bool <ChronicExpansionFixBuff>b__46_0(Instruction x) { return ILPatternMatchingExt.MatchLdcI4(x, 2); } internal bool <ChronicExpansionFixBuff>b__46_1(Instruction x) { return ILPatternMatchingExt.MatchLdcR4(x, 0.01f); } internal float <ChronicExpansionFixBuff>b__46_2(float damage, CharacterBody body) { float num = body.inventory.GetItemCount(Items.IncreaseDamageOnMultiKill); float num2 = body.GetBuffCount(Buffs.IncreaseDamageBuff); int num3 = (int)num + 2; return ((0.1f + num * 0.2f) / (float)num3 + (float)num3 * 0.01f - num2 * 0.01f) * num2; } internal bool <ChronicExpansionFixBuff>b__46_3(Instruction x) { return ILPatternMatchingExt.MatchLdfld(x, "RoR2.CharacterBody", "baseDamage"); } internal float <ChronicExpansionFixBuff>b__46_4(float damage, CharacterBody body) { damage += body.levelDamage * (body.level - 1f); return damage; } internal void <LanternSpeed>b__48_0(CharacterBody sender, StatHookEventArgs args) { if ((Object)(object)sender.inventory != (Object)null && sender.HasBuff(Buffs.LowerHealthHigherDamageBuff)) { args.moveSpeedMultAdd += (float)sender.inventory.GetItemCount(Items.LowerHealthHigherDamage) * 0.2f; } } internal void <AntlerArmor>b__49_0(CharacterBody sender, StatHookEventArgs args) { if ((Object)(object)sender.inventory != (Object)null) { args.armorAdd += (float)sender.inventory.GetItemCount(Items.NegateAttack) * 6f; } } internal void <WarBondsStats>b__50_0(CharacterBody sender, StatHookEventArgs args) { //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)sender.inventory != (Object)null)) { return; } int itemCount = sender.inventory.GetItemCount(Items.GoldOnStageStart); if (itemCount > 0 && Object.op_Implicit((Object)(object)Stage.instance)) { int num = 400; int num2 = (int)(sender.master.money * 10 / Run.instance.GetDifficultyScaledCost(num, Stage.instance.entryDifficultyCoefficient)); if (num2 > 10) { num2 = 10; } sender.SetBuffCount(WarBondsBuff.buffIndex, num2); args.moveSpeedMultAdd += 0.04f * (float)num2; args.attackSpeedMultAdd += 0.03f * (float)num2; } else { sender.SetBuffCount(WarBondsBuff.buffIndex, 0); } } } public static BuffDef WarBondsBuff = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC2/Child/bdChildFrolicCooldown.asset").WaitForCompletion(); public static NetworkSoundEventDef NectarSound = Addressables.LoadAssetAsync<NetworkSoundEventDef>((object)"RoR2/DLC2/nseBoostAllStats.asset").WaitForCompletion(); public static float KnockbackFinDamage = 0.8f; public static float KnockbackFinCooldown = 0.5f; public void Awake() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //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_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Expected O, but got Unknown //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Expected O, but got Unknown //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Expected O, but got Unknown //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Expected O, but got Unknown //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Expected O, but got Unknown //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Expected O, but got Unknown //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Expected O, but got Unknown //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Expected O, but got Unknown //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Expected O, but got Unknown //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Expected O, but got Unknown //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Expected O, but got Unknown //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Expected O, but got Unknown //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Expected O, but got Unknown //IL_033d: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Expected O, but got Unknown //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Expected O, but got Unknown //IL_03db: Unknown result type (might be due to invalid IL or missing references) //IL_03e5: Expected O, but got Unknown //IL_03b3: Unknown result type (might be due to invalid IL or missing references) //IL_03bd: Expected O, but got Unknown //IL_0471: Unknown result type (might be due to invalid IL or missing references) //IL_047b: Expected O, but got Unknown //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_048d: Expected O, but got Unknown //IL_0493: Unknown result type (might be due to invalid IL or missing references) //IL_0498: Unknown result type (might be due to invalid IL or missing references) //IL_04c4: Unknown result type (might be due to invalid IL or missing references) //IL_04f0: Unknown result type (might be due to invalid IL or missing references) //IL_0422: Unknown result type (might be due to invalid IL or missing references) //IL_042c: Expected O, but got Unknown //IL_0434: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Expected O, but got Unknown //IL_054d: Unknown result type (might be due to invalid IL or missing references) //IL_0557: Expected O, but got Unknown //IL_0513: Unknown result type (might be due to invalid IL or missing references) //IL_051d: Expected O, but got Unknown //IL_0598: Unknown result type (might be due to invalid IL or missing references) //IL_05a2: Expected O, but got Unknown //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_05de: Expected O, but got Unknown //IL_0769: Unknown result type (might be due to invalid IL or missing references) //IL_076e: Unknown result type (might be due to invalid IL or missing references) //IL_0782: Unknown result type (might be due to invalid IL or missing references) //IL_0787: Unknown result type (might be due to invalid IL or missing references) //IL_079b: Unknown result type (might be due to invalid IL or missing references) //IL_07a0: Unknown result type (might be due to invalid IL or missing references) //IL_07b4: Unknown result type (might be due to invalid IL or missing references) //IL_07b9: Unknown result type (might be due to invalid IL or missing references) //IL_07cd: Unknown result type (might be due to invalid IL or missing references) //IL_07d2: Unknown result type (might be due to invalid IL or missing references) //IL_07e6: Unknown result type (might be due to invalid IL or missing references) //IL_07eb: Unknown result type (might be due to invalid IL or missing references) //IL_05fa: Unknown result type (might be due to invalid IL or missing references) //IL_0604: Expected O, but got Unknown //IL_0618: Unknown result type (might be due to invalid IL or missing references) //IL_061f: Expected O, but got Unknown //IL_064c: Unknown result type (might be due to invalid IL or missing references) //IL_065b: Unknown result type (might be due to invalid IL or missing references) //IL_068c: Unknown result type (might be due to invalid IL or missing references) //IL_0691: Unknown result type (might be due to invalid IL or missing references) //IL_0696: Unknown result type (might be due to invalid IL or missing references) //IL_06d7: Unknown result type (might be due to invalid IL or missing references) //IL_06dc: Unknown result type (might be due to invalid IL or missing references) //IL_06ec: Unknown result type (might be due to invalid IL or missing references) //IL_06f1: Unknown result type (might be due to invalid IL or missing references) //IL_085f: Unknown result type (might be due to invalid IL or missing references) //IL_086b: Unknown result type (might be due to invalid IL or missing references) //IL_0875: Expected O, but got Unknown //IL_0825: Unknown result type (might be due to invalid IL or missing references) //IL_082f: Expected O, but got Unknown //IL_0812: Unknown result type (might be due to invalid IL or missing references) //IL_081c: Expected O, but got Unknown //IL_088f: Unknown result type (might be due to invalid IL or missing references) //IL_0899: Expected O, but got Unknown //IL_08c8: Unknown result type (might be due to invalid IL or missing references) //IL_08d2: Expected O, but got Unknown //IL_08d8: Unknown result type (might be due to invalid IL or missing references) //IL_08dd: Unknown result type (might be due to invalid IL or missing references) //IL_0971: Unknown result type (might be due to invalid IL or missing references) //IL_0972: Unknown result type (might be due to invalid IL or missing references) //IL_097c: Unknown result type (might be due to invalid IL or missing references) //IL_0981: Unknown result type (might be due to invalid IL or missing references) //IL_098f: Unknown result type (might be due to invalid IL or missing references) //IL_0990: Unknown result type (might be due to invalid IL or missing references) //IL_099a: Unknown result type (might be due to invalid IL or missing references) //IL_099f: Unknown result type (might be due to invalid IL or missing references) //IL_09ad: Unknown result type (might be due to invalid IL or missing references) //IL_09ae: Unknown result type (might be due to invalid IL or missing references) //IL_09b8: Unknown result type (might be due to invalid IL or missing references) //IL_09bd: Unknown result type (might be due to invalid IL or missing references) //IL_09ea: Unknown result type (might be due to invalid IL or missing references) //IL_0917: Unknown result type (might be due to invalid IL or missing references) //IL_091c: Unknown result type (might be due to invalid IL or missing references) BurnEffectController.HandleDestroy += new hook_HandleDestroy(BurnEffectController_HandleDestroy); WConfig.InitConfig(); if (WConfig.cfg_White_WarpedEcho_FIX.Value) { HealthComponent.TriggerOneShotProtection += new hook_TriggerOneShotProtection(EchoOSP); HealthComponent.TakeDamageProcess += new Manipulator(EchoArmorAndE8); if (WConfig.cfg_White_WarpedEcho.Value) { CharacterBody.SecondHalfOfDelayedDamage += new hook_SecondHalfOfDelayedDamage(EchoNoBypass); CharacterBody.OnTakeDamageServer += new Manipulator(EchoNoFuckShieldHard); Texture2D val = new Texture2D(128, 128, (TextureFormat)12, false); ImageConversion.LoadImage(val, Resources.texBuffDelayedDamageOnIcon, true); ((Texture)val).filterMode = (FilterMode)1; Sprite iconSprite = Sprite.Create(val, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f)); BuffDef val2 = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC2/Items/DelayedDamage/bdDelayedDamageDebuff.asset").WaitForCompletion(); val2.isHidden = false; val2.canStack = true; val2.iconSprite = iconSprite; } } if (WConfig.cfg_White_BolsterLantern_FIX.Value) { CharacterBody.UpdateLowerHealthHigherDamage += new Manipulator(LanternTeamFix); if (WConfig.cfg_White_BolsterLantern.Value) { if (WConfig.cfg_White_Chronic_SPEED.Value) { LanternSpeed(); HealthComponent.TakeDamageProcess += new Manipulator(LowerLanternDamage); LanguageAPI.Add("ITEM_LOWERHEALTHHIGHERDAMAGE_PICKUP", "Bonus speed when hurt.", "en"); LanguageAPI.Add("ITEM_LOWERHEALTHHIGHERDAMAGE_DESC", "When below <style=cIsHealth>90% health</style> increase movement speed by <style=cIsUtility>20%</style> <style=cStack>(+20% per stack)</style>.", "en"); } else { LanguageAPI.Add("ITEM_LOWERHEALTHHIGHERDAMAGE_DESC", "When below <style=cIsHealth>90% health</style> receive a damage increase of <style=cIsDamage>20%</style> <style=cStack>(+20% damage bonus per item stack)</style>.", "en"); } CharacterBody.UpdateLowerHealthHigherDamage += new Manipulator(LanterHealthVal); } } if (WConfig.cfg_White_Antler_FIX.Value) { if (WConfig.cfg_White_Antler.Value) { AntlerArmor(); HealthComponent.TakeDamageProcess += new Manipulator(BetterAntlerReflect); LanguageAPI.Add("ITEM_NEGATEATTACK_PICKUP", "Reduces incoming damage a little and reflects it.", "en"); LanguageAPI.Add("ITEM_NEGATEATTACK_DESC", "<style=cIsHealing>Increase armor</style> by <style=cIsHealing>6</style> <style=cStack>(+6 per stack)</style>. Getting hit reflects <style=cIsUtility>100%</style> damage, limited to <style=cIsUtility>800%</style> <style=cStack>(+800% per stack)</style> of your damage, back to the attacker.", "en"); } else { HealthComponent.TakeDamageProcess += new Manipulator(LUCK_ANTLER); } } if (WConfig.cfg_White_Chronic_FIX.Value) { HealthComponent.TakeDamageProcess += new Manipulator(Chronic0Proc); if (WConfig.cfg_White_Chronic.Value) { CharacterBody.RecalculateStats += new Manipulator(ChronicExpansionFixBuff); CharacterBody.AddMultiKill += new hook_AddMultiKill(CapChronic); CharacterBody.AddMultiKill += new Manipulator(Chronic4Kill); CharacterBody.AddIncreasedDamageMultiKillTime += new hook_AddIncreasedDamageMultiKillTime(ChronicDuration); LanguageAPI.Add("ITEM_INCREASEDAMAGEONMULTIKILL_DESC", "Killing <style=cIsDamage>4</style> enemies grants a <style=cIsDamage>stacking damage buff</style>, increasing damage by <style=cIsDamage>10%</style> <style=cStack>(+2.5% per stack)</style> up to a maximimum of <style=cIsDamage>3</style> <style=cStack>(+1 per stack)</style> buffs or <style=cIsDamage>30%</style> <style=cStack>(+20% per stack)</style> damage. <style=cIsDamage>Resets</style> when outside of combat for 7s.", "en"); } else { CharacterBody.RecalculateStats += new Manipulator(ChronicFixNOBUFF); } } if (WConfig.cfg_White_KnockbackFin_FIX.Value) { GlobalEventManager.ProcessHitEnemy += new Manipulator(LUCK_FIN); if (WConfig.cfg_White_KnockbackFin.Value) { GlobalEventManager.ProcessHitEnemy += new Manipulator(KnockMeUp); GlobalEventManager.ProcessHitEnemy += new hook_ProcessHitEnemy(KnockMeDown); Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC2/Items/KnockBackHitEnemies/bdKnockDownHitEnemies.asset").WaitForCompletion().isHidden = true; LanguageAPI.Add("ITEM_KNOCKBACKHITENEMIES_DESC", "<style=cIsUtility>10%</style> <style=cStack>(+10% per stack)</style> chance on hit to knock enemies into or out of the air dealing <style=cIsDamage>80%</style> TOTAL damage. <style=cStack>(Height increases per stack)</style>.", "en"); } } if (WConfig.cfg_Green_NoxThorn_FIX.Value) { HealthComponent.TakeDamageProcess += new Manipulator(LUCK_NOX); if (WConfig.cfg_Green_NoxThorn.Value) { HealthComponent.TakeDamageProcess += new Manipulator(NoxThornChance); LanguageAPI.Add("ITEM_TRIGGERENEMYDEBUFFS_DESC", "<style=cIsDamage>37.5%</style> chance on getting hit to inflict <style=cIsDamage>2</style> <style=cStack>(+1 per stack)</style> stack of <style=cIsDamage>bleed</style> and <style=cIsDamage>2</style> <style=cStack>(+1 per stack)</style> of every other <style=cIsUtility>present stackable debuff</style> to every enemy in a <style=cIsDamage>30m</style> radius.", "en"); } CharacterBody.TriggerEnemyDebuffs += new hook_TriggerEnemyDebuffs(NoxiousThornFix); } if (WConfig.cfg_Green_LumShot_FIX.Value) { CharacterBody.AddIncreasePrimaryDamageStack += new hook_AddIncreasePrimaryDamageStack(FixLumShotWrongDamageStat); if (WConfig.cfg_Green_LumShot.Value) { CharacterBody.AddIncreasePrimaryDamageStack += new Manipulator(NoMoreBuffMaxIncrease); GlobalEventManager.ProcessHitEnemy += new Manipulator(LumShot_TryProc); LanguageAPI.Add("ITEM_INCREASEPRIMARYDAMAGE_DESC", "Using the secondary skill <style=cIsDamage>charges</style> the next primary attack with <style=cIsDamage>+80%</style> <style=cStack>(+80% per stack)</style> damage <style=cIsDamage>per second of secondary cooldown</style> up to <style=cIsDamage>5</style> times.", "en"); } } if (WConfig.cfg_Green_UnstableTrans_FIX.Value) { HealthComponent.UpdateLastHitTime += new hook_UpdateLastHitTime(TransmitterBeforeElixir); CharacterBody.RpcTeleportCharacterToSafety += new hook_RpcTeleportCharacterToSafety(TransmitterSFX); GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Items/TeleportOnLowHealth/PickupTeleportOnLowHealth.prefab").WaitForCompletion(); ((Component)val3.transform.GetChild(0)).transform.localPosition = new Vector3(0f, -0.1f, 0f); ((Component)val3.transform.GetChild(1)).transform.localPosition = new Vector3(0f, -0.1f, 0f); if (WConfig.cfg_Green_Beads.Value) { CharacterBody.RpcTeleportCharacterToSafety += new Manipulator(BetterUnstableTransmitter); LanguageAPI.Add("ITEM_TELEPORTONLOWHEALTH_DESC", "Falling below <style=cIsHealth>25% health</style> causes you to explode, dealing <style=cIsDamage>3500%</style> <style=cStack>(+700% per stack)</style> damage and teleports you to safety. This effect recharges after <style=cIsUtility>2</style> minutes <style=cStack>(-20% per stack)</style>.", "en"); } } if (WConfig.cfg_Green_Beads_FIX.Value) { CharacterBody.prayerBeadCalculateAppliedStats += new hook_prayerBeadCalculateAppliedStats(FixBreadBeadsInvasive); if (WConfig.cfg_Green_Beads.Value) { LanguageAPI.Add("ITEM_EXTRASTATSONLEVELUP_DESC", "Store an extra <style=cIsUtility>20%</style> <style=cStack>(+5% per stack)</style> of experience gained. Upon removal, increases <style=cIsHealing>max health</style>, <style=cIsHealing>regen</style>, and <style=cIsDamage>damage</style> by <style=cIsUtility>20%</style> <style=cStack>(+10% per stack)</style> of your <style=cIsUtility>leveling stats</style> based on stored experience.", "en"); } } if (WConfig.cfg_Red_Meteor.Value) { GlobalEventManager.ProcessHitEnemy += new Manipulator(UncapMeteor); LanguageAPI.Add("ITEM_METEORATTACKONHIGHDAMAGE_DESC", "On hit, <style=cIsDamage>5%</style> base chance <style=cIsDamage>+1%</style><style=cStack> (+1% per stack)</style> per 100% damage done chance, to summon a meteor on the target, dealing <style=cIsDamage>2000%</style> base damage <style=cIsDamage>+50%</style><style=cStack> (+50% per stack)</style> TOTAL damage.", "en"); } if (WConfig.cfg_Red_WarBonds_FIX.Value) { CharacterBody.Start += new hook_Start(FixWarBonds); if (WConfig.cfg_Red_WarBonds.Value) { CharacterBody.Start += new Manipulator(NoGoldPerLevel); WarBondsStats(); Texture2D val4 = new Texture2D(128, 128, (TextureFormat)12, false); ImageConversion.LoadImage(val4, Resources.WarBondsBuff, true); ((Texture)val4).filterMode = (FilterMode)1; Sprite iconSprite2 = Sprite.Create(val4, new Rect(0f, 0f, 128f, 128f), new Vector2(0.5f, 0.5f)); WarBondsBuff.iconSprite = iconSprite2; WarBondsBuff.buffColor = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue)); WarBondsBuff.isDebuff = false; WarBondsBuff.isCooldown = false; WarBondsBuff.isHidden = false; WarBondsBuff.canStack = true; WarBondsBuff.ignoreGrowthNectar = false; GameObject val5 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Items/GoldOnStageStart/PickupTreasuryDividends.prefab").WaitForCompletion(); Material val6 = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC2/Items/GoldOnStageStart/matGoldOnStageStartMetal.mat").WaitForCompletion(); ((Renderer)((Component)val5.transform.GetChild(0)).GetComponent<MeshRenderer>()).materials = (Material[])(object)new Material[2] { val6, val6 }; LanguageAPI.Add("ITEM_GOLDONSTAGESTART_PICKUP", "Increase attack and movement speed based on gold. Gain gold on stage start.", "en"); LanguageAPI.Add("ITEM_GOLDONSTAGESTART_DESC", "Gain upwards of a <style=cIsDamage>30% attack speed</style> and <style=cIsUtility>40% movement speed</style> boost based on current gold, capping at <style=cIsUtility>400 gold</style>. Gain <style=cIsUtility>120 <style=cStack>(+80 per stack)</style> gold</style> at the start of every stage. <style=cIsUtility>Scale with Time</style>", "en"); } } if (WConfig.cfg_Red_Nectar_FIX.Value) { Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/ElementalRings/bdElementalRingsReady.asset").WaitForCompletion().ignoreGrowthNectar = false; Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC1/ElementalRingVoid/bdElementalRingVoidReady.asset").WaitForCompletion().ignoreGrowthNectar = false; Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC1/BearVoid/bdBearVoidReady.asset").WaitForCompletion().ignoreGrowthNectar = false; Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC1/ImmuneToDebuff/bdImmuneToDebuffReady.asset").WaitForCompletion().ignoreGrowthNectar = false; Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/EliteHaunted/bdEliteHaunted.asset").WaitForCompletion().ignoreGrowthNectar = false; Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC2/bdBoostAllStatsBuff.asset").WaitForCompletion().startSfx = null; if (WConfig.cfg_Red_Nectar.Value) { CharacterBody.RecalculateStats += new Manipulator(MoreGrowthNectarCanditates); } CharacterBody.RecalculateStats += new Manipulator(GrowthNectarTimerThing); } if (WConfig.cfg_Red_Boomerang.Value) { GameObject val7 = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/StunAndPierceBoomerang"); val7.GetComponent<ProjectileDamage>().damageType.damageType = (DamageType)16777216; SetStateOnHurt.SetShockInternal += new hook_SetShockInternal(SetStateOnHurt_SetShockInternal); } if (WConfig.cfg_Red_Sonch_FIX.Value) { GlobalEventManager.OnCharacterDeath += new Manipulator(FixSonchWhisperChance); LanguageAPI.Add("ITEM_RESETCHESTS_DESC", "When a champion monster is killed it will always drop an item. All elites have a <style=cIsUtility>4%</style><style=cStack> (+1% per stack)</style> chance of dropping an item.", "en"); } if (WConfig.cfg_Elite_Twisted.Value) { GlobalEventManager.ProcessHitEnemy += new Manipulator(NerfTwistedElites); EliteDef val8 = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC2/Elites/EliteBead/edBead.asset").WaitForCompletion(); val8.healthBoostCoefficient = 18f; val8.damageBoostCoefficient = 7f; } if (WConfig.cfg_Elite_Gilded.Value) { Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC2/Elites/EliteAurelionite/edAurelionite.asset").WaitForCompletion().healthBoostCoefficient = 4f; } ((ResourceAvailability)(ref GameModeCatalog.availability)).CallWhenAvailable((Action)LateRunningMethod); Color colorShrineRewardJackpot = default(Color); ((Color)(ref colorShrineRewardJackpot))..ctor(0.3f, 1f, 0.1f, 1f); LegacyResourcesAPI.Load<GameObject>("Prefabs/networkedobjects/shrines/ShrineChance").GetComponent<ShrineChanceBehavior>().colorShrineRewardJackpot = colorShrineRewardJackpot; Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ShrineChance/ShrineChanceSandy Variant.prefab").WaitForCompletion().GetComponent<ShrineChanceBehavior>() .colorShrineRewardJackpot = colorShrineRewardJackpot; Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ShrineChance/ShrineChanceSnowy Variant.prefab").WaitForCompletion().GetComponent<ShrineChanceBehavior>() .colorShrineRewardJackpot = colorShrineRewardJackpot; ((Component)Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Items/IncreasePrimaryDamage/IncreasePrimaryDamageImpact.prefab").WaitForCompletion().transform.GetChild(0)).GetComponent<Light>().color = new Color(1f, 1f, 0f, 1f); } private void FixSonchWhisperChance(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00a2: 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.DLC2Content/Items", "ResetChest") }); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_isElite") }); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 2f) })) { val.Next.OpCode = OpCodes.Ldc_R4; val.Next.Operand = 3; } else { Debug.LogWarning((object)"IL Failed: FixSonchWhisperChance"); } } private void LanternTeamFix(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.TeamComponent", "get_teamIndex") })) { val.Index -= 2; val.RemoveRange(5); } else { Debug.LogWarning((object)"IL Failed: Lantern LanternTeamFix"); } } private void LumShot_TryProc(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) //IL_0079: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, "Prefabs/Effects/IncreasePrimaryDamageImpact") }); if (val2.TryGotoPrev((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.HealthComponent", "TakeDamage") })) { val2.Emit(OpCodes.Ldarg_1); val2.Emit(OpCodes.Ldarg_2); val2.EmitDelegate<Func<DamageInfo, DamageInfo, GameObject, DamageInfo>>((Func<DamageInfo, DamageInfo, GameObject, DamageInfo>)delegate(DamageInfo val, DamageInfo og, GameObject victim) { og.attacker.GetComponent<CharacterBody>().IncreasePrimaryDamageReset(); GlobalEventManager.instance.ProcessHitEnemy(val, victim); return val; }); } else { Debug.LogWarning((object)"IL Failed: LumShot_TryProc"); } } private void LUCK_FIN(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00a0: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "KnockBackHitEnemies") })) { val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 7.5f) }); val2.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0f) }); val2.Emit(OpCodes.Ldarg_1); val2.EmitDelegate<Func<float, DamageInfo, float>>((Func<float, DamageInfo, float>)delegate(float val, DamageInfo self) { if (Object.op_Implicit((Object)(object)self.attacker)) { CharacterBody component = self.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.master)) { return component.master.luck; } return val; } return val; }); } else { Debug.LogWarning((object)"IL Failed: Knockback Fin"); } } private void LUCK_ANTLER(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00a0: Unknown result type (might be due to invalid IL or missing references) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.HealthComponent/ItemCounts", "antlerShield") })) { val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 50f) }); val2.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0f) }); val2.Emit(OpCodes.Ldarg_0); val2.EmitDelegate<Func<float, HealthComponent, float>>((Func<float, HealthComponent, float>)((float val, HealthComponent self) => (!Object.op_Implicit((Object)(object)self.body) || !Object.op_Implicit((Object)(object)self.body.master)) ? val : self.body.master.luck)); } else { Debug.LogWarning((object)"IL Failed: LUCK ANTLER Chance"); } } private void LUCK_NOX(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 val2 = new ILCursor(il); if (val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "TriggerEnemyDebuffs") })) { val2.TryGotoPrev((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0f) }); val2.Emit(OpCodes.Ldarg_0); val2.EmitDelegate<Func<float, HealthComponent, float>>((Func<float, HealthComponent, float>)((float val, HealthComponent self) => (!Object.op_Implicit((Object)(object)self.body) || !Object.op_Implicit((Object)(object)self.body.master)) ? val : self.body.master.luck)); } else { Debug.LogWarning((object)"IL Failed: LUCK Nox Chance"); } } private void Chronic0Proc(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.DLC2Content/Buffs", "LowerHealthHigherDamageBuff") }); 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) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); int itemCount = component.inventory.GetItemCount(Items.Seed); if (component.inventory.GetItemCount(Items.IncreaseDamageOnMultiKill) > 0) { component.AddIncreasedDamageMultiKillTime(); } return damageInfo; }); } else { Debug.LogWarning((object)"IL Failed: Leeching Seed"); } } private void GrowthNectarTimerThing(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0118: 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.DLC2Content/Buffs", "BoostAllStatsBuff") }); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff") })) { int index = val.Index; val.Index = index + 1; val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool numberdy) => false)); val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff") }); val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "BoostAllStatsBuff") }); index = val.Index; val.Index = index + 1; val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<bool, CharacterBody, bool>>((Func<bool, CharacterBody, bool>)delegate(bool result, CharacterBody characterBody) { //IL_000f: 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) if (!result) { EntitySoundManager.EmitSoundServer(NectarSound.index, characterBody.networkIdentity); EntitySoundManager.EmitSoundServer(NectarSound.index, characterBody.networkIdentity); } return false; }); } else { Debug.LogWarning((object)"IL Failed: Growth Nectar"); } } private void TransmitterSFX(orig_RpcTeleportCharacterToSafety orig, CharacterBody self) { orig.Invoke(self); Util.PlaySound("Play_imp_attack_blink", ((Component)self).gameObject); Util.PlaySound("Play_imp_attack_blink", ((Component)self).gameObject); Util.PlaySound("Play_imp_attack_blink", ((Component)self).gameObject); } private void ChronicFixNOBUFF(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_00fb: 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) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "IncreaseDamageBuff") })) { val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 5) }); val2.EmitDelegate<Func<int, int>>((Func<int, int>)((int val) => val + 1)); val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1) }); val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1) }); val2.Next.OpCode = OpCodes.Ldc_I4; val2.Next.Operand = 5; val2.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.CharacterBody", "baseDamage") }); val2.Emit(OpCodes.Ldarg_0); val2.EmitDelegate<Func<float, CharacterBody, float>>((Func<float, CharacterBody, float>)delegate(float damage, CharacterBody body) { damage += body.levelDamage * (body.level - 1f); return damage; }); } else { Debug.LogWarning((object)"IL Failed: Chronic F"); } } private void FixLumShotWrongDamageStat(orig_AddIncreasePrimaryDamageStack orig, CharacterBody self) { orig.Invoke(self); int buffCount = self.GetBuffCount(Buffs.IncreasePrimaryDamageBuff); int itemCount = self.inventory.GetItemCount(Items.IncreasePrimaryDamage); if (WConfig.cfg_Green_LumShot.Value) { if (Object.op_Implicit((Object)(object)self.skillLocator.secondaryBonusStockSkill)) { float num = self.skillLocator.secondaryBonusStockSkill.baseRechargeInterval; if (num < 1f) { num = 1f; } self.luminousShotDamage = self.damage * (0.8f * num * (float)itemCount) * (float)buffCount; } } else { self.luminousShotDamage = self.damage * (1.25f + 0.25f * (float)itemCount) * (float)buffCount; } } private void ChronicDuration(orig_AddIncreasedDamageMultiKillTime orig, CharacterBody self) { orig.Invoke(self); self.increasedDamageKillTimer = 7f; } private void Chronic4Kill(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0088: 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", "increasedDamageKillTimer") })) { val.Prev.Operand = 7f; val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 5) }); val.Next.OpCode = OpCodes.Ldc_I4_4; } else { Debug.LogWarning((object)"IL Failed: Chronic kills"); } } public static void LateRunningMethod() { if (WConfig.cfg_White_KnockbackFin.Value) { Items.KnockBackHitEnemies.tags = Items.KnockBackHitEnemies.tags.Add((ItemTag)1); } if (WConfig.cfg_White_BolsterLantern.Value) { Items.LowerHealthHigherDamage.tags = Items.LowerHealthHigherDamage.tags.Remove((ItemTag)1); } if (WConfig.cfg_Green_Beads.Value) { Items.ExtraStatsOnLevelUp.tags = Items.ExtraStatsOnLevelUp.tags.Add((ItemTag)15, (ItemTag)2); Items.ExtraStatsOnLevelUp.tags = Items.ExtraStatsOnLevelUp.tags.Remove((ItemTag)3); } if (WConfig.cfg_White_Antler.Value) { Items.NegateAttack.tags = Items.NegateAttack.tags.Add((ItemTag)2); } Items.IncreaseDamageOnMultiKill.tags = Items.IncreaseDamageOnMultiKill.tags.Add((ItemTag)4); Items.DelayedDamage.tags = Items.DelayedDamage.tags.Add((ItemTag)4); Items.ExtraStatsOnLevelUp.tags = Items.ExtraStatsOnLevelUp.tags.Add((ItemTag)4); Items.ExtraShrineItem.tags = Items.ExtraShrineItem.tags.Add((ItemTag)4); Items.LowerPricedChests.tags = Items.LowerPricedChests.tags.Add((ItemTag)4); Items.GoldOnStageStart.tags = Items.GoldOnStageStart.tags.Add((ItemTag)4); Items.ResetChests.tags = Items.ResetChests.tags.Add((ItemTag)4); Items.BoostAllStats.tags = Items.BoostAllStats.tags.Add((ItemTag)4); DotController.GetDotDef((DotIndex)1).terminalTimedBuff = null; DotController.GetDotDef((DotIndex)1).terminalTimedBuffDuration = 0f; DotController.GetDotDef((DotIndex)7).terminalTimedBuff = null; DotController.GetDotDef((DotIndex)7).terminalTimedBuffDuration = 0f; } private static void BurnEffectController_HandleDestroy(orig_HandleDestroy orig, BurnEffectController self) { Object.Destroy((Object)(object)self); } private void SetStateOnHurt_SetShockInternal(orig_SetShockInternal orig, SetStateOnHurt self, float duration) { if (duration == 1f) { orig.Invoke(self, 5f); } else { orig.Invoke(self, duration); } } private void GildedTierFix() { RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { Debug.LogWarning((object)"Gilded Elite tier 1.5x"); if (CombatDirector.eliteTiers.Length >= 6) { CombatDirector.eliteTiers[1].isAvailable = (EliteRules rules) => CombatDirector.NotEliteOnlyArtifactActive() && (int)rules == 0; CombatDirector.eliteTiers[3].costMultiplier = 9f; CombatDirector.eliteTiers[3].eliteTypes = (EliteDef[])(object)new EliteDef[1] { Elites.Aurelionite }; } }); } private void NoxThornChance(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", "TriggerEnemyDebuffs") })) { val.TryGotoPrev((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 25f) }); val.Next.Operand = 37.5f; } else { Debug.LogWarning((object)"IL Failed: Nox Chance"); } } private void EchoNoFuckShieldHard(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.MatchLdfld(x, "RoR2.DamageReport", "damageDealt") })) { val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<float, DamageReport, float>>((Func<float, DamageReport, float>)((float value, DamageReport damage) => damage.damageInfo.delayedDamageSecondHalf ? (-1f) : value)); } else { Debug.LogWarning((object)"IL Failed: Warped Echo SHIELD"); } } private void EchoNoBypass(orig_SecondHalfOfDelayedDamage orig, CharacterBody self, DamageInfo halfDamage) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) if (((Enum)halfDamage.damageType.damageType).HasFlag((Enum)(object)(DamageType)1)) { halfDamage.damageType.damageType = (DamageType)1; } else { halfDamage.damageType.damageType = (DamageType)0; } orig.Invoke(self, halfDamage); } private void EchoArmorAndE8(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0040: 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) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_armor") })) { val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<float, DamageInfo, float>>((Func<float, DamageInfo, float>)((float value, DamageInfo damage) => damage.delayedDamageSecondHalf ? 0f : value)); val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.Run", "get_selectedDifficulty") }); val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<DifficultyIndex, DamageInfo, DifficultyIndex>>((Func<DifficultyIndex, DamageInfo, DifficultyIndex>)((DifficultyIndex value, DamageInfo damage) => damage.delayedDamageSecondHalf ? ((DifficultyIndex)0) : value)); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "DelayedDamageBuff") })) { } val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.5f) }); val.Index += 2; val.RemoveRange(2); } else { Debug.LogWarning((object)"IL Failed: Warped Echo"); } } private void EchoOSP(orig_TriggerOneShotProtection orig, HealthComponent self) { orig.Invoke(self); self.body.protectFromOneShot = true; } private void LumShotStatsIL(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); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.SkillLocator", "get_secondaryBonusStockSkill") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.GenericSkill", "set_cooldownScale") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, CharacterBody, float>>((Func<float, CharacterBody, float>)delegate(float number, CharacterBody body) { if (Object.op_Implicit((Object)(object)body.inventory)) { int itemCount = body.inventory.GetItemCount(Items.IncreasePrimaryDamage); if (itemCount > 0) { number *= 0.85f; } } return number; }); } else { Debug.LogWarning((object)"IL Failed: Lum Shot 2"); } } private void NoGoldPerLevel(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.DLC2Content/Items", "GoldOnStageStart") }); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "GoldOnStageStart") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1.5f) }); val.Next.Operand = 0f; } else { Debug.LogWarning((object)"IL Failed: War Bonds Level"); } } private void WarBondsDamage(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); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_canPerformBackstab") })) { val.TryGotoPrev((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.DamageInfo", "damage") }); val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<float, DamageInfo, float>>((Func<float, DamageInfo, float>)delegate(float flot, DamageInfo damageInfo) { if (flot > 0f) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); int buffCount = component.GetBuffCount(WarBondsBuff); if (buffCount > 0) { flot *= 1f + (float)buffCount * 0.03f; } } return flot; }); } else { Debug.LogWarning((object)"IL Failed: Leeching Seed"); } } private void TransmitterBeforeElixir(orig_UpdateLastHitTime orig, HealthComponent self, float damageValue, Vector3 damagePosition, bool damageIsSilent, GameObject attacker) { //IL_0106: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active && Object.op_Implicit((Object)(object)self.body) && damageValue > 0f) { float num = 120f; if (self.isHealthLow && self.body.HasBuff(Buffs.TeleportOnLowHealth) && self.itemCounts.unstableTransmitter > 0) { self.body.RemoveBuff(Buffs.TeleportOnLowHealth); self.body.hasTeleported = true; float num2 = Mathf.Max(num - num * ((float)(self.itemCounts.unstableTransmitter - 1) * 0.2f), 15f); self.body.AddTimedBuff(Buffs.TeleportOnLowHealthCooldown, num2); if (WConfig.cfg_Green_UnstableTrans.Value) { self.body.AddTimedBuff(Buffs.Immune, 5f); } else { self.body.AddTimedBuff(Buffs.HiddenInvincibility, 2f); } self.body.CallRpcTeleportCharacterToSafety(); } } orig.Invoke(self, damageValue, damagePosition, damageIsSilent, attacker); } private void LowerLanternDamage(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.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "LowerHealthHigherDamageBuff") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.2f) }); val.Next.Operand = 0f; } else { Debug.LogWarning((object)"IL Failed: Less Lantern"); } } private void CapChronic(orig_AddMultiKill orig, CharacterBody self, int kills) { orig.Invoke(self, kills); if (Object.op_Implicit((Object)(object)self.inventory)) { int num = self.inventory.GetItemCount(Items.IncreaseDamageOnMultiKill) + 2; if (self.GetBuffCount(Buffs.IncreaseDamageBuff) >= num) { self.increasedDamageKillCountBuff = 0; } } } private void LanterHealthVal(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.MatchLdcR8(x, 0.5) })) { val.Next.Operand = 0.9; int index = val.Index; val.Index = index + 1; val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR8(x, 0.5) }); val.Next.Operand = 0.9; index = val.Index; val.Index = index + 1; val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR8(x, 0.5) }); val.Next.Operand = 0.9; } else { Debug.LogWarning((object)"IL Failed: Lantern HP VAL"); } } private void NerfTwistedElites(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_018e: 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.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "EliteBeadCorruption") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.025f) }); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_teamComponent") }); val.EmitDelegate<Func<CharacterBody, CharacterBody>>((Func<CharacterBody, CharacterBody>)delegate(CharacterBody body) { body.ClearTimedBuffs(Buffs.EliteBeadCorruption); return body; }); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStfld(x, "RoR2.Orbs.LightningOrb", "procCoefficient") }); val.Prev.Operand = 0f; val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStfld(x, "RoR2.Orbs.LightningOrb", "range") }); val.Prev.Operand = 42f; val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.Orbs.OrbManager", "AddOrb") }); val.Emit(OpCodes.Ldarg_1); val.Emit(OpCodes.Ldloc_2); val.EmitDelegate<Func<LightningOrb, DamageInfo, CharacterBody, LightningOrb>>((Func<LightningOrb, DamageInfo, CharacterBody, LightningOrb>)delegate(LightningOrb orb, DamageInfo damageInfo, CharacterBody characterBody) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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) orb.bouncedObjects = new List<HealthComponent>(); orb.teamIndex = characterBody.teamComponent.teamIndex; HurtBox val2 = orb.PickNextTarget(damageInfo.position); if (Object.op_Implicit((Object)(object)val2)) { ((Orb)orb).target = val2; } else { ((Orb)orb).target = null; } return orb; }); } else { Debug.LogWarning((object)"IL Failed: Nerf Twisted Elite"); } } private void FixBreadBeadsInvasive(orig_prayerBeadCalculateAppliedStats orig, CharacterBody self, float levelStat) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Invalid comparison between Unknown and I4 if ((int)self.teamComponent.teamIndex == 1) { float num = 0f; num = ((!WConfig.cfg_Green_Beads.Value) ? ((float)self.GetBuffCount(Buffs.ExtraStatsOnLevelUpBuff) * levelStat * (0.15f + 0.05f * (float)self.extraStatsOnLevelUpCountModifier)) : ((float)self.GetBuffCount(Buffs.ExtraStatsOnLevelUpBuff) * levelStat * (0.1f + 0.1f * (float)self.extraStatsOnLevelUpCountModifier))); if (levelStat == self.levelMaxHealth) { float beadAppliedHealth = self.inventory.beadAppliedHealth; Inventory inventory = self.inventory; inventory.beadAppliedHealth += num; } else if (levelStat == self.levelMaxShield) { float beadAppliedShield = self.inventory.beadAppliedShield; Inventory inventory2 = self.inventory; inventory2.beadAppliedShield += num; } else if (levelStat == self.levelRegen) { float beadAppliedRegen = self.inventory.beadAppliedRegen; Inventory inventory3 = self.inventory; inventory3.beadAppliedRegen += num; } else if (levelStat == self.levelDamage) { float beadAppliedDamage = self.inventory.beadAppliedDamage; Inventory inventory4 = self.inventory; inventory4.beadAppliedDamage += num; } } } private void LumShotWorkBetter(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); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_luminousShotReady") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.GenericSkill", "set_cooldownScale") }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, CharacterBody, float>>((Func<float, CharacterBody, float>)delegate(float number, CharacterBody body) { if (Object.op_Implicit((Object)(object)body.inventory)) { int itemCount = body.inventory.GetItemCount(Items.IncreasePrimaryDamage); if (itemCount > 0) { number *= 0.85f; } } return number; }); } else { Debug.LogWarning((object)"IL Failed: LUM SHOT PROC FIX"); } } private void KnockMeDown(orig_ProcessHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_016c: 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_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: 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_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Expected O, but got Unknown //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: 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_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: 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_0212: Expected I4, but got Unknown //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_0246: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Expected O, but got Unknown //IL_0301: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_0346: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, victim); if (damageInfo.procCoefficient == 0f || damageInfo.rejected || !NetworkServer.active || !Object.op_Implicit((Object)(object)damageInfo.attacker) || !(damageInfo.procCoefficient > 0f)) { return; } CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); CharacterBody val = (Object.op_Implicit((Object)(object)victim) ? victim.GetComponent<CharacterBody>() : null); if (!Object.op_Implicit((Object)(object)component)) { return; } CharacterMaster master = component.master; if (!Object.op_Implicit((Object)(object)master)) { return; } Inventory inventory = master.inventory; int itemCount = inventory.GetItemCount(Items.KnockBackHitEnemies); if (itemCount <= 0 || val.HasBuff(Buffs.KnockUpHitEnemies)) { return; } CharacterMotor component2 = victim.GetComponent<CharacterMotor>(); RigidbodyMotor component3 = victim.GetComponent<RigidbodyMotor>(); if (((Object.op_Implicit((Object)(object)component2) && !component2.isGrounded) || Object.op_Implicit((Object)(object)component3)) && Util.CheckRoll(Util.ConvertAmplificationPercentageIntoReductionPercentage(10f * (float)itemCount * damageInfo.procCoefficient), master)) { val.AddTimedBuff(Buffs.KnockUpHitEnemies, KnockbackFinCooldown); float damage = Util.OnHitProcDamage(damageInfo.damage, 0f, KnockbackFinDamage); DamageInfo val2 = new DamageInfo { damage = damage, damageColorIndex = (DamageColorIndex)3, damageType = DamageTypeCombo.op_Implicit((DamageType)0), attacker = damageInfo.attacker, crit = damageInfo.crit, force = Vector3.zero, inflictor = null, position = damageInfo.position, procCoefficient = 0f }; val.healthComponent.TakeDamage(val2); Ray aimRay = component.inputBank.GetAimRay(); float scale = 1f; HullClassification hullClassification = val.hullClassification; HullClassification val3 = hullClassification; switch ((int)val3) { case 0: scale = 1f; break; case 1: scale = 5f; break; case 2: scale = 10f; break; } EffectManager.SpawnEffect(CommonAssets.knockbackFinEffect, new EffectData { origin = ((Component)val).gameObject.transform.position, scale = scale }, true); Vector3 val4 = default(Vector3); ((Vector3)(ref val4))..ctor(0f, 1f, 0f); float num = 20f; if (Object.op_Implicit((Object)(object)component2)) { num = component2.mass * 20f; } else if (Object.op_Implicit((Object)(object)component3)) { num = component3.mass * 20f; } if (val.isBoss || val.isChampion) { num *= 0.3f; } float num2 = 0f - (num + num / 10f); float num3 = num + num / 20f * (float)(itemCount - 1); PhysForceInfo val5 = PhysForceInfo.Create(); val5.force = num2 * val4; ((PhysForceInfo)(ref val5)).ignoreGroundStick = false; ((PhysForceInfo)(ref val5)).disableAirControlUntilCollision = false; ((PhysForceInfo)(ref val5)).massIsOne = false; PhysForceInfo val6 = PhysForceInfo.Create(); val6.force = num3 / 2f * ((Ray)(ref aimRay)).direction; ((PhysForceInfo)(ref val6)).ignoreGroundStick = false; ((PhysForceInfo)(ref val6)).disableAirControlUntilCollision = false; ((PhysForceInfo)(ref val6)).massIsOne = false; if (Object.op_Implicit((Object)(object)component2)) { component2.ApplyForceImpulse(ref val5); component2.ApplyForceImpulse(ref val6); } else if (Object.op_Implicit((Object)(object)component3)) { component3.ApplyForceImpulse(ref val5); component3.ApplyForceImpulse(ref val6); } Util.PlaySound("Play_item_proc_knockBackHitEnemies", ((Component)component).gameObject); } } private void KnockMeUp(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0180: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Items", "KnockBackHitEnemies") })) { val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.CharacterBody", "get_isBoss") }); int index = val.Index; val.Index = index - 1; val.RemoveRange(3); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.CharacterBody", "isChampion") }); index = val.Index; val.Index = index - 1; val.RemoveRange(3); val.RemoveRange(4); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 7.5f) }); val.Next.Operand = 10f; val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "KnockUpHitEnemies") }); val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.DLC2Content/Buffs", "KnockUpHitEnemies") }); val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<CharacterBody, DamageInfo, CharacterBody>>((Func<CharacterBody, DamageInfo, CharacterBody>)delegate(CharacterBody characterBody, DamageInfo damageInfo) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0042: 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 refer