Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of EliteReworks v2.0.1
EliteReworks2.dll
Decompiled 3 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EliteReworks2.Common; using EliteReworks2.Common.Components; using EliteReworks2.Elites; using EliteReworks2.Elites.Celestine.Components; using EliteReworks2.Elites.Malachite.Components; using EliteReworks2.Elites.Overloading.Components; using EliteReworks2.Modules; using EntityStates; using EntityStates.Drifter.Bag; using EntityStates.Gup; using IL.RoR2; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates; using On.EntityStates.Drifter.Bag; using On.EntityStates.Gup; using On.RoR2; using On.RoR2.Projectile; using R2API; using R2API.Utils; using RoR2; using RoR2.Audio; using RoR2.ContentManagement; using RoR2.Orbs; using RoR2.Projectile; 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 = ".NET Standard 2.1")] [assembly: AssemblyCompany("EliteReworks2")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+b9a554e28f2662c5ad5286f176f6b0df5fb8778a")] [assembly: AssemblyProduct("EliteReworks2")] [assembly: AssemblyTitle("EliteReworks2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace EliteReworks2 { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.EliteReworks2", "EliteReworks2", "2.0.1")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class EliteReworks2Plugin : BaseUnityPlugin { public const string pluginGUID = "com.Moffein.EliteReworks2"; public const string pluginName = "EliteReworks2"; public static PluginInfo info; internal void Awake() { info = ((BaseUnityPlugin)this).Info; new PluginContentPack().Initialize(); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("EliteReworks2.EliteReworks.bnk")) { byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); SoundBanks.Add(array); } ModCompat.Init(); InitContent(); ModifyEliteTiers.Init(((BaseUnityPlugin)this).Config); AddToAssembly(); } private void InitContent() { Buffs.Init(); } private void AddToAssembly() { IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(TweakBase)) select type; foreach (Type item in enumerable) { TweakBase tweakBase = (TweakBase)Activator.CreateInstance(item); tweakBase.Init(((BaseUnityPlugin)this).Config); } } } public static class EliteReworks2Utils { public static float GetAmbientLevelDamageScalar() { float num = 1f; if (Object.op_Implicit((Object)(object)Run.instance)) { num += 0.2f * ((float)Run.instance.ambientLevelFloor - 1f); } return num; } public static float GetAmbientLevelScaledDamage(float damage) { return damage * GetAmbientLevelDamageScalar(); } public static NetworkSoundEventDef BuildNetworkSound(string eventName) { NetworkSoundEventDef val = ScriptableObject.CreateInstance<NetworkSoundEventDef>(); val.eventName = eventName; ((Object)val).name = "MoffeinEliteReworks_NSE_" + eventName; PluginContentPack.networkSoundEventDefs.Add(val); return val; } public static int BuffSphere(BuffDef buff, TeamIndex teamIndex, Vector3 position, float radius, float buffDuration, bool shouldTargetEnemies) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) int num = 0; float num2 = radius * radius; foreach (CharacterBody instances in CharacterBody.instancesList) { if (Object.op_Implicit((Object)(object)instances) && (!Object.op_Implicit((Object)(object)instances.teamComponent) || !(shouldTargetEnemies ? (instances.teamComponent.teamIndex == teamIndex) : (instances.teamComponent.teamIndex != teamIndex)))) { Vector3 val = instances.corePosition - position; float sqrMagnitude = ((Vector3)(ref val)).sqrMagnitude; if (!(sqrMagnitude > num2)) { instances.AddTimedBuff(buff, buffDuration); num++; } } } return num; } public static void DebuffSphereOverlap(BuffIndex buff, TeamIndex team, Vector3 position, float radius, float debuffDuration, GameObject effect, GameObject hitEffect, bool ignoreImmunity, bool falloff, NetworkSoundEventDef buffSound) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Expected O, but got Unknown //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } if ((Object)(object)effect != (Object)null) { EffectManager.SpawnEffect(effect, new EffectData { origin = position, scale = radius }, true); } float num = radius * radius * 0.25f; List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component)) { continue; } HealthComponent healthComponent = component.healthComponent; if (!Object.op_Implicit((Object)(object)healthComponent) || !Object.op_Implicit((Object)(object)healthComponent.body) || list.Contains(healthComponent)) { continue; } list.Add(healthComponent); if (!Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) || healthComponent.body.teamComponent.teamIndex == team || (!ignoreImmunity && (healthComponent.body.HasBuff(Buffs.Immune) || healthComponent.body.HasBuff(Buffs.HiddenInvincibility)))) { continue; } float num2 = 1f; if (falloff) { Vector3 val = position - component.collider.ClosestPoint(position); float sqrMagnitude = ((Vector3)(ref val)).sqrMagnitude; if (sqrMagnitude > num) { num2 *= 0.5f; } } bool flag = healthComponent.body.HasBuff(buff); healthComponent.body.AddTimedBuff(buff, num2 * debuffDuration); if (!flag) { if ((Object)(object)hitEffect != (Object)null) { EffectManager.SpawnEffect(hitEffect, new EffectData { origin = healthComponent.body.corePosition }, true); } if ((Object)(object)buffSound != (Object)null) { EffectManager.SimpleSoundEffect(buffSound.index, healthComponent.body.corePosition, true); } } } } } public static class ModifyEliteTiers { public static float tier1Cost; public static float tier1HonorCost; public static float tier2Cost; public static int tier2MinStages; internal static void Init(ConfigFile config) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_002b: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown //IL_005f: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_0093: Expected O, but got Unknown //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_00c3: Expected O, but got Unknown //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Expected O, but got Unknown tier1Cost = config.Bind<float>(new ConfigDefinition("Elite Tiers", "Tier 1 - Cost"), 4.5f, new ConfigDescription("Cost multiplier for this Elite tier. (Vanilla is 6)", (AcceptableValueBase)null, Array.Empty<object>())).Value; tier1HonorCost = config.Bind<float>(new ConfigDefinition("Elite Tiers", "Tier 1 (Honor) - Cost"), 3.5f, new ConfigDescription("Cost multiplier for this Elite tier. (Vanilla is 3.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; tier2Cost = config.Bind<float>(new ConfigDefinition("Elite Tiers", "Tier 2 - Cost"), 36f, new ConfigDescription("Cost multiplier for this Elite tier. (Vanilla is 36)", (AcceptableValueBase)null, Array.Empty<object>())).Value; tier2MinStages = config.Bind<int>(new ConfigDefinition("Elite Tiers", "Tier 2 - Minimum Stages"), 5, new ConfigDescription("Minimum stage completions before this tier becomes available. (Vanilla is 5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; CombatDirector.Init += new hook_Init(CombatDirector_Init); } private static void CombatDirector_Init(orig_Init orig) { orig.Invoke(); EliteTierDef val = EliteAPI.VanillaEliteTiers[1]; val.costMultiplier = tier1Cost; EliteTierDef val2 = EliteAPI.VanillaEliteTiers[2]; val2.costMultiplier = tier1HonorCost; EliteTierDef val3 = EliteAPI.VanillaEliteTiers[3]; val3.costMultiplier = tier1HonorCost; EliteTierDef val4 = EliteAPI.VanillaEliteTiers[4]; val4.costMultiplier = tier1Cost; EliteTierDef val5 = EliteAPI.VanillaEliteTiers[5]; if (tier2MinStages != 5) { val5.isAvailable = (EliteRules eliteRules) => Object.op_Implicit((Object)(object)Run.instance) && Run.instance.stageClearCount >= tier2MinStages; } val5.costMultiplier = tier2Cost; } } } namespace EliteReworks2.Modules { internal static class ModCompat { public static bool zetAspectsLoaded; internal static void Init() { zetAspectsLoaded = Chainloader.PluginInfos.ContainsKey("com.TPDespair.ZetAspects"); } } public class PluginContentPack : IContentPackProvider { [CompilerGenerated] private sealed class <FinalizeAsync>d__11 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FinalizeAsyncArgs args; public PluginContentPack <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FinalizeAsync>d__11(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <GenerateContentPackAsync>d__10 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public GetContentPackAsyncArgs args; public PluginContentPack <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <GenerateContentPackAsync>d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; ContentPack.Copy(<>4__this.contentPack, args.output); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <LoadStaticContentAsync>d__9 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public LoadStaticContentAsyncArgs args; public PluginContentPack <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadStaticContentAsync>d__9(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; <>4__this.contentPack.identifier = <>4__this.identifier; <>4__this.contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); <>4__this.contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); <>4__this.contentPack.buffDefs.Add(buffDefs.ToArray()); <>4__this.contentPack.effectDefs.Add(effectDefs.ToArray()); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal ContentPack contentPack = new ContentPack(); public static List<BuffDef> buffDefs = new List<BuffDef>(); public static List<EffectDef> effectDefs = new List<EffectDef>(); public static List<GameObject> projectilePrefabs = new List<GameObject>(); public static List<NetworkSoundEventDef> networkSoundEventDefs = new List<NetworkSoundEventDef>(); public string identifier => "com.Moffein.EliteReworks2"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } [IteratorStateMachine(typeof(<LoadStaticContentAsync>d__9))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadStaticContentAsync>d__9(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<GenerateContentPackAsync>d__10))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GenerateContentPackAsync>d__10(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<FinalizeAsync>d__11))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FinalizeAsync>d__11(0) { <>4__this = this, args = args }; } } } namespace EliteReworks2.Elites { public abstract class TweakBase<T> : TweakBase where T : TweakBase<T> { public static T Instance { get; private set; } public TweakBase() { if (Instance != null) { throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting TweakBase was instantiated twice"); } Instance = this as T; } } public abstract class TweakBase { public abstract string ConfigCategoryString { get; } public abstract string ConfigOptionName { get; } public abstract string ConfigDescriptionString { get; } public ConfigEntry<bool> Enabled { get; private set; } protected virtual void ReadConfig(ConfigFile config) { Enabled = config.Bind<bool>(ConfigCategoryString, ConfigOptionName, true, ConfigDescriptionString); } internal void Init(ConfigFile config) { ReadConfig(config); if (Enabled.Value) { ApplyChanges(); } } protected virtual void ApplyChanges() { } } } namespace EliteReworks2.Elites.Voidtouched { public class Voidtouched : TweakBase<Voidtouched> { public static bool useRework; public static bool reworkBuffNullify; public float collapseBodyDamageBase = 8.4f; public float collapseBossBodyDamageBase = 11.2f; public override string ConfigCategoryString => "Voidtouched"; public override string ConfigOptionName => "Enable Module"; public override string ConfigDescriptionString => "Enable changes related to Voidtouched Elites."; protected override void ReadConfig(ConfigFile config) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0030: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0061: Expected O, but got Unknown base.ReadConfig(config); useRework = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Rework - Nullify on Hit"), true, new ConfigDescription("Attacks apply Nullify instead of Collapse.", (AcceptableValueBase)null, Array.Empty<object>())).Value; reworkBuffNullify = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Rework - Buff Nullify"), true, new ConfigDescription("Requires Rework - Nullify on Hit. Nullify only takes 2 stacks to root.", (AcceptableValueBase)null, Array.Empty<object>())).Value; } protected override void ApplyChanges() { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown base.ApplyChanges(); if (useRework) { GlobalEventManager.ProcessHitEnemy += new Manipulator(RemoveVanillaVoidEliteCollapse); if (reworkBuffNullify) { CharacterBody.AddTimedBuff_BuffDef_float += new hook_AddTimedBuff_BuffDef_float(BuffNullify); } GlobalEventManager.ServerDamageDealt += new hook_ServerDamageDealt(GlobalEventManager_ServerDamageDealt); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(AdjustVanillaVoidEliteStats); } else { GlobalEventManager.ProcessHitEnemy += new Manipulator(NormalizeCollapseDamage); } } private void GlobalEventManager_ServerDamageDealt(orig_ServerDamageDealt orig, DamageReport damageReport) { //IL_00a0: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(damageReport); if (!damageReport.damageInfo.rejected && damageReport.damageInfo.procCoefficient > 0f && Object.op_Implicit((Object)(object)damageReport.attackerBody) && damageReport.attackerBody.HasBuff(Buffs.EliteVoid) && Object.op_Implicit((Object)(object)damageReport.victimBody) && !damageReport.victimBody.HasBuff(Buffs.Nullified) && Util.CheckRoll(100f * damageReport.damageInfo.procCoefficient, damageReport.attackerBody.master)) { damageReport.victimBody.AddTimedBuff(Buffs.NullifyStack.buffIndex, 8f * damageReport.damageInfo.procCoefficient); } } private static void RemoveVanillaVoidEliteCollapse(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>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "EliteVoid"), (Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "HasBuff") })) { val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool orig) => false)); } else { Debug.LogError((object)"EliteReworks: RemoveVanillaVoidEliteCollapse IL hook failed."); } } private static void BuffNullify(orig_AddTimedBuff_BuffDef_float orig, CharacterBody self, BuffDef buffDef, float duration) { orig.Invoke(self, buffDef, duration); if (NetworkServer.active && (Object)(object)buffDef == (Object)(object)Buffs.NullifyStack && !self.HasBuff(Buffs.Nullified)) { int buffCount = self.GetBuffCount(buffDef); if (buffCount >= 2) { self.ClearTimedBuffs(buffDef); self.AddTimedBuff(Buffs.Nullified, 3f); } } } private static void AdjustVanillaVoidEliteStats(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(Buffs.EliteVoid)) { args.damageMultAdd += 1.3f; } } private void NormalizeCollapseDamage(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "EliteVoid") }) && val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1f) })) { val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<float, DamageInfo, float>>((Func<float, DamageInfo, float>)delegate(float damageMult, DamageInfo damageInfo) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Invalid comparison between Unknown and I4 if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { if (component.isPlayerControlled || (Object.op_Implicit((Object)(object)component.teamComponent) && (int)component.teamComponent.teamIndex == 1)) { return damageMult; } float ambientLevelScaledDamage = EliteReworks2Utils.GetAmbientLevelScaledDamage(component.isChampion ? collapseBossBodyDamageBase : collapseBodyDamageBase); if (component.damage > ambientLevelScaledDamage) { return damageMult * (ambientLevelScaledDamage / component.damage); } } } return damageMult; }); } else { Debug.LogError((object)"EliteReworks: NormalizeCollapseDamage IL hook failed."); } } } } namespace EliteReworks2.Elites.Twisted { public class Twisted : TweakBase<Twisted> { public static class Assets { public static class Projectiles { public static GameObject UnshootableEliteBeadProjectile; } internal static void Init() { CreateUnshootableEliteBeadProjectile(); } private static void CreateUnshootableEliteBeadProjectile() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)Projectiles.UnshootableEliteBeadProjectile)) { GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Elites/EliteBead/BeadProjectileTrackingBomb.prefab").WaitForCompletion(), "MoffeinEliteReworks_UnshootableTwistedProjectile", true); HurtBox[] componentsInChildren = val.GetComponentsInChildren<HurtBox>(); HurtBox[] array = componentsInChildren; foreach (HurtBox val2 in array) { ((Behaviour)val2).enabled = false; } HealthComponent component = val.GetComponent<HealthComponent>(); component.dontShowHealthbar = true; PluginContentPack.projectilePrefabs.Add(val); Projectiles.UnshootableEliteBeadProjectile = val; } } } public static float healthBoostCoefficient; public static float damageBoostCoefficient; public static float passiveBodyDamage = 48f; public static float passiveBodyDamageBoss = 64f; public static bool projectileIsUnshootable; public override string ConfigCategoryString => "T2 - Twisted"; public override string ConfigOptionName => "Enable Module"; public override string ConfigDescriptionString => "Enable changes related to Twisted Elites."; protected override void ReadConfig(ConfigFile config) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0069: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_009a: Expected O, but got Unknown base.ReadConfig(config); healthBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Health Multiplier"), 16f, new ConfigDescription("Health multiplier for this Elite Type. (Vanilla = 18)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Damage Multiplier"), 4f, new ConfigDescription("Damage multiplier for this Elite Type. (Vanilla = 6)", (AcceptableValueBase)null, Array.Empty<object>())).Value; projectileIsUnshootable = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Projectile is Unshootable"), true, new ConfigDescription("Twisted projectile cannot be destroyed.", (AcceptableValueBase)null, Array.Empty<object>())).Value; } protected override void ApplyChanges() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown base.ApplyChanges(); ModifyStats(); Assets.Init(); ModifyAttachment(); AffixBeadAttachment.FireProjectile += new Manipulator(NormalizeDamage); MakeProjectileUnshootable(); } private void ModifyStats() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) EliteDef val = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC2/Elites/EliteBead/edBead.asset").WaitForCompletion(); val.healthBoostCoefficient = healthBoostCoefficient; val.damageBoostCoefficient = damageBoostCoefficient; } private void ModifyAttachment() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Elites/EliteBead/AffixBeadBodyAttachment.prefab").WaitForCompletion(); AffixBeadAttachment component = val.GetComponent<AffixBeadAttachment>(); component.damageCooldown = 0.01f; component.fireDelay = 1.5f; component.cooldownAfterFiring = 6f; component.maxAllies = 10; } private void NormalizeDamage(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) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "get_damage") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, AffixBeadAttachment, float>>((Func<float, AffixBeadAttachment, float>)delegate(float damage, AffixBeadAttachment self) { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Invalid comparison between Unknown and I4 CharacterBody val3 = null; if (Object.op_Implicit((Object)(object)self.networkedBodyAttachment)) { val3 = self.networkedBodyAttachment.attachedBody; } return Object.op_Implicit((Object)(object)val3) ? ((val3.isPlayerControlled || (Object.op_Implicit((Object)(object)val3.teamComponent) && (int)val3.teamComponent.teamIndex == 1)) ? damage : EliteReworks2Utils.GetAmbientLevelScaledDamage(val3.isChampion ? passiveBodyDamageBoss : passiveBodyDamage)) : EliteReworks2Utils.GetAmbientLevelScaledDamage(passiveBodyDamage); }); } else { Debug.LogError((object)"EliteReworks: AffixBead NormalizeDamage Player IL hook failed."); } if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "get_damage") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<float, AffixBeadAttachment, float>>((Func<float, AffixBeadAttachment, float>)delegate(float damage, AffixBeadAttachment self) { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Invalid comparison between Unknown and I4 CharacterBody val2 = null; if (Object.op_Implicit((Object)(object)self.networkedBodyAttachment)) { val2 = self.networkedBodyAttachment.attachedBody; } return Object.op_Implicit((Object)(object)val2) ? ((val2.isPlayerControlled || (Object.op_Implicit((Object)(object)val2.teamComponent) && (int)val2.teamComponent.teamIndex == 1)) ? damage : EliteReworks2Utils.GetAmbientLevelScaledDamage(val2.isChampion ? passiveBodyDamageBoss : passiveBodyDamage)) : EliteReworks2Utils.GetAmbientLevelScaledDamage(passiveBodyDamage); }); } else { Debug.LogError((object)"EliteReworks: AffixBead NormalizeDamage IL hook failed."); } } private void MakeProjectileUnshootable() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) if (projectileIsUnshootable) { GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Elites/EliteBead/AffixBeadBodyAttachment.prefab").WaitForCompletion(); AffixBeadAttachment component = val.GetComponent<AffixBeadAttachment>(); component.projectilePrefab = Assets.Projectiles.UnshootableEliteBeadProjectile; } } } } namespace EliteReworks2.Elites.Overloading { public class Overloading : TweakBase<Overloading> { public static class Assets { public static class Effects { public static GameObject LightningQuiet; public static GameObject LightningOnHit; } public static class Projectiles { public static GameObject OnHitLightningBomb; public static GameObject PassiveLightningBomb; public static GameObject PassiveLightningBombBoss; } public static class NetworkSoundEvents { public static NetworkSoundEventDef PassiveTrigger; public static NetworkSoundEventDef PassiveTriggerBoss; } internal static void Init() { if (!Object.op_Implicit((Object)(object)NetworkSoundEvents.PassiveTrigger)) { NetworkSoundEvents.PassiveTrigger = EliteReworks2Utils.BuildNetworkSound("Play_EliteReworks_Lightning"); } if (!Object.op_Implicit((Object)(object)NetworkSoundEvents.PassiveTriggerBoss)) { NetworkSoundEvents.PassiveTriggerBoss = EliteReworks2Utils.BuildNetworkSound("Play_titanboss_shift_shoot"); } BuildLightningEffectQuiet(); BuildLightningEffectOnHit(); BuildPassiveLightningBomb(); BuildPassiveLightningBombBoss(); BuildOnHitLightningBomb(); } private static void BuildLightningEffectQuiet() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)Effects.LightningQuiet)) { GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/LightningStakeNova.prefab").WaitForCompletion(), "MoffeinEliteReworks_OverloadingLightningQuiteEffect", false); EffectComponent component = val.GetComponent<EffectComponent>(); component.soundName = "Play_item_proc_chain_lightning"; PluginContentPack.effectDefs.Add(new EffectDef(val)); Effects.LightningQuiet = val; } } private static void BuildLightningEffectOnHit() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)Effects.LightningOnHit)) { GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/LightningStakeNova.prefab").WaitForCompletion(), "MoffeinEliteReworks_OverloadingLightningOnHitEffect", false); EffectComponent component = val.GetComponent<EffectComponent>(); component.soundName = "Play_mage_m1_impact_lightning"; PluginContentPack.effectDefs.Add(new EffectDef(val)); Effects.LightningOnHit = val; } } private static void BuildPassiveLightningBomb() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)Projectiles.PassiveLightningBomb)) { GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricWormSeekerProjectile.prefab").WaitForCompletion(), "MoffeinEliteReworks_OverloadinPassiveProjectile", true); ProjectileController component = val.GetComponent<ProjectileController>(); component.procCoefficient = 0f; AkEvent[] componentsInChildren = val.GetComponentsInChildren<AkEvent>(); AkEvent[] array = componentsInChildren; foreach (AkEvent val2 in array) { Object.Destroy((Object)(object)val2); } Object.Destroy((Object)(object)val.GetComponent<AkGameObj>()); ProjectileImpactExplosion component2 = val.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component2).blastProcCoefficient = 0f; ((ProjectileExplosion)component2).blastRadius = 5f; component2.destroyOnEnemy = false; ((ProjectileExplosion)component2).blastAttackerFiltering = (AttackerFiltering)2; ((ProjectileExplosion)component2).falloffModel = (FalloffModel)0; component2.impactEffect = Effects.LightningQuiet; PluginContentPack.projectilePrefabs.Add(val); Projectiles.PassiveLightningBomb = val; } } private static void BuildPassiveLightningBombBoss() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)Projectiles.PassiveLightningBombBoss)) { GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricOrbProjectile.prefab").WaitForCompletion(), "MoffeinEliteReworks_OverloadinPassiveBossProjectile", true); ProjectileController component = val.GetComponent<ProjectileController>(); component.procCoefficient = 0f; AkEvent[] componentsInChildren = val.GetComponentsInChildren<AkEvent>(); AkEvent[] array = componentsInChildren; foreach (AkEvent val2 in array) { Object.Destroy((Object)(object)val2); } Object.Destroy((Object)(object)val.GetComponent<AkGameObj>()); ProjectileImpactExplosion component2 = val.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component2).blastProcCoefficient = 0f; ((ProjectileExplosion)component2).blastRadius = 7f; component2.destroyOnEnemy = false; ((ProjectileExplosion)component2).blastAttackerFiltering = (AttackerFiltering)2; ((ProjectileExplosion)component2).falloffModel = (FalloffModel)0; ((ProjectileExplosion)component2).fireChildren = false; PluginContentPack.projectilePrefabs.Add(val); Projectiles.PassiveLightningBombBoss = val; } } private static void BuildOnHitLightningBomb() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/EliteLightning/LightningStake.prefab").WaitForCompletion(), "MoffeinEliteReworks_OverloadingStakeProjectile", true); ProjectileImpactExplosion component = val.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component).blastRadius = 7f; ((ProjectileExplosion)component).falloffModel = (FalloffModel)0; component.impactEffect = Effects.LightningOnHit; PluginContentPack.projectilePrefabs.Add(val); Projectiles.OnHitLightningBomb = val; } } public static float zapDamage; public static float zapDamageBoss; public static float healthBoostCoefficient; public static float damageBoostCoefficient; public static float healthBoostCoefficientHonor; public static float damageBoostCoefficientHonor; public static bool reworkOnHit; public static bool removeShield; public static bool reduceShield; public static bool passiveLightning; public override string ConfigCategoryString => "T1 - Overloading"; public override string ConfigOptionName => "Enable Module"; public override string ConfigDescriptionString => "Enable changes related to Overloading Elites."; protected override void ReadConfig(ConfigFile config) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0069: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected O, but got Unknown //IL_009e: Expected O, but got Unknown //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Expected O, but got Unknown //IL_00d3: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown //IL_0104: Expected O, but got Unknown //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_0135: Expected O, but got Unknown //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Expected O, but got Unknown //IL_0166: Expected O, but got Unknown //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Expected O, but got Unknown //IL_0197: Expected O, but got Unknown base.ReadConfig(config); healthBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Health Multiplier"), 3f, new ConfigDescription("Health multiplier for this Elite Type. (Vanilla = 4)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Damage Multiplier"), 1.5f, new ConfigDescription("Damage multiplier for this Elite Type. (Vanilla = 2)", (AcceptableValueBase)null, Array.Empty<object>())).Value; healthBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Health Multiplier"), 2.5f, new ConfigDescription("Health multiplier for this Elite Type when Honor is enabled. (Vanilla = 2.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Damage Multiplier"), 1.5f, new ConfigDescription("Damage multiplier for this Elite Type when Honor is enabled. (Vanilla = 1.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; reworkOnHit = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Bigger Overloading Bombs"), true, new ConfigDescription("Overloading bombs have a much larger blast radius.", (AcceptableValueBase)null, Array.Empty<object>())).Value; removeShield = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Shield - Remove Shield"), true, new ConfigDescription("Removes passive shield.", (AcceptableValueBase)null, Array.Empty<object>())).Value; reduceShield = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Shield - Reduce Shield"), false, new ConfigDescription("Requires Remove Shield = false. Reduces passive shield from 50% to 25%.", (AcceptableValueBase)null, Array.Empty<object>())).Value; passiveLightning = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Passive Lightning"), true, new ConfigDescription("Overloading Elites periodically fire lightning bombs around themselves.", (AcceptableValueBase)null, Array.Empty<object>())).Value; } protected override void ApplyChanges() { base.ApplyChanges(); ModifyStats(); Assets.Init(); ReworkOnHitEffect(); ModifyShield(); PassiveLightning(); } private void ModifyStats() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) EliteDef val = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/Base/EliteLightning/edLightning.asset").WaitForCompletion(); val.healthBoostCoefficient = healthBoostCoefficient; val.damageBoostCoefficient = damageBoostCoefficient; EliteDef val2 = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/Base/EliteLightning/edLightningHonor.asset").WaitForCompletion(); val2.healthBoostCoefficient = healthBoostCoefficientHonor; val2.damageBoostCoefficient = damageBoostCoefficientHonor; } private void ReworkOnHitEffect() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown if (reworkOnHit) { GlobalEventManager.OnHitAllProcess += new Manipulator(RemoveVanillaOnHit); GlobalEventManager.OnHitAllProcess += new hook_OnHitAllProcess(BiggerLightningBombOnHit); } } private void RemoveVanillaOnHit(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>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "AffixBlue"), (Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "HasBuff") })) { val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool orig) => false)); } else { Debug.LogError((object)"EliteReworks: AffixBlue RemoveVanillaOverloadingOnHit IL hook failed."); } } private void BiggerLightningBombOnHit(orig_OnHitAllProcess orig, GlobalEventManager self, DamageInfo damageInfo, GameObject hitObject) { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, hitObject); if (NetworkServer.active && damageInfo.procCoefficient > 0f && Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && component.HasBuff(Buffs.AffixBlue)) { ProjectileManager.instance.FireProjectile(Assets.Projectiles.OnHitLightningBomb, damageInfo.position, Quaternion.identity, damageInfo.attacker, damageInfo.damage * 0.5f, 0f, damageInfo.crit, (DamageColorIndex)3, (GameObject)null, -1f, (DamageTypeCombo?)null); } } } private void ModifyShield() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown if (removeShield || reduceShield) { if (removeShield) { CharacterBody.RecalculateStats += new Manipulator(RemoveShields); } else { CharacterBody.RecalculateStats += new Manipulator(ReduceShields); } } } private static void RemoveShields(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>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "AffixBlue"), (Instruction x) => ILPatternMatchingExt.MatchCall<CharacterBody>(x, "HasBuff") })) { val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool orig) => false)); } else { Debug.LogError((object)"EliteReworks: AffixBlue RemoveShields IL hook failed."); } } private static void ReduceShields(ILContext il) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown bool flag = true; ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "AffixBlue") }) && val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.5f) })) { val.EmitDelegate<Func<float, float>>((Func<float, float>)((float orig) => orig * 0.5f)); if (val.TryGotoNext(new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchCall(x, typeof(CharacterBody), "get_maxHealth"), (Instruction x) => ILPatternMatchingExt.MatchAdd(x) })) { int index = val.Index; val.Index = index + 1; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float shieldToAdd) => shieldToAdd / 3f)); flag = false; } } if (flag) { Debug.LogError((object)"EliteReworks: AffixBlue ReduceShields IL hook failed."); } } private void PassiveLightning() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown if (passiveLightning) { CharacterBody.OnClientBuffsChanged += new hook_OnClientBuffsChanged(CharacterBody_OnClientBuffsChanged); } } private void CharacterBody_OnClientBuffsChanged(orig_OnClientBuffsChanged orig, CharacterBody self) { orig.Invoke(self); if (self.HasBuff(Buffs.AffixBlue)) { PassiveLightningComponent component = ((Component)self).GetComponent<PassiveLightningComponent>(); if (!Object.op_Implicit((Object)(object)component)) { component = ((Component)self).gameObject.AddComponent<PassiveLightningComponent>(); component.characterBody = self; } } } } } namespace EliteReworks2.Elites.Overloading.Components { public class PassiveLightningComponent : MonoBehaviour { public float lightingDelay = 6f; public float playerDamageCoefficient = 3f; public float flatDamageNPC = 36f; public float flatDamageNPCBoss = 57.6f; public CharacterBody characterBody; private float timer = 0f; private void Start() { if (!Object.op_Implicit((Object)(object)characterBody)) { characterBody = ((Component)this).GetComponent<CharacterBody>(); } if (!Object.op_Implicit((Object)(object)characterBody)) { Object.Destroy((Object)(object)this); } } private void FixedUpdate() { if (!Object.op_Implicit((Object)(object)characterBody) || !characterBody.HasBuff(Buffs.AffixBlue) || !Object.op_Implicit((Object)(object)characterBody.healthComponent) || !characterBody.healthComponent.alive) { Object.Destroy((Object)(object)this); return; } if (characterBody.HasBuff(Buffs.DisablePassiveEffect)) { timer = 0f; return; } timer += Time.fixedDeltaTime; if (timer >= lightingDelay) { timer -= lightingDelay; FireLightningAuthority(); } } public void FireLightningAuthority() { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Invalid comparison between Unknown and I4 //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) if (characterBody.hasEffectiveAuthority) { float damage = (characterBody.isChampion ? EliteReworks2Utils.GetAmbientLevelScaledDamage(flatDamageNPCBoss) : EliteReworks2Utils.GetAmbientLevelScaledDamage(flatDamageNPC)); if (characterBody.isPlayerControlled || (Object.op_Implicit((Object)(object)characterBody.teamComponent) && (int)characterBody.teamComponent.teamIndex == 1)) { damage = characterBody.damage * playerDamageCoefficient; } FireMeatballs(((Component)this).gameObject, characterBody.isChampion, damage, characterBody.RollCrit(), Vector3.up, characterBody.corePosition + Vector3.up, characterBody.transform.forward, 5, 20f, 400f, characterBody.isChampion ? 25f : 20f); } } public void FireMeatballs(GameObject attacker, bool isChampion, float damage, bool crit, Vector3 impactNormal, Vector3 impactPosition, Vector3 forward, int meatballCount, float meatballAngle, float meatballForce, float velocity) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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) EffectManager.SimpleSoundEffect((isChampion ? Overloading.Assets.NetworkSoundEvents.PassiveTriggerBoss : Overloading.Assets.NetworkSoundEvents.PassiveTrigger).index, impactPosition, true); float num = 360f / (float)meatballCount; float num2 = Random.Range(0f, 360f); Vector3 val = Vector3.ProjectOnPlane(forward, impactNormal); Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 zero = Vector3.zero; zero = Vector3.RotateTowards(impactNormal, normalized, meatballAngle * (MathF.PI / 180f), float.PositiveInfinity); bool flag = false; for (int i = 0; i < meatballCount; i++) { Vector3 val2 = Quaternion.AngleAxis(num2 + num * (float)i, impactNormal) * zero; GameObject val3 = (isChampion ? Overloading.Assets.Projectiles.PassiveLightningBombBoss : Overloading.Assets.Projectiles.PassiveLightningBomb); ProjectileManager.instance.FireProjectile(val3, impactPosition, Util.QuaternionSafeLookRotation(val2), attacker, damage, meatballForce, crit, (DamageColorIndex)0, (GameObject)null, velocity, (DamageTypeCombo?)null); } } } } namespace EliteReworks2.Elites.Mending { public class Mending : TweakBase<Mending> { public static float healthBoostCoefficient; public static float damageBoostCoefficient; public static float healthBoostCoefficientHonor; public static float damageBoostCoefficientHonor; public override string ConfigCategoryString => "T1 - Mending"; public override string ConfigOptionName => "Enable Module"; public override string ConfigDescriptionString => "Enable changes related to Mending Elites."; protected override void ReadConfig(ConfigFile config) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0069: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected O, but got Unknown //IL_009e: Expected O, but got Unknown //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Expected O, but got Unknown //IL_00d3: Expected O, but got Unknown base.ReadConfig(config); healthBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Health Multiplier"), 3f, new ConfigDescription("Health multiplier for this Elite Type. (Vanilla = 3)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Damage Multiplier"), 1.5f, new ConfigDescription("Damage multiplier for this Elite Type. (Vanilla = 2)", (AcceptableValueBase)null, Array.Empty<object>())).Value; healthBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Health Multiplier"), 1.5f, new ConfigDescription("Health multiplier for this Elite Type when Honor is enabled. (Vanilla = 1.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Damage Multiplier"), 1.5f, new ConfigDescription("Damage multiplier for this Elite Type when Honor is enabled. (Vanilla = 1.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; } protected override void ApplyChanges() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown base.ApplyChanges(); ModifyStats(); FixHealCore(); AffixEarthBehavior.FixedUpdate += new hook_FixedUpdate(AffixEarthBehavior_FixedUpdate); } private void FixHealCore() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/EliteEarth/AffixEarthHealerBody.prefab").WaitForCompletion(); CharacterBody component = val.GetComponent<CharacterBody>(); component.levelMaxHealth = component.baseMaxHealth * 0.3f; component.levelDamage = component.baseDamage * 0.2f; } private void AffixEarthBehavior_FixedUpdate(orig_FixedUpdate orig, AffixEarthBehavior self) { if (NetworkServer.active && Object.op_Implicit((Object)(object)((ItemBehavior)self).body) && ((ItemBehavior)self).body.HasBuff(Buffs.DisablePassiveEffect) && Object.op_Implicit((Object)(object)self.affixEarthAttachment)) { Object.Destroy((Object)(object)self.affixEarthAttachment); self.affixEarthAttachment = null; } else { orig.Invoke(self); } } private void ModifyStats() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) EliteDef val = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC1/EliteEarth/edEarth.asset").WaitForCompletion(); val.healthBoostCoefficient = healthBoostCoefficient; val.damageBoostCoefficient = damageBoostCoefficient; EliteDef val2 = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC1/EliteEarth/edEarthHonor.asset").WaitForCompletion(); val2.healthBoostCoefficient = healthBoostCoefficientHonor; val2.damageBoostCoefficient = damageBoostCoefficientHonor; } } } namespace EliteReworks2.Elites.Malachite { public class Malachite : TweakBase<Malachite> { public static class Assets { public static class Projectiles { public static GameObject MalachiteOrbModded; public static GameObject MalachiteStakeModded; } public static class DamageTypes { public static ModdedDamageType MalachiteSpike; } public static class Buffs { public static BuffDef MalachiteBuildup; } public static class NetworkObjects { public static GameObject AntiHealAuraIndicator; } internal static void Init() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown DamageTypes.MalachiteSpike = DamageAPI.ReserveDamageType(); GlobalEventManager.ServerDamageDealt += new hook_ServerDamageDealt(MalachiteSpike); CreateMalachiteBuildup(); CreateAntiHealAuraIndicator(); CreateMalachiteStakeModded(); CreateMalachiteOrbModded(); } private static void CreateMalachiteOrbModded() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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) if (!Object.op_Implicit((Object)(object)Projectiles.MalachiteOrbModded)) { if (!Object.op_Implicit((Object)(object)Projectiles.MalachiteStakeModded)) { CreateMalachiteStakeModded(); } GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElitePoison/PoisonOrbProjectile.prefab").WaitForCompletion(), "MoffeinEliteReworks_MalachiteOrbModded", true); ProjectileDamage component = val.GetComponent<ProjectileDamage>(); component.damageType = DamageTypeCombo.op_Implicit((DamageType)1); DamageAPI.AddModdedDamageType(ref component.damageType, DamageTypes.MalachiteSpike); PluginContentPack.projectilePrefabs.Add(val); Projectiles.MalachiteOrbModded = val; ((ProjectileExplosion)val.GetComponent<ProjectileImpactExplosion>()).childrenProjectilePrefab = Projectiles.MalachiteStakeModded; } } private static void CreateMalachiteStakeModded() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)Projectiles.MalachiteStakeModded)) { GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElitePoison/PoisonStakeProjectile.prefab").WaitForCompletion(), "MoffeinEliteReworks_MalachiteStakeModded", true); ProjectileDamage component = val.GetComponent<ProjectileDamage>(); component.damageType = DamageTypeCombo.op_Implicit((DamageType)1); DamageAPI.AddModdedDamageType(ref component.damageType, DamageTypes.MalachiteSpike); PluginContentPack.projectilePrefabs.Add(val); Projectiles.MalachiteStakeModded = val; } } private static void MalachiteSpike(orig_ServerDamageDealt orig, DamageReport damageReport) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(damageReport); if (Object.op_Implicit((Object)(object)damageReport.victimBody) && !damageReport.damageInfo.rejected && damageReport.damageInfo.procCoefficient > 0f && DamageAPI.HasModdedDamageType(damageReport.damageInfo, DamageTypes.MalachiteSpike)) { damageReport.victimBody.AddTimedBuff(Buffs.HealingDisabled, 8f); } } private static void CreateMalachiteBuildup() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected O, but got Unknown //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)Buffs.MalachiteBuildup)) { BuffDef val = ScriptableObject.CreateInstance<BuffDef>(); val.isDebuff = true; val.isHidden = false; val.isDOT = false; val.isCooldown = false; val.canStack = true; val.buffColor = new Color(0.3f, 0.3f, 0.3f); val.iconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/ElitePoison/texBuffHealingDisabledIcon.tif").WaitForCompletion(); ((Object)val).name = "MoffeinEliteReworks_MalachiteBuildup"; PluginContentPack.buffDefs.Add(val); Buffs.MalachiteBuildup = val; HealthComponent.Heal += new hook_Heal(ReduceHealing); CharacterBody.AddTimedBuff_BuffDef_float += new hook_AddTimedBuff_BuffDef_float(MalachiteBuildupBehavior); } } private static float ReduceHealing(orig_Heal orig, HealthComponent self, float amount, ProcChainMask procChainMask, bool nonRegen) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.body)) { int buffCount = self.body.GetBuffCount(Buffs.MalachiteBuildup); amount *= 1f - Mathf.Min(1f, 0.2f * (float)buffCount); } return orig.Invoke(self, amount, procChainMask, nonRegen); } private static void MalachiteBuildupBehavior(orig_AddTimedBuff_BuffDef_float orig, CharacterBody self, BuffDef buffDef, float duration) { //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)buffDef == (Object)(object)Buffs.MalachiteBuildup) { if (self.HasBuff(Buffs.HealingDisabled)) { self.ClearTimedBuffs(Buffs.MalachiteBuildup); orig.Invoke(self, Buffs.HealingDisabled, duration); return; } int buffCount = self.GetBuffCount(Buffs.MalachiteBuildup); if (buffCount >= 4) { self.ClearTimedBuffs(Buffs.MalachiteBuildup); orig.Invoke(self, Buffs.HealingDisabled, duration); return; } if (buffCount > 0) { foreach (TimedBuff timedBuff in self.timedBuffs) { if (timedBuff.buffIndex == Buffs.MalachiteBuildup.buffIndex && timedBuff.timer < duration) { timedBuff.timer = duration; } } } } else if ((Object)(object)buffDef == (Object)(object)Buffs.HealingDisabled) { self.ClearTimedBuffs(Buffs.MalachiteBuildup); } orig.Invoke(self, buffDef, duration); } private static void CreateAntiHealAuraIndicator() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)NetworkObjects.AntiHealAuraIndicator)) { GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/NearbyDamageBonus/NearbyDamageBonusIndicator.prefab").WaitForCompletion(), "MoffeinEliteReworks_PoisonIndicator", true); val.transform.localScale = AntiHealAuraServer.wardRadius / 13f * Vector3.one; Material material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/ElitePoison/matElitePoisonAreaIndicator.mat").WaitForCompletion(); MeshRenderer[] componentsInChildren = val.GetComponentsInChildren<MeshRenderer>(); MeshRenderer[] array = componentsInChildren; foreach (MeshRenderer val2 in array) { ((Renderer)val2).material = material; } PrefabAPI.RegisterNetworkPrefab(val); NetworkObjects.AntiHealAuraIndicator = val; } } } public static float playerDamageCoefficient = 4f; public static float spikeDamage = 48f; public static float spikeDamageBoss = 64f; public static float healthBoostCoefficient; public static float damageBoostCoefficient; public static bool antiHealAura; public override string ConfigCategoryString => "T2 - Malachite"; public override string ConfigOptionName => "Enable Module"; public override string ConfigDescriptionString => "Enable changes related to Malachite Elites."; protected override void ReadConfig(ConfigFile config) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0069: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_009a: Expected O, but got Unknown base.ReadConfig(config); healthBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Health Multiplier"), 16f, new ConfigDescription("Health multiplier for this Elite Type. (Vanilla = 18)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Damage Multiplier"), 4f, new ConfigDescription("Damage multiplier for this Elite Type. (Vanilla = 6)", (AcceptableValueBase)null, Array.Empty<object>())).Value; antiHealAura = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Rework - Antiheal Aura"), true, new ConfigDescription("Malachite Elites gradually apply antiheal to nearby enemies.", (AcceptableValueBase)null, Array.Empty<object>())).Value; } protected override void ApplyChanges() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown base.ApplyChanges(); ModifyStats(); Assets.Init(); CharacterBody.UpdateAffixPoison += new hook_UpdateAffixPoison(UpdateAffixPoisonEliteReworks); if (antiHealAura) { CharacterBody.OnClientBuffsChanged += new hook_OnClientBuffsChanged(CharacterBody_OnClientBuffsChanged); } } private void CharacterBody_OnClientBuffsChanged(orig_OnClientBuffsChanged orig, CharacterBody self) { orig.Invoke(self); if (NetworkServer.active && self.HasBuff(Buffs.AffixPoison)) { AntiHealAuraServer component = ((Component)self).GetComponent<AntiHealAuraServer>(); if (!Object.op_Implicit((Object)(object)component)) { component = ((Component)self).gameObject.AddComponent<AntiHealAuraServer>(); component.characterBody = self; } } } private void UpdateAffixPoisonEliteReworks(orig_UpdateAffixPoison orig, CharacterBody self, float deltaTime) { //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Invalid comparison between Unknown and I4 //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) if (!self.itemAvailability.hasAffixPoison || self.HasBuff(Buffs.DisablePassiveEffect)) { self.poisonballTimer = 0f; return; } self.poisonballTimer += deltaTime; if (!(self.poisonballTimer >= 6f)) { return; } self.poisonballTimer -= 6f; int num = 3 + (int)self.radius; Vector3 up = Vector3.up; float num2 = 360f / (float)num; Vector3 val = Vector3.ProjectOnPlane(self.transform.forward, up); Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 val2 = Vector3.RotateTowards(up, normalized, 0.43633232f, float.PositiveInfinity); for (int i = 0; i < num; i++) { Vector3 val3 = Quaternion.AngleAxis(num2 * (float)i, up) * val2; float num3 = EliteReworks2Utils.GetAmbientLevelScaledDamage(self.isChampion ? spikeDamageBoss : spikeDamage); if (self.isPlayerControlled || (Object.op_Implicit((Object)(object)self.teamComponent) && (int)self.teamComponent.teamIndex == 1)) { num3 = self.damage * playerDamageCoefficient; } ProjectileManager.instance.FireProjectile(Assets.Projectiles.MalachiteOrbModded, self.corePosition, Util.QuaternionSafeLookRotation(val3), ((Component)self).gameObject, num3, 0f, self.RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } private void ModifyStats() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) EliteDef val = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/Base/ElitePoison/edPoison.asset").WaitForCompletion(); val.healthBoostCoefficient = healthBoostCoefficient; val.damageBoostCoefficient = damageBoostCoefficient; } } } namespace EliteReworks2.Elites.Malachite.Components { public class AntiHealAuraServer : MonoBehaviour { public static float wardRadius = 25f; public static float refreshTime = 0.5f; public static float buffDuration = 1f; public CharacterBody characterBody; private float stopwatch = 0f; private GameObject indicator; private void Start() { if (!Object.op_Implicit((Object)(object)characterBody)) { characterBody = ((Component)this).GetComponent<CharacterBody>(); } if (!Object.op_Implicit((Object)(object)characterBody) || !NetworkServer.active) { Object.Destroy((Object)(object)this); } UpdateIndicatorServer(wardActive: true); } private void FixedUpdate() { //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Expected O, but got I4 //IL_00c6->IL00c6: Incompatible stack types: O vs I4 //IL_00b6->IL00c6: Incompatible stack types: I4 vs O //IL_00b6->IL00c6: Incompatible stack types: O vs I4 if (!NetworkServer.active || !Object.op_Implicit((Object)(object)characterBody) || !characterBody.HasBuff(Buffs.AffixPoison) || !Object.op_Implicit((Object)(object)characterBody.healthComponent) || !characterBody.healthComponent.alive) { Object.Destroy((Object)(object)this); return; } stopwatch += Time.fixedDeltaTime; if (stopwatch >= refreshTime) { stopwatch -= refreshTime; object obj = Malachite.Assets.Buffs.MalachiteBuildup; int num; if (Object.op_Implicit((Object)(object)characterBody.teamComponent)) { obj = characterBody.teamComponent.teamIndex; num = (int)obj; } else { num = -1; obj = num; num = (int)obj; } EliteReworks2Utils.BuffSphere((BuffDef)(object)num, (TeamIndex)obj, ((Component)this).transform.position, wardRadius, buffDuration, shouldTargetEnemies: true); } } private void OnDestroy() { if (NetworkServer.active && Object.op_Implicit((Object)(object)indicator)) { Object.Destroy((Object)(object)indicator); indicator = null; } } public void UpdateIndicatorServer(bool wardActive) { if (NetworkServer.active && Object.op_Implicit((Object)(object)indicator) != wardActive) { if (wardActive) { indicator = Object.Instantiate<GameObject>(Malachite.Assets.NetworkObjects.AntiHealAuraIndicator); indicator.GetComponent<NetworkedBodyAttachment>().AttachToGameObjectAndSpawn(((Component)this).gameObject, (string)null); } else { Object.Destroy((Object)(object)indicator); indicator = null; } } } } } namespace EliteReworks2.Elites.Glacial { public class Glacial : TweakBase<Glacial> { public static class Assets { public static class NetworkSoundEvents { public static NetworkSoundEventDef SlowApplied; } public static class Effects { public static GameObject GlacialOnHitExplosion; } public static class Buffs { public static BuffDef Slow80Alt; } internal static void Init() { if (!Object.op_Implicit((Object)(object)NetworkSoundEvents.SlowApplied)) { NetworkSoundEvents.SlowApplied = EliteReworks2Utils.BuildNetworkSound("Play_mage_m2_iceSpear_shoot"); } BuildGlacialOnHitExplosion(); BuildSlow80Alt(); } private static void BuildSlow80Alt() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)Buffs.Slow80Alt)) { BuffDef val = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/Common/bdSlow80.asset").WaitForCompletion(); BuffDef val2 = ScriptableObject.CreateInstance<BuffDef>(); val2.isDebuff = true; val2.isHidden = false; val2.isDOT = false; val2.isCooldown = false; val2.iconSprite = val.iconSprite; val2.buffColor = val.buffColor; val2.canStack = false; ((Object)val2).name = "MoffeinEliteReworks_Slow80Alt"; PluginContentPack.buffDefs.Add(val2); Buffs.Slow80Alt = val2; RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(Slow80AltStats); CharacterModel.UpdateOverlays += new Manipulator(Slow80AltOverlay); } } private static void Slow80AltStats(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(Buffs.Slow80Alt) && !sender.HasBuff(Buffs.Slow80)) { args.moveSpeedReductionMultAdd += 0.8f; } } private static void Slow80AltOverlay(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "Slow80") })) { val.Index += 2; val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<bool, CharacterModel, bool>>((Func<bool, CharacterModel, bool>)((bool hasBuff, CharacterModel self) => hasBuff || self.body.HasBuff(Buffs.Slow80Alt))); } else { Debug.LogError((object)"EliteReworks: Slow80AltOverlay IL hook failed."); } } private static void BuildGlacialOnHitExplosion() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)Effects.GlacialOnHitExplosion)) { return; } GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElementalRings/IceRingExplosion.prefab").WaitForCompletion(), "MoffeinEliteReworks_GlacialOnHitExplosionEffect", false); Object.Destroy((Object)(object)val.GetComponent<ShakeEmitter>()); EffectComponent component = val.GetComponent<EffectComponent>(); component.soundName = ""; component.applyScale = false; ParticleSystemRenderer[] componentsInChildren = val.GetComponentsInChildren<ParticleSystemRenderer>(); ParticleSystemRenderer[] array = componentsInChildren; foreach (ParticleSystemRenderer val2 in array) { string name = ((Object)val2).name; string text = name; if (text == "IceMesh") { Object.Destroy((Object)(object)val2); } } PluginContentPack.effectDefs.Add(new EffectDef(val)); Effects.GlacialOnHitExplosion = val; } } public static float healthBoostCoefficient; public static float damageBoostCoefficient; public static float healthBoostCoefficientHonor; public static float damageBoostCoefficientHonor; public static bool reworkOnHit; public override string ConfigCategoryString => "T1 - Glacial"; public override string ConfigOptionName => "Enable Module"; public override string ConfigDescriptionString => "Enable changes related to Glacial Elites."; protected override void ReadConfig(ConfigFile config) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0069: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected O, but got Unknown //IL_009e: Expected O, but got Unknown //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Expected O, but got Unknown //IL_00d3: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown //IL_0104: Expected O, but got Unknown base.ReadConfig(config); healthBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Health Multiplier"), 3f, new ConfigDescription("Health multiplier for this Elite Type. (Vanilla = 4)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Damage Multiplier"), 1.5f, new ConfigDescription("Damage multiplier for this Elite Type. (Vanilla = 2)", (AcceptableValueBase)null, Array.Empty<object>())).Value; healthBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Health Multiplier"), 2.5f, new ConfigDescription("Health multiplier for this Elite Type when Honor is enabled. (Vanilla = 2.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Damage Multiplier"), 1.5f, new ConfigDescription("Damage multiplier for this Elite Type when Honor is enabled. (Vanilla = 1.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; reworkOnHit = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Frost Explosion on Hit"), true, new ConfigDescription("Glacial Elites create a slowing non-damaging frost explosion on hit.", (AcceptableValueBase)null, Array.Empty<object>())).Value; } protected override void ApplyChanges() { base.ApplyChanges(); ModifyStats(); ReworkOnHitEffect(); Assets.Init(); } private void ModifyStats() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) EliteDef val = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/Base/EliteIce/edIce.asset").WaitForCompletion(); val.healthBoostCoefficient = healthBoostCoefficient; val.damageBoostCoefficient = damageBoostCoefficient; EliteDef val2 = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/Base/EliteIce/edIceHonor.asset").WaitForCompletion(); val2.healthBoostCoefficient = healthBoostCoefficientHonor; val2.damageBoostCoefficient = damageBoostCoefficientHonor; } private void ReworkOnHitEffect() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown if (reworkOnHit) { GlobalEventManager.ProcessHitEnemy += new Manipulator(RemoveVanillaOnHit); GlobalEventManager.OnHitAll += new hook_OnHitAll(FrostExplosionOnHit); } } private void RemoveVanillaOnHit(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>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "AffixWhite"), (Instruction x) => ILPatternMatchingExt.MatchCallvirt<CharacterBody>(x, "HasBuff") })) { val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool orig) => false)); } else { Debug.LogError((object)"EliteReworks: AffixBlue RemoveVanillaOnHit IL hook failed."); } } private void FrostExplosionOnHit(orig_OnHitAll orig, GlobalEventManager self, DamageInfo damageInfo, GameObject hitObject) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, hitObject); if (NetworkServer.active && Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && component.HasBuff(Buffs.AffixWhite) && Object.op_Implicit((Object)(object)component.teamComponent)) { float debuffDuration = 1f + damageInfo.procCoefficient * 2f; EliteReworks2Utils.DebuffSphereOverlap(ModCompat.zetAspectsLoaded ? Assets.Buffs.Slow80Alt.buffIndex : Buffs.Slow80.buffIndex, component.teamComponent.teamIndex, damageInfo.position, 4f, debuffDuration, Assets.Effects.GlacialOnHitExplosion, null, ignoreImmunity: false, falloff: true, Assets.NetworkSoundEvents.SlowApplied); } } } } } namespace EliteReworks2.Elites.Gilded { public class Gilded : TweakBase<Gilded> { public static float healthBoostCoefficient; public static float damageBoostCoefficient; public static float healthBoostCoefficientHonor; public static float damageBoostCoefficientHonor; public static bool directSiphon; public static bool onlyKnockoutGoldFromPlayers; public static float playerDamageCoefficient = 2f; public static float passiveDamage = 24f; public static float passiveDamageBoss = 32f; public override string ConfigCategoryString => "T1 - Gilded"; public override string ConfigOptionName => "Enable Module"; public override string ConfigDescriptionString => "Enable changes related to Voidtouched Elites."; protected override void ReadConfig(ConfigFile config) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_0034: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0069: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Expected O, but got Unknown //IL_009e: Expected O, but got Unknown //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Expected O, but got Unknown //IL_00d3: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown //IL_0104: Expected O, but got Unknown //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_0135: Expected O, but got Unknown base.ReadConfig(config); healthBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Health Multiplier"), 4f, new ConfigDescription("Health multiplier for this Elite Type. (Vanilla = 5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficient = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats - Damage Multiplier"), 2f, new ConfigDescription("Damage multiplier for this Elite Type. (Vanilla = 2.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; healthBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Health Multiplier"), 3.5f, new ConfigDescription("Health multiplier for this Elite Type when Honor is enabled. (Vanilla = 3.5)", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageBoostCoefficientHonor = config.Bind<float>(new ConfigDefinition(ConfigCategoryString, "Stats (Honor) - Damage Multiplier"), 2f, new ConfigDescription("Damage multiplier for this Elite Type when Honor is enabled. (Vanilla = 2)", (AcceptableValueBase)null, Array.Empty<object>())).Value; directSiphon = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Directly Steal Gold"), true, new ConfigDescription("Directly steal gold from players instead of spawning gold chunks.", (AcceptableValueBase)null, Array.Empty<object>())).Value; onlyKnockoutGoldFromPlayers = config.Bind<bool>(new ConfigDefinition(ConfigCategoryString, "Only Knockout Gold from Players"), true, new ConfigDescription("Passive Spikes only knock gold chunks out of players, or when the equipment is used by a player.", (AcceptableValueBase)null, Array.Empty<object>())).Value; } protected override void ApplyChanges() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Expected O, but got Unknown base.ApplyChanges(); ModifyStats(); AffixAurelioniteBehavior.FireAurelioniteAttack += new Manipulator(NormalizePassiveDamage); if (directSiphon) { AffixAurelioniteBehavior.StealMoneyWithFX += new hook_StealMoneyWithFX(AffixAurelioniteBehavior_StealMoneyWithFX); } if (onlyKnockoutGoldFromPlayers) { ProjectileKnockOutGold.KnockGoldFromVictim += new hook_KnockGoldFromVictim(ProjectileKnockOutGold_KnockGoldFromVictim); } } private void ProjectileKnockOutGold_KnockGoldFromVictim(orig_KnockGoldFromVictim orig, ProjectileKnockOutGold self, HurtBox hurtbox) { bool flag = Object.op_Implicit((Object)(object)hurtbox) && Object.op_Implicit((Object)(object)hurtbox.healthComponent) && Object.op_Implicit((Object)(object)hurtbox.healthComponent.body) && hurtbox.healthComponent.body.isPlayerControlled; if (!flag) { ProjectileController component = ((Component)self).GetComponent<ProjectileController>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.owner)) { CharacterBody component2 = component.owner.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component2) && component2.isPlayerControlled) { flag = true; } } } if (flag) { orig.Invoke(self, hurtbox); } } private void ModifyStats() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) EliteDef val = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC2/Elites/EliteAurelionite/edAurelionite.asset").WaitForCompletion(); val.healthBoostCoefficient = healthBoostCoefficient; val.damageBoostCoefficient = damageBoostCoefficient; EliteDef val2 = Addressables.LoadAssetAsync<EliteDef>((object)"RoR2/DLC2/Elites/EliteAurelionite/edAurelioniteHonor.asset").WaitForCompletion(); val2.healthBoostCoefficient = healthBoostCoefficientHonor; val2.damageBoostCoefficient = damageBoostCoefficientHonor; } private static void NormalizePassiveDamage(ILContext il) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Expected O, but got Unknown //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) bool flag = true; ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)2, new Func<I