Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Pilot v0.6.4
plugins/EnforcerGang-Pilot/Pilot.dll
Decompiled 2 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EmotesAPI; using EntityStates; using EntityStates.MoffeinPilot; using EntityStates.MoffeinPilot.Airstrike; using EntityStates.MoffeinPilot.FireSelect; using EntityStates.MoffeinPilot.Parachute; using EntityStates.MoffeinPilot.Weapon; using HG; using HG.BlendableTypes; using IL.RoR2.UI; using KinematicCharacterController; using MoffeinPilot.Content.Components; using MoffeinPilot.Content.Components.Projectile; using MoffeinPilot.Content.Components.ProjectileGhost; using MoffeinPilot.Content.Components.SkyboxDrone; using MoffeinPilot.Modules; using MoffeinPilot.Modules.Characters; using MoffeinPilot.Modules.Survivors; using MoffeinPilot.SkillStates.BaseStates; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using R2API; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using ShaderSwapper; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.SceneManagement; [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("Pilot")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+4b69769a8816a1d5d12791f54aac25252cb78b8f")] [assembly: AssemblyProduct("Pilot")] [assembly: AssemblyTitle("Pilot")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: UnverifiableCode] namespace EntityStates.MoffeinPilot { public class PilotMainState : GenericCharacterMain { public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); SetWeaponModel(); } private void SetWeaponModel() { if ((Object)(object)((EntityState)this).skillLocator == (Object)null || (Object)(object)((EntityState)this).skillLocator.primary == (Object)null) { return; } bool flag = (Object)(object)((EntityState)this).skillLocator.primary.baseSkill == (Object)(object)PilotSurvivor.SkillDefs.Primaries.Silencer; ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator(); if (Object.op_Implicit((Object)(object)modelChildLocator)) { Transform val = modelChildLocator.FindChild("PilotPistol"); Transform val2 = modelChildLocator.FindChild("PilotWeapon"); if (Object.op_Implicit((Object)(object)val)) { ((Component)val).gameObject.SetActive(flag); } if (Object.op_Implicit((Object)(object)val2)) { ((Component)val2).gameObject.SetActive(!flag); } } } } } namespace EntityStates.MoffeinPilot.Weapon { public class ClusterFire : BaseSkillState, IStepSetter { public static ConfigEntry<bool> useLaser; public static float spreadBloomValueCosmetic = 1f; public static float recoilAmplitude = 1f; public static float comboRecoilAmplitude = 2f; public static float damageCoefficient = 1.6f; public static float force = 500f; public static float comboDamageCoefficient = 3.2f; public static float comboForce = 1500f; public static float comboBlastRadius = 8f; public static float comboMinDistance = 2.5f; public static float comboMinBlastRadius = 2.5f; public static float selfKnockbackForce = 0f; public static float comboSelfKnockbackForce = 0f; public static float shotRadius = 0.5f; public static float comboShotRadius = 0.5f; public static float comboShotRadiusLaser = 1.5f; public static float baseDuration = 0.3f; public static string muzzleName = "Muzzle"; public static string attackSoundString = "Play_MoffeinPilot_Primary_Cluster"; public static string comboAttackSoundString = "Play_MoffeinPilot_Primary_Cluster_Combo"; public static GameObject tracerEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/TracerCaptainShotgun.prefab").WaitForCompletion(); public static GameObject hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/HitsparkCaptainShotgun.prefab").WaitForCompletion(); public static GameObject comboExplosionEffectPrefab; public static GameObject comboTracerEffectPrefab; public static GameObject comboHitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/HitsparkCaptainShotgun.prefab").WaitForCompletion(); public static GameObject muzzleEffectPrefab; public static GameObject comboMuzzleEffectPrefab; private PilotController pilotController; private bool triggeredComboExplosion; private float duration; private int step; public void SetStep(int i) { step = i; } public override void OnEnter() { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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) ((BaseState)this).OnEnter(); triggeredComboExplosion = false; pilotController = ((EntityState)this).GetComponent<PilotController>(); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && !((EntityState)this).characterBody.HasBuff(Buffs.ParachuteSpeed)) { ((EntityState)this).characterBody.isSprinting = false; } Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 3f, false); duration = baseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).characterBody.AddSpreadBloom(RapidFire.spreadBloomValue); ((EntityState)this).PlayAnimation("Gesture, Additive", "Shoot1", "ShootGun.playbackRate", duration * 2f, 0f); if (step == 2) { FireBulletCombo(aimRay); } else { FireBullet(aimRay); } } public void FireBullet(Ray aimRay) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_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_0060: 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_006e: 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: 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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)muzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(muzzleEffectPrefab, ((EntityState)this).gameObject, RapidFire.muzzleName, false); } if (((EntityState)this).isAuthority) { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0f, bulletCount = 1u, damage = damageCoefficient * ((BaseState)this).damageStat, force = force, tracerEffectPrefab = tracerEffectPrefab, muzzleName = muzzleName, hitEffectPrefab = hitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), radius = shotRadius, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, falloffModel = (FalloffModel)0, procCoefficient = 1f }.Fire(); if (selfKnockbackForce != 0f && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && ((EntityState)this).characterMotor.velocity != Vector3.zero) { ((EntityState)this).characterMotor.ApplyForce((0f - selfKnockbackForce) * ((Ray)(ref aimRay)).direction, false, false); } } Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, -0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude); ((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValueCosmetic); } public void FireBulletCombo(Ray aimRay) { //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0178: 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_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008d: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: 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_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Expected O, but got Unknown //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)comboMuzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(comboMuzzleEffectPrefab, ((EntityState)this).gameObject, RapidFire.muzzleName, false); } if (((EntityState)this).isAuthority) { if (!useLaser.Value) { new BulletAttack { tracerEffectPrefab = comboTracerEffectPrefab, damage = 0f, procCoefficient = 0f, damageType = DamageTypeCombo.op_Implicit((DamageType)2049), owner = ((EntityState)this).gameObject, aimVector = ((Ray)(ref aimRay)).direction, isCrit = false, minSpread = 0f, maxSpread = 0f, origin = ((Ray)(ref aimRay)).origin, maxDistance = 2000f, muzzleName = muzzleName, radius = comboShotRadius, hitCallback = new HitCallback(ComboHitCallback) }.Fire(); } else { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0f, bulletCount = 1u, damage = comboDamageCoefficient * ((BaseState)this).damageStat, force = comboForce, tracerEffectPrefab = comboTracerEffectPrefab, muzzleName = muzzleName, hitEffectPrefab = hitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), radius = comboShotRadiusLaser, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, falloffModel = (FalloffModel)0, procCoefficient = 1f, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask, maxDistance = 2000f }.Fire(); } if (comboSelfKnockbackForce != 0f && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && ((EntityState)this).characterMotor.velocity != Vector3.zero) { ((EntityState)this).characterMotor.ApplyForce((0f - comboSelfKnockbackForce) * ((Ray)(ref aimRay)).direction, false, false); } } Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); Util.PlaySound(comboAttackSoundString, ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-0.4f * comboRecoilAmplitude, -0.8f * comboRecoilAmplitude, -0.3f * comboRecoilAmplitude, 0.3f * comboRecoilAmplitude); ((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValueCosmetic); } private bool ComboHitCallback(BulletAttack bulletRef, ref BulletHit hitInfo) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: 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_013b: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0155: 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_015c: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown _ = hitInfo.point; if (!triggeredComboExplosion && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { triggeredComboExplosion = true; _ = bulletRef.aimVector; float num = comboForce; Vector3 val = bulletRef.aimVector; Vector3 bonusForce = num * ((Vector3)(ref val)).normalized; val = hitInfo.point - ((EntityState)this).characterBody.corePosition; float magnitude = ((Vector3)(ref val)).magnitude; float num2 = comboBlastRadius; if (magnitude < comboBlastRadius) { num2 = ((!(magnitude <= comboMinDistance)) ? Mathf.Lerp(comboMinBlastRadius, comboBlastRadius, (magnitude - comboMinDistance) / (comboBlastRadius - comboMinDistance)) : comboMinBlastRadius); } if (Object.op_Implicit((Object)(object)comboExplosionEffectPrefab)) { EffectManager.SpawnEffect(comboExplosionEffectPrefab, new EffectData { origin = hitInfo.point, scale = num2 / 4.83f }, true); } new BlastAttack { attacker = ((EntityState)this).gameObject, attackerFiltering = (AttackerFiltering)2, baseDamage = ((BaseState)this).damageStat * comboDamageCoefficient, baseForce = 0f, bonusForce = bonusForce, canRejectForce = true, crit = ((BaseState)this).RollCrit(), damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.GenericPrimary, falloffModel = (FalloffModel)0, inflictor = ((EntityState)this).gameObject, position = hitInfo.point, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = num2, teamIndex = ((BaseState)this).GetTeam() }.Fire(); } return false; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class FireColdWar : BaseState { public static float selfKnockbackForce = 450f; public static float damageCoefficientGrounded = 4.8f; public static GameObject projectilePrefabGrounded; public static float damageCoefficient = 2.2f; public static float force = 450f; public static float baseDuration = 0.3f; public static float baseShotDuration = 0.1f; public static string attackSoundString = "Play_MoffeinPilot_Secondary_FireAlt"; public static int baseShotCount = 3; public static string muzzleString = "Muzzle"; public static float spreadBloom = 0f; public static float recoil = 1f; public static GameObject projectilePrefab; private int shotCount; private float duration; private float shotDuration; private float shotStopwatch; private bool crit; private PilotController pilotController; private bool applySelfForce; private bool startedGrounded = false; public override void OnEnter() { ((BaseState)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.isGrounded && (!Object.op_Implicit((Object)(object)((EntityState)this).characterBody) || !((EntityState)this).characterBody.HasBuff(Buffs.WallclingBonus))) { startedGrounded = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.velocity.y < 0f) { ((EntityState)this).characterMotor.velocity.y = 0f; } applySelfForce = true; pilotController = ((EntityState)this).GetComponent<PilotController>(); if (Object.op_Implicit((Object)(object)pilotController)) { pilotController.ConsumeSecondaryStock(1); applySelfForce = !pilotController.isWavedashing; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary)) { ((EntityState)this).characterBody.OnSkillActivated(((EntityState)this).skillLocator.secondary); } crit = ((BaseState)this).RollCrit(); shotCount = 0; shotStopwatch = 0f; duration = baseDuration / base.attackSpeedStat; shotDuration = baseShotDuration / base.attackSpeedStat; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); if (((EntityState)this).isAuthority && !((EntityState)this).characterBody.HasBuff(Buffs.ParachuteSpeed)) { ((EntityState)this).characterBody.isSprinting = false; } } PilotSurvivor.HandleLuminousShotServer(((EntityState)this).characterBody); FireProjectile(); if (startedGrounded) { shotCount = baseShotCount; } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.velocity.y < 0f) { ((EntityState)this).characterMotor.velocity.y = 0f; } if (shotCount < baseShotCount) { shotStopwatch += Time.fixedDeltaTime; if (shotStopwatch >= shotDuration) { FireProjectile(); } } else if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration && shotCount >= baseShotCount) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetSpreadBloom(0f, false); } ((EntityState)this).OnExit(); } private void FireProjectile() { //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) shotStopwatch = 0f; shotCount++; Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Additive", "Shoot1", "ShootGun.playbackRate", shotDuration * 2f, 0f); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); ProjectileManager.instance.FireProjectile((!startedGrounded) ? projectilePrefab : projectilePrefabGrounded, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * ((!startedGrounded) ? damageCoefficient : damageCoefficientGrounded), force, crit, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); if (applySelfForce && selfKnockbackForce != 0f && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && ((EntityState)this).characterMotor.velocity != Vector3.zero) { ((EntityState)this).characterMotor.ApplyForce((0f - selfKnockbackForce) * ((Ray)(ref aimRay)).direction, false, false); } } ((BaseState)this).AddRecoil(-0.4f * recoil, -0.8f * recoil, -0.3f * recoil, 0.3f * recoil); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.AddSpreadBloom(spreadBloom); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class FireSilencedPistol : BaseState { public static float selfKnockbackForce = 0f; public static float damageCoefficient = 1f; public static float weakpointMultiplier = 1f; public static GameObject weakpointEffectPrefab; public static float force = 400f; public static float baseDuration = 0.25f; public static float spreadBloomValue = 0.75f; public static float recoilAmplitude = 1f; public static string attackSoundString = "Play_MoffeinPilot_Silencer"; public static string muzzleName = "Muzzle"; public static GameObject tracerEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/TracerCommandoDefault.prefab").WaitForCompletion(); public static GameObject hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/HitsparkCommando.prefab").WaitForCompletion(); public static GameObject muzzleEffectPrefab; private PilotController pilotController; private float duration; public override void OnEnter() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010f: 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) //IL_0133: 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_0149: 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_015f: Unknown result type (might be due to invalid IL or missing references) //IL_016b: 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_017d: 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_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Expected O, but got Unknown //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Expected O, but got Unknown //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); pilotController = ((EntityState)this).GetComponent<PilotController>(); Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 3f, false); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Additive", "Shoot1", "ShootGun.playbackRate", duration * 2f, 0f); if (Object.op_Implicit((Object)(object)muzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(muzzleEffectPrefab, ((EntityState)this).gameObject, muzzleName, false); } if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && ((EntityState)this).characterBody.HasBuff(Buffs.ParachuteSpeed)) { ((EntityState)this).characterBody.isSprinting = false; } BulletAttack val = new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = 0f, bulletCount = 1u, damage = damageCoefficient * base.damageStat, force = force, tracerEffectPrefab = tracerEffectPrefab, muzzleName = muzzleName, hitEffectPrefab = hitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), radius = 0.5f, smartCollision = true, damageType = (DamageTypeCombo.op_Implicit((DamageType)524288) | DamageTypeCombo.op_Implicit((DamageSource)1)), falloffModel = (FalloffModel)1, procCoefficient = 1f }; if (weakpointMultiplier > 1f) { val.modifyOutgoingDamageCallback = (ModifyOutgoingDamageCallback)delegate(BulletAttack _bulletAttack, ref BulletHit hitInfo, DamageInfo damageInfo) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_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_0063: Expected O, but got Unknown if (BulletAttack.IsSniperTargetHit(ref hitInfo)) { damageInfo.damage *= weakpointMultiplier; damageInfo.damageColorIndex = (DamageColorIndex)12; if (Object.op_Implicit((Object)(object)weakpointEffectPrefab)) { EffectData val2 = new EffectData { origin = hitInfo.point, rotation = Quaternion.LookRotation(-hitInfo.direction) }; val2.SetHurtBoxReference(hitInfo.hitHurtBox); EffectManager.SpawnEffect(weakpointEffectPrefab, val2, true); } Util.PlaySound("Play_MoffeinPilot_Headshot", ((EntityState)this).gameObject); } }; } val.Fire(); if (selfKnockbackForce != 0f && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && ((EntityState)this).characterMotor.velocity != Vector3.zero) { ((EntityState)this).characterMotor.ApplyForce((0f - selfKnockbackForce) * ((Ray)(ref aimRay)).direction, false, false); } } ((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, -0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); ((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValue); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class FireTargetAcquired : BaseState { public static float selfKnockbackForce = 450f; public static float damageCoefficient = 1.6f; public static float force = 450f; public static float baseDuration = 0.3f; public static float baseShotDuration = 0.1f; public static string attackSoundString = "Play_MoffeinPilot_Secondary_FireBurst"; public static int baseShotCount = 3; public static string muzzleString = "Muzzle"; public static float spreadBloom = 0f; public static float recoil = 1f; public static GameObject tracerEffectPrefab; public static GameObject hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/OmniExplosionVFXFMJ.prefab").WaitForCompletion(); private int shotCount; private float duration; private float shotDuration; private float shotStopwatch; private bool crit; private PilotController pilotController; private bool applySelfForce; public override void OnEnter() { ((BaseState)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.velocity.y < 0f) { ((EntityState)this).characterMotor.velocity.y = 0f; } applySelfForce = true; pilotController = ((EntityState)this).GetComponent<PilotController>(); if (Object.op_Implicit((Object)(object)pilotController)) { pilotController.BeginAutoAim(); pilotController.ConsumeSecondaryStock(1); applySelfForce = !pilotController.isWavedashing; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary)) { ((EntityState)this).characterBody.OnSkillActivated(((EntityState)this).skillLocator.secondary); } crit = ((BaseState)this).RollCrit(); shotCount = 0; shotStopwatch = 0f; duration = baseDuration / base.attackSpeedStat; shotDuration = baseShotDuration / base.attackSpeedStat; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); if (((EntityState)this).isAuthority && !((EntityState)this).characterBody.HasBuff(Buffs.ParachuteSpeed)) { ((EntityState)this).characterBody.isSprinting = false; } } PilotSurvivor.HandleLuminousShotServer(((EntityState)this).characterBody); FireBullet(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.velocity.y < 0f) { ((EntityState)this).characterMotor.velocity.y = 0f; } if (shotCount < baseShotCount) { shotStopwatch += Time.fixedDeltaTime; if (shotStopwatch >= shotDuration) { FireBullet(); } } else if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration && shotCount >= baseShotCount) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetSpreadBloom(0f, false); } if (Object.op_Implicit((Object)(object)pilotController)) { pilotController.EndAutoAim(); } ((EntityState)this).OnExit(); } private void FireBullet() { //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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_00e5: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_0131: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0149: 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_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0167: 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_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Expected O, but got Unknown //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) shotStopwatch = 0f; shotCount++; Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); ((EntityState)this).PlayAnimation("Gesture, Additive", "Shoot1", "ShootGun.playbackRate", shotDuration * 2f, 0f); if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && ((EntityState)this).characterBody.HasBuff(Buffs.ParachuteSpeed)) { ((EntityState)this).characterBody.isSprinting = false; } Ray aimRay = ((BaseState)this).GetAimRay(); if (Object.op_Implicit((Object)(object)pilotController)) { pilotController.UpdateAutoAim(); pilotController.UpdateIndicator(); } BulletAttack val = new BulletAttack { aimVector = AutoTarget(aimRay), origin = ((Ray)(ref aimRay)).origin, damage = damageCoefficient * base.damageStat, damageType = DamageTypeCombo.GenericSecondary, damageColorIndex = (DamageColorIndex)0, minSpread = 0f, maxSpread = 0f, falloffModel = (FalloffModel)0, force = force, isCrit = crit, owner = ((EntityState)this).gameObject, muzzleName = muzzleString, smartCollision = true, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = 2f, weapon = ((EntityState)this).gameObject, tracerEffectPrefab = tracerEffectPrefab, hitEffectPrefab = hitEffectPrefab, stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask }; DamageAPI.AddModdedDamageType(ref val.damageType, DamageTypes.KeepAirborne); DamageAPI.AddModdedDamageType(ref val.damageType, DamageTypes.BonusDamageToAirborne); val.Fire(); if (applySelfForce && selfKnockbackForce != 0f && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && ((EntityState)this).characterMotor.velocity != Vector3.zero) { ((EntityState)this).characterMotor.ApplyForce((0f - selfKnockbackForce) * ((Ray)(ref aimRay)).direction, false, false); } } ((BaseState)this).AddRecoil(-0.4f * recoil, -0.8f * recoil, -0.3f * recoil, 0.3f * recoil); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.AddSpreadBloom(spreadBloom); } } private Vector3 AutoTarget(Ray aimRay) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) Vector3 result = ((Ray)(ref aimRay)).direction; HurtBox val = (Object.op_Implicit((Object)(object)pilotController) ? pilotController.GetAutoaimHurtbox() : null); if (Object.op_Implicit((Object)(object)val)) { result = ((Component)val).transform.position - ((Ray)(ref aimRay)).origin; ((Vector3)(ref result)).Normalize(); } 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)2; } } public class RapidFire : BaseState { public static float selfKnockbackForce = 0f; public static float damageCoefficient = 1.4f; public static float force = 200f; public static float baseDuration = 0.12f; public static float spreadBloomValue = 0.3f; public static float recoilAmplitude = 1f; public static string attackSoundString = "Play_MoffeinPilot_Primary_Rapid"; public static string muzzleName = "Muzzle"; public static GameObject tracerEffectPrefab; public static GameObject hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/HitsparkCommandoShotgun.prefab").WaitForCompletion(); public static GameObject muzzleEffectPrefab; private PilotController pilotController; private float duration; public static bool HasSkillEquipped(CharacterBody body) { return Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.skillLocator) && Object.op_Implicit((Object)(object)body.skillLocator.primary) && (Object)(object)body.skillLocator.primary.skillDef == (Object)(object)PilotSurvivor.SkillDefs.Primaries.RapidFire; } public override void OnEnter() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: 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_00c1: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0104: 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_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0130: 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_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_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_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); pilotController = ((EntityState)this).GetComponent<PilotController>(); Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 3f, false); duration = baseDuration / base.attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Additive", "Shoot1", "ShootGun.playbackRate", duration * 2f, 0f); if (Object.op_Implicit((Object)(object)muzzleEffectPrefab)) { EffectManager.SimpleMuzzleFlash(muzzleEffectPrefab, ((EntityState)this).gameObject, muzzleName, false); } if (((EntityState)this).isAuthority) { new BulletAttack { owner = ((EntityState)this).gameObject, weapon = ((EntityState)this).gameObject, origin = ((Ray)(ref aimRay)).origin, aimVector = ((Ray)(ref aimRay)).direction, minSpread = 0f, maxSpread = ((EntityState)this).characterBody.spreadBloomAngle, bulletCount = 1u, damage = damageCoefficient * base.damageStat, force = force, tracerEffectPrefab = tracerEffectPrefab, muzzleName = muzzleName, hitEffectPrefab = hitEffectPrefab, isCrit = ((BaseState)this).RollCrit(), radius = 0.2f, smartCollision = true, damageType = DamageTypeCombo.GenericPrimary, falloffModel = (FalloffModel)1, procCoefficient = 1f }.Fire(); if (selfKnockbackForce != 0f && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && ((EntityState)this).characterMotor.velocity != Vector3.zero) { ((EntityState)this).characterMotor.ApplyForce((0f - selfKnockbackForce) * ((Ray)(ref aimRay)).direction, false, false); } } ((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, -0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude); Util.PlaySound(attackSoundString, ((EntityState)this).gameObject); ((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValue); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class ReloadRapidFire : BaseState { public static string startSoundString = "Play_commando_M2_grenade_throw"; public static string endSoundString = "Play_captain_m1_reload"; public static float baseDuration = 1.1f; private float duration; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.primary)) { ((EntityState)this).skillLocator.primary.stock = ((EntityState)this).skillLocator.primary.maxStock; } ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { Util.PlaySound(endSoundString, ((EntityState)this).gameObject); ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } } namespace EntityStates.MoffeinPilot.Parachute { public class AerobaticsDashBase : BaseState { public static float baseDuration = 0.3f; public static GameObject blinkPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressBlinkEffect.prefab").WaitForCompletion(); public static string blinkSoundString = "Play_huntress_shift_mini_blink"; public Vector3 blinkVector; private Transform modelTransform; private CharacterModel characterModel; private HurtBoxGroup hurtboxGroup; private bool startedAirborne; public static float minWavedashSpeedMult = 0.5f; public static float maxWavedashSpeedMult = 0.5f; private float wavedashSpeedMult; private EntityStateMachine parachuteMachine; private int origJumpCount; public override void OnEnter() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); Util.PlaySound(blinkSoundString, ((EntityState)this).gameObject); CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject)); SetBlinkVector(); modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { characterModel = ((Component)modelTransform).GetComponent<CharacterModel>(); hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); CharacterModel component = ((Component)modelTransform).GetComponent<CharacterModel>(); if (Object.op_Implicit((Object)(object)component)) { TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)component).gameObject); val.duration = 0.6f + baseDuration; val.animateShaderAlpha = true; val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.destroyComponentOnEnd = true; val.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashBright"); val.AddToCharacterModel(component); val.Start(); TemporaryOverlayInstance val2 = TemporaryOverlayManager.AddOverlay(((Component)component).gameObject); val2.duration = 0.7f + baseDuration; val2.animateShaderAlpha = true; val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val2.destroyComponentOnEnd = true; val2.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashExpanded"); val2.AddToCharacterModel(component); val2.Start(); } } parachuteMachine = EntityStateMachine.FindByCustomName(((EntityState)this).gameObject, "Parachute"); wavedashSpeedMult = maxWavedashSpeedMult; startedAirborne = false; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { startedAirborne = !((EntityState)this).characterMotor.isGrounded; origJumpCount = ((EntityState)this).characterMotor.jumpCount; ((EntityState)this).characterMotor.jumpCount = ((!Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) ? 1 : ((EntityState)this).characterBody.maxJumpCount); } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val3 = hurtboxGroup; int hurtBoxesDeactivatorCounter = val3.hurtBoxesDeactivatorCounter + 1; val3.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } } public virtual void SetBlinkVector() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); blinkVector = ((Ray)(ref aimRay)).direction; } public virtual float GetBlinkSpeed() { return 14f; } public override void FixedUpdate() { //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); DashPhysics(); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.isGrounded) { if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && ((EntityState)this).inputBank.jump.down && Object.op_Implicit((Object)(object)parachuteMachine)) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Wavedash { initialSpeed = base.moveSpeedStat * GetBlinkSpeed() * Mathf.Max(wavedashSpeedMult, minWavedashSpeedMult), entryDirection = blinkVector }); return; } wavedashSpeedMult -= Time.deltaTime / baseDuration; } CheckStateExit(); } protected virtual void CheckStateExit() { if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= baseDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } public virtual void DashPhysics() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_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_0060: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += blinkVector * (base.moveSpeedStat * GetBlinkSpeed() * Time.deltaTime); } } public override void OnExit() { //IL_0067: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { if (((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).characterMotor.jumpCount = 0; } else { ((EntityState)this).characterMotor.jumpCount = Mathf.Max(origJumpCount, 1); } } if (!((EntityState)this).outer.destroying) { CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject)); } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val = hurtboxGroup; int hurtBoxesDeactivatorCounter = val.hurtBoxesDeactivatorCounter - 1; val.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } } public virtual void CreateBlinkEffect(Vector3 origin) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //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_0013: 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) EffectData val = new EffectData(); val.rotation = Util.QuaternionSafeLookRotation(blinkVector); val.origin = origin; EffectManager.SpawnEffect(blinkPrefab, val, false); } 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 AerobaticsDashEntry : AerobaticsDashBase { public static float minDurationBeforeWallcling = 0.06f; private bool detectedWallbounce = false; private bool triggeredWallbounce = false; private Vector3 forwardCheckDirection; private Vector3 clingPoint; protected override void CheckStateExit() { if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= AerobaticsDashBase.baseDuration) { CheckWallBounceExit(); } } public override void SetBlinkVector() { //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) base.SetBlinkVector(); forwardCheckDirection = blinkVector; forwardCheckDirection.y = 0f; ((Vector3)(ref forwardCheckDirection)).Normalize(); } public override void FixedUpdate() { if (!((EntityState)this).isAuthority || !AttemptTriggerWallCling()) { base.FixedUpdate(); } } private void CheckWallBounceExit() { if (!AttemptTriggerWallCling()) { ((EntityState)this).outer.SetNextStateToMain(); } } private bool AttemptTriggerWallCling() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) CheckWallCling(); if (detectedWallbounce && !triggeredWallbounce && (!Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) || !((EntityState)this).characterMotor.isGrounded)) { triggeredWallbounce = true; ((EntityState)this).outer.SetNextState((EntityState)(object)new Wallcling { clingPoint = clingPoint }); return true; } return false; } private void CheckWallCling() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: 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_00bc: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Expected O, but got Unknown //IL_00d9: 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_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown if (!detectedWallbounce && !(((EntityState)this).fixedAge < minDurationBeforeWallcling) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { BulletAttack val = new BulletAttack { tracerEffectPrefab = null, damage = 0f, procCoefficient = 0f, damageType = DamageTypeCombo.op_Implicit((DamageType)2049), owner = ((EntityState)this).gameObject, aimVector = forwardCheckDirection, isCrit = false, minSpread = 0f, maxSpread = 0f, origin = ((EntityState)this).characterBody.corePosition, maxDistance = 2f, muzzleName = null, radius = 0.5f, hitCallback = new HitCallback(CheckWallbounceHitCallback), stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask }; val.Fire(); } } private bool CheckWallbounceHitCallback(BulletAttack bulletRef, ref BulletHit hitInfo) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) if (!detectedWallbounce) { _ = hitInfo.point; if (Object.op_Implicit((Object)(object)hitInfo.collider) && ((Component)hitInfo.collider).gameObject.layer == LayerIndex.world.intVal) { clingPoint = hitInfo.point; detectedWallbounce = true; } } return false; } 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 AirSpeedBoost : BaseState { public override void OnEnter() { ((BaseState)this).OnEnter(); if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.AddBuff(Buffs.CloakSpeed); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && ((BaseState)this).isGrounded) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.CloakSpeed); } ((EntityState)this).OnExit(); } } public class DashGround : BaseState { public static ConfigEntry<bool> onlyDashBackwards; public static float baseDuration = 0.2f; public static GameObject blinkPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressBlinkEffect.prefab").WaitForCompletion(); public Vector3 blinkVector; private Transform modelTransform; private CharacterModel characterModel; private HurtBoxGroup hurtboxGroup; public override void OnEnter() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject)); SetBlinkVector(); ((BaseState)this).StartAimMode(new Ray(((EntityState)this).transform.position, -blinkVector), 0.5f, false); ((EntityState)this).PlayAnimation("Gesture, Override", "PointGround", "Point.playbackRate", 0.5f, 0f); modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { characterModel = ((Component)modelTransform).GetComponent<CharacterModel>(); hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); CharacterModel component = ((Component)modelTransform).GetComponent<CharacterModel>(); if (Object.op_Implicit((Object)(object)component)) { TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)component).gameObject); val.duration = 0.6f + baseDuration; val.animateShaderAlpha = true; val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.destroyComponentOnEnd = true; val.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashBright"); val.AddToCharacterModel(component); val.Start(); TemporaryOverlayInstance val2 = TemporaryOverlayManager.AddOverlay(((Component)component).gameObject); val2.duration = 0.7f + baseDuration; val2.animateShaderAlpha = true; val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val2.destroyComponentOnEnd = true; val2.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashExpanded"); val2.AddToCharacterModel(component); val2.Start(); } } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val3 = hurtboxGroup; int hurtBoxesDeactivatorCounter = val3.hurtBoxesDeactivatorCounter + 1; val3.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } } public virtual void SetBlinkVector() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) Vector3 forward; if (!onlyDashBackwards.Value) { Vector3 val; if (!Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { val = Vector3.zero; } else { forward = ((EntityState)this).characterDirection.forward; val = ((Vector3)(ref forward)).normalized; } blinkVector = val; if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && ((EntityState)this).inputBank.moveVector != Vector3.zero) { blinkVector = ((Vector3)(ref ((EntityState)this).inputBank.moveVector)).normalized; } } else { Vector3 val2; if (!Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { val2 = Vector3.zero; } else { forward = ((EntityState)this).characterDirection.forward; val2 = -((Vector3)(ref forward)).normalized; } blinkVector = val2; } } public virtual float GetBlinkSpeed() { return 10.875f; } public override void Update() { //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) ((EntityState)this).Update(); ((EntityState)this).characterDirection.forward = -((Vector3)(ref blinkVector)).normalized; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { DashPhysics(); if (((EntityState)this).fixedAge >= baseDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } } public virtual void DashPhysics() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_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_0060: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += blinkVector * (base.moveSpeedStat * GetBlinkSpeed() * Time.deltaTime); } } public override void OnExit() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); if (!((EntityState)this).outer.destroying) { CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject)); } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup val = hurtboxGroup; int hurtBoxesDeactivatorCounter = val.hurtBoxesDeactivatorCounter - 1; val.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter; } } public virtual void CreateBlinkEffect(Vector3 origin) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //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_0013: 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) EffectData val = new EffectData(); val.rotation = Util.QuaternionSafeLookRotation(blinkVector); val.origin = origin; EffectManager.SpawnEffect(blinkPrefab, val, false); } 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)0; } } public class DeployParachute : BaseState { public enum CameraModes { Above, Shoulder } public static float liftDuration = 0f; public static float baseDuration = 1.2f; public static float liftVelocity = 54f; public static ConfigEntry<CameraModes> cameraMode; public static float boostVelocity = 18f; public static float stopAscentVelocity = 12f; public static float airBoostMult = 1.4f; public static float airLiftMult = 0.6f; public static float minDuration = 0.3f; public static ConfigEntry<bool> holdToAscend; public static float stunRadius = 12f; public static string deploySoundString = "Play_bandit2_shift_exit"; public static GameObject stunEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2SmokeBomb.prefab").WaitForCompletion(); private PilotController pilotController; private bool stopAscent; private bool startedAirborne; private GameObject parachute; private Renderer[] parachuteRenderers; private bool uninterrupted; private int origJumpCount; private CameraParamsOverrideHandle camOverrideHandle; public static CharacterCameraParamsData cameraParamsAbove = new CharacterCameraParamsData { maxPitch = BlendableFloat.op_Implicit(70f), minPitch = BlendableFloat.op_Implicit(-70f), pivotVerticalOffset = BlendableFloat.op_Implicit(3.5f), idealLocalCameraPos = BlendableVector3.op_Implicit(zoomCameraPosition), wallCushion = BlendableFloat.op_Implicit(0.1f) }; public static CharacterCameraParamsData cameraParamsShoulder = Addressables.LoadAssetAsync<CharacterCameraParams>((object)"RoR2/DLC3/Drone Tech/ccpCarryFlight.asset").WaitForCompletion().data; private static Vector3 zoomCameraPosition = new Vector3(0f, 0f, -10f); public static ConfigEntry<bool> enableParachuteFade; public static float fadeAmount = 0.6f; public static float fadeLookAngle = -0.35f; private MaterialPropertyBlock propertyStorage; public override void OnEnter() { //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0282: 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_0295: 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_0199: 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_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.AddBuff(Buffs.ParachuteSpeed); } stopAscent = false; Util.PlaySound(deploySoundString, ((EntityState)this).gameObject); if (NetworkServer.active && stunRadius > 0f) { StunEnemies(((EntityState)this).transform.position); } startedAirborne = false; CreateParachute(); ((BaseState)this).StartAimMode(1f, false); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { startedAirborne = !((EntityState)this).characterMotor.isGrounded; origJumpCount = ((EntityState)this).characterMotor.jumpCount; ((EntityState)this).characterMotor.jumpCount = ((!Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) ? 1 : ((EntityState)this).characterBody.maxJumpCount); if (startedAirborne) { ((EntityState)this).PlayAnimation("FullBody, Override", "ParachuteForward"); } else { ((EntityState)this).PlayAnimation("FullBody, Override", "ParachuteUp"); } if (((EntityState)this).isAuthority) { ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; Ray aimRay = ((BaseState)this).GetAimRay(); float num = base.moveSpeedStat / ((Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && ((EntityState)this).characterBody.baseMoveSpeed != 0f) ? ((EntityState)this).characterBody.baseMoveSpeed : 7f); if (startedAirborne) { num *= airBoostMult; } Vector3 direction = ((Ray)(ref aimRay)).direction; direction.y = 0f; ((Vector3)(ref direction)).Normalize(); CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity += direction * boostVelocity * num; } } pilotController = ((EntityState)this).GetComponent<PilotController>(); if (Object.op_Implicit((Object)(object)pilotController)) { pilotController.isParachuting = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.RemoveParamsOverride(camOverrideHandle, 0.2f); CameraModes value = cameraMode.Value; CameraModes cameraModes = value; CameraParamsOverrideRequest val2; if (cameraModes == CameraModes.Shoulder) { CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest); val.cameraParamsData = cameraParamsShoulder; val.priority = 0f; val2 = val; } else { CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest); val.cameraParamsData = cameraParamsAbove; val.priority = 0f; val2 = val; } camOverrideHandle = ((EntityState)this).cameraTargetParams.AddParamsOverride(val2, 0.5f); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); HandleMotion(); ((BaseState)this).StartAimMode(2f, false); if (((EntityState)this).isAuthority) { if (Object.op_Implicit((Object)(object)((EntityState)this).healthComponent) && ((EntityState)this).healthComponent.isInFrozenState) { ((EntityState)this).outer.SetNextStateToMain(); } else if (((EntityState)this).fixedAge >= baseDuration || stopAscent) { uninterrupted = true; ((EntityState)this).outer.SetNextState((EntityState)(object)new Glide()); } } } private void HandleMotion() { if (stopAscent || !Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { return; } if (((EntityState)this).characterMotor.velocity.y < 0f) { ((EntityState)this).characterMotor.velocity.y = 0f; } float num = liftVelocity; if (startedAirborne) { num *= airLiftMult; } if (((EntityState)this).fixedAge > liftDuration) { num *= Mathf.Lerp(baseDuration, liftDuration, ((EntityState)this).fixedAge); } if (num > stopAscentVelocity) { ((EntityState)this).characterMotor.rootMotion.y += num * Time.deltaTime; if (((EntityState)this).isAuthority && holdToAscend.Value && ((EntityState)this).fixedAge > minDuration && Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && !((EntityState)this).inputBank.skill3.down) { stopAscent = true; ((BaseState)this).SmallHop(((EntityState)this).characterMotor, stopAscentVelocity); } } else { stopAscent = true; ((BaseState)this).SmallHop(((EntityState)this).characterMotor, stopAscentVelocity); } } public override void OnExit() { //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && ((EntityState)this).characterBody.HasBuff(Buffs.ParachuteSpeed)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.ParachuteSpeed); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { if (((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).characterMotor.jumpCount = 0; } else { ((EntityState)this).characterMotor.jumpCount = Mathf.Max(origJumpCount, 1); } } if (Object.op_Implicit((Object)(object)pilotController)) { pilotController.isParachuting = false; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).characterMotor.jumpCount = 1; } DestroyParachute(); if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.RemoveParamsOverride(camOverrideHandle, 0.5f); } ((EntityState)this).OnExit(); } private void StunEnemies(Vector3 stunPosition) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody.coreTransform)) { EffectManager.SimpleEffect(stunEffectPrefab, stunPosition, ((EntityState)this).characterBody.coreTransform.rotation, true); } TeamIndex team = ((BaseState)this).GetTeam(); List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(stunPosition, stunRadius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.healthComponent) || list.Contains(component.healthComponent)) { continue; } list.Add(component.healthComponent); if (Object.op_Implicit((Object)(object)component.healthComponent.body.teamComponent) && component.healthComponent.body.teamComponent.teamIndex != team) { SetStateOnHurt component2 = ((Component)component.healthComponent).gameObject.GetComponent<SetStateOnHurt>(); if (Object.op_Implicit((Object)(object)component2) && component2.canBeStunned) { component2.SetStun(1f); } } } } 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 override void Update() { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).Update(); if (((EntityState)this).isAuthority && enableParachuteFade.Value && Object.op_Implicit((Object)(object)parachute) && parachuteRenderers != null && parachuteRenderers.Length != 0) { Ray aimRay = ((BaseState)this).GetAimRay(); float num = ((((Ray)(ref aimRay)).direction.y < fadeLookAngle) ? fadeAmount : 1f); for (int i = 0; i < parachuteRenderers.Length; i++) { parachuteRenderers[i].GetPropertyBlock(propertyStorage); propertyStorage.SetFloat("_Fade", num); parachuteRenderers[i].SetPropertyBlock(propertyStorage); } } } private void CreateParachute() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) parachute = Object.Instantiate<GameObject>(Asset.TempParachute, ((BaseState)this).FindModelChild("ParachutePosition"), false); parachute.transform.localPosition = Vector3.zero; parachute.transform.localScale = Vector3.one; parachute.transform.localRotation = Quaternion.identity; SetupParachuteFade(); } private void SetupParachuteFade() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown propertyStorage = new MaterialPropertyBlock(); if (Object.op_Implicit((Object)(object)parachute)) { Renderer[] componentsInChildren = (Renderer[])(object)parachute.GetComponentsInChildren<SkinnedMeshRenderer>(); parachuteRenderers = componentsInChildren; } if (parachuteRenderers != null && ((EntityState)this).isAuthority && enableParachuteFade.Value && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && ((EntityState)this).characterBody.isPlayerControlled) { for (int i = 0; i < parachuteRenderers.Length; i++) { parachuteRenderers[i].GetPropertyBlock(propertyStorage); propertyStorage.SetFloat("_Fade", fadeAmount); parachuteRenderers[i].SetPropertyBlock(propertyStorage); } } } private void DestroyParachute() { if (Object.op_Implicit((Object)(object)parachute)) { EntityState.Destroy((Object)(object)parachute); } } } public class Glide : BaseState { public static float maxFallVelocity = -6f; public static float exitHopVelocity = 17f; public static float exitForce = 3000f; public static GameObject jumpEffect = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/CharacterLandImpact"); private PilotController pilotController; private int origJumpCount; private bool jumpReleased = false; private GameObject parachute; private Renderer[] parachuteRenderers; private CameraParamsOverrideHandle camOverrideHandle; private static Vector3 zoomCameraPosition = new Vector3(0f, 0f, -10f); private MaterialPropertyBlock propertyStorage; public override void OnEnter() { //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0123: 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_0130: 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_0143: 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) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.AddBuff(Buffs.ParachuteSpeed); } if (Object.op_Implicit((Object)(object)parachute)) { DestroyOnTimer component = parachute.GetComponent<DestroyOnTimer>(); if (Object.op_Implicit((Object)(object)component)) { EntityState.Destroy((Object)(object)component); } } CreateParachute(); pilotController = ((EntityState)this).GetComponent<PilotController>(); if (Object.op_Implicit((Object)(object)pilotController)) { pilotController.isParachuting = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { origJumpCount = ((EntityState)this).characterMotor.jumpCount; ((EntityState)this).characterMotor.jumpCount = ((!Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) ? 1 : ((EntityState)this).characterBody.maxJumpCount); } if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.RemoveParamsOverride(camOverrideHandle, 0.2f); DeployParachute.CameraModes value = DeployParachute.cameraMode.Value; DeployParachute.CameraModes cameraModes = value; CameraParamsOverrideRequest val2; if (cameraModes == DeployParachute.CameraModes.Shoulder) { CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest); val.cameraParamsData = DeployParachute.cameraParamsShoulder; val.priority = 0f; val2 = val; } else { CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest); val.cameraParamsData = DeployParachute.cameraParamsAbove; val.priority = 0f; val2 = val; } camOverrideHandle = ((EntityState)this).cameraTargetParams.AddParamsOverride(val2, 0f); } } public override void FixedUpdate() { //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0130: 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_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); ((BaseState)this).StartAimMode(2f, false); if (!((EntityState)this).isAuthority) { return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.isSprinting = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.velocity.y <= maxFallVelocity) { ((EntityState)this).characterMotor.velocity.y = maxFallVelocity; } bool flag = Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && ((EntityState)this).characterMotor.isGrounded; bool flag2 = false; if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { if (!jumpReleased) { jumpReleased = !((EntityState)this).inputBank.jump.down; } flag2 = jumpReleased && ((EntityState)this).inputBank.jump.down; } if (!(flag || flag2)) { return; } if (flag2) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; direction.y = 0f; ((Vector3)(ref direction)).Normalize(); ((EntityState)this).characterMotor.ApplyForce(exitForce * direction, true, false); ((BaseState)this).SmallHop(((EntityState)this).characterMotor, exitHopVelocity); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { EffectManager.SpawnEffect(jumpEffect, new EffectData { origin = ((EntityState)this).characterBody.footPosition, scale = ((EntityState)this).characterBody.radius }, true); } ((EntityState)this).PlayAnimation("Body", "Jump"); } ((EntityState)this).outer.SetNextStateToMain(); } public override void OnExit() { //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && ((EntityState)this).characterBody.HasBuff(Buffs.ParachuteSpeed)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.ParachuteSpeed); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { if (((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).characterMotor.jumpCount = 0; } else { ((EntityState)this).characterMotor.jumpCount = Mathf.Max(origJumpCount, 1); } } if (Object.op_