Decompiled source of Ancient Wisp v1.6.8
plugins/Moffein-AncientWisp/AncientWisp.dll
Decompiled 2 weeks ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AccurateEnemies; using AncientWisp; using AncientWisp.Helpers; using ArchaicWisp; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EntityStates; using EntityStates.AncientWispMonster; using EntityStates.MoffeinAncientWispSkills; using EntityStates.VagrantMonster; using On.RoR2; using R2API; using R2API.Utils; using Risky_Artifacts.Artifacts; 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 Zio.FileSystems; [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("AncientWisp")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+60ce190f205cd10a91654682371cd27a8683fe8e")] [assembly: AssemblyProduct("AncientWisp")] [assembly: AssemblyTitle("AncientWisp")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace EntityStates.MoffeinAncientWispSkills { public class ChannelRain : BaseState { private float lastUpdateTime; private float castTimer; public static float baseDuration = 7f; public static float explosionDelay = 1.3f; public static int explosionCount = 45; public static int maxExplosions = 120; public static float damageCoefficient = 2.1f; public static float randomRadius = 16f; public static float radius = 6f; public static GameObject projectilePrefab; private float duration; private float durationBetweenCast; private float totalExplosions; public override void OnEnter() { ((BaseState)this).OnEnter(); lastUpdateTime = Time.time; duration = baseDuration; durationBetweenCast = baseDuration / Mathf.Min((float)explosionCount * base.attackSpeedStat, (float)maxExplosions); ((EntityState)this).PlayCrossfade("Body", "ChannelRain", 0.3f); Util.PlaySound("Play_titanboss_shift_charge", ((EntityState)this).gameObject); if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.Slow50); } } private void PlaceRain() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Invalid comparison between Unknown and I4 //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Invalid comparison between Unknown and I4 //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b5: 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_00eb: 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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_010f: 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_011e: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0136: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: 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_0164: 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_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0187: 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_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) if (!((EntityState)this).isAuthority) { return; } Vector3 val = Vector3.zero; Ray aimRay = ((BaseState)this).GetAimRay(); ((Ray)(ref aimRay)).origin = ((Ray)(ref aimRay)).origin + Random.insideUnitSphere * randomRadius; RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(aimRay, ref val2, (float)LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { val = ((RaycastHit)(ref val2)).point; } if (val != Vector3.zero) { TeamIndex teamIndex = ((Component)((EntityState)this).characterBody).GetComponent<TeamComponent>().teamIndex; TeamIndex enemyTeam = (((int)teamIndex == 1) ? ((TeamIndex)2) : (((int)teamIndex != 2) ? ((TeamIndex)0) : ((TeamIndex)1))); Transform val3 = FindTargetClosest(val, enemyTeam); Vector3 val4 = val; if (Object.op_Implicit((Object)(object)val3)) { val4 = ((Component)val3).transform.position; } val4 += Random.insideUnitSphere * randomRadius; Ray val5 = default(Ray); ((Ray)(ref val5)).origin = val4 + Vector3.up * randomRadius; ((Ray)(ref val5)).direction = Vector3.down; if (Physics.Raycast(val5, ref val2, 500f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { Vector3 point = ((RaycastHit)(ref val2)).point; Vector3 val6 = default(Vector3); ((Vector3)(ref val6))..ctor(90f, 0f, 0f); Quaternion rotation = Quaternion.Euler(val6); FireProjectileInfo val7 = default(FireProjectileInfo); val7.projectilePrefab = projectilePrefab; val7.position = point; val7.rotation = rotation; val7.owner = ((EntityState)this).gameObject; val7.damage = base.damageStat * damageCoefficient; val7.force = 2000f; val7.crit = ((EntityState)this).characterBody.RollCrit(); ProjectileManager.instance.FireProjectile(val7); } } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); castTimer += Time.time - lastUpdateTime; lastUpdateTime = Time.time; if (castTimer >= durationBetweenCast) { PlaceRain(); castTimer -= durationBetweenCast; } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new EndRain()); } } private Transform FindTargetClosest(Vector3 point, TeamIndex enemyTeam) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) ReadOnlyCollection<TeamComponent> teamMembers = TeamComponent.GetTeamMembers(enemyTeam); float num = 99999f; Transform result = null; for (int i = 0; i < teamMembers.Count; i++) { float num2 = Vector3.SqrMagnitude(((Component)teamMembers[i]).transform.position - point); if (num2 < num) { num = num2; result = ((Component)teamMembers[i]).transform; } } return result; } 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)5; } public override void OnExit() { if (NetworkServer.active && ((EntityState)this).characterBody.HasBuff(Buffs.Slow50)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.Slow50); } ((EntityState)this).OnExit(); } } public class ChargeBarrage : BaseState { public static float baseDuration = 2.5f; public static GameObject effectPrefab = ChargeRHCannon.effectPrefab; private float duration; private GameObject chargeEffectLeft; private GameObject chargeEffectRight; private Animator modelAnimator; private bool playedSwing2 = false; public override void OnEnter() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_011a: 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) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; Transform modelTransform = ((EntityState)this).GetModelTransform(); modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { int layerIndex = modelAnimator.GetLayerIndex("Gesture"); AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("Throw1")) { ((EntityState)this).PlayCrossfade("Gesture", "Throw2", "Throw.playbackRate", duration / 0.3f, 0.2f); } else { ((EntityState)this).PlayCrossfade("Gesture", "Throw1", "Throw.playbackRate", duration / 0.3f, 0.2f); } } if (Object.op_Implicit((Object)(object)modelTransform)) { ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)effectPrefab)) { Transform val = component.FindChild("MuzzleRight"); if (Object.op_Implicit((Object)(object)val)) { chargeEffectRight = Object.Instantiate<GameObject>(effectPrefab, val.position, val.rotation); chargeEffectRight.transform.parent = val; } } } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(duration); } Util.PlayAttackSpeedSound("Play_greater_wisp_attack", ((EntityState)this).gameObject, base.attackSpeedStat * (2f / baseDuration)); } public override void OnExit() { ((EntityState)this).OnExit(); EntityState.Destroy((Object)(object)chargeEffectLeft); EntityState.Destroy((Object)(object)chargeEffectRight); } public override void Update() { ((EntityState)this).Update(); } public override void FixedUpdate() { //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (!playedSwing2 && duration - ((EntityState)this).fixedAge < 0.6f && Object.op_Implicit((Object)(object)modelAnimator)) { playedSwing2 = true; int layerIndex = modelAnimator.GetLayerIndex("Gesture"); AnimatorStateInfo currentAnimatorStateInfo = modelAnimator.GetCurrentAnimatorStateInfo(layerIndex); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("Throw1")) { ((EntityState)this).PlayCrossfade("Gesture", "Throw2", "Throw.playbackRate", FireBarrage.baseDuration * 6f, 0.1f); } else { ((EntityState)this).PlayCrossfade("Gesture", "Throw1", "Throw.playbackRate", FireBarrage.baseDuration * 6f, 0.1f); } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { FireBarrage nextState = new FireBarrage(); ((EntityState)this).outer.SetNextState((EntityState)(object)nextState); } } 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; } } public class ChargeRain : BaseState { public static float baseDuration = 2f; public static GameObject effectPrefab = ChargeRain.effectPrefab; public static GameObject delayPrefab = ChargeRain.delayPrefab; private float duration; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).PlayAnimation("Body", "ChargeRain", "ChargeRain.playbackRate", duration, 0f); Util.PlayAttackSpeedSound("Play_greater_wisp_attack", ((EntityState)this).gameObject, base.attackSpeedStat * (2f / baseDuration)); Util.PlaySound("Play_MoffeinAW_spawn", ((EntityState)this).gameObject); if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.Slow50); } } public override void OnExit() { if (NetworkServer.active && ((EntityState)this).characterBody.HasBuff(Buffs.Slow50)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.Slow50); } ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new ChannelRain()); } } 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)5; } } public class EndRain : BaseState { public static float baseDuration = 3f; public static GameObject effectPrefab = EndRain.effectPrefab; public static GameObject delayPrefab = EndRain.delayPrefab; private float duration; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).PlayAnimation("Body", "EndRain", "EndRain.playbackRate", duration, 0f); } public override void OnExit() { ((EntityState)this).OnExit(); } public override void Update() { ((EntityState)this).Update(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((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; } } public class Enrage : BaseState { public static float baseDuration = 2.5f; public static GameObject enragePrefab = Enrage.enragePrefab; private Animator modelAnimator; private float duration; private bool hasCastBuff; private uint soundID; private bool stoppedSound = false; public static BuffIndex enrageBuff; public static CharacterSpawnCard minionCard = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscGreaterWisp"); public static CharacterSpawnCard archWispCard = null; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration; modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { ((EntityState)this).PlayCrossfade("Gesture", "Enrage", "Enrage.playbackRate", duration, 0.2f); } soundID = Util.PlayAttackSpeedSound(ChargeMegaNova.chargingSoundString, ((EntityState)this).gameObject, base.attackSpeedStat); if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.Slow50); } } public override void OnExit() { if (!stoppedSound) { AkSoundEngine.StopPlayingID(soundID); } if (NetworkServer.active && ((EntityState)this).characterBody.HasBuff(Buffs.Slow50)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.Slow50); } ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)modelAnimator) && modelAnimator.GetFloat("Enrage.activate") > 0.5f && !hasCastBuff) { AkSoundEngine.StopPlayingID(soundID); hasCastBuff = true; stoppedSound = true; Util.PlaySound(FireMegaNova.novaSoundString, ((EntityState)this).gameObject); Util.PlaySound("Play_MoffeinAW_lightning", ((EntityState)this).gameObject); if (NetworkServer.active) { EffectData val = new EffectData(); val.origin = ((EntityState)this).transform.position; val.SetNetworkedObjectReference(((EntityState)this).gameObject); EffectManager.SpawnEffect(enragePrefab, val, true); for (int i = 0; i < 2; i++) { SummonEnemy(); } if (!((EntityState)this).characterBody.HasBuff(AncientWispPlugin.enrageBuff)) { ((EntityState)this).characterBody.AddBuff(AncientWispPlugin.enrageBuff); } } } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority && hasCastBuff) { ((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)2; } private void SummonEnemy() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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_0052: Expected O, but got Unknown //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown DirectorSpawnRequest val = new DirectorSpawnRequest((SpawnCard)(object)(((Object)(object)archWispCard != (Object)null) ? archWispCard : minionCard), new DirectorPlacementRule { placementMode = (PlacementMode)1, minDistance = 3f, maxDistance = 20f, spawnOnTarget = ((EntityState)this).transform }, RoR2Application.rng); val.summonerBodyObject = ((EntityState)this).gameObject; DirectorSpawnRequest val2 = val; val2.onSpawnedServer = (Action<SpawnResult>)Delegate.Combine(val2.onSpawnedServer, (Action<SpawnResult>)delegate(SpawnResult spawnResult) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) spawnResult.spawnedInstance.GetComponent<Inventory>().CopyEquipmentFrom(((EntityState)this).characterBody.inventory); }); DirectorCore.instance.TrySpawnObject(val); } } public class FireBarrage : BaseState { public static GameObject projectilePrefab; public static GameObject effectPrefab = FireRHCannon.effectPrefab; public static float baseDuration = 2f; public static float baseDurationBetweenShots = 0.12f; public static float damageCoefficient = 2.1f; public static float force = 20f; public static int maxBullets = 16; public static int bulletCount = 6; private float duration; private float durationBetweenShots; public int bulletCountCurrent = 1; public int bulletsToFire = 0; public override void OnEnter() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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_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_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0114: 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_0135: 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_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0164: 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_0174: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Ray val = ((BaseState)this).GetAimRay(); if (AncientWispPlugin.AccurateEnemiesLoaded && AncientWispPlugin.AccurateEnemiesCompat) { val = AccurateEnemiesAimray(val); } string text = "MuzzleRight"; duration = baseDuration / base.attackSpeedStat; durationBetweenShots = baseDurationBetweenShots / base.attackSpeedStat; if (Object.op_Implicit((Object)(object)effectPrefab)) { EffectManager.SimpleMuzzleFlash(effectPrefab, ((EntityState)this).gameObject, text, false); } if (!((EntityState)this).isAuthority || !Object.op_Implicit((Object)(object)((EntityState)this).modelLocator) || !Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelTransform)) { return; } bulletsToFire = Math.Min(maxBullets, Mathf.CeilToInt((float)bulletCount * base.attackSpeedStat)); ChildLocator component = ((Component)((EntityState)this).modelLocator.modelTransform).GetComponent<ChildLocator>(); if (!Object.op_Implicit((Object)(object)component)) { return; } Transform val2 = component.FindChild(text); if (Object.op_Implicit((Object)(object)val2)) { Vector3 val3 = ((Ray)(ref val)).direction; RaycastHit val4 = default(RaycastHit); if (Physics.Raycast(val, ref val4, (float)LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { val3 = ((RaycastHit)(ref val4)).point - val2.position; } ProjectileManager.instance.FireProjectile(projectilePrefab, (bulletCountCurrent < bulletCount / 2) ? val2.position : ((Ray)(ref val)).origin, Util.QuaternionSafeLookRotation(val3), ((EntityState)this).gameObject, base.damageStat * damageCoefficient, force, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { if (bulletCountCurrent >= bulletsToFire && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } else if (bulletCountCurrent < bulletsToFire && ((EntityState)this).fixedAge >= durationBetweenShots) { FireBarrage fireBarrage = new FireBarrage(); fireBarrage.bulletCountCurrent = bulletCountCurrent + 1; fireBarrage.bulletsToFire = bulletsToFire; ((EntityState)this).outer.SetNextState((EntityState)(object)fireBarrage); } } } 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; } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private Ray AccurateEnemiesAimray(Ray aimRay) { //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_0050: 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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && !((EntityState)this).characterBody.isPlayerControlled && (AccurateEnemiesPlugin.alwaysAllowBosses || !AccurateEnemiesPlugin.eliteOnly || ((EntityState)this).characterBody.isElite)) { HurtBox masterAITargetHurtbox = Util.GetMasterAITargetHurtbox(((EntityState)this).characterBody.master); return Util.PredictAimrayPS(aimRay, ((BaseState)this).GetTeam(), AccurateEnemiesPlugin.basePredictionAngle, projectilePrefab, masterAITargetHurtbox); } return aimRay; } } public class SpawnState : BaseState { public static float baseDuration = 3f; public static GameObject enragePrefab = Enrage.enragePrefab; private Animator modelAnimator; private float duration; private bool hasCastBuff; public override void OnEnter() { //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) ((BaseState)this).OnEnter(); duration = baseDuration; modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { ((EntityState)this).PlayCrossfade("Gesture", "Enrage", "Enrage.playbackRate", duration, 0.2f); } if (Object.op_Implicit((Object)(object)((EntityState)this).rigidbodyMotor)) { ((EntityState)this).rigidbodyMotor.moveVector = Vector3.zero; } hasCastBuff = false; Util.PlaySound("Play_MoffeinAW_lightning", ((EntityState)this).gameObject); } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).rigidbodyMotor)) { ((EntityState)this).rigidbodyMotor.moveVector = Vector3.zero; } if (Object.op_Implicit((Object)(object)modelAnimator) && modelAnimator.GetFloat("Enrage.activate") > 0.5f && !hasCastBuff) { EffectData val = new EffectData { origin = ((EntityState)this).transform.position }; val.SetNetworkedObjectReference(((EntityState)this).gameObject); EffectManager.SpawnEffect(enragePrefab, val, false); hasCastBuff = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((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)7; } } } namespace AncientWisp { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.AncientWisp", "AncientWisp", "1.6.8")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class AncientWispPlugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<char, bool> <>9__11_0; public static hook_OnDeathStart <>9__11_1; public static StatHookEventHandler <>9__11_2; internal bool <Awake>b__11_0(char c) { return !char.IsWhiteSpace(c); } internal void <Awake>b__11_1(orig_OnDeathStart 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) orig.Invoke(self); if (self.bodyIndex == bodyIndex) { ((Component)self).gameObject.AddComponent<DeathExplosions>(); } } internal void <Awake>b__11_2(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(enrageBuff)) { args.attackSpeedMultAdd += 0.5f; args.moveSpeedMultAdd += 0.3f; } } } public static List<StageSpawnInfo> StageList = new List<StageSpawnInfo>(); public static bool allowOrigin = true; public static bool archWispCompat = true; public static bool AccurateEnemiesLoaded = false; public static bool AccurateEnemiesCompat = true; public static PluginInfo pluginInfo; public static BuffDef enrageBuff; public static BodyIndex bodyIndex; public static GameObject AncientWispObject; public void LateSetup() { new ItemDisplays(); } private static Type GetTypeFromName(string name) { Type[] stateIndexToType = EntityStateCatalog.stateIndexToType; return Type.GetType(name); } public void Awake() { //IL_003d: 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_005c: Expected O, but got Unknown //IL_005c: Expected O, but got Unknown //IL_0076: 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_0091: Expected O, but got Unknown //IL_0091: Expected O, but got Unknown //IL_00ab: 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_00c6: Expected O, but got Unknown //IL_00c6: Expected O, but got Unknown //IL_00e0: 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_00ff: Expected O, but got Unknown //IL_00ff: Expected O, but got Unknown //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Expected O, but got Unknown //IL_0130: Expected O, but got Unknown //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_0441: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) //IL_045f: Unknown result type (might be due to invalid IL or missing references) //IL_0464: Unknown result type (might be due to invalid IL or missing references) //IL_046a: Expected O, but got Unknown //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_04a6: Expected O, but got Unknown //IL_04ae: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Expected O, but got Unknown //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_048f: Expected O, but got Unknown pluginInfo = ((BaseUnityPlugin)this).Info; new LanguageTokens(); AccurateEnemiesLoaded = Chainloader.PluginInfos.ContainsKey("com.Moffein.AccurateEnemies"); float flareSize = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("General", "Eye Flare Size"), 0.5f, new ConfigDescription("How big the flare effect on the eye should be. 0 disables.", (AcceptableValueBase)null, Array.Empty<object>())).Value; allowOrigin = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("General", "RiskyArtifacts - Add to Artifact of Origination Spawnpool"), true, new ConfigDescription("If RiskyArtifacts is installed, adds this boss to the Origination spawnpool.", (AcceptableValueBase)null, Array.Empty<object>())).Value; archWispCompat = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("General", "Archaic Wisps Compatibility"), true, new ConfigDescription("Enrage spawns Archaic Wisps instead of Greater Wisps if the Archaic Wisps plugin is installed.", (AcceptableValueBase)null, Array.Empty<object>())).Value; string value = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Spawns", "Stage List"), "dampcavesimple, rootjungle, skymeadow, sulfurpools - loop, itdampcave, itskymeadow, goldshores, artifactworld, helminthroost, lemuriantemple", new ConfigDescription("What stages the boss will show up on. Add a '- loop' after the stagename to make it only spawn after looping. List of stage names can be found at https://github.com/risk-of-thunder/R2Wiki/wiki/List-of-scene-names", (AcceptableValueBase)null, Array.Empty<object>())).Value; AccurateEnemiesCompat = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("General", "AccurateEnemies Compatibility"), true, new ConfigDescription("If AccurateEnemies is installed, adds projectile aim prediction to the Ancient Wisp fireball barrage.", (AcceptableValueBase)null, Array.Empty<object>())).Value; value = new string((from c in value.ToCharArray() where !char.IsWhiteSpace(c) select c).ToArray()); string[] array = value.Split(','); string[] array2 = array; foreach (string text in array2) { string[] array3 = text.Split('-'); string stageName = array3[0]; int minStages = 0; if (array3.Length > 1) { minStages = 5; } StageList.Add(new StageSpawnInfo(stageName, minStages)); } using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("AncientWisp.moffeinancientwisp")) { AWContent.assets = AssetBundle.LoadFromStream(stream); } using (Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("AncientWisp.AncientWispBank.bnk")) { byte[] array4 = new byte[stream2.Length]; stream2.Read(array4, 0, array4.Length); SoundBanks.Add(array4); } RepairEffects.Repair(); AncientWispObject = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/AncientWispBody"), "MoffeinAncientWispBody", true); GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/AncientWispMaster"), "MoffeinAncientWispMaster", true); CharacterBody component = AncientWispObject.GetComponent<CharacterBody>(); SkillLocator component2 = AncientWispObject.GetComponent<SkillLocator>(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(LateSetup)); AncientWispObject.GetComponent<CameraTargetParams>().cameraParams = LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/ImpBossBody").GetComponent<CameraTargetParams>().cameraParams; val.GetComponent<CharacterMaster>().bodyPrefab = AncientWispObject; GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Gravekeeper/GravekeeperBody.prefab").WaitForCompletion(); DeathRewards component3 = AncientWispObject.GetComponent<DeathRewards>(); component3.bossDropTable = val2.GetComponent<DeathRewards>().bossDropTable; UnlockableDef val3 = ScriptableObject.CreateInstance<UnlockableDef>(); val3.nameToken = "UNLOCKABLE_LOG_MOFFEIN_ANCIENTWISP"; val3.cachedName = "MOFFEIN_ANCIENTWISP_BODY_NAME"; AWContent.unlockableDefs.Add(val3); component3.logUnlockableDef = val3; SfxLocator val4 = AncientWispObject.AddComponent<SfxLocator>(); val4.barkSound = "Play_magmaWorm_idle_VO"; val4.deathSound = "Play_MoffeinAW_death"; SetBodyStats(component); new Director(val); ModifyArchWispProjectile(); BuildLightningProjectile(); FixHitbox(AncientWispObject); new CreateSkills(component2); new CreateAI(val); AWContent.masterPrefabs.Add(val); AWContent.bodyPrefabs.Add(AncientWispObject); Interactor component4 = AncientWispObject.GetComponent<Interactor>(); component4.maxInteractionDistance = 6f; enrageBuff = LegacyResourcesAPI.Load<BuffDef>("BuffDefs/EnrageAncientWisp"); enrageBuff.iconSprite = LegacyResourcesAPI.Load<BuffDef>("BuffDefs/WarCryBuff").iconSprite; enrageBuff.buffColor = new Color(41f / 51f, 41f / 85f, 43f / 51f); object obj = <>c.<>9__11_1; if (obj == null) { hook_OnDeathStart val5 = delegate(orig_OnDeathStart 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) orig.Invoke(self); if (self.bodyIndex == bodyIndex) { ((Component)self).gameObject.AddComponent<DeathExplosions>(); } }; <>c.<>9__11_1 = val5; obj = (object)val5; } CharacterBody.OnDeathStart += (hook_OnDeathStart)obj; object obj2 = <>c.<>9__11_2; if (obj2 == null) { StatHookEventHandler val6 = delegate(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(enrageBuff)) { args.attackSpeedMultAdd += 0.5f; args.moveSpeedMultAdd += 0.3f; } }; <>c.<>9__11_2 = val6; obj2 = (object)val6; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj2; EyeFlare.OnEnable += (hook_OnEnable)delegate(orig_OnEnable orig, EyeFlare self) { if (Object.op_Implicit((Object)(object)self.directionSource) && Object.op_Implicit((Object)(object)self.directionSource.parent) && ((Object)self.directionSource.parent).name == "AncientWispArmature") { self.localScale = flareSize; } orig.Invoke(self); }; ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); if (archWispCompat && Chainloader.PluginInfos.ContainsKey("com.Moffein.ArchaicWisp")) { GrabArchWispCard(); } } private 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) bodyIndex = BodyCatalog.FindBodyIndex("MoffeinAncientWispBody"); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void GrabArchWispCard() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown Enrage.archWispCard = (CharacterSpawnCard)ArchaicWispContent.ArchaicWispCard.Card.spawnCard; } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)new AWContent()); } private void FixHitbox(GameObject go) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_011a: 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_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) Object.Destroy((Object)(object)go.GetComponent<HurtBox>()); Component[] componentsInChildren = (Component[])(object)go.GetComponentsInChildren<Transform>(); Component[] array = componentsInChildren; Transform val = null; Transform val2 = null; Component[] array2 = array; for (int i = 0; i < array2.Length; i++) { Transform val3 = (Transform)array2[i]; if (((Object)val3).name == "chest") { val = val3; } else if (((Object)val3).name == "Head") { val2 = val3; } } ModelLocator component = go.GetComponent<ModelLocator>(); ((Component)component.modelTransform).gameObject.layer = LayerIndex.entityPrecise.intVal; component.noCorpse = true; HurtBoxGroup component2 = ((Component)component.modelTransform).gameObject.GetComponent<HurtBoxGroup>(); Transform modelTransform = component.modelTransform; modelTransform.localScale *= 1.8f; ((Component)val).gameObject.layer = LayerIndex.entityPrecise.intVal; CapsuleCollider val4 = ((Component)val).gameObject.AddComponent<CapsuleCollider>(); HurtBox val5 = ((Component)val).gameObject.AddComponent<HurtBox>(); val5.isBullseye = true; val5.healthComponent = go.GetComponent<HealthComponent>(); val5.damageModifier = (DamageModifier)0; val5.hurtBoxGroup = component2; val5.indexInGroup = 0; ((Component)val2).gameObject.layer = LayerIndex.entityPrecise.intVal; BoxCollider val6 = ((Component)val2).gameObject.AddComponent<BoxCollider>(); val6.center += 0.3f * Vector3.up; HurtBox val7 = ((Component)val2).gameObject.AddComponent<HurtBox>(); val7.isBullseye = false; val7.healthComponent = go.GetComponent<HealthComponent>(); val7.damageModifier = (DamageModifier)0; val7.isSniperTarget = true; val7.hurtBoxGroup = component2; val7.indexInGroup = 1; HurtBox[] hurtBoxes = (HurtBox[])(object)new HurtBox[2] { val5, val7 }; component2.bullseyeCount = 1; component2.hurtBoxes = hurtBoxes; component2.mainHurtBox = val5; } private void SetBodyStats(CharacterBody ancientWispBody) { //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: 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) ancientWispBody.baseNameToken = "MOFFEIN_ANCIENTWISP_BODY_NAME"; ancientWispBody.subtitleNameToken = "MOFFEIN_ANCIENTWISP_BODY_SUBTITLE"; ancientWispBody.baseMaxHealth = 2800f; ancientWispBody.levelMaxHealth = 840f; ancientWispBody.baseArmor = 20f; ancientWispBody.levelArmor = 0f; ancientWispBody.baseDamage = 20f; ancientWispBody.levelDamage = 4f; ancientWispBody.baseRegen = 0f; ancientWispBody.levelRegen = 0f; ancientWispBody.portraitIcon = AWContent.assets.LoadAsset<Texture>("aw_noflames.png"); ancientWispBody._defaultCrosshairPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/crosshair/simpledotcrosshair"); ancientWispBody.hideCrosshair = false; AWContent.entityStates.Add(typeof(SpawnState)); SerializableEntityStateType val = default(SerializableEntityStateType); ((SerializableEntityStateType)(ref val))..ctor(typeof(SpawnState)); ancientWispBody.preferredInitialStateType = val; EntityStateMachine component = ((Component)ancientWispBody).GetComponent<EntityStateMachine>(); component.initialStateType = val; } private static void BuildLightningProjectile() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/projectiles/nullifierprebombprojectile"), "MoffeinAWLightning", true); GameObject val2 = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/projectileghosts/nullifierprebombghost"), "MoffeinAWLightningGhost", false); AWContent.projectilePrefabs.Add(val); val.AddComponent<LightningVerticalHit>(); Object.Destroy((Object)(object)val.GetComponent<TeamAreaIndicator>()); ProjectileImpactExplosion component = val.GetComponent<ProjectileImpactExplosion>(); component.lifetime = ChannelRain.explosionDelay; component.lifetimeExpiredSoundString = ""; component.lifetimeExpiredSound = null; component.impactEffect = null; ((ProjectileExplosion)component).childrenProjectilePrefab = null; ((ProjectileExplosion)component).blastRadius = ChannelRain.radius; ((ProjectileExplosion)component).falloffModel = (FalloffModel)0; ((ProjectileExplosion)component).bonusBlastForce = Vector3.up * 1000f; ((ProjectileExplosion)component).blastProcCoefficient = 1f; ((ProjectileExplosion)component).childrenCount = 0; ProjectileDamage component2 = val.GetComponent<ProjectileDamage>(); component2.damageType = DamageTypeCombo.op_Implicit((DamageType)0); component2.damageType.damageSource = (DamageSource)2; Object.Destroy((Object)(object)val.GetComponent<AkEvent>()); Object.Destroy((Object)(object)val.GetComponent<AkGameObj>()); ChannelRain.projectilePrefab = val; ProjectileController component3 = val.GetComponent<ProjectileController>(); component3.ghostPrefab = val2; val2.AddComponent<LightningVisual>(); val2.transform.localScale = Vector3.zero; val2.GetComponent<VFXAttributes>().DoNotPool = true; Object.Destroy((Object)(object)val2.GetComponent<AkEvent>()); Object.Destroy((Object)(object)val2.GetComponent<AkGameObj>()); } private void ModifyArchWispProjectile() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/projectiles/ArchWispCannon"), "MoffeinAncientWispCannon", true); ProjectileSimple component = val.GetComponent<ProjectileSimple>(); component.lifetime = 7f; ProjectileDamage component2 = val.GetComponent<ProjectileDamage>(); component2.damageType.damageSource = (DamageSource)1; ProjectileImpactExplosion component3 = val.GetComponent<ProjectileImpactExplosion>(); component3.lifetime = 7f; ((ProjectileExplosion)component3).falloffModel = (FalloffModel)2; val.GetComponent<Rigidbody>().useGravity = false; GameObject val2 = (((ProjectileExplosion)component3).childrenProjectilePrefab = PrefabAPI.InstantiateClone(((ProjectileExplosion)component3).childrenProjectilePrefab, "MoffeinAncientWispCannonGround", true)); ProjectileImpactExplosion component4 = val2.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component4).falloffModel = (FalloffModel)2; ProjectileDamageTrail component5 = val2.GetComponent<ProjectileDamageTrail>(); component5.damageToTrailDpsFactor = 0.4f; component5.trailLifetimeAfterExpiration = 6f; FireBarrage.projectilePrefab = val; AWContent.projectilePrefabs.Add(val); AWContent.projectilePrefabs.Add(val2); } } public class StageSpawnInfo { private string stageName; private int minStages; public StageSpawnInfo(string stageName, int minStages) { this.stageName = stageName; this.minStages = minStages; } public string GetStageName() { return stageName; } public int GetMinStages() { return minStages; } } public class AWContent : IContentPackProvider { public static AssetBundle assets; internal static ContentPack contentPack = new ContentPack(); public static List<GameObject> bodyPrefabs = new List<GameObject>(); public static List<GameObject> masterPrefabs = new List<GameObject>(); public static List<UnlockableDef> unlockableDefs = new List<UnlockableDef>(); public static List<EffectDef> effectDefs = new List<EffectDef>(); public static List<SkillDef> skillDefs = new List<SkillDef>(); public static List<SkillFamily> skillFamilies = new List<SkillFamily>(); public static List<Type> entityStates = new List<Type>(); public static List<GameObject> projectilePrefabs = new List<GameObject>(); public static DirectorCardHolder AncientWispCard; public static DirectorCardHolder AncientWispLoopCard; public string identifier => "AncientWisp.AWContent"; public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray()); contentPack.effectDefs.Add(effectDefs.ToArray()); contentPack.entityStateTypes.Add(entityStates.ToArray()); contentPack.masterPrefabs.Add(masterPrefabs.ToArray()); contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); contentPack.skillDefs.Add(skillDefs.ToArray()); contentPack.skillFamilies.Add(skillFamilies.ToArray()); contentPack.unlockableDefs.Add(unlockableDefs.ToArray()); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(contentPack, args.output); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } } internal class CreateAI { public CreateAI(GameObject masterObject) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0058: 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_00a6: 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_00ed: 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_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0145: 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_017e: 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_01c4: 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_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) AISkillDriver val = masterObject.AddComponent<AISkillDriver>(); val.skillSlot = (SkillSlot)2; val.requireSkillReady = true; val.requireEquipmentReady = false; val.moveTargetType = (TargetType)0; val.minDistance = 0f; val.maxDistance = float.PositiveInfinity; val.selectionRequiresTargetLoS = false; val.activationRequiresTargetLoS = false; val.activationRequiresAimConfirmation = false; val.movementType = (MovementType)2; val.aimType = (AimType)2; val.ignoreNodeGraph = false; val.noRepeat = true; val.shouldSprint = false; val.shouldFireEquipment = false; val.shouldTapButton = false; val.maxUserHealthFraction = 0.5f; val.minUserHealthFraction = 0f; AISkillDriver val2 = masterObject.AddComponent<AISkillDriver>(); val2.skillSlot = (SkillSlot)0; val2.requireSkillReady = true; val2.requireEquipmentReady = false; val2.moveTargetType = (TargetType)0; val2.minDistance = 0f; val2.maxDistance = 150f; val2.selectionRequiresTargetLoS = true; val2.activationRequiresTargetLoS = false; val2.activationRequiresAimConfirmation = false; val2.movementType = (MovementType)2; val2.aimType = (AimType)2; val2.ignoreNodeGraph = false; val2.noRepeat = true; val2.shouldSprint = false; val2.shouldFireEquipment = false; val2.shouldTapButton = false; val2.maxUserHealthFraction = 1f; AISkillDriver val3 = masterObject.AddComponent<AISkillDriver>(); val3.skillSlot = (SkillSlot)(-1); val3.requireSkillReady = false; val3.requireEquipmentReady = false; val3.moveTargetType = (TargetType)0; val3.minDistance = 150f; val3.maxDistance = float.PositiveInfinity; val3.selectionRequiresTargetLoS = false; val3.activationRequiresTargetLoS = false; val3.activationRequiresAimConfirmation = false; val3.movementType = (MovementType)1; val3.aimType = (AimType)2; val3.ignoreNodeGraph = false; val3.noRepeat = false; val3.shouldSprint = false; val3.shouldFireEquipment = false; val3.shouldTapButton = false; AISkillDriver val4 = masterObject.AddComponent<AISkillDriver>(); val4.skillSlot = (SkillSlot)1; val4.requireSkillReady = true; val4.requireEquipmentReady = false; val4.moveTargetType = (TargetType)0; val4.minDistance = 50f; val4.maxDistance = 150f; val4.selectionRequiresTargetLoS = true; val4.activationRequiresTargetLoS = true; val4.activationRequiresAimConfirmation = true; val4.movementType = (MovementType)1; val4.aimType = (AimType)2; val4.driverUpdateTimerOverride = 1f; val4.ignoreNodeGraph = false; val4.noRepeat = false; val4.shouldSprint = false; val4.shouldFireEquipment = false; val4.shouldTapButton = false; AISkillDriver val5 = masterObject.AddComponent<AISkillDriver>(); val5.skillSlot = (SkillSlot)1; val5.requireSkillReady = true; val5.requireEquipmentReady = false; val5.moveTargetType = (TargetType)0; val5.minDistance = 0f; val5.maxDistance = 50f; val5.selectionRequiresTargetLoS = true; val5.activationRequiresTargetLoS = true; val5.activationRequiresAimConfirmation = true; val5.movementType = (MovementType)2; val5.aimType = (AimType)2; val5.driverUpdateTimerOverride = 1f; val5.ignoreNodeGraph = false; val5.noRepeat = false; val5.shouldSprint = false; val5.shouldFireEquipment = false; val5.shouldTapButton = false; AISkillDriver val6 = masterObject.AddComponent<AISkillDriver>(); val6.skillSlot = (SkillSlot)(-1); val6.requireSkillReady = false; val6.requireEquipmentReady = false; val6.moveTargetType = (TargetType)0; val6.minDistance = 0f; val6.maxDistance = float.PositiveInfinity; val6.selectionRequiresTargetLoS = false; val6.activationRequiresTargetLoS = false; val6.activationRequiresAimConfirmation = false; val6.movementType = (MovementType)1; val6.aimType = (AimType)2; val6.ignoreNodeGraph = false; val6.noRepeat = false; val6.shouldSprint = false; val6.shouldFireEquipment = false; val6.shouldTapButton = false; } } public class CreateSkills { public CreateSkills(SkillLocator skills) { AssignLightning(skills); AssignBarrage(skills); AssignUtility(skills); } private void AssignLightning(SkillLocator skills) { //IL_0037: 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_008a: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Expected O, but got Unknown //IL_0161: 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) SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.defaultVariantIndex = 0u; val.variants = (Variant[])(object)new Variant[1]; skills.secondary._skillFamily = val; SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(ChargeBarrage)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 2; val2.baseRechargeInterval = 7f; val2.beginSkillCooldownOnSkillEnd = true; val2.canceledFromSprinting = false; val2.dontAllowPastMaxStocks = true; val2.forceSprintDuringState = false; val2.fullRestockOnAssign = true; val2.icon = null; val2.interruptPriority = (InterruptPriority)0; val2.isCombatSkill = true; val2.keywordTokens = new string[0]; val2.mustKeyPress = false; val2.cancelSprintingOnActivation = false; val2.rechargeStock = 2; val2.requiredStock = 1; val2.skillName = "FireBarrage"; val2.skillNameToken = "FireBarrage"; val2.skillDescriptionToken = ""; val2.stockToConsume = 1; ((Object)val2).name = val2.name; AWContent.entityStates.Add(typeof(ChargeBarrage)); AWContent.entityStates.Add(typeof(FireBarrage)); AWContent.skillDefs.Add(val2); AWContent.skillFamilies.Add(val); Variant[] variants = val.variants; Variant val3 = new Variant { skillDef = val2 }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[0] = val3; } private void AssignBarrage(SkillLocator skills) { //IL_0037: 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_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.defaultVariantIndex = 0u; val.variants = (Variant[])(object)new Variant[1]; skills.primary._skillFamily = val; SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(ChargeRain)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 1; val2.baseRechargeInterval = 22f; val2.beginSkillCooldownOnSkillEnd = false; val2.canceledFromSprinting = false; val2.dontAllowPastMaxStocks = true; val2.forceSprintDuringState = false; val2.fullRestockOnAssign = true; val2.icon = null; val2.interruptPriority = (InterruptPriority)0; val2.isCombatSkill = false; val2.keywordTokens = new string[0]; val2.mustKeyPress = false; val2.cancelSprintingOnActivation = false; val2.rechargeStock = 1; val2.requiredStock = 1; val2.skillName = "ChargeRain"; val2.skillNameToken = "Rain"; val2.skillDescriptionToken = ""; val2.stockToConsume = 1; ((Object)val2).name = val2.name; Variant[] variants = val.variants; Variant val3 = new Variant { skillDef = val2 }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[0] = val3; AWContent.entityStates.Add(typeof(ChargeRain)); AWContent.entityStates.Add(typeof(ChannelRain)); AWContent.entityStates.Add(typeof(EndRain)); AWContent.skillDefs.Add(val2); AWContent.skillFamilies.Add(val); } private void AssignUtility(SkillLocator skills) { //IL_0037: 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_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Expected O, but got Unknown //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.defaultVariantIndex = 0u; val.variants = (Variant[])(object)new Variant[1]; skills.utility._skillFamily = val; SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>(); val2.activationState = new SerializableEntityStateType(typeof(Enrage)); val2.activationStateMachineName = "Weapon"; val2.baseMaxStock = 1; val2.baseRechargeInterval = 0f; val2.beginSkillCooldownOnSkillEnd = false; val2.canceledFromSprinting = false; val2.dontAllowPastMaxStocks = true; val2.forceSprintDuringState = false; val2.fullRestockOnAssign = true; val2.icon = null; val2.interruptPriority = (InterruptPriority)1; val2.isCombatSkill = false; val2.keywordTokens = new string[0]; val2.mustKeyPress = false; val2.cancelSprintingOnActivation = false; val2.rechargeStock = 0; val2.requiredStock = 1; val2.skillName = "Enrage"; val2.skillNameToken = "Enrage"; val2.skillDescriptionToken = ""; val2.stockToConsume = 1; Variant[] variants = val.variants; Variant val3 = new Variant { skillDef = val2 }; ((Variant)(ref val3)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); variants[0] = val3; ((Object)val2).name = val2.name; AWContent.entityStates.Add(typeof(Enrage)); AWContent.skillDefs.Add(val2); AWContent.skillFamilies.Add(val); } } public class Director { public Director(GameObject masterObject) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007c: 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_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_0099: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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_00b1: Expected O, but got Unknown //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: 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_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Expected O, but got Unknown //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: 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) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) CharacterSpawnCard val = ScriptableObject.CreateInstance<CharacterSpawnCard>(); ((Object)val).name = "cscAncientWisp"; ((SpawnCard)val).prefab = masterObject; ((SpawnCard)val).sendOverNetwork = true; ((SpawnCard)val).hullSize = (HullClassification)1; ((SpawnCard)val).nodeGraphType = (GraphType)0; ((SpawnCard)val).requiredFlags = (NodeFlags)0; ((SpawnCard)val).forbiddenFlags = (NodeFlags)4; ((SpawnCard)val).directorCreditCost = 1000; ((SpawnCard)val).occupyPosition = false; val.loadout = new SerializableLoadout(); val.noElites = false; val.forbiddenAsBoss = false; DirectorCard val2 = new DirectorCard { spawnCard = (SpawnCard)(object)val, selectionWeight = 1, preventOverhead = false, minimumStageCompletions = 0, spawnDistance = (MonsterSpawnDistance)0 }; AWContent.AncientWispCard = new DirectorCardHolder { Card = val2, MonsterCategory = (MonsterCategory)4 }; DirectorCard card = new DirectorCard { spawnCard = (SpawnCard)(object)val, selectionWeight = 1, preventOverhead = false, minimumStageCompletions = 5, spawnDistance = (MonsterSpawnDistance)0 }; AWContent.AncientWispLoopCard = new DirectorCardHolder { Card = card, MonsterCategory = (MonsterCategory)4 }; if (Chainloader.PluginInfos.ContainsKey("com.Moffein.RiskyArtifacts")) { SetupOrigin((SpawnCard)(object)val); } DirectorCardCategorySelection val3 = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/MixEnemy/dccsMixEnemy.asset").WaitForCompletion(); int num = FindCategoryIndexByName(val3, "Champions"); if (num >= 0) { val3.AddCard(num, val2); } DirectorCardCategorySelection val4 = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/Common/dccsWispFamily.asset").WaitForCompletion(); num = FindCategoryIndexByName(val4, "Champions"); if (num >= 0) { val4.AddCard(num, val2); } foreach (StageSpawnInfo stage in AncientWispPlugin.StageList) { DirectorCardHolder val5 = ((stage.GetMinStages() == 0) ? AWContent.AncientWispCard : AWContent.AncientWispLoopCard); SceneDef val6 = ScriptableObject.CreateInstance<SceneDef>(); val6.baseSceneNameOverride = stage.GetStageName(); Helpers.AddNewMonsterToStage(val5, false, DirectorAPI.GetStageEnumFromSceneDef(val6), stage.GetStageName()); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void SetupOrigin(SpawnCard spawncard) { if (AncientWispPlugin.allowOrigin) { Origin.AddSpawnCard(spawncard, (BossTier)2); } } public static int FindCategoryIndexByName(DirectorCardCategorySelection dcs, string categoryName) { for (int i = 0; i < dcs.categories.Length; i++) { if (string.CompareOrdinal(dcs.categories[i].name, categoryName) == 0) { return i; } } return -1; } } internal class LightningNoise : MonoBehaviour { private float timer = 0f; private bool playedSound = false; public void FixedUpdate() { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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_0084: Expected O, but got Unknown timer += Time.fixedDeltaTime; if (!playedSound && timer >= ChannelRain.explosionDelay - 0.02f) { playedSound = true; Util.PlaySound("Play_item_use_lighningArm", ((Component)this).gameObject); EffectManager.SpawnEffect(LightningVisual.lightningExplosionEffect, new EffectData { origin = ((Component)this).transform.position, rotation = ((Component)this).transform.rotation }, false); } } } internal class RepairEffects : MonoBehaviour { public static bool fixedLightning; public static void Repair() { RepairEnrageEffect(); } private static void RepairEnrageEffect() { GameObject val = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/AncientWispEnrage"); Transform val2 = val.transform.Find("SwingTrail"); Renderer component = ((Component)val2).GetComponent<Renderer>(); if (Object.op_Implicit((Object)(object)component)) { component.material = ((Component)LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbanditshotgun").transform.Find("Fire")).GetComponent<Renderer>().material; } Enrage.enragePrefab = val; } public static void ModifyLightning(GameObject lightning) { Transform[] componentsInChildren = lightning.GetComponentsInChildren<Transform>(); Transform val = null; Transform[] array = componentsInChildren; foreach (Transform val2 in array) { if (((Object)val2).name == "Ring, Center") { val = val2; break; } } Renderer component = ((Component)val).GetComponent<Renderer>(); if (Object.op_Implicit((Object)(object)component)) { component.material = ((Component)LegacyResourcesAPI.Load<GameObject>("prefabs/effects/muzzleflashes/muzzleflashbanditshotgun").transform.Find("Fire")).GetComponent<Renderer>().material; } } public static void BuildLightningPrefab() { if (!fixedLightning) { fixedLightning = true; LightningVisual.lightningDelayPrefab = PrefabAPI.InstantiateClone(ChannelRain.delayPrefab, "MoffeinAWLightningVisual", false); LightningVisual.lightningDelayPrefab.AddComponent<LightningNoise>(); ModifyLightning(LightningVisual.lightningDelayPrefab); DestroyOnTimer val = LightningVisual.lightningDelayPrefab.AddComponent<DestroyOnTimer>(); val.duration = ChannelRain.explosionDelay; DelayBlast component = LightningVisual.lightningDelayPrefab.GetComponent<DelayBlast>(); LightningVisual.lightningExplosionEffect = component.explosionEffect; Object.Destroy((Object)(object)LightningVisual.lightningDelayPrefab.GetComponent<DelayBlast>()); } } } public class ItemDisplays { private Dictionary<string, GameObject> itemDisplayPrefabs = new Dictionary<string, GameObject>(); public ItemDisplays() { DisplaySetup(AncientWispPlugin.AncientWispObject); } private void DisplaySetup(GameObject go) { //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_00c5: 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_00e0: 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_0119: 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_0134: 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_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: 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_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: 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_018c: 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_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: 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_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0220: 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_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_0384: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_0395: 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_039f: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03ae: Unknown result type (might be due to invalid IL or missing references) //IL_03b7: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_0414: Unknown result type (might be due to invalid IL or missing references) //IL_0420: Unknown result type (might be due to invalid IL or missing references) //IL_0425: Unknown result type (might be due to invalid IL or missing references) //IL_042a: Unknown result type (might be due to invalid IL or missing references) //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_0437: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_0443: Unknown result type (might be due to invalid IL or missing references) //IL_0445: Unknown result type (might be due to invalid IL or missing references) //IL_044a: Unknown result type (might be due to invalid IL or missing references) //IL_0456: Unknown result type (might be due to invalid IL or missing references) //IL_046c: Unknown result type (might be due to invalid IL or missing references) //IL_047e: Unknown result type (might be due to invalid IL or missing references) //IL_0487: Unknown result type (might be due to invalid IL or missing references) //IL_04bb: Unknown result type (might be due to invalid IL or missing references) //IL_04c0: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Unknown result type (might be due to invalid IL or missing references) //IL_04db: Unknown result type (might be due to invalid IL or missing references) //IL_04e7: Unknown result type (might be due to invalid IL or missing references) //IL_04ec: Unknown result type (might be due to invalid IL or missing references) //IL_04f1: Unknown result type (might be due to invalid IL or missing references) //IL_04f9: Unknown result type (might be due to invalid IL or missing references) //IL_04fe: Unknown result type (might be due to invalid IL or missing references) //IL_0500: Unknown result type (might be due to invalid IL or missing references) //IL_0509: Unknown result type (might be due to invalid IL or missing references) //IL_0512: Unknown result type (might be due to invalid IL or missing references) //IL_0546: Unknown result type (might be due to invalid IL or missing references) //IL_054b: Unknown result type (might be due to invalid IL or missing references) //IL_0561: Unknown result type (might be due to invalid IL or missing references) //IL_0566: Unknown result type (might be due to invalid IL or missing references) //IL_0581: Unknown result type (might be due to invalid IL or missing references) //IL_0586: Unknown result type (might be due to invalid IL or missing references) //IL_058b: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Unknown result type (might be due to invalid IL or missing references) //IL_0598: Unknown result type (might be due to invalid IL or missing references) //IL_059a: Unknown result type (might be due to invalid IL or missing references) //IL_05a4: Unknown result type (might be due to invalid IL or missing references) //IL_05a6: Unknown result type (might be due to invalid IL or missing references) //IL_05ab: Unknown result type (might be due to invalid IL or missing references) //IL_05b7: Unknown result type (might be due to invalid IL or missing references) //IL_05d2: Unknown result type (might be due to invalid IL or missing references) //IL_05e4: Unknown result type (might be due to invalid IL or missing references) //IL_05ed: Unknown result type (might be due to invalid IL or missing references) //IL_0621: Unknown result type (might be due to invalid IL or missing references) //IL_0626: Unknown result type (might be due to invalid IL or missing references) //IL_062d: Unknown result type (might be due to invalid IL or missing references) //IL_0632: Unknown result type (might be due to invalid IL or missing references) //IL_0639: Unknown result type (might be due to invalid IL or missing references) //IL_063e: Unknown result type (might be due to invalid IL or missing references) //IL_0646: Unknown result type (might be due to invalid IL or missing references) //IL_064b: Unknown result type (might be due to invalid IL or missing references) //IL_064d: Unknown result type (might be due to invalid IL or missing references) //IL_0657: Unknown result type (might be due to invalid IL or missing references) //IL_0659: Unknown result type (might be due to invalid IL or missing references) //IL_065e: Unknown result type (might be due to invalid IL or missing references) //IL_066a: Unknown result type (might be due to invalid IL or missing references) //IL_0685: Unknown result type (might be due to invalid IL or missing references) //IL_0697: Unknown result type (might be due to invalid IL or missing references) //IL_06a0: Unknown result type (might be due to invalid IL or missing references) //IL_06d4: Unknown result type (might be due to invalid IL or missing references) //IL_06d9: Unknown result type (might be due to invalid IL or missing references) //IL_06ef: Unknown result type (might be due to invalid IL or missing references) //IL_06f4: Unknown result type (might be due to invalid IL or missing references) //IL_0700: Unknown result type (might be due to invalid IL or missing references) //IL_0705: Unknown result type (might be due to invalid IL or missing references) //IL_070a: Unknown result type (might be due to invalid IL or missing references) //IL_0712: Unknown result type (might be due to invalid IL or missing references) //IL_0717: Unknown result type (might be due to invalid IL or missing references) //IL_0719: Unknown result type (might be due to invalid IL or missing references) //IL_0723: Unknown result type (might be due to invalid IL or missing references) //IL_0725: Unknown result type (might be due to invalid IL or missing references) //IL_072a: Unknown result type (might be due to invalid IL or missing references) //IL_0736: Unknown result type (might be due to invalid IL or missing references) //IL_0751: Unknown result type (might be due to invalid IL or missing references) //IL_0763: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) //IL_07a0: Unknown result type (might be due to invalid IL or missing references) //IL_07a5: Unknown result type (might be due to invalid IL or missing references) //IL_07bb: Unknown result type (might be due to invalid IL or missing references) //IL_07c0: Unknown result type (might be due to invalid IL or missing references) //IL_07d6: Unknown result type (might be due to invalid IL or missing references) //IL_07db: Unknown result type (might be due to invalid IL or missing references) //IL_07e3: Unknown result type (might be due to invalid IL or missing references) //IL_07e8: Unknown result type (might be due to invalid IL or missing references) //IL_07ea: Unknown result type (might be due to invalid IL or missing references) //IL_07f4: Unknown result type (might be due to invalid IL or missing references) //IL_07f6: Unknown result type (might be due to invalid IL or missing references) //IL_07fb: Unknown result type (might be due to invalid IL or missing references) //IL_0807: Unknown result type (might be due to invalid IL or missing references) //IL_0822: Unknown result type (might be due to invalid IL or missing references) //IL_0834: Unknown result type (might be due to invalid IL or missing references) //IL_083d: Unknown result type (might be due to invalid IL or missing references) //IL_0871: Unknown result type (might be due to invalid IL or missing references) //IL_0876: Unknown result type (might be due to invalid IL or missing references) //IL_088c: Unknown result type (might be due to invalid IL or missing references) //IL_0891: Unknown result type (might be due to invalid IL or missing references) //IL_08a7: Unknown result type (might be due to invalid IL or missing references) //IL_08ac: Unknown result type (might be due to invalid IL or missing references) //IL_08b4: Unknown result type (might be due to invalid IL or missing references) //IL_08b9: Unknown result type (might be due to invalid IL or missing references) //IL_08bb: Unknown result type (might be due to invalid IL or missing references) //IL_08c5: Unknown result type (might be due to invalid IL or missing references) //IL_08c7: Unknown result type (might be due to invalid IL or missing references) //IL_08cc: Unknown result type (might be due to invalid IL or missing references) Transform transform = null; Transform[] componentsInChildren = go.GetComponentsInChildren<Transform>(); Transform[] array = componentsInChildren; foreach (Transform val in array) { if (((Object)val).name == "Head") { transform = val; break; } } ChildLocator componentInChildren = go.GetComponentInChildren<ChildLocator>(); Array.Resize(ref componentInChildren.transformPairs, componentInChildren.transformPairs.Length + 1); componentInChildren.transformPairs[componentInChildren.transformPairs.Length - 1] = new NameTransformPair { name = "Head", transform = transform }; PopulateDisplays(); ItemDisplayRuleSet val2 = ScriptableObject.CreateInstance<ItemDisplayRuleSet>(); List<KeyAssetRuleGroup> list = new List<KeyAssetRuleGroup>(); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixPoison, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteUrchinCrown"), childName = "Head", localPos = new Vector3(0f, 0.4f, 0f), localAngles = new Vector3(255f, 0f, 0f), localScale = 0.1f * Vector3.one, limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixHaunted, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteStealthCrown"), childName = "Head", localPos = new Vector3(0f, 0.5f, 0f), localAngles = new Vector3(260f, 0f, 0f), localScale = 0.1f * Vector3.one, limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixWhite, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteIceCrown"), childName = "Head", localPos = new Vector3(0f, 0.5f, 0f), localAngles = new Vector3(260f, 0f, 0f), localScale = 0.05f * Vector3.one, limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixBlue, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteRhinoHorn"), childName = "Head", localPos = new Vector3(0f, 0.38f, 0.06f), localAngles = new Vector3(-20f, 0f, 0f), localScale = 0.26f * Vector3.one, limbMask = (LimbFlags)0 }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteRhinoHorn"), childName = "Head", localPos = new Vector3(0f, 0.28f, 0.1f), localAngles = new Vector3(-10f, 0f, 0f), localScale = 0.36f * Vector3.one, limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixRed, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteHorn"), childName = "Head", localPos = new Vector3(0.18f, 0.28f, 0f), localAngles = new Vector3(0f, 0f, 0f), localScale = 0.18f * Vector3.one, limbMask = (LimbFlags)0 }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteHorn"), childName = "Head", localPos = new Vector3(-0.18f, 0.28f, 0f), localAngles = new Vector3(0f, 0f, 0f), localScale = 0.18f * new Vector3(-1f, 1f, 1f), limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Earth.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteMendingAntlers"), childName = "Head", localPos = new Vector3(0f, 0.33f, 0f), localAngles = Vector3.zero, localScale = Vector3.one, limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Void.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayAffixVoid"), childName = "Head", localPos = new Vector3(0f, 0.2f, 0.2f), localAngles = new Vector3(90f, 0f, 0f), localScale = 0.2f * Vector3.one, limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Aurelionite.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteAurelioniteEquipment"), childName = "Head", localPos = new Vector3(0f, 0.25f, 0.34f), localAngles = new Vector3(0f, 0f, 0f), localScale = new Vector3(0.8f, 0.8f, 0.8f), limbMask = (LimbFlags)0 } } } }); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Bead.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteBeadSpike"), childName = "Head", localPos = new Vector3(-0.00421f, 0.37641f, 0.06809f), localAngles = new Vector3(30f, 330f, 0f), localScale = new Vector3(0.03f, 0.03f, 0.03f), limbMask = (LimbFlags)0 } } } }); List<KeyAssetRuleGroup> list2 = list; val2.keyAssetRuleGroups = list2.ToArray(); CharacterModel component = ((Component)go.GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>(); component.itemDisplayRuleSet = val2; component.itemDisplayRuleSet.GenerateRuntimeValues(); itemDisplayPrefabs.Clear(); } internal void PopulateDisplays() { ItemDisplayRuleSet itemDisplayRuleSet = ((Component)LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>().itemDisplayRuleSet; KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups; for (int i = 0; i < keyAssetRuleGroups.Length; i++) { ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules; if (rules == null) { continue; } for (int j = 0; j < rules.Length; j++) { GameObject followerPrefab = rules[j].followerPrefab; if (Object.op_Implicit((Object)(object)followerPrefab)) { string key = ((Object)followerPrefab).name?.ToLower(); if (!itemDisplayPrefabs.ContainsKey(key)) { itemDisplayPrefabs[key] = followerPrefab; } } } } } public GameObject LoadDisplay(string name) { if (itemDisplayPrefabs.ContainsKey(name.ToLower()) && Object.op_Implicit((Object)(object)itemDisplayPrefabs[name.ToLower()])) { return itemDisplayPrefabs[name.ToLower()]; } return null; } } internal class LanguageTokens { public static SubFileSystem fileSystem; internal static string languageRoot => Path.Combine(assemblyDir, "language"); internal static string assemblyDir => Path.GetDirectoryName(AncientWispPlugin.pluginInfo.Location); public LanguageTokens() { RegisterLanguageTokens(); } public static void RegisterLanguageTokens() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown Language.SetFolders += new hook_SetFolders(fixme); } private static void fixme(orig_SetFolders orig, Language self, IEnumerable<string> newFolders) { if (Directory.Exists(languageRoot)) { IEnumerable<string> second = Directory.EnumerateDirectories(Path.Combine(languageRoot), self.name); orig.Invoke(self, newFolders.Union(second)); } else { orig.Invoke(self, newFolders); } } } } namespace AncientWisp.Helpers { internal class DeathExplosions : MonoBehaviour { public static int maxEplosions = 5; private int explosions = 0; private float stopwatch; public static GameObject archWispExplosion = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/archwispdeath"); public static float timeBetweenExplosions = 0.4f; public void FixedUpdate() { //IL_006c: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: 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_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Expected O, but got Unknown stopwatch += Time.fixedDeltaTime; if (stopwatch > timeBetweenExplosions) { stopwatch -= timeBetweenExplosions; if (NetworkServer.active && explosions < maxEplosions) { explosions++; EffectManager.SpawnEffect(archWispExplosion, new EffectData { origin = ((Component)this).transform.position + new Vector3(Random.Range(-4.5f, 4.5f), Random.Range(-4.5f, 4.5f), Random.Range(-4.5f, 4.5f)),