Decompiled source of RidleyBeta v1.13.3

Ridley.dll

Decompiled 6 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using EmotesAPI;
using EntityStates;
using EntityStates.Commando;
using EntityStates.LemurianMonster;
using EntityStates.Merc;
using HG.BlendableTypes;
using KinematicCharacterController;
using MonoMod.RuntimeDetour;
using On.RoR2;
using R2API;
using R2API.Utils;
using Ridley.Modules;
using Ridley.Modules.Components;
using Ridley.Modules.Survivors;
using Ridley.SkillStates;
using Ridley.SkillStates.Emotes;
using RoR2;
using RoR2.Audio;
using RoR2.ContentManagement;
using RoR2.Projectile;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;

[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.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("Ridley")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Ridley")]
[assembly: AssemblyTitle("Ridley")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
public class RidleyComponent : MonoBehaviour
{
	private float leftFootPositionWeight;

	private float leftFootRotationWeight;

	private Transform leftFootObj;

	private Animator animator;

	private ModelLocator modelLocator;

	private Transform modelTransform;

	public Transform weaponBase;

	private Transform weaponExtender;

	public Transform[] tailBones;

	private bool overrideRotation;

	private Vector3 weaponPointOverride;

	public Vector3 vector = new Vector3(90f, 0f, 0f);

	private void Start()
	{
		tailBones = (Transform[])(object)new Transform[6];
		modelLocator = ((Component)this).GetComponent<ModelLocator>();
		modelTransform = modelLocator.modelTransform;
		GetTransforms();
	}

	private void GetTransforms()
	{
		if (Object.op_Implicit((Object)(object)modelTransform))
		{
			Transform val = modelTransform.Find("model-armature/Trans/Rot/Hip/Tail/Tail1/Tail2/Tail3");
			if (Object.op_Implicit((Object)(object)val))
			{
				tailBones[0] = val;
			}
			val = modelTransform.Find("model-armature/Trans/Rot/Hip/Tail/Tail1/Tail2/Tail3/Tail4");
			if (Object.op_Implicit((Object)(object)val))
			{
				tailBones[1] = val;
			}
			val = modelTransform.Find("model-armature/Trans/Rot/Hip/Tail/Tail1/Tail2/Tail3/Tail4/Tail5");
			if (Object.op_Implicit((Object)(object)val))
			{
				tailBones[2] = val;
			}
			val = modelTransform.Find("model-armature/Trans/Rot/Hip/Tail/Tail1/Tail2/Tail3/Tail4/Tail5/Tail6");
			if (Object.op_Implicit((Object)(object)val))
			{
				tailBones[3] = val;
			}
			val = modelTransform.Find("model-armature/Trans/Rot/Hip/Tail/Tail1/Tail2/Tail3/Tail4/Tail5/Tail6/Tail7");
			if (Object.op_Implicit((Object)(object)val))
			{
				tailBones[4] = val;
			}
			val = modelTransform.Find("model-armature/Trans/Rot/Hip/Tail/Tail1/Tail2/Tail3/Tail4/Tail5/Tail6/Tail7/Tail8");
			if (Object.op_Implicit((Object)(object)val))
			{
				tailBones[5] = val;
			}
		}
	}

	public void RotationOverride(Vector3 pointToHit)
	{
		//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_000f: 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)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: 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_00d9: 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_00ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		Vector3 position = tailBones[0].position;
		Vector3 val = pointToHit - position;
		Vector3 normalized = ((Vector3)(ref val)).normalized;
		float num = ((Vector3)(ref val)).magnitude / (float)tailBones.Length;
		for (int i = 0; i < tailBones.Length; i++)
		{
			if (Object.op_Implicit((Object)(object)tailBones[i]))
			{
				tailBones[i].position = normalized * (num * (float)i);
				tailBones[i].forward = normalized;
				tailBones[i].localScale = new Vector3(3f, 3f, 3f);
			}
		}
		tailBones[5].position = pointToHit;
		tailBones[5].localScale = new Vector3(8f, 3f, 8f);
		overrideRotation = true;
		weaponPointOverride = pointToHit;
	}

	public void StopRotationOverride()
	{
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		for (int i = 0; i < tailBones.Length; i++)
		{
			if (Object.op_Implicit((Object)(object)tailBones[i]))
			{
				tailBones[i].localScale = new Vector3(1f, 1f, 1f);
			}
		}
		overrideRotation = false;
		weaponPointOverride = Vector3.zero;
	}

	private void LateUpdate()
	{
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0069: Unknown result type (might be due to invalid IL or missing references)
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: 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)
		if (!overrideRotation)
		{
			return;
		}
		Vector3 position = tailBones[0].position;
		Vector3 val = weaponPointOverride - position;
		Vector3 normalized = ((Vector3)(ref val)).normalized;
		float num = ((Vector3)(ref val)).magnitude / (float)tailBones.Length;
		for (int i = 0; i < tailBones.Length; i++)
		{
			if (Object.op_Implicit((Object)(object)tailBones[i]))
			{
				tailBones[i].position = normalized * (num * (float)i);
				tailBones[i].forward = normalized;
				tailBones[i].localScale = new Vector3(3f, 3f, 3f);
			}
		}
		tailBones[5].position = weaponPointOverride;
		tailBones[5].localScale = new Vector3(8f, 3f, 8f);
	}
}
internal class BodyInfo
{
	internal string bodyName = "";

	internal string bodyNameToken = "";

	internal string subtitleNameToken = "";

	internal Texture characterPortrait = null;

	internal GameObject crosshair = null;

	internal GameObject podPrefab = null;

	internal float maxHealth = 100f;

	internal float healthGrowth = 2f;

	internal float healthRegen = 0f;

	internal float shield = 0f;

	internal float shieldGrowth = 0f;

	internal float moveSpeed = 7f;

	internal float moveSpeedGrowth = 0f;

	internal float acceleration = 80f;

	internal float jumpPower = 15f;

	internal float jumpPowerGrowth = 0f;

	internal float damage = 12f;

	internal float attackSpeed = 1f;

	internal float attackSpeedGrowth = 0f;

	internal float armor = 0f;

	internal float armorGrowth = 0f;

	internal float crit = 1f;

	internal float critGrowth = 0f;

	internal int jumpCount = 1;

	internal Color bodyColor = Color.grey;
}
internal class CustomRendererInfo
{
	internal string childName;

	internal Material material;

	internal bool ignoreOverlays;
}
internal class SkillDefInfo
{
	public string skillName;

	public string skillNameToken;

	public string skillDescriptionToken;

	public Sprite skillIcon;

	public SerializableEntityStateType activationState;

	public string activationStateMachineName;

	public int baseMaxStock;

	public float baseRechargeInterval;

	public bool beginSkillCooldownOnSkillEnd;

	public bool canceledFromSprinting;

	public bool forceSprintDuringState;

	public bool fullRestockOnAssign;

	public InterruptPriority interruptPriority;

	public bool resetCooldownTimerOnUse;

	public bool isCombatSkill;

	public bool mustKeyPress;

	public bool cancelSprintingOnActivation;

	public int rechargeStock;

	public int requiredStock;

	public int stockToConsume;

	public string[] keywordTokens;
}
namespace Ridley
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.ndp.RidleyBeta", "RidleyBeta", "0.0.1")]
	[R2APISubmoduleDependency(new string[] { "PrefabAPI", "LanguageAPI", "SoundAPI" })]
	public class RidleyPlugin : BaseUnityPlugin
	{
		public const string MODUID = "com.ndp.RidleyBeta";

		public const string MODNAME = "RidleyBeta";

		public const string MODVERSION = "0.0.1";

		public const string developerPrefix = "NDP";

		public static RidleyPlugin instance;

		private void Awake()
		{
			instance = this;
			Assets.PopulateAssets();
			Config.ReadConfig();
			States.RegisterStates();
			Buffs.RegisterBuffs();
			Projectiles.RegisterProjectiles();
			Tokens.AddTokens();
			ItemDisplays.PopulateDisplays();
			CameraParams.InitializeParams();
			Ridley.Modules.Survivors.Ridley.CreateCharacter();
			new ContentPacks().Initialize();
			if (EmoteAPI.enabled)
			{
				EmoteAPI.SetupSkeleton();
			}
			Hook();
		}

		private void Start()
		{
			Ridley.Modules.Survivors.Ridley.SetItemDisplays();
		}

		private void Hook()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage);
		}

		public static List<HealthComponent> EnemyHealthComponentsFromRaycastHits(RaycastHit[] raycastHits, GameObject attacker)
		{
			List<Collider> list = new List<Collider>();
			for (int i = 0; i < raycastHits.Length; i++)
			{
				if (Object.op_Implicit((Object)(object)((RaycastHit)(ref raycastHits[i])).collider))
				{
					list.Add(((RaycastHit)(ref raycastHits[i])).collider);
				}
			}
			return EnemyHealthComponentsFromColliders(list.ToArray(), attacker);
		}

		public static List<HealthComponent> EnemyHealthComponentsFromColliders(Collider[] colliders, GameObject attacker)
		{
			//IL_0049: 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)
			List<HealthComponent> list = new List<HealthComponent>();
			for (int i = 0; i < colliders.Length; i++)
			{
				HurtBox component = ((Component)colliders[i]).GetComponent<HurtBox>();
				if (!Object.op_Implicit((Object)(object)component))
				{
					continue;
				}
				HealthComponent healthComponent = component.healthComponent;
				if (Object.op_Implicit((Object)(object)healthComponent))
				{
					TeamComponent component2 = ((Component)healthComponent).GetComponent<TeamComponent>();
					TeamComponent component3 = attacker.GetComponent<TeamComponent>();
					if (component2.teamIndex != component3.teamIndex && !list.Contains(healthComponent))
					{
						list.Add(healthComponent);
					}
				}
			}
			return list;
		}

		private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
		{
			//IL_0070: 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)
			//IL_0080: Invalid comparison between Unknown and I4
			//IL_00bf: 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)
			if (damageInfo != null && Object.op_Implicit((Object)(object)damageInfo.attacker) && Object.op_Implicit((Object)(object)damageInfo.attacker.GetComponent<CharacterBody>()) && ((Component)self).GetComponent<CharacterBody>().baseNameToken == "NDP_RIDLEY_BODY_NAME" && NetworkServer.active)
			{
				float armor = self.body.armor;
				if (self.combinedHealthFraction < 0.5f && (damageInfo.damageType & 0x4000000) != 67108864)
				{
					damageInfo.damage -= armor;
					if (damageInfo.damage < 0f)
					{
						self.Heal(Mathf.Abs(damageInfo.damage), default(ProcChainMask), true);
						damageInfo.damage = 0f;
					}
				}
				else
				{
					damageInfo.damage = Mathf.Max(1f, damageInfo.damage - armor);
				}
			}
			orig.Invoke(self, damageInfo);
		}
	}
}
namespace Ridley.SkillStates
{
	public class BaseM1 : BaseSkillState
	{
		public Vector3 launchTarget;

