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_