Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of RiskyMithrix v1.3.1
RiskyMithrix.dll
Decompiled 10 hours 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.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.Configuration; using EntityStates; using EntityStates.BrotherMonster; using EntityStates.RiskyMithrix; using EntityStates.RiskyMithrix.HammerSlam; using EntityStates.RiskyMithrix.Weapon; using IL.EntityStates.BrotherMonster; using KinematicCharacterController; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates; using On.EntityStates.BrotherMonster; using On.RoR2; using R2API; using R2API.Utils; using RiskyMithrix.Artifact; using RiskyMithrix.Changes; using RiskyMithrix.Components; using RiskyMithrix.Modules; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Navigation; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.ResourceManagement.AsyncOperations; [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("RiskyMithrix")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+e27a0dd3450433754f769bba0645ea8c7ee52208")] [assembly: AssemblyProduct("RiskyMithrix")] [assembly: AssemblyTitle("RiskyMithrix")] [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 EntityStates.RiskyMithrix { public class WorldSlam : BaseState { private Animator modelAnimator; private Transform modelTransform; private float duration; private GameObject chargeInstance; private bool hasAttacked = false; public static float baseDuration = 6f; public static float damageCoefficient = 6f; public static GameObject chargeEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ChargeBrotherFist.prefab").WaitForCompletion(); public static GameObject slamImpactEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherSlamImpact.prefab").WaitForCompletion(); public static float waveProjectileDamageCoefficient = 4f; public static float waveProjectileForce = 4000f; public static int waveProjectileCount = 4; public static float lineDamageCoefficient = 9f; private bool isCrit; public override void OnEnter() { //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); isCrit = ((BaseState)this).RollCrit(); modelAnimator = ((EntityState)this).GetModelAnimator(); modelTransform = ((EntityState)this).GetModelTransform(); duration = baseDuration / base.attackSpeedStat; Util.PlayAttackSpeedSound("Play_moonBrother_orb_slam_pre", ((EntityState)this).gameObject, base.attackSpeedStat); ((EntityState)this).PlayCrossfade("FullBody Override", "FistSlam", "playbackRate", duration, 0.1f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = ((EntityState)this).characterDirection.forward; } if (Object.op_Implicit((Object)(object)modelTransform)) { AimAnimator component = ((Component)modelTransform).GetComponent<AimAnimator>(); if (Object.op_Implicit((Object)(object)component)) { ((Behaviour)component).enabled = true; } } Transform val = ((BaseState)this).FindModelChild("MuzzleRight"); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)chargeEffectPrefab)) { chargeInstance = Object.Instantiate<GameObject>(chargeEffectPrefab, val.position, val.rotation); chargeInstance.transform.parent = val; ScaleParticleSystemDuration component2 = chargeInstance.GetComponent<ScaleParticleSystemDuration>(); if (Object.op_Implicit((Object)(object)component2)) { component2.newDuration = duration / 2.8f; } } } public override void OnExit() { if (Object.op_Implicit((Object)(object)chargeInstance)) { EntityState.Destroy((Object)(object)chargeInstance); } ((EntityState)this).PlayAnimation("FullBody Override", "BufferEmpty"); ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0189: 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_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0196: 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_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)modelAnimator) && (modelAnimator.GetFloat("fist.hitBoxActive") > 0.5f || ((EntityState)this).fixedAge >= duration * 0.5f) && !hasAttacked) { if (Object.op_Implicit((Object)(object)chargeInstance)) { EntityState.Destroy((Object)(object)chargeInstance); } EffectManager.SimpleMuzzleFlash(slamImpactEffect, ((EntityState)this).gameObject, "MuzzleFloor", false); if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)modelTransform)) { Transform val = ((BaseState)this).FindModelChild("MuzzleFloor"); if (Object.op_Implicit((Object)(object)val)) { new BlastAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), baseDamage = base.damageStat * damageCoefficient, baseForce = 5000f, position = val.position, radius = 12f, bonusForce = new Vector3(0f, 1000f, 0f), crit = isCrit }.Fire(); } } float num = 360f / (float)waveProjectileCount; Vector3 val2 = Vector3.ProjectOnPlane(((EntityState)this).inputBank.aimDirection, Vector3.up); Vector3 footPosition = ((EntityState)this).characterBody.footPosition; for (int i = 0; i < waveProjectileCount; i++) { Vector3 val3 = Quaternion.AngleAxis(num * (float)i, Vector3.up) * val2; ProjectileManager.instance.FireProjectileWithoutDamageType(PluginAssets.Projectiles.AntiFlyingUltOrbVanillaPrefab, footPosition, Util.QuaternionSafeLookRotation(val3), ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * waveProjectileDamageCoefficient, waveProjectileForce, isCrit, (DamageColorIndex)0, (GameObject)null, -1f); } FireAntiFlyingProjectile(); } hasAttacked = true; } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public void FireAntiFlyingProjectile() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: 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_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) int num = ((!Object.op_Implicit((Object)(object)PhaseCounter.instance) || PhaseCounter.instance.phase <= 1) ? 1 : 3); TeamIndex myTeam = ((BaseState)this).GetTeam(); IEnumerable<CharacterBody> enumerable = CharacterBody.instancesList.Where((CharacterBody b) => Object.op_Implicit((Object)(object)b.teamComponent) && b.teamComponent.teamIndex != myTeam && (Object)(object)b.master != (Object)null && !((Enum)b.bodyFlags).HasFlag((Enum)(object)(BodyFlags)4) && Object.op_Implicit((Object)(object)b.healthComponent) && b.healthComponent.alive); IEnumerable<CharacterBody> enumerable2 = enumerable.Where((CharacterBody b) => b.isPlayerControlled); IEnumerable<CharacterBody> enumerable3 = enumerable2.Where((CharacterBody b) => Object.op_Implicit((Object)(object)b.characterMotor) && b.characterMotor.isGrounded); for (int i = 0; i < num; i++) { IEnumerable<CharacterBody> enumerable4 = null; if (enumerable3.Count() > 0) { enumerable4 = enumerable3; } else if (enumerable2.Count() > 0) { enumerable4 = enumerable2; } else if (enumerable.Count() > 0) { enumerable4 = enumerable; } Vector3 position = ((EntityState)this).transform.position; CharacterBody target = null; if (enumerable4 != null) { target = enumerable4.ToArray()[Random.RandomRangeInt(0, enumerable4.Count())]; enumerable3 = enumerable3.Where((CharacterBody b) => (Object)(object)b != (Object)(object)target); enumerable2 = enumerable2.Where((CharacterBody b) => (Object)(object)b != (Object)(object)target); enumerable = enumerable.Where((CharacterBody b) => (Object)(object)b != (Object)(object)target); } if (!Object.op_Implicit((Object)(object)target)) { float num2 = Random.Range(60f, 120f); float num3 = Random.Range(0f, 360f); Vector3 val = Vector3.forward * num2; position = Quaternion.AngleAxis(num3, Vector3.up) * val; } FireProjectileInfo val2 = default(FireProjectileInfo); val2.projectilePrefab = PluginAssets.Projectiles.AntiFlyingUltLineVanillaPrefab; val2.damage = base.damageStat * damageCoefficient; val2.crit = isCrit; val2.damageTypeOverride = DamageTypeCombo.op_Implicit((DamageType)4194304); val2.owner = ((EntityState)this).gameObject; val2.force = 0f; val2.procChainMask = default(ProcChainMask); val2.position = position; val2.rotation = Quaternion.Euler(0f, Random.Range(0f, 360f), 0f); FireProjectileInfo val3 = val2; ProjectileManager.instance.FireProjectile(val3); } } } } namespace EntityStates.RiskyMithrix.Weapon { public class FireLunarOrb : BaseState { public static float damageCoefficient = 3f; public static float baseDuration = 0.25f; public static GameObject muzzleFlashEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/MuzzleflashLunarShard.prefab").WaitForCompletion(); private float duration; public override void OnEnter() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: 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_004b: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); Transform val = ((BaseState)this).FindModelChild("MuzzleLeft"); if (Object.op_Implicit((Object)(object)val)) { ((Ray)(ref aimRay)).origin = val.position; } FireProjectileInfo val2 = default(FireProjectileInfo); val2.position = ((Ray)(ref aimRay)).origin; val2.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction); val2.crit = ((BaseState)this).RollCrit(); val2.damage = base.damageStat * damageCoefficient; val2.damageColorIndex = (DamageColorIndex)0; val2.owner = ((EntityState)this).gameObject; val2.procChainMask = default(ProcChainMask); val2.force = 0f; val2.useFuseOverride = false; val2.useSpeedOverride = false; val2.target = null; val2.projectilePrefab = PluginAssets.Projectiles.LunarOrbProjectilePrefab; FireProjectileInfo val3 = val2; ProjectileManager.instance.FireProjectile(val3); } ((EntityState)this).PlayAnimation("Gesture, Additive", "FireLunarShards"); ((EntityState)this).PlayAnimation("Gesture, Override", "FireLunarShards"); ((BaseState)this).AddRecoil(-0.6f, -1.2f, -4.5f, 4.5f); ((EntityState)this).characterBody.AddSpreadBloom(0.4f); EffectManager.SimpleMuzzleFlash(muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleLeft", false); Util.PlaySound("Play_lunar_wisp_attack2_launch", ((EntityState)this).gameObject); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } } namespace EntityStates.RiskyMithrix.HammerSlam { public class GetBestTarget : BaseState { public static float maxRange = 45f; public static float maxAngle = 180f; public override void OnEnter() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Expected O, but got Unknown ((BaseState)this).OnEnter(); CharacterBody val = FindBestTarget(maxRange); if (((EntityState)this).isAuthority) { if ((Object)(object)val != (Object)null) { ((EntityState)this).outer.SetNextState((EntityState)(object)new RotateToTarget { target = val }); } else { ((EntityState)this).outer.SetNextState((EntityState)new WeaponSlam()); } } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } public CharacterBody FindBestTarget(float range) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0035: 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_0093: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) float rangeSqr = range * range; CharacterBody result = null; Vector3 forward = ((EntityState)this).transform.forward; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { forward = ((EntityState)this).characterDirection.forward; } Vector2 forward2d = new Vector2(forward.x, forward.z); ((Vector2)(ref forward2d)).Normalize(); Vector3 myPos = ((EntityState)this).transform.position; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { myPos = ((EntityState)this).characterBody.corePosition; } TeamIndex myTeam = ((BaseState)this).GetTeam(); IEnumerable<CharacterBody> enumerable = CharacterBody.instancesList.Where(delegate(CharacterBody b) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_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) bool flag = Object.op_Implicit((Object)(object)b.teamComponent) && b.teamComponent.teamIndex != myTeam && (Object)(object)b.master != (Object)null && !((Enum)b.bodyFlags).HasFlag((Enum)(object)(BodyFlags)4) && Object.op_Implicit((Object)(object)b.healthComponent) && b.healthComponent.alive; Vector3 val3 = b.corePosition - myPos; Vector2 val4 = default(Vector2); ((Vector2)(ref val4))..ctor(val3.x, val3.z); flag = flag && ((Vector2)(ref val4)).sqrMagnitude <= rangeSqr; if (flag) { Vector2 val5 = default(Vector2); ((Vector2)(ref val5))..ctor(val3.x, val3.z); ((Vector2)(ref val5)).Normalize(); float num3 = Vector2.Angle(forward2d, val5); flag = flag && num3 <= maxAngle; } return flag; }); IEnumerable<CharacterBody> enumerable2 = enumerable.Where((CharacterBody b) => b.isPlayerControlled); IEnumerable<CharacterBody> enumerable3 = ((enumerable2.Count() > 0) ? enumerable2 : enumerable); if (enumerable3.Count() > 0) { float num = -1f; Vector2 val2 = default(Vector2); foreach (CharacterBody item in enumerable3) { Vector3 val = item.corePosition - myPos; ((Vector2)(ref val2))..ctor(val.x, val.z); ((Vector2)(ref val2)).Normalize(); float num2 = Vector2.Angle(forward2d, val2); if (num2 < num || num < 0f) { result = item; num = num2; } } } return result; } } public class RotateToTarget : BaseState { public static float rotationSpeed = 600f; public static float maxDuration = 0.3f; public static float angleTolerance = 0.5f; public static float initialAngleTolerance = 10f; public CharacterBody target; public override void OnEnter() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown if (((EntityState)this).isAuthority && !Object.op_Implicit((Object)(object)target)) { ((EntityState)this).outer.SetNextState((EntityState)new WeaponSlam()); } } public override void FixedUpdate() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: 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_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); if (!((EntityState)this).isAuthority) { return; } if (!Object.op_Implicit((Object)(object)target) || ((EntityState)this).fixedAge >= maxDuration) { ((EntityState)this).outer.SetNextState((EntityState)new WeaponSlam()); return; } Vector3 val = ((EntityState)this).transform.position; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { val = ((EntityState)this).characterBody.corePosition; } Vector3 forward = ((EntityState)this).transform.forward; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { forward = ((EntityState)this).characterDirection.forward; } Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(forward.x, forward.z); ((Vector2)(ref val2)).Normalize(); Vector3 val3 = target.corePosition - val; Vector2 val4 = default(Vector2); ((Vector2)(ref val4))..ctor(val3.x, val3.z); ((Vector2)(ref val4)).Normalize(); float num = Vector2.Angle(val2, val4); float num2 = angleTolerance; if (((EntityState)this).fixedAge <= 0.033f) { num2 = initialAngleTolerance; } if (num <= num2) { ((EntityState)this).outer.SetNextState((EntityState)new WeaponSlam()); return; } float num3 = Mathf.Min(num, rotationSpeed * ((EntityState)this).GetDeltaTime()); ((Vector3)(ref val3)).Normalize(); Vector3 forward2 = Vector3.RotateTowards(forward, val3, MathF.PI / 180f * num3, float.PositiveInfinity); SetForward(forward2); } public Vector3 GetForward() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { return ((EntityState)this).characterDirection.forward; } return ((EntityState)this).transform.forward; } public void SetForward(Vector3 forward) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = forward; } else { ((EntityState)this).transform.forward = forward; } if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { ((EntityState)this).inputBank.aimDirection = forward; } if (((EntityState)this).characterBody.isPlayerControlled || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody.master) || ((EntityState)this).characterBody.master.aiComponents == null) { return; } BaseAI[] aiComponents = ((EntityState)this).characterBody.master.aiComponents; foreach (BaseAI val in aiComponents) { if ((Object)(object)val != (Object)null) { val.bodyInputs.desiredAimDirection = forward; } } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } } namespace RiskyMithrix { internal static class PluginUtils { internal static void SetAddressableEntityStateField(string fullEntityStatePath, string fieldName, string value) { //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) string fieldName2 = fieldName; string value2 = value; AsyncOperationHandle<EntityStateConfiguration> val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath); val.Completed += delegate(AsyncOperationHandle<EntityStateConfiguration> handle) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) SetAddressableEntityStateField_String_Completed(handle, fieldName2, value2); }; } private static void SetAddressableEntityStateField_String_Completed(AsyncOperationHandle<EntityStateConfiguration> handle, string fieldName, string value) { EntityStateConfiguration result = handle.Result; for (int i = 0; i < result.serializedFieldsCollection.serializedFields.Length; i++) { if (result.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { result.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return; } } Debug.LogError((object)("RiskyMithrix: " + ((object)result)?.ToString() + " does not have field " + fieldName)); } internal static void SetAddressableEntityStateField(string fullEntityStatePath, string fieldName, Object newObject) { //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) string fieldName2 = fieldName; Object newObject2 = newObject; AsyncOperationHandle<EntityStateConfiguration> val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath); val.Completed += delegate(AsyncOperationHandle<EntityStateConfiguration> handle) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) SetAddressableEntityStateField_Object_Completed(handle, fieldName2, newObject2); }; } private static void SetAddressableEntityStateField_Object_Completed(AsyncOperationHandle<EntityStateConfiguration> handle, string fieldName, Object newObject) { EntityStateConfiguration result = handle.Result; for (int i = 0; i < result.serializedFieldsCollection.serializedFields.Length; i++) { if (result.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { result.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue = newObject; return; } } Debug.LogError((object)("RiskyMithrix: " + ((object)result)?.ToString() + " does not have field " + fieldName)); } } [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.RiskyLives.RiskyMithrix", "RiskyMithrix", "1.3.1")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class RiskyMithrix : BaseUnityPlugin { private void Awake() { PluginConfig.ReadConfig(((BaseUnityPlugin)this).Config); new PluginContentPack().Init(); PluginAssets.Init(); GeneralChanges.Init(); SprintBashChanges.Init(); LunarShardChanges.Init(); SkyLeapChanges.Init(); WeaponSlamChanges.Init(); BrotherChallengeArtifact.Init(); Interactor component = PluginAssets.BrotherBodyObject.GetComponent<Interactor>(); if (Object.op_Implicit((Object)(object)component)) { component.maxInteractionDistance = 10f; } } } } namespace RiskyMithrix.Modules { public static class PluginAssets { public static class Projectiles { public static GameObject SprintBashProjectilePrefab; public static GameObject LunarOrbProjectilePrefab; public static GameObject FirePillarVanillaPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherFirePillar.prefab").WaitForCompletion(); public static GameObject UltLineRightPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherUltLineProjectileRotateRight.prefab").WaitForCompletion(); public static GameObject AntiFlyingUltLineVanillaPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BrotherHaunt/BrotherUltLineProjectileStatic.prefab").WaitForCompletion(); public static GameObject AntiFlyingUltOrbVanillaPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherSunderWave, Energized.prefab").WaitForCompletion(); public static GameObject FlamePillarMovingPrefab; } public static class SkillDefs { public static SkillDef SprintLunarShardVanilla = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Brother/FireLunarShards.asset").WaitForCompletion(); public static SkillDef FireLunarShardsHurt = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Brother/FireLunarShardsHurt.asset").WaitForCompletion(); public static SkillDef FireLunarOrb; } public static class Effects { public static GameObject SkyLeapPredictionEffect; } public static AssetBundle mainAssetBundle; public static GameObject BrotherHurtMasterObject = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherHurtMaster.prefab").WaitForCompletion(); public static GameObject BrotherMasterObject = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherMaster.prefab").WaitForCompletion(); public static GameObject ITBrotherMasterObject = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ITBrotherMaster.prefab").WaitForCompletion(); public static GameObject BrotherBodyObject = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherBody.prefab").WaitForCompletion(); public static GameObject ITBrotherBodyObject = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ITBrotherBody.prefab").WaitForCompletion(); public static GameObject BrotherHurtBodyObject = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherHurtBody.prefab").WaitForCompletion(); public static BodyIndex BrotherBodyIndex; public static BodyIndex ITBrotherBodyIndex; public static BodyIndex BrotherHurtBodyIndex; internal static void Init() { if (!Object.op_Implicit((Object)(object)mainAssetBundle)) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("RiskyMithrix.riskymithrixbundle"); mainAssetBundle = AssetBundle.LoadFromStream(stream); } RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); CreateAssets(); } private static void OnLoad() { //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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_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) BrotherBodyIndex = BodyCatalog.FindBodyIndex("BrotherBody"); ITBrotherBodyIndex = BodyCatalog.FindBodyIndex("ITBrotherBody"); BrotherHurtBodyIndex = BodyCatalog.FindBodyIndex("BrotherHurtBody"); } private static void CreateAssets() { SetupSprintBashProjectile(); SetupLunarOrb(); SetupSkyLeapPredictionEffect(); SetupFlamePillarMoving(); } private static void SetupFlamePillarMoving() { //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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/FalseSonBoss/FalseSonFissurePillar.prefab").WaitForCompletion(), "RiskyMithrixFlamePillarMoving", true); ProjectileController component = val.GetComponent<ProjectileController>(); component.ghostPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherFirePillarGhost.prefab").WaitForCompletion(); ProjectileDotZone component2 = val.GetComponent<ProjectileDotZone>(); component2.damageCoefficient = 0.5f; component2.fireFrequency = 6f; component2.resetFrequency = 3f; component2.overlapProcCoefficient = 0.2f; PluginContentPack.projectilePrefabs.Add(val); Projectiles.FlamePillarMovingPrefab = val; } private static void SetupSkyLeapPredictionEffect() { //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) Effects.SkyLeapPredictionEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/LunarGolemSpawnEffect.prefab").WaitForCompletion(); } private static void SetupLunarOrb() { //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_0028: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispTrackingBomb.prefab").WaitForCompletion(), "RiskyMithrixLunarOrbProjectile", true); ProjectileImpactExplosion component = val.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component).falloffModel = (FalloffModel)0; ProjectileSimple component2 = val.GetComponent<ProjectileSimple>(); component2.desiredForwardSpeed = 90f; PluginContentPack.projectilePrefabs.Add(val); Projectiles.LunarOrbProjectilePrefab = val; } private static void SetupSprintBashProjectile() { //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 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/LunarShardProjectile.prefab").WaitForCompletion(), "RiskyMithrixLunarShardNoTrackingProjectile", true); val.GetComponent<ProjectileController>().isPrediction = true; Object.Destroy((Object)(object)val.GetComponent<ProjectileDirectionalTargetFinder>()); Object.Destroy((Object)(object)val.GetComponent<ProjectileSteerTowardTarget>()); Object.Destroy((Object)(object)val.GetComponent<ProjectileTargetComponent>()); PluginContentPack.projectilePrefabs.Add(val); Projectiles.SprintBashProjectilePrefab = val; } } public static class PluginConfig { public static class General { public static ConfigEntry<bool> statChanges; public static ConfigEntry<bool> debuffResist; public static ConfigEntry<bool> fallImmunity; public static ConfigEntry<float> freezeResist; public static ConfigEntry<bool> prioritizePlayers; } public static class WeaponSlam { public static ConfigEntry<bool> stopOnUse; public static ConfigEntry<bool> rotateBeforeUse; public static ConfigEntry<bool> spawnFirePillars; public static ConfigEntry<int> firePillarsPhase1; public static ConfigEntry<int> firePillarsPhase2; public static ConfigEntry<bool> fasterAttack; public static ConfigEntry<bool> phase1SunderWave; public static ConfigEntry<bool> phase2SunderWave; } public static class SprintBash { public static ConfigEntry<bool> fireProjectilesPhase1; public static ConfigEntry<bool> fireProjectilesPhase2; public static ConfigEntry<bool> antiTrimp; public static ConfigEntry<bool> fasterAttack; } public static class LunarShard { public static ConfigEntry<bool> replaceLunarShard; public static ConfigEntry<bool> replaceLunarShardPhase4; } public static class SkyLeap { public static ConfigEntry<bool> directTargetPlayer; public static ConfigEntry<bool> createPillar; public static ConfigEntry<int> firePillarsPhase1; public static ConfigEntry<int> firePillarsPhase2; } public static class AntiFlyingAttack { public static ConfigEntry<bool> enabled; } public static class Dash { public static ConfigEntry<bool> removeBackdashMoveScaling; } public static class Artifact { public static ConfigEntry<bool> enabled; public static ConfigEntry<bool> extraArmor; public static ConfigEntry<bool> extraSpeed; public static ConfigEntry<bool> groundOrbOnSlam; public static ConfigEntry<bool> groundOrbOnLeap; public static ConfigEntry<bool> moreMelee; public static ConfigEntry<bool> moreSlide; public static ConfigEntry<bool> slideCleanse; public static ConfigEntry<bool> fasterLeap; public static ConfigEntry<bool> moreSprintBashShards; public static ConfigEntry<bool> pizzaOnLeapP1; public static ConfigEntry<bool> pizzaOnLeapP2; } internal const string catGeneral = "General"; internal const string catSprintBash = "Sprint Bash"; internal const string catLunarShard = "Lunar Shards"; internal const string catSkyLeap = "Sky Leap"; internal const string catAntiFlying = "Anti Flying Attack"; internal const string catWeaponSlam = "Weapon Slam"; internal const string catDash = "Dash"; internal const string catArtifact = "Artifact of Hatred"; internal static void ReadConfig(ConfigFile config) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown //IL_0043: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown //IL_006f: 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_008e: Expected O, but got Unknown //IL_008e: Expected O, but got Unknown //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected O, but got Unknown //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_00d5: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Expected O, but got Unknown //IL_0100: Expected O, but got Unknown //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Expected O, but got Unknown //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Expected O, but got Unknown //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Expected O, but got Unknown //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Expected O, but got Unknown //IL_01b8: 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_01d3: Expected O, but got Unknown //IL_01d3: Expected O, but got Unknown //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Expected O, but got Unknown //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Expected O, but got Unknown //IL_021a: Expected O, but got Unknown //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Expected O, but got Unknown //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Expected O, but got Unknown //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Expected O, but got Unknown //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Expected O, but got Unknown //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Expected O, but got Unknown //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Expected O, but got Unknown //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Expected O, but got Unknown //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Expected O, but got Unknown //IL_030a: Unknown result type (might be due to invalid IL or missing references) //IL_0316: Expected O, but got Unknown //IL_0326: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Expected O, but got Unknown //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_034e: Expected O, but got Unknown //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0379: Expected O, but got Unknown //IL_0379: Expected O, but got Unknown //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Expected O, but got Unknown //IL_03a4: Expected O, but got Unknown //IL_03b4: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Unknown result type (might be due to invalid IL or missing references) //IL_03cf: Expected O, but got Unknown //IL_03cf: Expected O, but got Unknown //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Expected O, but got Unknown //IL_03fa: Expected O, but got Unknown //IL_040a: Unknown result type (might be due to invalid IL or missing references) //IL_041b: Unknown result type (might be due to invalid IL or missing references) //IL_0425: Expected O, but got Unknown //IL_0425: Expected O, but got Unknown //IL_0435: Unknown result type (might be due to invalid IL or missing references) //IL_0441: Expected O, but got Unknown //IL_0451: Unknown result type (might be due to invalid IL or missing references) //IL_0462: Unknown result type (might be due to invalid IL or missing references) //IL_046c: Expected O, but got Unknown //IL_046c: Expected O, but got Unknown //IL_047c: Unknown result type (might be due to invalid IL or missing references) //IL_0488: Expected O, but got Unknown //IL_0498: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Expected O, but got Unknown General.statChanges = config.Bind<bool>(new ConfigDefinition("General", "Stat Changes"), true, (ConfigDescription)null); General.debuffResist = config.Bind<bool>(new ConfigDefinition("General", "Debuff Resistance"), true, new ConfigDescription("Slows and Attack Speed reduction are less effective.", (AcceptableValueBase)null, Array.Empty<object>())); General.fallImmunity = config.Bind<bool>(new ConfigDefinition("General", "Fall Damage Immunity"), true, (ConfigDescription)null); General.freezeResist = config.Bind<float>(new ConfigDefinition("General", "Freeze Resistance"), 0.5f, new ConfigDescription("Affects how long Freeze lasts on Mithrix. Set to 0 to make him immune to Freeze, 1 to make it work like Vanilla.", (AcceptableValueBase)null, Array.Empty<object>())); General.prioritizePlayers = config.Bind<bool>(new ConfigDefinition("General", "Prioritize Players"), true, (ConfigDescription)null); WeaponSlam.stopOnUse = config.Bind<bool>(new ConfigDefinition("Weapon Slam", "Stop Momentum"), true, new ConfigDescription("Stop Mithrix's movement before using Slam so that he doesn't overshoot his target when moving too fast.", (AcceptableValueBase)null, Array.Empty<object>())); WeaponSlam.rotateBeforeUse = config.Bind<bool>(new ConfigDefinition("Weapon Slam", "Rotate Before Use"), true, new ConfigDescription("Rotate towards a player before using Slam.", (AcceptableValueBase)null, Array.Empty<object>())); WeaponSlam.spawnFirePillars = config.Bind<bool>(new ConfigDefinition("Weapon Slam", "Flame Pillars"), true, (ConfigDescription)null); WeaponSlam.firePillarsPhase1 = config.Bind<int>(new ConfigDefinition("Weapon Slam", "Flame Pillars - Phase 1 Count"), 3, (ConfigDescription)null); WeaponSlam.firePillarsPhase2 = config.Bind<int>(new ConfigDefinition("Weapon Slam", "Flame Pillars - Phase 2 Count"), 5, (ConfigDescription)null); WeaponSlam.phase1SunderWave = config.Bind<bool>(new ConfigDefinition("Weapon Slam", "Flame Pillars - Phase 1 Sunder Waves"), true, (ConfigDescription)null); WeaponSlam.phase2SunderWave = config.Bind<bool>(new ConfigDefinition("Weapon Slam", "Flame Pillars - Phase 2 360 degree Sunder Waves"), true, (ConfigDescription)null); WeaponSlam.fasterAttack = config.Bind<bool>(new ConfigDefinition("Weapon Slam", "Faster Attack"), true, (ConfigDescription)null); SprintBash.fireProjectilesPhase1 = config.Bind<bool>(new ConfigDefinition("Sprint Bash", "Fire Projectiles Always"), true, new ConfigDescription("Always fire projectiles during Sprint Bash.", (AcceptableValueBase)null, Array.Empty<object>())); SprintBash.fireProjectilesPhase2 = config.Bind<bool>(new ConfigDefinition("Sprint Bash", "Fire Projectiles in Phase 2"), true, (ConfigDescription)null); SprintBash.antiTrimp = config.Bind<bool>(new ConfigDefinition("Sprint Bash", "Anti-Trimp"), true, new ConfigDescription("Prevent Mithrix from launching himself into the sky.", (AcceptableValueBase)null, Array.Empty<object>())); SprintBash.fasterAttack = config.Bind<bool>(new ConfigDefinition("Sprint Bash", "Faster Attack"), true, (ConfigDescription)null); LunarShard.replaceLunarShard = config.Bind<bool>(new ConfigDefinition("Lunar Shards", "Replace Sprinting Lunar Shardswith Orbs"), true, (ConfigDescription)null); LunarShard.replaceLunarShardPhase4 = config.Bind<bool>(new ConfigDefinition("Lunar Shards", "Replace Phase 4 Lunar Shards with Orbs"), true, (ConfigDescription)null); SkyLeap.directTargetPlayer = config.Bind<bool>(new ConfigDefinition("Sky Leap", "Target Players"), true, (ConfigDescription)null); SkyLeap.createPillar = config.Bind<bool>(new ConfigDefinition("Sky Leap", "Flame Pillar"), true, (ConfigDescription)null); SkyLeap.firePillarsPhase1 = config.Bind<int>(new ConfigDefinition("Sky Leap", "Flame Pillars - Phase 1 Count"), 4, (ConfigDescription)null); SkyLeap.firePillarsPhase2 = config.Bind<int>(new ConfigDefinition("Sky Leap", "Flame Pillars - Phase 2 Count"), 7, (ConfigDescription)null); Dash.removeBackdashMoveScaling = config.Bind<bool>(new ConfigDefinition("Dash", "Backwards Dash - Disable Move Speed Scaling"), true, (ConfigDescription)null); Artifact.enabled = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Enable Artifact"), true, (ConfigDescription)null); Artifact.extraArmor = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Extra Adaptive Armor"), true, (ConfigDescription)null); Artifact.extraSpeed = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Extra Speed"), true, (ConfigDescription)null); Artifact.groundOrbOnSlam = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Spawn Orbs on Weapon Slam"), true, new ConfigDescription("Requires Weapon Slam Flame Pillars.", (AcceptableValueBase)null, Array.Empty<object>())); Artifact.groundOrbOnLeap = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Spawn Orbs on Sky Leap"), true, new ConfigDescription("Requires Sky Leap Flame Pillars.", (AcceptableValueBase)null, Array.Empty<object>())); Artifact.moreMelee = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "More Melee"), true, new ConfigDescription("More stocks and lower cooldowns on melee attacks.", (AcceptableValueBase)null, Array.Empty<object>())); Artifact.moreSlide = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "More Dashes"), true, new ConfigDescription("More stocks and lower cooldowns on dashes.", (AcceptableValueBase)null, Array.Empty<object>())); Artifact.slideCleanse = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Dash Cleanse"), true, new ConfigDescription("Dash cleanses debuffs.", (AcceptableValueBase)null, Array.Empty<object>())); Artifact.fasterLeap = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Faster Sky Leap"), true, (ConfigDescription)null); Artifact.moreSprintBashShards = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "More Sprint Bash Shards"), true, new ConfigDescription("Requires Sprint Bash Fire Projectiles.", (AcceptableValueBase)null, Array.Empty<object>())); Artifact.pizzaOnLeapP1 = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Pizza After Sky Leap - Phase 1"), false, (ConfigDescription)null); Artifact.pizzaOnLeapP2 = config.Bind<bool>(new ConfigDefinition("Artifact of Hatred", "Pizza After Sky Leap - Phase 2"), true, (ConfigDescription)null); } } public class PluginContentPack : IContentPackProvider { [CompilerGenerated] private sealed class <FinalizeAsync>d__12 : 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__12(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__11 : 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__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; 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__10 : 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__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; <>4__this.contentPack.identifier = <>4__this.identifier; <>4__this.contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); <>4__this.contentPack.entityStateTypes.Add(entityStatesTypes.ToArray()); <>4__this.contentPack.skillDefs.Add(skillDefs.ToArray()); <>4__this.contentPack.effectDefs.Add(effectDefs.ToArray()); <>4__this.contentPack.artifactDefs.Add(artifactDefs.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<SkillDef> skillDefs = new List<SkillDef>(); public static List<GameObject> projectilePrefabs = new List<GameObject>(); public static List<Type> entityStatesTypes = new List<Type>(); public static List<EffectDef> effectDefs = new List<EffectDef>(); public static List<ArtifactDef> artifactDefs = new List<ArtifactDef>(); public string identifier => "com.RiskyLives.RiskyMithrix"; internal void Init() { //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__10))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadStaticContentAsync>d__10(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<GenerateContentPackAsync>d__11))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <GenerateContentPackAsync>d__11(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(<FinalizeAsync>d__12))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FinalizeAsync>d__12(0) { <>4__this = this, args = args }; } } } namespace RiskyMithrix.Components { public class SkyLeapVFXComponent : MonoBehaviour { public Vector3 offset = Vector3.zero; public float durationBetweenVFX = 0.5f; private float stopwatch = 0f; private void FixedUpdate() { stopwatch += Time.fixedDeltaTime; if (stopwatch >= durationBetweenVFX) { stopwatch -= durationBetweenVFX; SpawnVFX(); } } public void SpawnVFX() { //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_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown EffectManager.SpawnEffect(PluginAssets.Effects.SkyLeapPredictionEffect, new EffectData { origin = ((Component)this).transform.position - offset }, true); } } public class WeaponSlamRateStorangeComponent : MonoBehaviour { private float rate = -1f; public void StoreOrigRate(float newRate) { rate = newRate; } public float GetOrigRate() { return rate; } public void ResetRate() { rate = -1f; } } } namespace RiskyMithrix.Changes { internal static class AntiFlyingAttack { internal static void Init() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown PluginContentPack.entityStatesTypes.Add(typeof(AntiFlyingAttack)); if (PluginConfig.AntiFlyingAttack.enabled.Value) { WeaponSlam.OnExit += new hook_OnExit(WeaponSlam_OnExit); } } private static void WeaponSlam_OnExit(orig_OnExit orig, WeaponSlam self) { ((EntityState)self).outer.SetNextState((EntityState)(object)new WorldSlam()); } } internal static class DashChanges { internal static void Init() { RemoveBackdashMoveScaling(); } private static void RemoveBackdashMoveScaling() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown if (PluginConfig.Dash.removeBackdashMoveScaling.Value) { SlideBackwardState.OnEnter += new hook_OnEnter(SlideBackwardState_OnEnter); } } private static void SlideBackwardState_OnEnter(orig_OnEnter orig, SlideBackwardState self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)((EntityState)self).characterBody)) { ((BaseState)self).moveSpeedStat = ((EntityState)self).characterBody.baseMoveSpeed; } } } internal static class GeneralChanges { internal static void Init() { ModifyStats(); DebuffResistance(); AddFreezeResist(); } private static void AddFreezeResist() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown if (!(PluginConfig.General.freezeResist.Value <= 0f) && !(PluginConfig.General.freezeResist.Value >= 1f)) { SetStateOnHurt.SetFrozen += new hook_SetFrozen(SetStateOnHurt_SetFrozen); } } private static void SetStateOnHurt_SetFrozen(orig_SetFrozen orig, SetStateOnHurt self, float duration) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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_0054: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.targetStateMachine) && Object.op_Implicit((Object)(object)self.targetStateMachine.commonComponents.characterBody)) { BodyIndex bodyIndex = self.targetStateMachine.commonComponents.characterBody.bodyIndex; if (bodyIndex == BodyCatalog.FindBodyIndex("BrotherBody") || bodyIndex == BodyCatalog.FindBodyIndex("ITBrotherBody")) { duration *= PluginConfig.General.freezeResist.Value; } } orig.Invoke(self, duration); } private static void FrozenState_OnEnter(orig_OnEnter orig, FrozenState self) { orig.Invoke(self); } private static void ModifyStats() { //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_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) ChangeStats(PluginAssets.BrotherBodyObject); ChangeStats(PluginAssets.ITBrotherBodyObject); if (PluginConfig.General.prioritizePlayers.Value) { SetPrioritizePlayers(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherMaster.prefab").WaitForCompletion()); SetPrioritizePlayers(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/ITBrotherMaster.prefab").WaitForCompletion()); } static void ChangeStats(GameObject bodyObject) { //IL_0060: 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_0067: Unknown result type (might be due to invalid IL or missing references) CharacterBody component2 = bodyObject.GetComponent<CharacterBody>(); if ((Object)(object)component2 != (Object)null) { if (PluginConfig.General.statChanges.Value && component2.baseMaxHealth < 1400f) { component2.baseMaxHealth = 1400f; component2.levelMaxHealth = 420f; } if (PluginConfig.General.fallImmunity.Value) { component2.bodyFlags = (BodyFlags)(component2.bodyFlags | 1); } if (PluginConfig.General.freezeResist.Value <= 0f) { SetStateOnHurt component3 = bodyObject.GetComponent<SetStateOnHurt>(); if (Object.op_Implicit((Object)(object)component3)) { component3.canBeFrozen = false; } } } } static void SetPrioritizePlayers(GameObject masterObject) { BaseAI component = masterObject.GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component)) { component.prioritizePlayers = true; } } } private static void DebuffResistance() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown if (PluginConfig.General.debuffResist.Value) { CharacterBody.RecalculateStats += new hook_RecalculateStats(CharacterBody_RecalculateStats); } } private static void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (self.bodyIndex == PluginAssets.BrotherBodyIndex || self.bodyIndex == PluginAssets.BrotherHurtBodyIndex) { float num = self.baseMoveSpeed * (self.isSprinting ? self.sprintingSpeedMultiplier : 1f); if (self.moveSpeed > 0f && self.moveSpeed < num) { self.moveSpeed = Mathf.Lerp(self.moveSpeed, num, 0.75f); } if (self.attackSpeed < 1f && self.attackSpeed > 0f) { self.attackSpeed = Mathf.Lerp(self.attackSpeed, 1f, 0.75f); } } } } internal static class LunarShardChanges { internal static void Init() { ReplaceLunarShard(); } private static void ReplaceLunarShard() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.skillName = "SprintShootOrbs"; ((Object)val).name = val.skillName; val.icon = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Brother/FireLunarShards.asset").WaitForCompletion().icon; val.activationStateMachineName = "Weapon"; val.activationState = new SerializableEntityStateType(typeof(FireLunarOrb)); val.interruptPriority = (InterruptPriority)0; val.baseRechargeInterval = 5f; val.baseMaxStock = 5; val.rechargeStock = 4; val.requiredStock = 1; val.stockToConsume = 1; val.resetCooldownTimerOnUse = false; val.fullRestockOnAssign = true; val.dontAllowPastMaxStocks = false; val.beginSkillCooldownOnSkillEnd = false; val.cancelSprintingOnActivation = false; val.forceSprintDuringState = false; val.canceledFromSprinting = false; val.isCombatSkill = true; val.mustKeyPress = false; val.keywordTokens = new string[0]; PluginContentPack.skillDefs.Add(val); PluginContentPack.entityStatesTypes.Add(typeof(FireLunarOrb)); PluginAssets.SkillDefs.FireLunarOrb = val; if (PluginConfig.LunarShard.replaceLunarShard.Value) { ReplaceSkillOverride(PluginAssets.BrotherBodyObject); ReplaceSkillOverride(PluginAssets.ITBrotherBodyObject); ModifyMaster(PluginAssets.BrotherMasterObject); ModifyMaster(PluginAssets.ITBrotherMasterObject); } if (PluginConfig.LunarShard.replaceLunarShardPhase4.Value) { SkillFamily val2 = Addressables.LoadAssetAsync<SkillFamily>((object)"RoR2/Base/Brother/BrotherHurtPrimaryFamily.asset").WaitForCompletion(); val2.variants[0].skillDef = PluginAssets.SkillDefs.FireLunarOrb; ModifyMaster(PluginAssets.BrotherHurtMasterObject); } static void ModifyMaster(GameObject masterObject) { AISkillDriver[] components = masterObject.GetComponents<AISkillDriver>(); AISkillDriver[] array = components; foreach (AISkillDriver val3 in array) { if ((Object)(object)val3.requiredSkill == (Object)(object)PluginAssets.SkillDefs.SprintLunarShardVanilla || (Object)(object)val3.requiredSkill == (Object)(object)PluginAssets.SkillDefs.FireLunarShardsHurt) { val3.requiredSkill = PluginAssets.SkillDefs.FireLunarOrb; } } } static void ReplaceSkillOverride(GameObject bodyObject) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //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_003a: 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) //IL_005b: 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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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) SkillLocator component = bodyObject.GetComponent<SkillLocator>(); ConditionalSkillOverride component2 = bodyObject.GetComponent<ConditionalSkillOverride>(); List<ConditionalSkillInfo> list = new List<ConditionalSkillInfo>(); ConditionalSkillInfo[] conditionalSkillInfos = component2.conditionalSkillInfos; foreach (ConditionalSkillInfo val4 in conditionalSkillInfos) { ConditionalSkillInfo val5 = default(ConditionalSkillInfo); val5.skillSlot = val4.skillSlot; val5.airborneSkillDef = (SkillDef)(((Object)(object)val4.airborneSkillDef == (Object)(object)PluginAssets.SkillDefs.SprintLunarShardVanilla) ? ((object)PluginAssets.SkillDefs.FireLunarOrb) : ((object)val4.airborneSkillDef)); val5.sprintSkillDef = (SkillDef)(((Object)(object)val4.sprintSkillDef == (Object)(object)PluginAssets.SkillDefs.SprintLunarShardVanilla) ? ((object)PluginAssets.SkillDefs.FireLunarOrb) : ((object)val4.sprintSkillDef)); ConditionalSkillInfo item = val5; list.Add(item); } component2.conditionalSkillInfos = list.ToArray(); } } } internal static class SkyLeapChanges { internal static void Init() { TargetPlayers(); CreatePillar(); } private static void CreatePillar() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ExitSkyLeap.OnEnter += new hook_OnEnter(ExitSkyLeap_OnEnter); } private static void ExitSkyLeap_OnEnter(orig_OnEnter orig, ExitSkyLeap self) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //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_014d: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!((EntityState)self).isAuthority) { return; } Vector3 val = ((EntityState)self).transform.position; if (Object.op_Implicit((Object)(object)((EntityState)self).characterBody)) { val = ((EntityState)self).characterBody.footPosition; } int num = 1; if (Object.op_Implicit((Object)(object)PhaseCounter.instance)) { num = PhaseCounter.instance.phase; } bool flag = Object.op_Implicit((Object)(object)BrotherChallengeArtifact.artifactDef) && Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(BrotherChallengeArtifact.artifactDef); if (flag) { num++; } int num2 = ((num > 1) ? PluginConfig.SkyLeap.firePillarsPhase2.Value : PluginConfig.SkyLeap.firePillarsPhase1.Value); if (num2 <= 0) { return; } bool flag2 = ((BaseState)self).RollCrit(); ProjectileManager.instance.FireProjectileWithoutDamageType(PluginAssets.Projectiles.FirePillarVanillaPrefab, val, Quaternion.identity, ((EntityState)self).gameObject, ((BaseState)self).damageStat * 3f, 0f, flag2, (DamageColorIndex)0, (GameObject)null, -1f); num2--; float num3 = 360f / (float)num2; Vector3 val2 = ((EntityState)self).transform.forward; if (Object.op_Implicit((Object)(object)((EntityState)self).characterDirection)) { val2 = ((EntityState)self).characterDirection.forward; } for (int i = 0; i < num2; i++) { ProjectileManager.instance.FireProjectile(PluginAssets.Projectiles.FlamePillarMovingPrefab, val, Util.QuaternionSafeLookRotation(val2), ((EntityState)self).gameObject, ((BaseState)self).damageStat * 4f, 0f, flag2, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)DamageTypeCombo.GenericPrimary); val2 = Quaternion.AngleAxis(num3, Vector3.up) * val2; } if (flag && PluginConfig.Artifact.groundOrbOnLeap.Value) { int num4 = 6; float num5 = 360f / (float)num4; Vector3 val3 = Vector3.ProjectOnPlane(((EntityState)self).inputBank.aimDirection, Vector3.up); Vector3 footPosition = ((EntityState)self).characterBody.footPosition; for (int j = 0; j < num4; j++) { Vector3 val4 = Quaternion.AngleAxis(num5 * (float)j, Vector3.up) * val3; ProjectileManager.instance.FireProjectileWithoutDamageType(PluginAssets.Projectiles.AntiFlyingUltOrbVanillaPrefab, footPosition, Util.QuaternionSafeLookRotation(val4), ((EntityState)self).gameObject, ((EntityState)self).characterBody.damage * 4f, 4000f, flag2, (DamageColorIndex)0, (GameObject)null, -1f); } } } private static void TargetPlayers() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown if (PluginConfig.SkyLeap.directTargetPlayer.Value) { HoldSkyLeap.OnEnter += new hook_OnEnter(HoldSkyLeap_OnEnter); HoldSkyLeap.OnExit += new hook_OnExit(HoldSkyLeap_OnExit); } } private static void HoldSkyLeap_OnExit(orig_OnExit orig, HoldSkyLeap self) { if (!((EntityState)self).outer.destroying && Object.op_Implicit((Object)(object)((EntityState)self).gameObject)) { SkyLeapVFXComponent component = ((EntityState)self).gameObject.GetComponent<SkyLeapVFXComponent>(); if (Object.op_Implicit((Object)(object)component)) { Object.Destroy((Object)(object)component); } } orig.Invoke(self); } private static void HoldSkyLeap_OnEnter(orig_OnEnter orig, HoldSkyLeap self) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022b: 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_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: 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_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!((EntityState)self).isAuthority) { return; } Vector3 val = Vector3.zero; if (Object.op_Implicit((Object)(object)((EntityState)self).characterBody)) { val = ((EntityState)self).transform.position - ((EntityState)self).characterBody.footPosition; } TeamIndex myTeam = ((BaseState)self).GetTeam(); CharacterBody[] array = null; CharacterBody[] array2 = CharacterBody.instancesList.Where(delegate(CharacterBody body) { //IL_0002: 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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) TeamIndex val7 = (TeamIndex)(-1); if (Object.op_Implicit((Object)(object)body.teamComponent)) { val7 = body.teamComponent.teamIndex; } return val7 != myTeam && Object.op_Implicit((Object)(object)body.healthComponent) && body.healthComponent.alive && !((Enum)body.bodyFlags).HasFlag((Enum)(object)(BodyFlags)4) && (Object)(object)body.master != (Object)null; }).ToArray(); if (array2.Length != 0) { array = array2; CharacterBody[] array3 = array2.Where((CharacterBody body) => body.isPlayerControlled).ToArray(); if (array3.Length != 0) { array = array3; } } if (array != null && array.Length != 0) { CharacterBody val2 = array[Random.RandomRangeInt(0, array.Length)]; RaycastHit val3 = default(RaycastHit); if (Physics.Raycast(val2.footPosition, Vector3.down, ref val3, 200f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { Vector3 point = ((RaycastHit)(ref val3)).point; if ((Object)(object)((RaycastHit)(ref val3)).collider != (Object)null) { NodeGraph groundNodes = SceneInfo.instance.groundNodes; NodeIndex val4 = groundNodes.FindClosestNodeWithFlagConditions(point, (HullClassification)1, (NodeFlags)0, (NodeFlags)0, false); bool flag = true; Vector3 val5 = default(Vector3); groundNodes.GetNodePosition(val4, ref val5); if (Object.op_Implicit((Object)(object)((EntityState)self).characterMotor) && Object.op_Implicit((Object)(object)((BaseCharacterController)((EntityState)self).characterMotor).Motor) && Object.op_Implicit((Object)(object)((EntityState)self).characterBody)) { Vector3 val6 = val5 + val; ((EntityState)self).characterMotor.velocity = Vector3.zero; ((BaseCharacterController)((EntityState)self).characterMotor).Motor.SetPosition(val6, true); } } } } Vector3 position = ((EntityState)self).transform.position; if (Object.op_Implicit((Object)(object)((EntityState)self).characterBody)) { position = ((EntityState)self).characterBody.footPosition; } SkyLeapVFXComponent skyLeapVFXComponent = ((EntityState)self).gameObject.GetComponent<SkyLeapVFXComponent>(); if (!Object.op_Implicit((Object)(object)skyLeapVFXComponent)) { skyLeapVFXComponent = ((EntityState)self).gameObject.AddComponent<SkyLeapVFXComponent>(); } skyLeapVFXComponent.offset = val; skyLeapVFXComponent.SpawnVFX(); } } internal static class SprintBashChanges { internal static void Init() { AddFireProjectiles(); AntiTrimp(); FasterAttack(); } private static void FasterAttack() { if (PluginConfig.SprintBash.fasterAttack.Value) { PluginUtils.SetAddressableEntityStateField("RoR2/Base/Brother/EntityStates.BrotherMonster.SprintBash.asset", "baseDuration", "2"); } } private static void AntiTrimp() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown if (PluginConfig.SprintBash.antiTrimp.Value) { SprintBash.FixedUpdate += new hook_FixedUpdate(SprintBash_FixedUpdate); } } private static void SprintBash_FixedUpdate(orig_FixedUpdate orig, SprintBash self) { orig.Invoke(self); if (((EntityState)self).isAuthority && Object.op_Implicit((Object)(object)((EntityState)self).characterMotor) && ((EntityState)self).characterMotor.velocity.y > 0f) { ((EntityState)self).characterMotor.velocity.y = 0f; } } private static void AddFireProjectiles() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown if (PluginConfig.SprintBash.fireProjectilesPhase2.Value || PluginConfig.SprintBash.fireProjectilesPhase1.Value) { SprintBash.OnEnter += new hook_OnEnter(SprintBash_OnEnter); } } private static void SprintBash_OnEnter(orig_OnEnter orig, SprintBash self) { //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //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_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!((EntityState)self).isAuthority) { return; } bool value = PluginConfig.SprintBash.fireProjectilesPhase1.Value; bool flag = PluginConfig.SprintBash.fireProjectilesPhase2.Value && Object.op_Implicit((Object)(object)PhaseCounter.instance) && PhaseCounter.instance.phase > 1; if (value || flag) { Ray aimRay = ((BaseState)self).GetAimRay(); Vector3 val = Vector3.Cross(Vector3.up, ((Ray)(ref aimRay)).direction); Vector3 val2 = Vector3.Cross(((Ray)(ref aimRay)).direction, val); bool flag2 = Object.op_Implicit((Object)(object)BrotherChallengeArtifact.artifactDef) && Object.op_Implicit((Object)(object)RunArtifactManager.instance) && RunArtifactManager.instance.IsArtifactEnabled(BrotherChallengeArtifact.artifactDef); int num = 5; if (flag2 && PluginConfig.Artifact.moreSprintBashShards.Value) { num += 4; } int num2 = num / 2; float num3 = 0f; float num4 = 0f; float num5 = 0f; num5 = Random.Range(1f + num3, 1f + num3) * (float)num * 1.25f; num4 = num5 / ((float)num - 1f); Vector3 val3 = Quaternion.AngleAxis((0f - num5) * 0.5f, val2) * ((Ray)(ref aimRay)).direction; Quaternion val4 = Quaternion.AngleAxis(num4, val2); Ray val5 = default(Ray); ((Ray)(ref val5))..ctor(((Ray)(ref aimRay)).origin, val3); for (int i = 0; i < num; i++) { ProjectileManager.instance.FireProjectile(PluginAssets.Projectiles.SprintBashProjectilePrefab, ((Ray)(ref val5)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref val5)).direction), ((EntityState)self).gameObject, ((BaseState)self).damageStat * 0.3f, 0f, ((BasicMeleeAttack)self).isCritAuthority, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)(DamageTypeCombo.op_Implicit((DamageSource)2) | DamageTypeCombo.op_Implicit((DamageType)4194304))); ((Ray)(ref val5)).direction = val4 * ((Ray)(ref val5)).direction; } } } } internal static class WeaponSlamChanges { internal static void Init() { PluginContentPack.entityStatesTypes.Add(typeof(GetBestTarget)); PluginContentPack.entityStatesTypes.Add(typeof(RotateToTarget)); StopMomentum(); RotateBeforeUse(); FlamePillars(); FasterAttack(); } private static void FasterAttack() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown if (PluginConfig.WeaponSlam.fasterAttack.Value) { WeaponSlam.FixedUpdate += new hook_FixedUpdate(WeaponSlam_FixedUpdate); WeaponSlam.OnExit += new hook_OnExit(WeaponSlam_OnExit); WeaponSlam.OnEnter += new hook_OnEnter(WeaponSlam_OnEnter_StoreAnimRate); } } private static void WeaponSlam_OnEnter_StoreAnimRate(orig_OnEnter orig, WeaponSlam self) { orig.Invoke(self); WeaponSlamRateStorangeComponent weaponSlamRateStorangeComponent = ((EntityState)self).GetComponent<WeaponSlamRateStorangeComponent>(); if (!Object.op_Implicit((Object)(object)weaponSlamRateStorangeComponent)) { weaponSlamRateStorangeComponent = ((EntityState)self).gameObject.AddComponent<WeaponSlamRateStorangeComponent>(); } if (Object.op_Implicit((Object)(object)weaponSlamRateStorangeComponent)) { weaponSlamRateStorangeComponent.ResetRate(); if (Object.op_Implicit((Object)(object)self.modelAnimator)) { weaponSlamRateStorangeComponent.StoreOrigRate(self.modelAnimator.GetFloat("WeaponSlam.playbackRate")); } } } private static void WeaponSlam_OnExit(orig_OnExit orig, WeaponSlam self) { if (self.hasDoneBlastAttack) { WeaponSlamRateStorangeComponent component = ((EntityState)self).GetComponent<WeaponSlamRateStorangeComponent>(); if (Object.op_Implicit((Object)(object)component)) { component.ResetRate(); } } orig.Invoke(self); } private static void WeaponSlam_FixedUpdate(orig_FixedUpdate orig, WeaponSlam self) { bool hasDoneBlastAttack = self.hasDoneBlastAttack; orig.Invoke(self); if (hasDoneBlastAttack || !self.hasDoneBlastAttack) { return; } WeaponSlamRateStorangeComponent component = ((EntityState)self).GetComponent<WeaponSlamRateStorangeComponent>(); if (!Object.op_Implicit((Object)(object)component)) { return; } float origRate = component.GetOrigRate(); if (origRate > 0f) { float num = 2f; self.modelAnimator.SetFloat("WeaponSlam.playbackRate", num * origRate); float num2 = WeaponSlam.duration - ((EntityState)self).fixedAge; if (num2 > 0f) { ((EntityState)self).fixedAge = ((EntityState)self).fixedAge + num2 / num * 1.2f; } } } private static void FlamePillars() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown if (PluginConfig.WeaponSlam.spawnFirePillars.Value) { WeaponSlam.FixedUpdate += new Manipulator(OverrideVanillaProjectiles); } } private static void OverrideVanillaProjectiles(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<PhaseCounter>(x, "get_instance") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<PhaseCounter, WeaponSlam, PhaseCounter>>((Func<PhaseCounter, WeaponSlam, PhaseCounter>)delegate(PhaseCounter phaseCounter, WeaponSlam self) { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: 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_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_02