		public bool launchVectorOverride;

		public bool cancelledFromSprinting;

		public bool earlyExitJump;

		public string critHitSoundString;

		private bool crit;

		private List<HealthComponent> hits;

		protected float anim = 1f;

		private bool a = false;

		protected Vector3 slideVector;

		protected Quaternion slideRotation;

		protected bool isDash = false;

		protected bool isCombo = false;

		protected bool isMultiHit = false;

		public bool isAerial = false;

		protected bool isSus = false;

		protected bool isFlinch = false;

		protected int stackGainAmount = 8;

		protected float attackResetInterval;

		private float attackResetStopwatch;

		protected AnimationCurve dashSpeedCurve;

		public int swingIndex;

		protected string animString = "Jab1";

		protected string hitboxName = "Jab";

		protected DamageType damageType = (DamageType)0;

		protected float damageCoefficient = 2.5f;

		protected float procCoefficient = 1f;

		protected float pushForce = 300f;

		protected Vector3 bonusForce = Vector3.zero;

		protected float baseDuration = 0.3f;

		protected float attackStartTime = 0f;

		protected float attackEndTime = 0.4f;

		protected float hitStopDuration = 0.06f;

		protected float attackRecoil = 2f;

		protected float hitHopVelocity = 2f;

		protected bool cancelled = false;

		protected string swingSoundString = "";

		protected string hitSoundString = "";

		protected string muzzleString = "SwingCenter";

		protected GameObject swingEffectPrefab;

		protected GameObject hitEffectPrefab;

		protected NetworkSoundEventIndex impactSound;

		protected float earlyExitTime = 0.075f;

		public float duration;

		private bool hasFired;

		private float hitPauseTimer;

		protected OverlapAttack attack;

		protected bool inHitPause;

		private bool hasHopped;

		protected float stopwatch;

		protected Animator animator;

		private HitStopCachedState hitStopCachedState;

		private Vector3 storedVelocity;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			animator = ((EntityState)this).GetModelAnimator();
			AttackSetup();
			StartAttack();
		}

		private void AttackSetup()
		{
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_011e: 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_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			hits = new List<HealthComponent>();
			duration = baseDuration / ((BaseState)this).attackSpeedStat;
			attackResetInterval /= ((BaseState)this).attackSpeedStat;
			HitBoxGroup hitBoxGroup = null;
			Transform modelTransform = ((EntityState)this).GetModelTransform();
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxName);
			}
			attack = new OverlapAttack();
			attack.damageType = damageType;
			attack.attacker = ((EntityState)this).gameObject;
			attack.inflictor = ((EntityState)this).gameObject;
			attack.teamIndex = ((BaseState)this).GetTeam();
			attack.damage = damageCoefficient * ((BaseState)this).damageStat;
			attack.procCoefficient = procCoefficient;
			attack.hitEffectPrefab = hitEffectPrefab;
			if (launchVectorOverride)
			{
				attack.forceVector = Vector3.zero;
				attack.pushAwayForce = 0f;
			}
			else
			{
				attack.forceVector = bonusForce;
				attack.pushAwayForce = pushForce;
			}
			attack.hitBoxGroup = hitBoxGroup;
			attack.isCrit = ((BaseState)this).RollCrit();
			attack.impactSound = impactSound;
		}

		private void StartAttack()
		{
			//IL_0049: 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_0096: 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_00ac: 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_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).characterBody.SetAimTimer(duration);
			Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat);
			animator.SetBool("attacking", true);
			((EntityState)this).characterDirection.forward = ((EntityState)this).inputBank.aimDirection;
			((EntityState)this).PlayCrossfade("FullBody, Override", animString, "Slash.playbackRate", duration * anim, 0.05f);
			if (!isAerial)
			{
				((EntityState)this).inputBank.moveVector = Vector3.zero;
				if (isDash)
				{
					((EntityState)this).characterMotor.moveDirection = Vector3.zero;
				}
				else
				{
					((EntityState)this).characterMotor.moveDirection = Vector3.zero;
				}
			}
			if (isDash && Util.HasEffectiveAuthority(((EntityState)this).gameObject))
			{
				CharacterMotor characterMotor = ((EntityState)this).characterMotor;
				characterMotor.velocity *= 0.2f;
				slideVector = ((EntityState)this).inputBank.aimDirection;
				slideVector.y = 0f;
			}
		}

		private void StartAttackServer()
		{
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: 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_00e7: 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)
			if (NetworkServer.active)
			{
				((EntityState)this).characterBody.SetAimTimer(duration);
				Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat);
				animator.SetBool("attacking", true);
				((EntityState)this).characterDirection.forward = ((EntityState)this).inputBank.aimDirection;
				if (!isAerial)
				{
					((EntityState)this).PlayCrossfade("FullBody, Override", animString, "Slash.playbackRate", duration * anim, 0.05f);
					((EntityState)this).inputBank.moveVector = Vector3.zero;
					((EntityState)this).characterMotor.moveDirection = Vector3.zero;
				}
				if (isDash)
				{
					CharacterMotor characterMotor = ((EntityState)this).characterMotor;
					characterMotor.velocity *= 0.2f;
					slideVector = ((EntityState)this).inputBank.aimDirection;
					slideVector.y = 0f;
				}
			}
		}

		public virtual void OnHitEnemyAuthority(List<HurtBox> list)
		{
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			PlayHitSound();
			if (!hasHopped)
			{
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && hitHopVelocity > 0f)
				{
					((BaseState)this).SmallHop(((EntityState)this).characterMotor, hitHopVelocity);
				}
				hasHopped = true;
			}
			if (!inHitPause && hitStopDuration > 0f)
			{
				storedVelocity = ((EntityState)this).characterMotor.velocity;
				hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Slash.playbackRate");
				hitPauseTimer = hitStopDuration / ((BaseState)this).attackSpeedStat;
				inHitPause = true;
			}
		}

		public virtual void OnHitEnemyServer()
		{
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			PlayHitSound();
			if (!hasHopped)
			{
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && hitHopVelocity > 0f)
				{
					((BaseState)this).SmallHop(((EntityState)this).characterMotor, hitHopVelocity);
				}
				hasHopped = true;
			}
			if (!inHitPause && hitStopDuration > 0f)
			{
				storedVelocity = ((EntityState)this).characterMotor.velocity;
				hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Slash.playbackRate");
				hitPauseTimer = hitStopDuration / ((BaseState)this).attackSpeedStat;
				inHitPause = true;
			}
		}

		private void PlaySwingEffect()
		{
			EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, true);
		}

		public virtual void PlayHitSound()
		{
			if (attack.isCrit && critHitSoundString != "")
			{
				Util.PlaySound(critHitSoundString, ((EntityState)this).gameObject);
			}
			else
			{
				Util.PlaySound(hitSoundString, ((EntityState)this).gameObject);
			}
		}

		private void FireAttackServer()
		{
			List<HurtBox> list = new List<HurtBox>();
			if (!NetworkServer.active)
			{
				return;
			}
			if (!hasFired)
			{
				hasFired = true;
				PlaySwingEffect();
				Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat);
				((BaseState)this).AddRecoil(-1f * attackRecoil, -2f * attackRecoil, -0.5f * attackRecoil, 0.5f * attackRecoil);
			}
			if (!attack.Fire(list))
			{
				return;
			}
			OnHitEnemyServer();
			foreach (HurtBox item in list)
			{
				HealthComponent healthComponent = item.healthComponent;
				if (Object.op_Implicit((Object)(object)healthComponent))
				{
					if (isSus && Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.characterMotor))
					{
						healthComponent.body.characterMotor.velocity.y = 0f;
					}
					if (isFlinch && Object.op_Implicit((Object)(object)healthComponent.body))
					{
						ForceFlinch(healthComponent.body);
					}
					if ((launchVectorOverride && !healthComponent.body.isChampion) || (((Object)((Component)healthComponent).gameObject).name.Contains("Brother") && ((Object)((Component)healthComponent).gameObject).name.Contains("Body")))
					{
						LaunchEnemy(healthComponent.body);
					}
				}
			}
		}

		private void FireAttack()
		{
			//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_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: 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_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: 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)
			if (!hasFired)
			{
				hasFired = true;
				if (Util.HasEffectiveAuthority(((EntityState)this).gameObject))
				{
					PlaySwingEffect();
					Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat);
					((BaseState)this).AddRecoil(-1f * attackRecoil, -2f * attackRecoil, -0.5f * attackRecoil, 0.5f * attackRecoil);
				}
			}
			List<HurtBox> list = new List<HurtBox>();
			if (Util.HasEffectiveAuthority(((EntityState)this).gameObject) && attack.Fire(list))
			{
				OnHitEnemyAuthority(list);
			}
			if (!NetworkServer.active)
			{
				return;
			}
			if (!a)
			{
				a = true;
			}
			Transform val = ((BaseState)this).FindModelChild(hitboxName);
			Vector3 position = val.position;
			Vector3 val2 = val.localScale * 0.5f;
			Quaternion rotation = val.rotation;
			Collider[] array = Physics.OverlapBox(position, val2, rotation, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask));
			for (int i = 0; i < array.Length; i++)
			{
				HurtBox component = ((Component)array[i]).GetComponent<HurtBox>();
				if (!Object.op_Implicit((Object)(object)component))
				{
					continue;
				}
				HealthComponent healthComponent = component.healthComponent;
				if (!Object.op_Implicit((Object)(object)healthComponent))
				{
					continue;
				}
				TeamComponent component2 = ((Component)healthComponent).GetComponent<TeamComponent>();
				if (component2.teamIndex == ((EntityState)this).teamComponent.teamIndex || hits.Contains(healthComponent))
				{
					continue;
				}
				hits.Add(healthComponent);
				HealthComponent val3 = healthComponent;
				if (Object.op_Implicit((Object)(object)val3))
				{
					if (isSus && Object.op_Implicit((Object)(object)val3.body) && Object.op_Implicit((Object)(object)val3.body.characterMotor))
					{
						val3.body.characterMotor.velocity.y = 0f;
					}
					if (isFlinch && Object.op_Implicit((Object)(object)val3.body))
					{
						ForceFlinch(val3.body);
					}
					if ((launchVectorOverride && !val3.body.isChampion) || (((Object)((Component)val3).gameObject).name.Contains("Brother") && ((Object)((Component)val3).gameObject).name.Contains("Body")))
					{
						LaunchEnemy(val3.body);
					}
				}
			}
		}

		public virtual void LaunchEnemy(CharacterBody body)
		{
		}

		protected virtual void ForceFlinch(CharacterBody body)
		{
			SetStateOnHurt component = ((Component)body.healthComponent).GetComponent<SetStateOnHurt>();
			if (Object.op_Implicit((Object)(object)component) && component.canBeHitStunned && Util.HasEffectiveAuthority(((Component)body).gameObject))
			{
				component.SetPain();
			}
		}

		public override void FixedUpdate()
		{
			//IL_00b6: 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_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_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: 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_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_0254: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_0272: Unknown result type (might be due to invalid IL or missing references)
			//IL_0277: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0281: Unknown result type (might be due to invalid IL or missing references)
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			bool flag = true;
			if ((cancelledFromSprinting && (((EntityState)this).characterBody.isSprinting || ((ButtonState)(ref ((EntityState)this).inputBank.sprint)).justPressed)) || (earlyExitJump && ((ButtonState)(ref ((EntityState)this).inputBank.jump)).justPressed && stopwatch >= duration * attackEndTime))
			{
				((EntityState)this).outer.SetNextStateToMain();
				cancelled = true;
				return;
			}
			hitPauseTimer -= Time.fixedDeltaTime;
			if (hitPauseTimer <= 0f && inHitPause)
			{
				((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator);
				inHitPause = false;
				((EntityState)this).characterMotor.velocity = storedVelocity;
			}
			if (!inHitPause)
			{
				if (isMultiHit)
				{
					attackResetStopwatch += Time.fixedDeltaTime;
				}
				stopwatch += Time.fixedDeltaTime;
			}
			else
			{
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor))
				{
					((EntityState)this).characterMotor.velocity = Vector3.zero;
				}
				if (Object.op_Implicit((Object)(object)animator))
				{
					animator.SetFloat("Slash.playbackRate", 0f);
				}
			}
			if (!isAerial)
			{
				((EntityState)this).inputBank.moveVector = Vector3.zero;
				if (isDash)
				{
					((EntityState)this).characterMotor.moveDirection = Vector3.zero;
				}
				else
				{
					((EntityState)this).characterMotor.moveDirection = Vector3.zero;
				}
			}
			if (isDash && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !inHitPause)
			{
				float num = dashSpeedCurve.Evaluate(stopwatch / duration);
				float num2 = ((!hasHopped) ? 1f : 0.4f);
				((EntityState)this).characterDirection.forward = slideVector;
				CharacterMotor characterMotor = ((EntityState)this).characterMotor;
				characterMotor.rootMotion += 0.6f * num2 * (slideRotation * (num * ((BaseState)this).moveSpeedStat * slideVector * Time.fixedDeltaTime));
				((EntityState)this).characterMotor.velocity.y = 0f;
			}
			if (stopwatch >= duration * attackStartTime && stopwatch <= duration * attackEndTime)
			{
				if (isMultiHit && attackResetStopwatch >= attackResetInterval)
				{
					Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat);
					attack.ResetIgnoredHealthComponents();
					attackResetStopwatch = 0f;
				}
				FireAttack();
			}
			if (stopwatch >= duration - earlyExitTime && isCombo)
			{
				EntityStateMachine component = ((EntityState)this).GetComponent<EntityStateMachine>();
				if (Object.op_Implicit((Object)(object)component) && component.state is RidleyMain && ((EntityState)this).inputBank.skill1.down && swingIndex != 2)
				{
					if (!hasFired)
					{
						FireAttack();
					}
					SetNextState();
					return;
				}
			}
			if (stopwatch >= duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		protected virtual void SetNextState()
		{
			switch (swingIndex)
			{
			case 0:
			{
				int num = 1;
				((EntityState)this).outer.SetNextState((EntityState)(object)new Jab2
				{
					swingIndex = num
				});
				break;
			}
			case 1:
			{
				int num = 2;
				((EntityState)this).outer.SetNextState((EntityState)(object)new Jab3
				{
					swingIndex = num
				});
				break;
			}
			}
		}

		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 override void OnExit()
		{
			if (cancelled && cancelled)
			{
				((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty");
			}
			animator.SetFloat("Slash.playbackRate", 1f);
			((EntityState)this).OnExit();
		}
	}
	public class RidleyBaseState : BaseSkillState
	{
		private bool skill2InputReceived;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			GatherInputs();
			PerformInputs();
		}

		private void GatherInputs()
		{
			skill2InputReceived = ((EntityState)this).inputBank.skill2.down;
		}

		private void PerformInputs()
		{
			HandleSkill(((EntityState)this).skillLocator.secondary, ref skill2InputReceived, ((ButtonState)(ref ((EntityState)this).inputBank.skill2)).justPressed);
		}

		private void HandleSkill(GenericSkill skillSlot, ref bool inputReceived, bool justPressed)
		{
			bool flag = inputReceived;
			inputReceived = false;
			if (Object.op_Implicit((Object)(object)skillSlot) && (justPressed | inputReceived))
			{
				skillSlot.ExecuteIfReady();
			}
		}
	}
	public class RidleyMain : GenericCharacterMain
	{
		private GameObject sprintEffect1;

		private GameObject sprintEffect2;

		private Transform footL;

		private Transform footR;

		private EntityStateMachine weapon;

		private float baseAcceleration;

		private float sprintAcceleration = 300f;

		public LocalUser localUser;

		private bool bufferJump = true;

		private float landingTime = 0.2f;

		private uint sprintSoundID;

		private bool sprintSoundOn;

		public override void OnEnter()
		{
			localUser = LocalUserManager.readOnlyLocalUsersList[0];
			footL = ((BaseState)this).FindModelChild("SprintFootL");
			footR = ((BaseState)this).FindModelChild("SprintFootR");
			baseAcceleration = ((EntityState)this).characterBody.acceleration;
			weapon = ((EntityState)this).gameObject.GetComponents<EntityStateMachine>()[1];
			((GenericCharacterMain)this).OnEnter();
		}

		public override void FixedUpdate()
		{
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			((GenericCharacterMain)this).FixedUpdate();
			if (((EntityState)this).characterBody.isSprinting && !sprintSoundOn && ((BaseState)this).isGrounded)
			{
				sprintSoundOn = true;
				((EntityState)this).characterBody.acceleration = sprintAcceleration;
				AkSoundEngine.StopPlayingID(sprintSoundID);
				sprintSoundID = Util.PlaySound("RidleySprintStart", ((EntityState)this).gameObject);
			}
			if ((!((EntityState)this).characterBody.isSprinting || !((BaseState)this).isGrounded) && sprintSoundOn)
			{
				((EntityState)this).characterBody.acceleration = baseAcceleration;
				sprintSoundOn = false;
				AkSoundEngine.StopPlayingID(sprintSoundID);
			}
			if (Util.HasEffectiveAuthority(((EntityState)this).gameObject) && ((EntityState)this).characterMotor.isGrounded && !localUser.isUIFocused)
			{
				if (Input.GetKeyDown(Config.emote1Keybind.Value))
				{
					((EntityState)this).outer.SetInterruptState((EntityState)(object)new Emote1(), (InterruptPriority)0);
				}
				else if (Input.GetKeyDown(Config.emote2Keybind.Value))
				{
					((EntityState)this).outer.SetInterruptState((EntityState)(object)new Emote2(), (InterruptPriority)0);
				}
				else if (Input.GetKeyDown(Config.standKeybind.Value))
				{
					((EntityState)this).outer.SetInterruptState((EntityState)(object)new Stand(), (InterruptPriority)0);
				}
			}
		}

		public override void OnExit()
		{
			((EntityState)this).characterBody.acceleration = baseAcceleration;
			AkSoundEngine.StopPlayingID(sprintSoundID);
			((GenericCharacterMain)this).OnExit();
		}

		public override void ProcessJump()
		{
			//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)
			//IL_022f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Expected O, but got Unknown
			//IL_0264: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_0270: Unknown result type (might be due to invalid IL or missing references)
			//IL_027b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0292: Expected O, but got Unknown
			//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_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Expected O, but got Unknown
			if (!((BaseCharacterMain)this).hasCharacterMotor || !base.jumpInputReceived || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody) || ((EntityState)this).characterMotor.jumpCount >= ((EntityState)this).characterBody.maxJumpCount)
			{
				return;
			}
			bool flag = false;
			bool flag2 = false;
			int itemCount = ((EntityState)this).characterBody.inventory.GetItemCount(Items.JumpBoost);
			float num = 1f;
			float num2 = 1f;
			if (((EntityState)this).characterMotor.jumpCount >= ((EntityState)this).characterBody.baseJumpCount)
			{
				flag = true;
				num = 1.5f;
				num2 = 1.5f;
			}
			else if ((float)itemCount > 0f && ((EntityState)this).characterBody.isSprinting)
			{
				float num3 = ((EntityState)this).characterBody.acceleration * ((EntityState)this).characterMotor.airControl;
				if (((EntityState)this).characterBody.moveSpeed > 0f && num3 > 0f)
				{
					flag2 = true;
					float num4 = Mathf.Sqrt(10f * (float)itemCount / num3);
					float num5 = ((EntityState)this).characterBody.moveSpeed / num3;
					num = (num4 + num5) / num5;
				}
			}
			GenericCharacterMain.ApplyJumpVelocity(((EntityState)this).characterMotor, ((EntityState)this).characterBody, num, num2, false);
			if (((BaseCharacterMain)this).hasModelAnimator)
			{
				int layerIndex = ((BaseCharacterMain)this).modelAnimator.GetLayerIndex("Body");
				if (layerIndex >= 0)
				{
					if (((EntityState)this).characterMotor.jumpCount == 0 || ((EntityState)this).characterBody.baseJumpCount == 1)
					{
						((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("Jump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex);
						Util.PlaySound("RidleyJump", ((EntityState)this).gameObject);
					}
					else
					{
						((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("BonusJump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex);
						Util.PlaySound("RidleyJumpAir", ((EntityState)this).gameObject);
					}
				}
			}
			if (flag)
			{
				EffectManager.SpawnEffect(Resources.Load<GameObject>("Prefabs/Effects/FeatherEffect"), new EffectData
				{
					origin = ((EntityState)this).characterBody.footPosition
				}, true);
			}
			else if (((EntityState)this).characterMotor.jumpCount > 0)
			{
				EffectManager.SpawnEffect(Resources.Load<GameObject>("Prefabs/Effects/ImpactEffects/CharacterLandImpact"), new EffectData
				{
					origin = ((EntityState)this).characterBody.footPosition,
					scale = ((EntityState)this).characterBody.radius
				}, true);
			}
			if (flag2)
			{
				EffectManager.SpawnEffect(Resources.Load<GameObject>("Prefabs/Effects/BoostJumpEffect"), new EffectData
				{
					origin = ((EntityState)this).characterBody.footPosition,
					rotation = Util.QuaternionSafeLookRotation(((EntityState)this).characterMotor.velocity)
				}, true);
			}
			CharacterMotor characterMotor = ((EntityState)this).characterMotor;
			characterMotor.jumpCount++;
		}
	}
	public class ChargeFireballs : BaseSkillState
	{
		private float duration;

		private Animator animator;

		private ChildLocator childLocator;

		private protected GameObject chargeEffectInstance;

		[SerializeField]
		public GameObject chargeEffectPrefab;

		[SerializeField]
		public string chargeSoundString;

		[SerializeField]
		public float baseDuration = 0.67f;

		[SerializeField]
		public float minBloomRadius;

		[SerializeField]
		public float maxBloomRadius;

		[SerializeField]
		public GameObject crosshairOverridePrefab;

		[SerializeField]
		public float minChargeDuration = 0.67f;

		private GameObject defaultCrosshairPrefab;

		private uint loopSoundInstanceId;

		public override void OnEnter()
		{
			//IL_007b: 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)
			((BaseState)this).OnEnter();
			duration = baseDuration / ((BaseState)this).attackSpeedStat;
			animator = ((EntityState)this).GetModelAnimator();
			childLocator = ((EntityState)this).GetModelChildLocator();
			if (Object.op_Implicit((Object)(object)childLocator))
			{
				Transform val = childLocator.FindChild("Mouth") ?? ((EntityState)this).characterBody.coreTransform;
				if (Object.op_Implicit((Object)(object)val))
				{
					chargeEffectInstance = Object.Instantiate<GameObject>(ChargeFireball.chargeVfxPrefab, val.position, val.rotation);
					chargeEffectInstance.transform.parent = val;
					ScaleParticleSystemDuration component = chargeEffectInstance.GetComponent<ScaleParticleSystemDuration>();
					ObjectScaleCurve component2 = chargeEffectInstance.GetComponent<ObjectScaleCurve>();
					if (Object.op_Implicit((Object)(object)component))
					{
						component.newDuration = duration;
					}
					if (Object.op_Implicit((Object)(object)component2))
					{
						component2.timeMax = duration;
					}
				}
			}
			PlayChargeAnimation();
			loopSoundInstanceId = Util.PlayAttackSpeedSound("FireballCharge", ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat);
		}

		public override void OnExit()
		{
			AkSoundEngine.StopPlayingID(loopSoundInstanceId);
			((EntityState)this).PlayAnimation("Head, Overide", "BufferEmpty", "Slash.playbackRate", 1f);
			EntityState.Destroy((Object)(object)chargeEffectInstance);
			((EntityState)this).OnExit();
		}

		protected float CalcCharge()
		{
			return Mathf.Clamp01(((EntityState)this).fixedAge / duration);
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			float charge = CalcCharge();
			if (Util.HasEffectiveAuthority(((EntityState)this).gameObject) && ((!((BaseSkillState)this).IsKeyDownAuthority() && ((EntityState)this).fixedAge >= minChargeDuration) || ((EntityState)this).fixedAge >= duration))
			{
				FireFireballs fireFireballs = new FireFireballs();
				fireFireballs.charge = charge;
				((EntityState)this).outer.SetNextState((EntityState)(object)fireFireballs);
			}
		}

		public override void Update()
		{
			((EntityState)this).Update();
			((EntityState)this).characterBody.SetSpreadBloom(Util.Remap(CalcCharge(), 0f, 1f, minBloomRadius, maxBloomRadius), true);
		}

		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;
		}

		protected virtual void PlayChargeAnimation()
		{
			((EntityState)this).PlayAnimation("Head, Override", "NSpecStart", "Slash.playbackRate", 0.225f);
		}
	}
	public class DragLaunch : RidleyBaseState
	{
		public float exitSpeed;

		public Vector3 lastSafeFootPosition;

		public List<GrabController> grabController;

		private float stopwatch;

		private float duration = 0.5f;

		public Vector3 direction;

		public override void OnEnter()
		{
			//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_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			//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)
			base.OnEnter();
			RaycastHit val = default(RaycastHit);
			if (!Physics.Raycast(new Ray(((EntityState)this).characterBody.footPosition, Vector3.down), ref val, 100f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)2))
			{
				((EntityState)this).transform.position = lastSafeFootPosition + Vector3.up * 5f;
			}
			Util.PlaySound("DragLaunch", ((EntityState)this).gameObject);
			Util.PlaySound("DragLaunchVoice", ((EntityState)this).gameObject);
			((EntityState)this).PlayAnimation("FullBody, Override", "DragEnd", "Slash.playbackRate", 0.4f);
			direction = ((EntityState)this).characterMotor.moveDirection;
		}

		public override void FixedUpdate()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: 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)
			base.FixedUpdate();
			((EntityState)this).characterDirection.forward = direction;
			((EntityState)this).characterMotor.velocity = Vector3.zero;
			((EntityState)this).characterMotor.moveDirection = Vector3.zero;
			if (((EntityState)this).fixedAge >= duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}
	}
	public class FireFireballs : BaseSkillState
	{
		public float charge;

		public static float damageCoefficient = 2f;

		public static float force = 200f;

		private float duration = 0.5f;

		private float fireInterval = 0.125f;

		private float fireStopwatch = 0.1f;

		private int numFireballs;

		private int ballsFired;

		private Ray aimRay;

		public override void OnEnter()
		{
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration /= ((BaseState)this).attackSpeedStat;
			numFireballs = (int)(charge / 0.5f) + 1;
			fireInterval /= ((BaseState)this).attackSpeedStat;
			((EntityState)this).GetModelAnimator();
			aimRay = ((BaseState)this).GetAimRay();
			((EntityState)this).PlayAnimation("Head, Override", "NSpecShoot", "Slash.playbackRate", 1f);
		}

		private void Fire()
		{
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			ballsFired++;
			Util.PlaySound("FireFireball", ((EntityState)this).gameObject);
			if (Object.op_Implicit((Object)(object)FireFireball.effectPrefab))
			{
				EffectManager.SimpleMuzzleFlash(FireFireball.effectPrefab, ((EntityState)this).gameObject, "Mouth", false);
			}
			Projectiles.ridleyFireballPrefab.GetComponent<ProjectileExplosion>().explosionEffect = CommonAssets.igniteOnKillExplosionEffectPrefab;
			if (Util.HasEffectiveAuthority(((EntityState)this).gameObject))
			{
				ProjectileManager.instance.FireProjectile(Projectiles.ridleyFireballPrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, ((BaseState)this).damageStat * damageCoefficient, force, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f);
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			fireStopwatch += Time.fixedDeltaTime;
			if (fireStopwatch >= fireInterval && ballsFired < numFireballs)
			{
				fireStopwatch = 0f;
				Fire();
			}
			if (((EntityState)this).fixedAge >= duration && Util.HasEffectiveAuthority(((EntityState)this).gameObject))
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)1;
		}
	}
	public class GrabController : MonoBehaviour
	{
		private GameObject extraCollider;

		private GameObject extraCollider2;

		private int extraLayer;

		private int extraLayer2;

		private bool modelLocatorStartedDisabled;

		public Transform pivotTransform;

		public CharacterBody body;

		public CharacterMotor motor;

		private CharacterDirection direction;

		private ModelLocator modelLocator;

		private Transform modelTransform;

		private Quaternion originalRotation;

		private Vector3 lastGroundPosition;

		private void Awake()
		{
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			body = ((Component)this).GetComponent<CharacterBody>();
			motor = ((Component)this).GetComponent<CharacterMotor>();
			direction = ((Component)this).GetComponent<CharacterDirection>();
			modelLocator = ((Component)this).GetComponent<ModelLocator>();
			if (Object.op_Implicit((Object)(object)modelLocator))
			{
				Transform val = ((Component)this).transform.Find("Model Base/mdlGreaterWisp/GreaterWispArmature/HurtBox");
				if (Object.op_Implicit((Object)(object)val))
				{
					extraLayer = ((Component)val).gameObject.layer;
					((Component)val).gameObject.layer = LayerIndex.noCollision.intVal;
				}
				val = ((Component)this).transform.Find("Model Base/mdlGreaterWisp/GreaterWispArmature/ROOT/Mask/StandableSurfacePosition/StandableSurface");
				if (Object.op_Implicit((Object)(object)val))
				{
					extraLayer2 = ((Component)val).gameObject.layer;
					((Component)val).gameObject.layer = LayerIndex.noCollision.intVal;
				}
			}
			((Component)this).gameObject.layer = LayerIndex.noCollision.intVal;
			if (Object.op_Implicit((Object)(object)direction))
			{
				((Behaviour)direction).enabled = false;
			}
			if (Object.op_Implicit((Object)(object)modelLocator))
			{
				if (!((Behaviour)modelLocator).enabled)
				{
					modelLocatorStartedDisabled = true;
				}
				if (Object.op_Implicit((Object)(object)modelLocator.modelTransform))
				{
					modelTransform = modelLocator.modelTransform;
					originalRotation = modelTransform.rotation;
					((Behaviour)modelLocator).enabled = false;
				}
			}
		}

		private void FixedUpdate()
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: 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_00c8: 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_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: 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_00f7: 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_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)motor))
			{
				motor.disableAirControlUntilCollision = true;
				motor.velocity = Vector3.zero;
				motor.rootMotion = Vector3.zero;
				((BaseCharacterController)motor).Motor.SetPosition(pivotTransform.position, true);
			}
			if (Object.op_Implicit((Object)(object)pivotTransform))
			{
				((Component)this).transform.position = pivotTransform.position;
			}
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				modelTransform.position = pivotTransform.position;
				modelTransform.rotation = pivotTransform.rotation;
			}
			RaycastHit val = default(RaycastHit);
			if (Physics.Raycast(new Ray(((Component)this).transform.position + Vector3.up * 2f, Vector3.down), ref val, 6f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)2))
			{
				lastGroundPosition = ((RaycastHit)(ref val)).point;
			}
		}

		public void Launch(Vector3 launchVector)
		{
			//IL_0044: 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_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: 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_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_021f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: 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_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0237: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: 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_025a: 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_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: 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_0270: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: 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_028f: Expected O, but got Unknown
			if (Object.op_Implicit((Object)(object)modelLocator) && !modelLocatorStartedDisabled)
			{
				((Behaviour)modelLocator).enabled = true;
			}
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				modelTransform.rotation = originalRotation;
			}
			if (Object.op_Implicit((Object)(object)direction))
			{
				((Behaviour)direction).enabled = true;
			}
			if (Object.op_Implicit((Object)(object)body.healthComponent) && body.healthComponent.alive)
			{
				if (Object.op_Implicit((Object)(object)modelLocator))
				{
					Transform val = ((Component)this).transform.Find("Model Base/mdlGreaterWisp/GreaterWispArmature/HurtBox");
					if (Object.op_Implicit((Object)(object)val))
					{
						((Component)val).gameObject.layer = extraLayer;
					}
					val = ((Component)this).transform.Find("Model Base/mdlGreaterWisp/GreaterWispArmature/ROOT/Mask/StandableSurfacePosition/StandableSurface");
					if (Object.op_Implicit((Object)(object)val))
					{
						((Component)val).gameObject.layer = extraLayer2;
					}
				}
				((Component)this).gameObject.layer = LayerIndex.defaultLayer.intVal;
			}
			RaycastHit val2 = default(RaycastHit);
			if (!Physics.Raycast(new Ray(body.footPosition, Vector3.down), ref val2, 15f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)2))
			{
				((Component)this).transform.position = lastGroundPosition;
			}
			if (Object.op_Implicit((Object)(object)motor))
			{
				float num = 0.25f;
				float num2 = Mathf.Max(140f, motor.mass);
				num = num2 / 140f;
				launchVector *= num;
				motor.ApplyForce(launchVector, false, false);
			}
			else
			{
				float num3 = 0.25f;
				if (Object.op_Implicit((Object)(object)body.rigidbody))
				{
					float num4 = Mathf.Max(200f, body.rigidbody.mass);
					num3 = num4 / 200f;
				}
				launchVector *= num3;
				DamageInfo val3 = new DamageInfo
				{
					position = body.transform.position,
					attacker = null,
					inflictor = null,
					damage = 0f,
					damageColorIndex = (DamageColorIndex)0,
					damageType = (DamageType)0,
					crit = false,
					force = launchVector,
					procChainMask = default(ProcChainMask),
					procCoefficient = 0f
				};
				body.healthComponent.TakeDamageForce(val3, false, false);
			}
			Object.Destroy((Object)(object)this);
		}

		public void Release()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)modelLocator) && !modelLocatorStartedDisabled)
			{
				((Behaviour)modelLocator).enabled = true;
			}
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				modelTransform.rotation = originalRotation;
			}
			if (Object.op_Implicit((Object)(object)direction))
			{
				((Behaviour)direction).enabled = true;
			}
			if (Object.op_Implicit((Object)(object)extraCollider))
			{
				extraCollider.layer = extraLayer;
			}
			if (Object.op_Implicit((Object)(object)extraCollider2))
			{
				extraCollider2.layer = extraLayer2;
			}
			((Component)this).gameObject.layer = LayerIndex.defaultLayer.intVal;
			Object.Destroy((Object)(object)this);
		}
	}
	public class DashAttack : BaseM1
	{
		private bool hasGrantedBuff = false;

		public override void OnEnter()
		{
			//IL_0054: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: 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_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			baseDuration = 0.875f;
			attackStartTime = 0.16f;
			attackEndTime = 0.6f;
			hitStopDuration = 0.025f;
			attackRecoil = 2f;
			hitHopVelocity = 2f;
			damageCoefficient = 3.75f;
			damageType = (DamageType)524288;
			hitStopDuration = 0.25f;
			pushForce = 2300f;
			launchVectorOverride = true;
			earlyExitJump = true;
			stackGainAmount = 12;
			swingSoundString = "DashAttack";
			hitSoundString = "Jab3Hit";
			critHitSoundString = "SwordHit3";
			muzzleString = "Mouth";
			swingEffectPrefab = Assets.biteEffect;
			hitEffectPrefab = Assets.biteEffect;
			impactSound = Assets.jab3HitSoundEvent.index;
			dashSpeedCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[3]
			{
				new Keyframe(0f, 10f),
				new Keyframe(0.5f, 0f),
				new Keyframe(1f, 0f)
			});
			isDash = true;
			isFlinch = true;
			animString = "DashAttack";
			hitboxName = "Jab";
			base.OnEnter();
		}

		public override void OnHitEnemyAuthority(List<HurtBox> list)
		{
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			foreach (HurtBox item in list)
			{
				HealthComponent healthComponent = item.healthComponent;
				if (Object.op_Implicit((Object)(object)healthComponent) && healthComponent.combinedHealthFraction < 0.45f)
				{
					hitSoundString = "SwordHit3";
					break;
				}
			}
			if (!hasGrantedBuff)
			{
				hasGrantedBuff = true;
				((EntityState)this).characterBody.AddTimedBuffAuthority(Buffs.CrocoRegen.buffIndex, 0.5f);
			}
			base.OnHitEnemyAuthority(list);
		}

		public override void LaunchEnemy(CharacterBody body)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: 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_004c: 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_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: 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_00ff: 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_010b: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = ((EntityState)this).characterDirection.forward * 15f + Vector3.up * 7.5f;
			Vector3 val2 = val + ((EntityState)this).transform.position - body.transform.position;
			val2 = ((Vector3)(ref val2)).normalized;
			if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<KinematicCharacterMotor>()))
			{
				((Component)body).GetComponent<KinematicCharacterMotor>().ForceUnground();
			}
			val2 *= pushForce;
			CharacterMotor characterMotor = body.characterMotor;
			float num = 0.3f;
			if (Object.op_Implicit((Object)(object)characterMotor))
			{
				float num2 = Mathf.Max(150f, characterMotor.mass);
				num = num2 / 150f;
				val2 *= num;
				characterMotor.ApplyForce(val2, false, false);
			}
			else if (Object.op_Implicit((Object)(object)body.rigidbody))
			{
				float num3 = Mathf.Max(50f, body.rigidbody.mass);
				num = num3 / 200f;
				val2 *= num;
				body.rigidbody.AddForce(val2, (ForceMode)1);
			}
		}
	}
	public class DownTilt : BaseM1
	{
		public override void OnEnter()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
			anim = 1.65f;
			baseDuration = 0.4f;
			attackStartTime = 0f;
			attackEndTime = 0.4f;
			hitStopDuration = 0.025f;
			attackRecoil = 2f;
			hitHopVelocity = 2f;
			stackGainAmount = 7;
			hitStopDuration = 0.025f;
			bonusForce = Vector3.up * 1800f;
			pushForce = 1800f;
			launchVectorOverride = true;
			isFlinch = true;
			earlyExitJump = true;
			swingSoundString = "DownTilt";
			hitSoundString = "SwordHit";
			critHitSoundString = "SwordHit2";
			muzzleString = "DTilt";
			swingEffectPrefab = Assets.ridleySwingEffect;
			hitEffectPrefab = GroundLight.finisherHitEffectPrefab;
			impactSound = Assets.sword1HitSoundEvent.index;
			animString = "DownTilt";
			hitboxName = "DownTilt";
			hitHopVelocity = 11f;
			base.OnEnter();
		}

		public override void LaunchEnemy(CharacterBody body)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: 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_004c: 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_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: 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_013c: 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_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: 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_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_0166: 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_0170: 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_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Expected O, but got Unknown
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: 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)
			Vector3 val = ((EntityState)this).characterDirection.forward * 4f + Vector3.up * 10f;
			Vector3 val2 = val + ((EntityState)this).transform.position - body.transform.position;
			val2 = ((Vector3)(ref val2)).normalized;
			val2 *= pushForce;
			if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<KinematicCharacterMotor>()))
			{
				((Component)body).GetComponent<KinematicCharacterMotor>().ForceUnground();
			}
			CharacterMotor characterMotor = body.characterMotor;
			float num = 0.25f;
			if (Object.op_Implicit((Object)(object)characterMotor))
			{
				float num2 = Mathf.Max(150f, characterMotor.mass);
				num = num2 / 150f;
				val2 *= num;
				characterMotor.ApplyForce(val2, false, false);
			}
			else if (Object.op_Implicit((Object)(object)body.rigidbody))
			{
				float num3 = Mathf.Max(50f, body.rigidbody.mass);
				num = num3 / 200f;
				val2 *= num;
				body.rigidbody.AddForce(val2, (ForceMode)1);
			}
			DamageInfo val3 = new DamageInfo
			{
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				damage = 0f,
				damageColorIndex = (DamageColorIndex)0,
				damageType = (DamageType)0,
				crit = false,
				dotIndex = (DotIndex)(-1),
				force = val2,
				position = ((EntityState)this).transform.position,
				procChainMask = default(ProcChainMask),
				procCoefficient = 0f
			};
		}
	}
	public class FAir : BaseM1
	{
		public override void OnEnter()
		{
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			anim = 1.45f;
			baseDuration = 0.7f;
			attackStartTime = 0.225f;
			attackEndTime = 0.65f;
			hitStopDuration = 0.03f;
			attackRecoil = 2f;
			hitHopVelocity = 5f;
			damageCoefficient = 2.4f;
			attackResetInterval = 0.11f;
			hitStopDuration = 0.08f;
			stackGainAmount = 3;
			pushForce = 1800f;
			isMultiHit = true;
			isAerial = true;
			isSus = true;
			launchVectorOverride = true;
			swingSoundString = "FAir";
			hitSoundString = "SwordHit";
			critHitSoundString = "SwordHit2";
			swingEffectPrefab = Assets.ridleySwingEffect;
			hitEffectPrefab = GroundLight.finisherHitEffectPrefab;
			impactSound = Assets.sword1HitSoundEvent.index;
			animString = "FAir";
			hitboxName = "Jab";
			base.OnEnter();
		}

		public override void LaunchEnemy(CharacterBody body)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: 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_004c: 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_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: 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_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = ((EntityState)this).characterDirection.forward * 15f + Vector3.up * 10f;
			Vector3 val2 = val + ((EntityState)this).transform.position - body.transform.position;
			val2 = ((Vector3)(ref val2)).normalized;
			val2 *= pushForce;
			if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<KinematicCharacterMotor>()))
			{
				((Component)body).GetComponent<KinematicCharacterMotor>().ForceUnground();
			}
			CharacterMotor characterMotor = body.characterMotor;
			float num = 0.25f;
			if (Object.op_Implicit((Object)(object)characterMotor))
			{
				characterMotor.velocity = Vector3.zero;
				float num2 = Mathf.Max(150f, characterMotor.mass);
				num = num2 / 150f;
				val2 *= num;
				characterMotor.ApplyForce(val2, false, false);
			}
			else if (Object.op_Implicit((Object)(object)body.rigidbody))
			{
				body.rigidbody.velocity = Vector3.zero;
				float num3 = Mathf.Max(50f, body.rigidbody.mass);
				num = num3 / 200f;
				val2 *= num;
				body.rigidbody.AddForce(val2, (ForceMode)1);
			}
		}
	}
	public class Flurry : BaseM1
	{
		public override void OnEnter()
		{
			baseDuration = 0.3f;
			attackStartTime = 0f;
			attackEndTime = 0.4f;
			hitStopDuration = 0.025f;
			attackRecoil = 2f;
			hitHopVelocity = 2f;
			swingSoundString = "Jab2";
			hitSoundString = "JabHit2";
			swingEffectPrefab = Assets.ridleySwingEffect;
			hitEffectPrefab = GroundLight.finisherHitEffectPrefab;
			isCombo = true;
			isDash = true;
			animString = "Jab1";
			hitboxName = "Jab";
			base.OnEnter();
		}
	}
	public class Jab1 : BaseM1
	{
		public override void OnEnter()
		{
			//IL_00c8: 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_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//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_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Expected O, but got Unknown
			anim = 1.2f;
			baseDuration = 0.4f;
			attackStartTime = 0f;
			attackEndTime = 0.4f;
			hitStopDuration = 0.025f;
			attackRecoil = 2f;
			hitHopVelocity = 2f;
			stackGainAmount = 6;
			hitStopDuration = 0.06f;
			pushForce = 1300f;
			launchVectorOverride = true;
			swingSoundString = "Jab1";
			hitSoundString = "JabHit1";
			critHitSoundString = "JabHit2";
			muzzleString = "Jab1";
			cancelledFromSprinting = true;
			earlyExitJump = true;
			swingEffectPrefab = Assets.ridleySwingEffect;
			hitEffectPrefab = GroundLight.finisherHitEffectPrefab;
			impactSound = Assets.jab1HitSoundEvent.index;
			dashSpeedCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[4]
			{
				new Keyframe(0f, 0f),
				new Keyframe(0.15f, 9f),
				new Keyframe(0.75f, 0f),
				new Keyframe(1f, 0f)
			});
			isCombo = true;
			isDash = true;
			animString = "Jab1";
			hitboxName = "Jab";
			base.OnEnter();
		}

		public override void LaunchEnemy(CharacterBody body)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: 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_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: 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_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Expected O, but got Unknown
			//IL_00e9: 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_00f0: 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)
			Vector3 val = ((EntityState)this).characterDirection.forward * 10f;
			Vector3 val2 = val + ((EntityState)this).transform.position - body.transform.position;
			val2 = ((Vector3)(ref val2)).normalized;
			val2 *= pushForce;
			if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<KinematicCharacterMotor>()))
			{
				((Component)body).GetComponent<KinematicCharacterMotor>().ForceUnground();
			}
			CharacterMotor characterMotor = body.characterMotor;
			float num = 0.25f;
			if (Object.op_Implicit((Object)(object)characterMotor))
			{
				float num2 = Mathf.Max(100f, characterMotor.mass);
				num = num2 / 100f;
				val2 *= num;
				characterMotor.ApplyForce(val2, false, false);
			}
			else if (Object.op_Implicit((Object)(object)body.rigidbody))
			{
				float num3 = Mathf.Max(50f, body.rigidbody.mass);
				num = num3 / 200f;
				val2 *= num;
				body.rigidbody.AddForce(val2, (ForceMode)1);
			}
			DamageInfo val3 = new DamageInfo
			{
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				damage = 0f,
				damageColorIndex = (DamageColorIndex)0,
				damageType = (DamageType)0,
				crit = false,
				dotIndex = (DotIndex)(-1),
				force = val2,
				position = ((EntityState)this).transform.position,
				procChainMask = default(ProcChainMask),
				procCoefficient = 0f
			};
		}
	}
	public class Jab2 : BaseM1
	{
		public override void OnEnter()
		{
			//IL_00c8: 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_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//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_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Expected O, but got Unknown
			anim = 1.2f;
			baseDuration = 0.4f;
			attackStartTime = 0f;
			attackEndTime = 0.4f;
			hitStopDuration = 0.025f;
			attackRecoil = 2f;
			hitHopVelocity = 2f;
			stackGainAmount = 7;
			hitStopDuration = 0.06f;
			pushForce = 1300f;
			launchVectorOverride = true;
			swingSoundString = "Jab2";
			hitSoundString = "JabHit2";
			critHitSoundString = "JabHit3";
			muzzleString = "Jab2";
			cancelledFromSprinting = true;
			earlyExitJump = true;
			swingEffectPrefab = Assets.ridleySwingEffect;
			hitEffectPrefab = GroundLight.finisherHitEffectPrefab;
			impactSound = Assets.jab2HitSoundEvent.index;
			dashSpeedCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[4]
			{
				new Keyframe(0f, 0f),
				new Keyframe(0.15f, 9f),
				new Keyframe(0.75f, 0f),
				new Keyframe(1f, 0f)
			});
			isCombo = true;
			isDash = true;
			animString = "Jab2";
			hitboxName = "Jab";
			base.OnEnter();
		}

		public override void LaunchEnemy(CharacterBody body)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: 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_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_013f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: 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_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Expected O, but got Unknown
			//IL_00e9: 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_00f0: 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)
			Vector3 val = ((EntityState)this).characterDirection.forward * 10f;
			Vector3 val2 = val + ((EntityState)this).transform.position - body.transform.position;
			val2 = ((Vector3)(ref val2)).normalized;
			val2 *= pushForce;
			if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<KinematicCharacterMotor>()))
			{
				((Component)body).GetComponent<KinematicCharacterMotor>().ForceUnground();
			}
			CharacterMotor characterMotor = body.characterMotor;
			float num = 0.25f;
			if (Object.op_Implicit((Object)(object)characterMotor))
			{
				float num2 = Mathf.Max(100f, characterMotor.mass);
				num = num2 / 100f;
				val2 *= num;
				characterMotor.ApplyForce(val2, false, false);
			}
			else if (Object.op_Implicit((Object)(object)body.rigidbody))
			{
				float num3 = Mathf.Max(50f, body.rigidbody.mass);
				num = num3 / 200f;
				val2 *= num;
				body.rigidbody.AddForce(val2, (ForceMode)1);
			}
			DamageInfo val3 = new DamageInfo
			{
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				damage = 0f,
				damageColorIndex = (DamageColorIndex)0,
				damageType = (DamageType)0,
				crit = false,
				dotIndex = (DotIndex)(-1),
				force = val2,
				position = ((EntityState)this).transform.position,
				procChainMask = default(ProcChainMask),
				procCoefficient = 0f
			};
		}
	}
	public class Jab3 : BaseM1
	{
		private bool hasGrantedBuff = false;

		public override void OnEnter()
		{
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: 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_0138: 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_0147: Expected O, but got Unknown
			anim = 1.2f;
			baseDuration = 0.6f;
			attackStartTime = 0f;
			attackEndTime = 0.4f;
			hitStopDuration = 0.025f;
			attackRecoil = 2f;
			hitHopVelocity = 2f;
			damageCoefficient = 3.8f;
			stackGainAmount = 9;
			hitStopDuration = 0.15f;
			pushForce = 1900f;
			launchVectorOverride = true;
			swingSoundString = "Jab3";
			hitSoundString = "JabHit3";
			critHitSoundString = "JabHit22";
			muzzleString = "Mouth";
			cancelledFromSprinting = true;
			earlyExitJump = true;
			swingEffectPrefab = Assets.biteEffect;
			hitEffectPrefab = GroundLight.finisherHitEffectPrefab;
			impactSound = Assets.jab3HitSoundEvent.index;
			dashSpeedCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[4]
			{
				new Keyframe(0f, 0f),
				new Keyframe(0.15f, 10f),
				new Keyframe(0.5f, 0f),
				new Keyframe(1f, 0f)
			});
			isCombo = true;
			isDash = true;
			isFlinch = true;
			animString = "Jab3";
			hitboxName = "Jab";
			base.OnEnter();
		}

		public override void LaunchEnemy(CharacterBody body)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: 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_004c: 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_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: 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_013c: 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_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: 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_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_0166: 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_0170: 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_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Expected O, but got Unknown
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: 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)
			Vector3 val = ((EntityState)this).characterDirection.forward * 10f + Vector3.up * 3f;
			Vector3 val2 = val + ((EntityState)this).transform.position - body.transform.position;
			val2 = ((Vector3)(ref val2)).normalized;
			val2 *= pushForce;
			if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<KinematicCharacterMotor>()))
			{
				((Component)body).GetComponent<KinematicCharacterMotor>().ForceUnground();
			}
			CharacterMotor characterMotor = body.characterMotor;
			float num = 0.25f;
			if (Object.op_Implicit((Object)(object)characterMotor))
			{
				float num2 = Mathf.Max(150f, characterMotor.mass);
				num = num2 / 150f;
				val2 *= num;
				characterMotor.ApplyForce(val2, false, false);
			}
			else if (Object.op_Implicit((Object)(object)body.rigidbody))
			{
				float num3 = Mathf.Max(50f, body.rigidbody.mass);
				num = num3 / 150f;
				val2 *= num;
				body.rigidbody.AddForce(val2, (ForceMode)1);
			}
			DamageInfo val3 = new DamageInfo
			{
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				damage = 0f,
				damageColorIndex = (DamageColorIndex)0,
				damageType = (DamageType)0,
				crit = false,
				dotIndex = (DotIndex)(-1),
				force = val2,
				position = ((EntityState)this).transform.position,
				procChainMask = default(ProcChainMask),
				procCoefficient = 0f
			};
		}

		public override void OnHitEnemyAuthority(List<HurtBox> list)
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			base.OnHitEnemyAuthority(list);
			if (!hasGrantedBuff)
			{
				hasGrantedBuff = true;
				((EntityState)this).characterBody.AddTimedBuffAuthority(Buffs.CrocoRegen.buffIndex, 0.5f);
			}
		}
	}
	public class M1Entry : BaseSkillState
	{
		public override void OnEnter()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			float y = ((EntityState)this).inputBank.aimDirection.y;
			if (((EntityState)this).characterBody.isSprinting && ((BaseState)this).isGrounded)
			{
				((EntityState)this).outer.SetNextState((EntityState)(object)new DashAttack());
			}
			else if (y > 0.5f)
			{
				((EntityState)this).outer.SetNextState((EntityState)(object)new UpAir());
			}
			else if (!((EntityState)this).characterMotor.isGrounded)
			{
				((EntityState)this).outer.SetNextState((EntityState)(object)new FAir());
			}
			else
			{
				((EntityState)this).outer.SetNextState((EntityState)(object)new Jab1());
			}
		}

		public override InterruptPriority GetMinimumInterruptPriorit