Decompiled source of EscanorPaladinSkills v1.0.0

EscanorPaladinSkills.dll

Decompiled 5 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.BrotherMonster;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.Croco;
using EntityStates.Merc;
using EscanorPaladinSkills.Buffs;
using EscanorPaladinSkills.Components;
using EscanorPaladinSkills.Overlays;
using EscanorPaladinSkills.Projectiles;
using EscanorPaladinSkills.SkillDefs;
using EscanorPaladinSkills.States;
using EscanorPaladinSkills.States.Upgrades;
using EscanorPaladinSkills.States.Upgrades.SpinningSlash;
using EscanorPaladinSkills.States.Upgrades.SunlightSpear;
using EscanorPaladinSkills.VFX;
using IL.EntityStates;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using PaladinMod;
using PaladinMod.Misc;
using PaladinMod.Modules;
using PaladinMod.States;
using R2API;
using RoR2;
using RoR2.Audio;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;

[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 = ".NET Standard 2.0")]
[assembly: AssemblyCompany("EscanorPaladinSkills")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("EscanorPaladinSkills")]
[assembly: AssemblyTitle("EscanorPaladinSkills")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace EscanorPaladinSkills
{
	[BepInPlugin("HIFU.EscanorPaladinSkills", "EscanorPaladinSkills", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Main : BaseUnityPlugin
	{
		public const string PluginGUID = "HIFU.EscanorPaladinSkills";

		public const string PluginAuthor = "HIFU";

		public const string PluginName = "EscanorPaladinSkills";

		public const string PluginVersion = "1.0.0";

		public static AssetBundle escanor;

		public static ManualLogSource logger;

		public static Xoroshiro128Plus rng;

		public static ConfigEntry<float> swordScale { get; set; }

		public void Awake()
		{
			logger = ((BaseUnityPlugin)this).Logger;
			Run.onRunStartGlobal += Run_onRunStartGlobal;
			swordScale = ((BaseUnityPlugin)this).Config.Bind<float>("Silly", "Sword Scale Multiplier", 1.5f, "Only works with Divine Axe Rhitta as your M1");
			escanor = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("EscanorPaladinSkills.dll", "escanorpaladinskills"));
			All.Init();
			DivineAxeRhitta.Init();
			FlameOfLife.Init();
			TheOne.Init();
			CruelSun.Init();
			CruelSunUpgraded.Init();
			EscanorPaladinSkills.VFX.Judgement.Init();
			EscanorPaladinSkills.Projectiles.Judgement.Init();
			Sunfall.Init();
			Init.SetUpComponents();
		}

		private void Run_onRunStartGlobal(Run run)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Expected O, but got Unknown
			rng = new Xoroshiro128Plus(RoR2Application.rng.nextUlong);
		}

		public void Start()
		{
			SunlightSpearUpgraded.Init();
			DivineAxeRhittaJank.Init();
			AddESM();
			IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes()
				where !type.IsAbstract && type.IsSubclassOf(typeof(SkillDefBase))
				select type;
			logger.LogInfo((object)"==+----------------==SKILLS==----------------+==");
			foreach (Type item in enumerable)
			{
				SkillDefBase skillDefBase = (SkillDefBase)Activator.CreateInstance(item);
				if (!skillDefBase.Add)
				{
					skillDefBase.Init();
				}
				else if (ValidateSkillDef(skillDefBase))
				{
					skillDefBase.Init();
				}
			}
			AddStates();
			AddSkillUpgrades();
		}

		public void AddESM()
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			GameObject characterPrefab = PaladinPlugin.characterPrefab;
			NetworkStateMachine component = characterPrefab.GetComponent<NetworkStateMachine>();
			EntityStateMachine val = characterPrefab.AddComponent<EntityStateMachine>();
			val.customName = "Flame";
			val.initialStateType = new SerializableEntityStateType(typeof(Idle));
			val.mainStateType = new SerializableEntityStateType(typeof(Idle));
			Array.Resize(ref component.stateMachines, component.stateMachines.Length + 1);
			component.stateMachines[component.stateMachines.Length - 1] = val;
		}

		public void AddStates()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: 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_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			bool flag = default(bool);
			ContentAddition.AddEntityState(typeof(CruelSunState), ref flag);
			ContentAddition.AddEntityState(typeof(CruelSunUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(FlameOfLifeState), ref flag);
			ContentAddition.AddEntityState(typeof(DivineAxeRhittaState), ref flag);
			ContentAddition.AddEntityState(typeof(SunfallState), ref flag);
			ContentAddition.AddEntityState(typeof(SpinningSlashAirborneAltUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(SpinningSlashAirborneUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(SpinningSlashEntryUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(SpinningSlashGroundedAltUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(SpinningSlashGroundedUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(CruelSunUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(DivineAxeRhittaUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(ChargeSunlightSpearUpgradedState), ref flag);
			ContentAddition.AddEntityState(typeof(ThrowSunlightSpearUpgradedState), ref flag);
		}

		public void AddSkillUpgrades()
		{
		}

		public bool ValidateSkillDef(SkillDefBase sdb)
		{
			if (sdb.isEnabled && ((BaseUnityPlugin)this).Config.Bind<bool>(sdb.ConfigNameText, "Enable?", true, "Vanilla is false").Value)
			{
				return true;
			}
			return false;
		}
	}
	internal class Publicize
	{
	}
}
namespace EscanorPaladinSkills.VFX
{
	public static class DivineAxeRhitta
	{
		public static GameObject prefab;

		public static GameObject groundPrefab;

		public static void Init()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: 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_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)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0174: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: 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_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_0278: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0301: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0326: Expected O, but got Unknown
			//IL_0321: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0336: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_042e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0433: Unknown result type (might be due to invalid IL or missing references)
			//IL_045a: Unknown result type (might be due to invalid IL or missing references)
			//IL_045f: Unknown result type (might be due to invalid IL or missing references)
			prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/MissileVoid/VoidImpactEffect.prefab").WaitForCompletion(), "Divine Axe Rhitta Impact VFX", false);
			EffectComponent component = prefab.GetComponent<EffectComponent>();
			component.soundName = string.Empty;
			component.applyScale = true;
			Transform transform = prefab.transform;
			for (int i = 0; i < transform.childCount; i++)
			{
				Transform child = transform.GetChild(i);
				child.localScale *= 2.5f;
			}
			ParticleSystemRenderer component2 = ((Component)transform.Find("Scaled Hitspark 1 (Random Color)")).GetComponent<ParticleSystemRenderer>();
			MainModule main = ((Component)component2).GetComponent<ParticleSystem>().main;
			MinMaxCurve startLifetime = ((MainModule)(ref main)).startLifetime;
			((MinMaxCurve)(ref startLifetime)).constantMin = 0.35f;
			((MinMaxCurve)(ref startLifetime)).constantMax = 0.5f;
			Material val = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Nullifier/matNullifierPortalEffectCenter.mat").WaitForCompletion());
			val.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta1.png"));
			val.SetFloat("_InvFade", 0f);
			val.SetFloat("_Boost", 8.725851f);
			val.SetFloat("_AlphaBoost", 2.285f);
			val.SetFloat("_AlphaBias", 0.02575896f);
			((Renderer)component2).material = val;
			ParticleSystemRenderer component3 = ((Component)transform.Find("Scaled Hitspark 1 (Random Color) (1)")).GetComponent<ParticleSystemRenderer>();
			MainModule main2 = ((Component)component3).GetComponent<ParticleSystem>().main;
			MinMaxGradient startColor = ((MainModule)(ref main2)).startColor;
			MinMaxCurve startLifetime2 = ((MainModule)(ref main2)).startLifetime;
			((MinMaxCurve)(ref startLifetime2)).constantMin = 0.35f;
			((MinMaxCurve)(ref startLifetime2)).constantMax = 0.55f;
			((MinMaxGradient)(ref startColor)).mode = (ParticleSystemGradientMode)0;
			((MinMaxGradient)(ref startColor)).color = Color.white;
			Material val2 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matOmniHitspark1Void.mat").WaitForCompletion());
			val2.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta1.png"));
			val2.SetFloat("_Boost", 20f);
			val2.SetFloat("_AlphaBoost", 1.120074f);
			val2.SetFloat("_AlphaBias", 0.1589945f);
			((Renderer)component3).material = val2;
			MainModule main3 = ((Component)transform.Find("Flash, Hard")).GetComponent<ParticleSystem>().main;
			MinMaxGradient startColor2 = ((MainModule)(ref main3)).startColor;
			MinMaxCurve startLifetime3 = ((MainModule)(ref main3)).startLifetime;
			((MinMaxCurve)(ref startLifetime3)).constant = 0.3f;
			((MinMaxGradient)(ref startColor2)).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)206, (byte)78, byte.MaxValue));
			ParticleSystemRenderer component4 = ((Component)transform.Find("Impact Shockwave")).GetComponent<ParticleSystemRenderer>();
			component4.alignment = (ParticleSystemRenderSpace)3;
			((Component)component4).transform.localScale = new Vector3(8f, 0.75f, 8f);
			SizeOverLifetimeModule sizeOverLifetime = ((Component)component4).GetComponent<ParticleSystem>().sizeOverLifetime;
			((SizeOverLifetimeModule)(ref sizeOverLifetime)).size = new MinMaxCurve(1f, new AnimationCurve((Keyframe[])(object)new Keyframe[3]
			{
				new Keyframe(0f, 0.85f),
				new Keyframe(0.85f, 1f),
				new Keyframe(1f, 0f)
			}));
			Material val3 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matOmniRing1Void.mat").WaitForCompletion());
			val3.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta2.png"));
			val3.SetFloat("_InvFade", 0f);
			val3.SetFloat("_Boost", 20f);
			val3.SetFloat("_AlphaBoost", 1.246044f);
			val3.SetFloat("_AlphaBias", 0.0275989f);
			val3.SetTexture("_MainTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/VFX/texOmniHitspark2Mask.png").WaitForCompletion());
			((Renderer)component4).material = val3;
			ContentAddition.AddEffect(prefab);
			groundPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidCamp/PurchaseLockVoid.prefab").WaitForCompletion(), "Divine Axe Rhitta Ground VFX", false);
			Object.Destroy((Object)(object)groundPrefab.GetComponent<NetworkIdentity>());
			MeshRenderer component5 = ((Component)groundPrefab.transform.GetChild(0)).GetComponent<MeshRenderer>();
			Material val4 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidCamp/matVoidCampLock.mat").WaitForCompletion());
			val4.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)213, (byte)0, (byte)133)));
			((Renderer)component5).material = val4;
			EffectComponent val5 = groundPrefab.AddComponent<EffectComponent>();
			val5.applyScale = true;
			val5.positionAtReferencedTransform = true;
			val5.parentToReferencedTransform = true;
			((Component)val5).gameObject.AddComponent<VFXAttributes>();
			DestroyOnTimer val6 = groundPrefab.AddComponent<DestroyOnTimer>();
			val6.duration = 0.5f;
			ContentAddition.AddEffect(groundPrefab);
		}
	}
	public static class DivineAxeRhittaJank
	{
		public static GameObject swingPrefab;

		public static void Init()
		{
			//IL_007c: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			swingPrefab = PrefabAPI.InstantiateClone(Assets.mainAssetBundle.LoadAsset<GameObject>("PaladinSwing"), "Divine Axe Rhitta Swing VFX", false);
			Object.Destroy((Object)(object)swingPrefab.GetComponent<NetworkIdentity>());
			swingPrefab.GetComponent<DestroyOnTimer>().duration = 5f;
			EffectComponent component = swingPrefab.GetComponent<EffectComponent>();
			component.applyScale = false;
			component.parentToReferencedTransform = true;
			component.positionAtReferencedTransform = true;
			Transform transform = swingPrefab.transform;
			Transform val = transform.Find("SwingTrail");
			val.localScale = Vector3.one * 4f;
			Material val2 = Object.Instantiate<Material>(Assets.mainAssetBundle.LoadAsset<Material>("matPaladinSwing3"));
			val2.SetColor("_Color", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)74, byte.MaxValue)));
			val2.SetColor("_EmissionColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)0, byte.MaxValue)));
			val2.SetFloat("_Cutoff", 0.12f);
			val2.SetFloat("_BlendOp", 4f);
			val2.SetTexture("_MainTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texMaskSwing.png"));
			val2.SetTexture("_EmissionMap", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texMaskSwing.png"));
			((Renderer)((Component)val).GetComponent<ParticleSystemRenderer>()).material = val2;
			Transform val3 = val.Find("SwingTrail2");
			val3.localScale = Vector3.one * 2f;
			ContentAddition.AddEffect(swingPrefab);
		}
	}
	public static class Judgement
	{
		public static GameObject prefab;

		public static void Init()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/OmniImpactVFXSlashMerc.prefab").WaitForCompletion(), "Judgement VFX", false);
			EffectComponent component = prefab.GetComponent<EffectComponent>();
			component.soundName = string.Empty;
			component.applyScale = true;
			ContentAddition.AddEffect(prefab);
		}
	}
}
namespace EscanorPaladinSkills.States
{
	public class CruelSunState : BaseState
	{
		public static float baseDuration = 0.75f;

		public float duration;

		public static string sound;

		public Ray aimRay;

		public bool hasFired = false;

		public bool hasPlayedSound = false;

		public static float barrierGain = 0.06f;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			duration = baseDuration / base.attackSpeedStat;
			if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
			{
				((EntityState)this).characterBody.SetAimTimer(1f);
			}
			((EntityState)this).PlayAnimation("Gesture, Override", "ChannelSpell", "Spell.playbackRate", duration * 0.5f);
			Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject);
			Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject);
		}

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

		public override void FixedUpdate()
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority)
			{
				if (!hasFired)
				{
					aimRay = ((BaseState)this).GetAimRay();
					FireProjectile();
					hasFired = true;
				}
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public void FireProjectile()
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: 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_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_00d3: 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)
			((BaseState)this).AddRecoil(7f, 7f, -2.5f, 2.5f);
			((EntityState)this).PlayAnimation("Gesture, Override", "ThrowSpell", "Spell.playbackRate", duration * 0.5f);
			FireProjectileInfo val = default(FireProjectileInfo);
			val.crit = ((BaseState)this).RollCrit();
			val.damage = base.damageStat * 7f;
			val.damageTypeOverride = (DamageType)128;
			val.owner = ((EntityState)this).gameObject;
			val.position = ((EntityState)this).characterBody.corePosition + new Vector3(0f, 4f, 0f);
			val.projectilePrefab = CruelSun.prefab;
			val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
			FireProjectileInfo val2 = val;
			ProjectileManager.instance.FireProjectile(val2);
			Util.PlaySound("Play_grandParent_attack3_sun_spawn", ((EntityState)this).gameObject);
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
		}
	}
	public class DivineAxeRhittaState : BaseSkillState, IStepSetter
	{
		public static float baseDuration = 1.25f;

		public static float minimumSprintDuration = 0.4f;

		public SphereSearch sphereSearch;

		public List<HurtBox> hurtBoxes;

		public PaladinSwordController swordController;

		public bool hasFired = false;

		public OverlapAttack attack;

		public HitBoxGroup hitBoxGroup;

		public Transform modelTransform;

		public GameObject impact = DivineAxeRhitta.prefab;

		public int swingIndex;

		public bool inCombo;

		public Animator animator;

		public bool inHitPause;

		public bool hasHopped;

		public HitStopCachedState hitStopCachedState;

		public float hitPauseTimer;

		public Vector3 storedVelocity;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			swordController = ((EntityState)this).GetComponent<PaladinSwordController>();
			hitBoxGroup = null;
			modelTransform = ((EntityState)this).GetModelTransform();
			animator = ((EntityState)this).GetModelAnimator();
			((BaseState)this).StartAimMode(2.5f, false);
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup x) => x.groupName == "SayGex");
			}
			Util.PlaySound("PaladinCloth2", ((EntityState)this).gameObject);
			string text = "Slash" + (1 + swingIndex);
			if (inCombo)
			{
				if (!animator.GetBool("isMoving") && animator.GetBool("isGrounded"))
				{
					((EntityState)this).PlayCrossfade("FullBody, Override", "SlashCombo1", "Slash.playbackRate", baseDuration, 0.05f);
				}
				((EntityState)this).PlayCrossfade("Gesture, Override", "SlashCombo1", "Slash.playbackRate", baseDuration, 0.05f);
			}
			else
			{
				if (!animator.GetBool("isMoving") && animator.GetBool("isGrounded"))
				{
					((EntityState)this).PlayCrossfade("FullBody, Override", text, "Slash.playbackRate", baseDuration, 0.05f);
				}
				((EntityState)this).PlayCrossfade("Gesture, Override", text, "Slash.playbackRate", baseDuration, 0.05f);
			}
		}

		public void Fire()
		{
			//IL_009a: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: 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_0105: 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_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Expected O, but got Unknown
			((BaseState)this).AddRecoil(-3f, -6f, -1.5f, 1.5f);
			Util.PlayAttackSpeedSound("Play_loader_m1_swing", ((EntityState)this).gameObject, 0.5f);
			Util.PlaySound("Play_item_proc_armorReduction_hit", ((EntityState)this).gameObject);
			swordController.attacking = true;
			swordController.PlaySwingSound();
			if (((EntityState)this).isAuthority)
			{
				string text = ((swingIndex != 0) ? "SwingLeft" : "SwingRight");
				EffectManager.SimpleMuzzleFlash(DivineAxeRhittaJank.swingPrefab, ((EntityState)this).gameObject, text, true);
			}
			attack = new OverlapAttack
			{
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				attackerFiltering = (AttackerFiltering)2,
				pushAwayForce = 1500f,
				damage = ((BaseState)this).damageStat * (7f + (((BaseState)this).attackSpeedStat - 1f) * 4.6666665f),
				procCoefficient = 1f,
				isCrit = ((BaseState)this).RollCrit(),
				procChainMask = default(ProcChainMask),
				teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject),
				forceVector = Vector3.zero,
				hitBoxGroup = hitBoxGroup,
				hitEffectPrefab = impact
			};
			if (((EntityState)this).isAuthority && attack.Fire((List<HurtBox>)null))
			{
				OnHit();
			}
		}

		public void OnHit()
		{
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			Util.PlaySound("Play_item_proc_armorReduction_shatter", ((EntityState)this).gameObject);
			if (!hasHopped)
			{
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
				{
					((BaseState)this).SmallHop(((EntityState)this).characterMotor, 6f);
				}
				hasHopped = true;
			}
			if (!inHitPause)
			{
				if (((EntityState)this).characterMotor.velocity != Vector3.zero)
				{
					storedVelocity = ((EntityState)this).characterMotor.velocity;
				}
				hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Slash.playbackRate");
				hitPauseTimer = 2f * GroundLight.hitPauseDuration;
				inHitPause = true;
			}
		}

		public void GroundNearby()
		{
			//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_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_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0174: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Expected O, but got Unknown
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
			{
				return;
			}
			hurtBoxes = new List<HurtBox>();
			sphereSearch = new SphereSearch
			{
				origin = ((EntityState)this).characterBody.corePosition,
				mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask,
				radius = 24f
			};
			sphereSearch.RefreshCandidates();
			sphereSearch.FilterCandidatesByHurtBoxTeam(TeamMask.GetUnprotectedTeams(((EntityState)this).teamComponent.teamIndex));
			sphereSearch.FilterCandidatesByDistinctHurtBoxEntities();
			sphereSearch.OrderCandidatesByDistance();
			sphereSearch.GetHurtBoxes(hurtBoxes);
			sphereSearch.ClearCandidates();
			if (hurtBoxes.Count > 0)
			{
				Util.PlaySound("Play_item_proc_fireRingTornado_end", ((EntityState)this).gameObject);
			}
			for (int i = 0; i < hurtBoxes.Count; i++)
			{
				HurtBox val = hurtBoxes[i];
				HealthComponent healthComponent = val.healthComponent;
				CharacterBody body = healthComponent.body;
				RigidbodyMotor component = ((Component)body).GetComponent<RigidbodyMotor>();
				Rigidbody rigidbody = body.rigidbody;
				float num = 1f;
				if (Object.op_Implicit((Object)(object)component))
				{
					num = component.mass;
				}
				else if (Object.op_Implicit((Object)(object)rigidbody))
				{
					num = rigidbody.mass;
				}
				if (num < 100f)
				{
					num = 100f;
				}
				DamageInfo val2 = new DamageInfo
				{
					attacker = ((EntityState)this).gameObject,
					canRejectForce = false,
					crit = false,
					damage = 0f,
					damageType = (DamageType)2048,
					procCoefficient = 0f,
					force = new Vector3(0f, -25f * num, 0f),
					inflictor = ((EntityState)this).gameObject
				};
				if (NetworkServer.active)
				{
					healthComponent.TakeDamage(val2);
				}
				EffectData val3 = new EffectData
				{
					origin = body.corePosition,
					rotation = Quaternion.identity,
					scale = body.radius * 1.5f
				};
				val3.SetNetworkedObjectReference(((Component)body).gameObject);
				EffectManager.SpawnEffect(DivineAxeRhitta.groundPrefab, val3, 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)1;
		}

		public override void FixedUpdate()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			((EntityState)this).FixedUpdate();
			hitPauseTimer -= Time.fixedDeltaTime;
			if (hitPauseTimer <= 0f && inHitPause)
			{
				((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator);
				inHitPause = false;
				if (storedVelocity != Vector3.zero)
				{
					((EntityState)this).characterMotor.velocity = storedVelocity;
				}
			}
			if (((EntityState)this).fixedAge <= minimumSprintDuration)
			{
				((EntityState)this).characterBody.isSprinting = false;
			}
			if (((EntityState)this).fixedAge >= 0.25f && !hasFired)
			{
				Fire();
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)swordController) && swordController.swordActive)
				{
					GroundNearby();
				}
				hasFired = true;
			}
			if (!(((EntityState)this).fixedAge < baseDuration) && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).OnExit();
			if (inHitPause)
			{
				((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator);
				inHitPause = false;
			}
			if (Object.op_Implicit((Object)(object)swordController))
			{
				swordController.attacking = false;
			}
		}

		public override void OnSerialize(NetworkWriter writer)
		{
			((BaseSkillState)this).OnSerialize(writer);
			writer.Write((byte)swingIndex);
		}

		public override void OnDeserialize(NetworkReader reader)
		{
			((BaseSkillState)this).OnDeserialize(reader);
			swingIndex = reader.ReadByte();
		}

		public void SetStep(int i)
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			swingIndex = i;
			if (swingIndex > 1)
			{
				((InstanceData)((BaseSkillState)this).activatorSkillSlot.skillInstanceData).step = 0;
				swingIndex = 0;
				inCombo = true;
			}
		}
	}
	public class FlameOfLifeState : BaseState
	{
		public Transform modelTransform;

		public static float castAnimationDuration = 0.33f;

		public static float baseDuration = castAnimationDuration + 7f;

		public static float interval = 0.2f;

		public float timer;

		public bool hasAddedStuff;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			modelTransform = ((EntityState)this).GetModelTransform();
			((EntityState)this).PlayAnimation("FullBody, Override", "RageEnter", "Rage.playbackRate", 1.75f);
			Util.PlaySound("PaladinCastTorpor", ((EntityState)this).gameObject);
			Util.PlaySound("Play_item_use_hellfire_start", ((EntityState)this).gameObject);
		}

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

		public override void FixedUpdate()
		{
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: 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_009b: 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_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: 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: Expected O, but got Unknown
			//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_0155: 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_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Expected O, but got Unknown
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).fixedAge >= castAnimationDuration && !hasAddedStuff)
			{
				if (Object.op_Implicit((Object)(object)modelTransform))
				{
					TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
					val.duration = baseDuration + 0.5f;
					val.animateShaderAlpha = true;
					val.alphaCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[4]
					{
						new Keyframe(0f, 1f),
						new Keyframe(0.07f, 1f),
						new Keyframe(0.9f, 1f),
						new Keyframe(1f, 0f)
					});
					val.destroyComponentOnEnd = true;
					val.originalMaterial = FlameOfLife.prefab1;
					val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
					TemporaryOverlay val2 = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
					val2.duration = baseDuration + 1.5f;
					val2.animateShaderAlpha = true;
					val2.alphaCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[4]
					{
						new Keyframe(0f, 1f),
						new Keyframe(0.1f, 1f),
						new Keyframe(0.85f, 1f),
						new Keyframe(1f, 0f)
					});
					val2.destroyComponentOnEnd = true;
					val2.originalMaterial = FlameOfLife.prefab2;
					val2.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
				}
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active)
				{
					if (((EntityState)this).characterBody.HasBuff(All.flameOfLifeHealingDebuff))
					{
						((EntityState)this).characterBody.RemoveBuff(All.flameOfLifeHealingDebuff);
					}
					((EntityState)this).characterBody.AddBuff(All.flameOfLifeHealingDebuff);
					((EntityState)this).characterBody.AddBuff(All.flameOfLifeBuff);
				}
				hasAddedStuff = true;
			}
			if (!(((EntityState)this).fixedAge < baseDuration + castAnimationDuration) && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			Util.PlaySound("Play_mage_R_end", ((EntityState)this).gameObject);
			Util.PlaySound("Stop_item_use_hellfire_loop", ((EntityState)this).gameObject);
			if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active)
			{
				((EntityState)this).characterBody.RemoveBuff(All.flameOfLifeHealingDebuff);
				((EntityState)this).characterBody.RemoveBuff(All.flameOfLifeBuff);
				((EntityState)this).characterBody.AddTimedBuff(All.flameOfLifeHealingDebuff, 2f);
			}
		}
	}
	public class SunfallState : BaseSkillState
	{
		public static float baseDuration = 3f;

		public bool hasFired = false;

		public bool hasPlayedSound = false;

		public Ray aimRay;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			((BaseState)this).StartAimMode(5f, false);
			Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject);
			Util.PlayAttackSpeedSound("Play_loader_m1_swing", ((EntityState)this).gameObject, 0.5f);
			((EntityState)this).PlayAnimation("Gesture, Override", "ThrowSpell", "Spell.playbackRate", baseDuration);
			if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active)
			{
				((EntityState)this).characterBody.AddBuff(All.sunfallStunDebuff);
			}
		}

		public IEnumerator Fire()
		{
			Util.PlaySound("Play_grandParent_attack3_sun_spawn", ((EntityState)this).gameObject);
			((BaseState)this).AddRecoil(-4f, -4.5f, -2.75f, 2.75f);
			RaycastHit raycastInfo = default(RaycastHit);
			for (int i = 0; i < 20; i++)
			{
				yield return (object)new WaitForSeconds(0.06f);
				aimRay = new Ray(((EntityState)this).inputBank.aimOrigin + ((EntityState)this).inputBank.aimDirection * 1f, ((EntityState)this).inputBank.aimDirection);
				if (Physics.Raycast(aimRay, ref raycastInfo, 1000f, LayerMask.op_Implicit(CommonMasks.bullet), (QueryTriggerInteraction)1))
				{
					((BaseState)this).AddRecoil(-0.5f, 0.5f, -0.75f, 0.75f);
					FireProjectileInfo fpi = new FireProjectileInfo
					{
						crit = ((BaseState)this).RollCrit(),
						damage = ((BaseState)this).damageStat * (3.5f + (((BaseState)this).attackSpeedStat - 1f) * 2.3333333f),
						damageTypeOverride = (DamageType)0,
						owner = ((EntityState)this).gameObject,
						position = ((RaycastHit)(ref raycastInfo)).point + new Vector3(Main.rng.RangeFloat(-1.5f * (float)i, 1.5f * (float)i), 45f + Main.rng.RangeFloat(-1.1f * (float)i, 1.1f * (float)i), Main.rng.RangeFloat(-1.51f * (float)i, 1.51f * (float)i)),
						rotation = Util.QuaternionSafeLookRotation(new Vector3(Main.rng.RangeFloat(0f, 0.02f * (float)i), -1f, Main.rng.RangeFloat(0f, 0.021f * (float)i))),
						projectilePrefab = Sunfall.prefab
					};
					if (((EntityState)this).isAuthority)
					{
						ProjectileManager.instance.FireProjectile(fpi);
					}
				}
				raycastInfo = default(RaycastHit);
			}
		}

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

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			((EntityState)this).characterBody.isSprinting = false;
			if (((EntityState)this).fixedAge >= 0.5f && !hasPlayedSound)
			{
				Util.PlayAttackSpeedSound("Play_grandParent_spawn", ((EntityState)this).gameObject, 0.5f);
				hasPlayedSound = true;
			}
			if (((EntityState)this).fixedAge >= 1.5f && !hasFired)
			{
				((MonoBehaviour)((EntityState)this).outer).StartCoroutine(Fire());
				hasFired = true;
			}
			if (!(((EntityState)this).fixedAge < baseDuration) && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active)
			{
				((EntityState)this).characterBody.RemoveBuff(All.sunfallStunDebuff);
			}
		}
	}
}
namespace EscanorPaladinSkills.States.Upgrades
{
	public class CruelSunUpgradedState : BaseState
	{
		public static float baseDuration = 1.25f;

		public float duration;

		public static string sound;

		public Ray aimRay;

		public bool hasFired = false;

		public bool hasPlayedSound = false;

		public static float barrierGain = 0.05f;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			duration = baseDuration / base.attackSpeedStat;
			if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
			{
				((EntityState)this).characterBody.SetAimTimer(1f);
			}
			((EntityState)this).PlayAnimation("Gesture, Override", "ChannelSpell", "Spell.playbackRate", duration * 0.5f);
			Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject);
			Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject);
		}

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

		public override void FixedUpdate()
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority)
			{
				if (!hasFired)
				{
					aimRay = ((BaseState)this).GetAimRay();
					FireProjectile();
					hasFired = true;
				}
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public void FireProjectile()
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: 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_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_00d3: 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)
			((BaseState)this).AddRecoil(7f, 7f, -2.5f, 2.5f);
			((EntityState)this).PlayAnimation("Gesture, Override", "ThrowSpell", "Spell.playbackRate", duration * 0.5f);
			FireProjectileInfo val = default(FireProjectileInfo);
			val.crit = ((BaseState)this).RollCrit();
			val.damage = base.damageStat * 10f;
			val.damageTypeOverride = (DamageType)128;
			val.owner = ((EntityState)this).gameObject;
			val.position = ((EntityState)this).characterBody.corePosition + new Vector3(0f, 8f, 0f);
			val.projectilePrefab = CruelSunUpgraded.prefab;
			val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
			FireProjectileInfo val2 = val;
			ProjectileManager.instance.FireProjectile(val2);
			Util.PlaySound("Play_grandParent_attack3_sun_spawn", ((EntityState)this).gameObject);
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
		}
	}
	public class DivineAxeRhittaUpgradedState : BaseSkillState, IStepSetter
	{
		public static float baseDuration = 1.25f;

		public static float minimumSprintDuration = 0.4f;

		public SphereSearch sphereSearch;

		public List<HurtBox> hurtBoxes;

		public PaladinSwordController swordController;

		public bool hasFired = false;

		public OverlapAttack attack;

		public HitBoxGroup hitBoxGroup;

		public Transform modelTransform;

		public GameObject impact = DivineAxeRhitta.prefab;

		public int swingIndex;

		public bool inCombo;

		public Animator animator;

		public bool inHitPause;

		public bool hasHopped;

		public HitStopCachedState hitStopCachedState;

		public float hitPauseTimer;

		public Vector3 storedVelocity;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			swordController = ((EntityState)this).GetComponent<PaladinSwordController>();
			hitBoxGroup = null;
			modelTransform = ((EntityState)this).GetModelTransform();
			animator = ((EntityState)this).GetModelAnimator();
			((BaseState)this).StartAimMode(2.5f, false);
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup x) => x.groupName == "SayGex");
			}
			Util.PlaySound("PaladinCloth2", ((EntityState)this).gameObject);
			string text = "Slash" + (1 + swingIndex);
			if (inCombo)
			{
				if (!animator.GetBool("isMoving") && animator.GetBool("isGrounded"))
				{
					((EntityState)this).PlayCrossfade("FullBody, Override", "SlashCombo1", "Slash.playbackRate", baseDuration, 0.05f);
				}
				((EntityState)this).PlayCrossfade("Gesture, Override", "SlashCombo1", "Slash.playbackRate", baseDuration, 0.05f);
			}
			else
			{
				if (!animator.GetBool("isMoving") && animator.GetBool("isGrounded"))
				{
					((EntityState)this).PlayCrossfade("FullBody, Override", text, "Slash.playbackRate", baseDuration, 0.05f);
				}
				((EntityState)this).PlayCrossfade("Gesture, Override", text, "Slash.playbackRate", baseDuration, 0.05f);
			}
		}

		public void Fire()
		{
			//IL_009a: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: 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_0105: 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_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Expected O, but got Unknown
			((BaseState)this).AddRecoil(-3f, -6f, -1.5f, 1.5f);
			Util.PlayAttackSpeedSound("Play_loader_m1_swing", ((EntityState)this).gameObject, 0.5f);
			Util.PlaySound("Play_item_proc_armorReduction_hit", ((EntityState)this).gameObject);
			swordController.attacking = true;
			swordController.PlaySwingSound();
			if (((EntityState)this).isAuthority)
			{
				string text = ((swingIndex != 0) ? "SwingLeft" : "SwingRight");
				EffectManager.SimpleMuzzleFlash(DivineAxeRhittaJank.swingPrefab, ((EntityState)this).gameObject, text, true);
			}
			attack = new OverlapAttack
			{
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				attackerFiltering = (AttackerFiltering)2,
				pushAwayForce = 1500f,
				damage = ((BaseState)this).damageStat * (7f + (((BaseState)this).attackSpeedStat - 1f) * 4.6666665f),
				procCoefficient = 1f,
				isCrit = ((BaseState)this).RollCrit(),
				procChainMask = default(ProcChainMask),
				teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject),
				forceVector = Vector3.zero,
				hitBoxGroup = hitBoxGroup,
				hitEffectPrefab = impact
			};
			if (((EntityState)this).isAuthority && attack.Fire((List<HurtBox>)null))
			{
				OnHit();
			}
		}

		public void OnHit()
		{
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			Util.PlaySound("Play_item_proc_armorReduction_shatter", ((EntityState)this).gameObject);
			if (!hasHopped)
			{
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
				{
					((BaseState)this).SmallHop(((EntityState)this).characterMotor, 6f);
				}
				hasHopped = true;
			}
			if (!inHitPause)
			{
				if (((EntityState)this).characterMotor.velocity != Vector3.zero)
				{
					storedVelocity = ((EntityState)this).characterMotor.velocity;
				}
				hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Slash.playbackRate");
				hitPauseTimer = 2f * GroundLight.hitPauseDuration;
				inHitPause = true;
			}
		}

		public void GroundNearby()
		{
			//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_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_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: 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_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0174: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Expected O, but got Unknown
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
			{
				return;
			}
			hurtBoxes = new List<HurtBox>();
			sphereSearch = new SphereSearch
			{
				origin = ((EntityState)this).characterBody.corePosition,
				mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask,
				radius = 24f
			};
			sphereSearch.RefreshCandidates();
			sphereSearch.FilterCandidatesByHurtBoxTeam(TeamMask.GetUnprotectedTeams(((EntityState)this).teamComponent.teamIndex));
			sphereSearch.FilterCandidatesByDistinctHurtBoxEntities();
			sphereSearch.OrderCandidatesByDistance();
			sphereSearch.GetHurtBoxes(hurtBoxes);
			sphereSearch.ClearCandidates();
			if (hurtBoxes.Count > 0)
			{
				Util.PlaySound("Play_item_proc_fireRingTornado_end", ((EntityState)this).gameObject);
			}
			for (int i = 0; i < hurtBoxes.Count; i++)
			{
				HurtBox val = hurtBoxes[i];
				HealthComponent healthComponent = val.healthComponent;
				CharacterBody body = healthComponent.body;
				RigidbodyMotor component = ((Component)body).GetComponent<RigidbodyMotor>();
				Rigidbody rigidbody = body.rigidbody;
				float num = 1f;
				if (Object.op_Implicit((Object)(object)component))
				{
					num = component.mass;
				}
				else if (Object.op_Implicit((Object)(object)rigidbody))
				{
					num = rigidbody.mass;
				}
				if (num < 100f)
				{
					num = 100f;
				}
				DamageInfo val2 = new DamageInfo
				{
					attacker = ((EntityState)this).gameObject,
					canRejectForce = false,
					crit = false,
					damage = 0f,
					damageType = (DamageType)2048,
					procCoefficient = 0f,
					force = new Vector3(0f, -25f * num, 0f),
					inflictor = ((EntityState)this).gameObject
				};
				if (NetworkServer.active)
				{
					healthComponent.TakeDamage(val2);
				}
				EffectData val3 = new EffectData
				{
					origin = body.corePosition,
					rotation = Quaternion.identity,
					scale = body.radius * 1.5f
				};
				val3.SetNetworkedObjectReference(((Component)body).gameObject);
				EffectManager.SpawnEffect(DivineAxeRhitta.groundPrefab, val3, 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)1;
		}

		public override void FixedUpdate()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			((EntityState)this).FixedUpdate();
			hitPauseTimer -= Time.fixedDeltaTime;
			if (hitPauseTimer <= 0f && inHitPause)
			{
				((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator);
				inHitPause = false;
				if (storedVelocity != Vector3.zero)
				{
					((EntityState)this).characterMotor.velocity = storedVelocity;
				}
			}
			if (((EntityState)this).fixedAge <= minimumSprintDuration)
			{
				((EntityState)this).characterBody.isSprinting = false;
			}
			if (((EntityState)this).fixedAge >= 0.25f && !hasFired)
			{
				Fire();
				if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)swordController) && swordController.swordActive)
				{
					GroundNearby();
				}
				hasFired = true;
			}
			if (!(((EntityState)this).fixedAge < baseDuration) && ((EntityState)this).isAuthority)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).OnExit();
			if (inHitPause)
			{
				((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator);
				inHitPause = false;
			}
			if (Object.op_Implicit((Object)(object)swordController))
			{
				swordController.attacking = false;
			}
		}

		public override void OnSerialize(NetworkWriter writer)
		{
			((BaseSkillState)this).OnSerialize(writer);
			writer.Write((byte)swingIndex);
		}

		public override void OnDeserialize(NetworkReader reader)
		{
			((BaseSkillState)this).OnDeserialize(reader);
			swingIndex = reader.ReadByte();
		}

		public void SetStep(int i)
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			swingIndex = i;
			if (swingIndex > 1)
			{
				((InstanceData)((BaseSkillState)this).activatorSkillSlot.skillInstanceData).step = 0;
				swingIndex = 0;
				inCombo = true;
			}
		}
	}
}
namespace EscanorPaladinSkills.States.Upgrades.SunlightSpear
{
	public class ChargeSunlightSpearUpgradedState : BaseChargeSpellState
	{
		private GameObject chargeEffect;

		private Vector3 originalScale;

		public override void OnEnter()
		{
			//IL_008c: 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)
			base.baseDuration = 1.25f;
			base.chargeEffectPrefab = null;
			base.chargeSoundString = "Play_mage_m2_charge";
			base.crosshairOverridePrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Crosshair/ToolbotGrenadeLauncherCrosshair");
			base.maxBloomRadius = 0.2f;
			base.minBloomRadius = 2f;
			((BaseChargeSpellState)this).OnEnter();
			ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator();
			if (Object.op_Implicit((Object)(object)modelChildLocator))
			{
				chargeEffect = ((Component)modelChildLocator.FindChild("SpearChargeEffect")).gameObject;
				chargeEffect.SetActive(true);
				originalScale = chargeEffect.transform.localScale;
			}
		}

		public override void FixedUpdate()
		{
			//IL_0014: 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_0029: Unknown result type (might be due to invalid IL or missing references)
			((BaseChargeSpellState)this).FixedUpdate();
			chargeEffect.transform.localScale = originalScale * 6f * ((BaseChargeSpellState)this).CalcCharge();
		}

		public override void OnExit()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			((BaseChargeSpellState)this).OnExit();
			if (Object.op_Implicit((Object)(object)chargeEffect))
			{
				chargeEffect.transform.localScale = originalScale;
				chargeEffect.SetActive(false);
			}
		}

		public override BaseThrowSpellState GetNextState()
		{
			return (BaseThrowSpellState)(object)new ThrowSunlightSpearUpgradedState();
		}
	}
	public class ThrowSunlightSpearUpgradedState : BaseThrowSpellState
	{
		public override void OnEnter()
		{
			base.baseDuration = 0.8f;
			base.force = 4000f;
			base.minDamageCoefficient = 3f;
			base.maxDamageCoefficient = 8f;
			base.muzzleflashEffectPrefab = FirePistol2.muzzleEffectPrefab;
			base.projectilePrefab = SunlightSpearUpgraded.prefab;
			base.selfForce = 2500f;
			((BaseThrowSpellState)this).OnEnter();
		}
	}
}
namespace EscanorPaladinSkills.States.Upgrades.SpinningSlash
{
	public class SpinningSlashAirborneAltUpgradedState : BaseSkillState
	{
		public static float damageCoefficient = 10f;

		public static float leapDuration = 0.5f;

		public static float dropVelocity = 60f;

		public static float hopVelocity = 30f;

		private float duration;

		private bool hasFired;

		private bool hasLanded;

		private float hitPauseTimer;

		private OverlapAttack attack;

		private bool inHitPause;

		private float stopwatch;

		private Animator animator;

		private HitStopCachedState hitStopCachedState;

		private PaladinSwordController swordController;

		public override void OnEnter()
		{
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: 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_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_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: 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_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: 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_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0238: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_024d: Expected O, but got Unknown
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = leapDuration / (0.5f + 0.5f * ((BaseState)this).attackSpeedStat);
			hasFired = false;
			hasLanded = false;
			animator = ((EntityState)this).GetModelAnimator();
			swordController = ((EntityState)this).GetComponent<PaladinSwordController>();
			((EntityState)this).skillLocator.secondary.DeductStock(1);
			Ray aimRay = ((BaseState)this).GetAimRay();
			Vector3 direction = ((Ray)(ref aimRay)).direction;
			if (PaladinPlugin.IsLocalVRPlayer(((EntityState)this).characterBody))
			{
				direction = ((Component)Camera.main).transform.forward;
			}
			if (((EntityState)this).isAuthority)
			{
				((EntityState)this).characterBody.isSprinting = true;
				CharacterMotor characterMotor = ((EntityState)this).characterMotor;
				characterMotor.velocity *= 0.1f;
				((BaseState)this).SmallHop(((EntityState)this).characterMotor, hopVelocity);
			}
			CharacterBody characterBody = ((EntityState)this).characterBody;
			characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1);
			HitBoxGroup hitBoxGroup = null;
			Transform modelTransform = ((EntityState)this).GetModelTransform();
			string hitboxString = "LeapStrike";
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxString);
			}
			((EntityState)this).PlayAnimation("FullBody, Override", "LeapSlam2", "Whirlwind.playbackRate", duration * 1.5f);
			Util.PlaySound("PaladinLunge", ((EntityState)this).gameObject);
			Util.PlaySound("PaladinCloth2", ((EntityState)this).gameObject);
			PaladinSwordController obj = swordController;
			obj.airSlamStacks++;
			float num = damageCoefficient;
			attack = new OverlapAttack
			{
				damageType = (DamageType)32,
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				teamIndex = ((BaseState)this).GetTeam(),
				damage = (0.5f + 0.5f * (float)swordController.airSlamStacks) * num * ((BaseState)this).damageStat,
				procCoefficient = 1f,
				hitEffectPrefab = swordController.hitEffect,
				forceVector = -Vector3.up * 6000f,
				pushAwayForce = 500f,
				hitBoxGroup = hitBoxGroup,
				isCrit = ((BaseState)this).RollCrit(),
				impactSound = Assets.swordHitSoundEventL.index
			};
			if (swordController.isBlunt)
			{
				attack.impactSound = Assets.batHitSoundEventL.index;
			}
		}

		public override void OnExit()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).OnExit();
			((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty");
			CharacterBody characterBody = ((EntityState)this).characterBody;
			characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2);
		}

		public void FireAttack()
		{
			//IL_00d2: 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_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: 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_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			if (!hasFired)
			{
				hasFired = true;
				swordController.PlaySwingSound();
				if (((EntityState)this).isAuthority)
				{
					((BaseState)this).AddRecoil(-1f * GroundSweep.attackRecoil, -2f * GroundSweep.attackRecoil, -0.5f * GroundSweep.attackRecoil, 0.5f * GroundSweep.attackRecoil);
					EffectManager.SimpleMuzzleFlash(swordController.swingEffect, ((EntityState)this).gameObject, "SwingDown", true);
					CharacterMotor characterMotor = ((EntityState)this).characterMotor;
					characterMotor.velocity *= 0.1f;
					CharacterMotor characterMotor2 = ((EntityState)this).characterMotor;
					characterMotor2.velocity += Vector3.up * (0f - AirSlamAlt.dropVelocity);
				}
			}
			if (!((EntityState)this).isAuthority)
			{
				return;
			}
			Ray aimRay = ((BaseState)this).GetAimRay();
			if (attack.Fire((List<HurtBox>)null))
			{
				swordController.airSlamStacks = 1;
				if (!inHitPause)
				{
					hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Whirlwind.playbackRate");
					hitPauseTimer = 4f * GroundLight.hitPauseDuration / ((BaseState)this).attackSpeedStat;
					inHitPause = true;
				}
			}
		}

		public override void FixedUpdate()
		{
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Expected O, but got Unknown
			((EntityState)this).FixedUpdate();
			((BaseState)this).StartAimMode(0.5f, false);
			stopwatch += Time.fixedDeltaTime;
			if (stopwatch >= duration)
			{
				FireAttack();
				if (((EntityState)this).isAuthority && ((EntityState)this).inputBank.skill2.down && ((EntityState)this).skillLocator.secondary.stock > 0)
				{
					EntityState nextState = (EntityState)new AirSlamAlt();
					((EntityState)this).outer.SetNextState(nextState);
					return;
				}
			}
			if (stopwatch >= duration && ((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded)
			{
				GroundImpact();
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		private void FireShockwave()
		{
			//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_001f: 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_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			Transform val = ((BaseState)this).FindModelChild("SwingCenter");
			Vector3 footPosition = ((EntityState)this).characterBody.footPosition;
			Vector3 forward = ((EntityState)this).characterDirection.forward;
			ProjectileManager.instance.FireProjectile(Projectiles.shockwave, footPosition, Util.QuaternionSafeLookRotation(forward), ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * 3f, WeaponSlam.waveProjectileForce, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f);
		}

		private void GroundImpact()
		{
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0092: Expected O, but got Unknown
			if (!hasLanded)
			{
				hasLanded = true;
				if (Object.op_Implicit((Object)(object)swordController) && swordController.swordActive)
				{
					FireShockwave();
				}
				swordController.airSlamStacks = 1;
				Util.PlaySound("PaladinGroundImpact", ((EntityState)this).gameObject);
				Util.PlaySound("PaladinLeapSlam", ((EntityState)this).gameObject);
				EffectData val = new EffectData
				{
					origin = ((EntityState)this).characterBody.footPosition,
					scale = 2f
				};
				EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/ParentSlamEffect"), val, 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;
		}
	}
	public class SpinningSlashAirborneUpgradedState : BaseSkillState
	{
		public static float damageCoefficient = 10f;

		public static float leapDuration = 0.6f;

		public static float dropVelocity = 36f;

		private float duration;

		private bool hasFired;

		private bool hasLanded;

		private float hitPauseTimer;

		private OverlapAttack attack;

		private bool inHitPause;

		private float stopwatch;

		private Animator animator;

		private HitStopCachedState hitStopCachedState;

		private PaladinSwordController swordController;

		private float previousAirControl;

		public override void OnEnter()
		{
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0199: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: 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_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: 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_0135: 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_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_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_025d: 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_026b: 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_0275: Unknown result type (might be due to invalid IL or missing references)
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: 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_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02de: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: Expected O, but got Unknown
			//IL_0309: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = leapDuration / (0.75f + 0.25f * ((BaseState)this).attackSpeedStat);
			hasFired = false;
			hasLanded = false;
			animator = ((EntityState)this).GetModelAnimator();
			swordController = ((EntityState)this).GetComponent<PaladinSwordController>();
			((EntityState)this).characterMotor.jumpCount = ((EntityState)this).characterBody.maxJumpCount;
			previousAirControl = ((EntityState)this).characterMotor.airControl;
			((EntityState)this).characterMotor.airControl = BaseLeap.airControl;
			Ray aimRay = ((BaseState)this).GetAimRay();
			Vector3 val = ((Ray)(ref aimRay)).direction;
			if (PaladinPlugin.IsLocalVRPlayer(((EntityState)this).characterBody))
			{
				val = ((Component)Camera.main).transform.forward;
			}
			if (((EntityState)this).isAuthority)
			{
				((EntityState)this).characterBody.isSprinting = true;
				val.y = Mathf.Max(val.y, 2.5f * BaseLeap.minimumY);
				Vector3 val2 = ((Vector3)(ref val)).normalized * (1.5f * BaseLeap.aimVelocity) * ((BaseState)this).moveSpeedStat;
				Vector3 val3 = Vector3.up * 1.9f * BaseLeap.upwardVelocity;
				Vector3 val4 = new Vector3(val.x, 0f, val.z);
				Vector3 val5 = ((Vector3)(ref val4)).normalized * (3f * BaseLeap.forwardVelocity);
				((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground();
				((EntityState)this).characterMotor.velocity = val2 + val3 + val5;
			}
			((EntityState)this).characterDirection.moveVector = val;
			CharacterBody characterBody = ((EntityState)this).characterBody;
			characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1);
			HitBoxGroup hitBoxGroup = null;
			Transform modelTransform = ((EntityState)this).GetModelTransform();
			string hitboxString = "LeapStrike";
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxString);
			}
			swordController.airSlamStacks = 1;
			((EntityState)this).PlayAnimation("FullBody, Override", "LeapSlam", "Whirlwind.playbackRate", duration * 1.5f);
			Util.PlaySound("PaladinLunge", ((EntityState)this).gameObject);
			Util.PlaySound("PaladinCloth2", ((EntityState)this).gameObject);
			float num = damageCoefficient;
			attack = new OverlapAttack
			{
				damageType = (DamageType)32,
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				teamIndex = ((BaseState)this).GetTeam(),
				damage = num * ((BaseState)this).damageStat,
				procCoefficient = 1f,
				hitEffectPrefab = swordController.hitEffect,
				forceVector = -Vector3.up * 6000f,
				pushAwayForce = 500f,
				hitBoxGroup = hitBoxGroup,
				isCrit = ((BaseState)this).RollCrit(),
				impactSound = Assets.swordHitSoundEventL.index
			};
			if (swordController.isBlunt)
			{
				attack.impactSound = Assets.batHitSoundEventL.index;
			}
		}

		public override void OnExit()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).OnExit();
			((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty");
			CharacterBody characterBody = ((EntityState)this).characterBody;
			characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2);
			((EntityState)this).characterMotor.airControl = previousAirControl;
		}

		public void FireAttack()
		{
			//IL_00d1: 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_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: 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_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			if (!hasFired)
			{
				hasFired = true;
				swordController.PlaySwingSound();
				if (((EntityState)this).isAuthority)
				{
					((BaseState)this).AddRecoil(-1f * GroundSweep.attackRecoil, -2f * GroundSweep.attackRecoil, -0.5f * GroundSweep.attackRecoil, 0.5f * GroundSweep.attackRecoil);
					EffectManager.SimpleMuzzleFlash(swordController.swingEffect, ((EntityState)this).gameObject, "SwingDown", true);
					CharacterMotor characterMotor = ((EntityState)this).characterMotor;
					characterMotor.velocity *= 0.25f;
					CharacterMotor characterMotor2 = ((EntityState)this).characterMotor;
					characterMotor2.velocity += Vector3.up * dropVelocity;
				}
			}
			if (((EntityState)this).isAuthority)
			{
				Ray aimRay = ((BaseState)this).GetAimRay();
				if (attack.Fire((List<HurtBox>)null) && !inHitPause)
				{
					hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Whirlwind.playbackRate");
					hitPauseTimer = 4f * GroundLight.hitPauseDuration / ((BaseState)this).attackSpeedStat;
					inHitPause = true;
				}
			}
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			((BaseState)this).StartAimMode(0.5f, false);
			stopwatch += Time.fixedDeltaTime;
			if (stopwatch >= duration)
			{
				FireAttack();
				if (((EntityState)this).isAuthority && ((EntityState)this).inputBank.skill2.down && ((EntityState)this).skillLocator.secondary.stock > 0)
				{
					EntityState nextState = (EntityState)(object)new SpinningSlashAirborneAltUpgradedState();
					((EntityState)this).outer.SetNextState(nextState);
					return;
				}
			}
			if (stopwatch >= duration && ((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded)
			{
				GroundImpact();
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		private void FireShockwave()
		{
			//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_001f: 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_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			Transform val = ((BaseState)this).FindModelChild("SwingCenter");
			Vector3 footPosition = ((EntityState)this).characterBody.footPosition;
			Vector3 forward = ((EntityState)this).characterDirection.forward;
			ProjectileManager.instance.FireProjectile(Projectiles.shockwave, footPosition, Util.QuaternionSafeLookRotation(forward), ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * 3f, WeaponSlam.waveProjectileForce, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f);
		}

		private void GroundImpact()
		{
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: 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_0086: Expected O, but got Unknown
			if (!hasLanded)
			{
				hasLanded = true;
				if (Object.op_Implicit((Object)(object)swordController) && swordController.swordActive)
				{
					FireShockwave();
				}
				Util.PlaySound("PaladinGroundImpact", ((EntityState)this).gameObject);
				Util.PlaySound("PaladinLeapSlam", ((EntityState)this).gameObject);
				EffectData val = new EffectData
				{
					origin = ((EntityState)this).characterBody.footPosition,
					scale = 2f
				};
				EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/ParentSlamEffect"), val, 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;
		}
	}
	public class SpinningSlashEntryUpgradedState : BaseState
	{
		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			if (((EntityState)this).isAuthority)
			{
				EntityState nextState = (EntityState)(object)new SpinningSlashAirborneUpgradedState();
				if (((EntityState)this).characterMotor.isGrounded)
				{
					nextState = (EntityState)(object)new SpinningSlashGroundedUpgradedState();
				}
				((EntityState)this).outer.SetNextState(nextState);
			}
		}
	}
	public class SpinningSlashGroundedAltUpgradedState : BaseSkillState
	{
		public static float damageCoefficient = 10f;

		public float baseDuration = 0.6f;

		public static float attackRecoil = 3f;

		private float duration;

		private bool hasFired;

		private float hitPauseTimer;

		private OverlapAttack attack;

		private bool inHitPause;

		private float stopwatch;

		private Animator animator;

		private HitStopCachedState hitStopCachedState;

		private PaladinSwordController swordController;

		private Vector3 storedVelocity;

		public override void OnEnter()
		{
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: 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_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Expected O, but got Unknown
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_020c: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration = baseDuration / ((BaseState)this).attackSpeedStat;
			hasFired = false;
			animator = ((EntityState)this).GetModelAnimator();
			swordController = ((EntityState)this).GetComponent<PaladinSwordController>();
			((BaseState)this).StartAimMode(0.5f + duration, false);
			((EntityState)this).characterBody.isSprinting = false;
			((EntityState)this).skillLocator.secondary.DeductStock(1);
			if (Object.op_Implicit((Object)(object)swordController))
			{
				swordController.attacking = true;
			}
			HitBoxGroup hitBoxGroup = null;
			Transform modelTransform = ((EntityState)this).GetModelTransform();
			if (NetworkServer.active)
			{
				((EntityState)this).characterBody.AddBuff(Buffs.Slow50);
			}
			string hitboxString = "SpinSlash";
			if (Object.op_Implicit((Object)(object)swordController) && swordController.swordActive)
			{
				hitboxString = "SpinSlashLarge";
			}
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxString);
			}
			((EntityState)this).PlayAnimation("FullBody, Override", "GroundSweepContinuous", "Whirlwind.playbackRate", duration * 1.1f);
			Util.PlaySound("PaladinCloth3", ((EntityState)this).gameObject);
			attack = new OverlapAttack
			{
				damageType = (DamageType)32,
				attacker = ((EntityState)this).gameObject,
				inflictor = ((EntityState)this).gameObject,
				teamIndex = ((BaseState)this).GetTeam(),
				damage = damageCoefficient * ((BaseState)this).damageStat,
				procCoefficient = 1f,
				hitEffectPrefab = swordController.hitEffect,
				forceVector = Vector3.up * 1600f,
				pushAwayForce = -1500f,
				hitBoxGroup = hitBoxGroup,
				isCrit = ((BaseState)this).RollCrit(),
				impactSound = Assets.swordHitSoundEventM.index
			};
			if (swordController.isBlunt)
			{
				attack.impactSound = Assets.batHitSoundEventM.index;
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			if (NetworkServer.active)
			{
				((EntityState)this).characterBody.RemoveBuff(Buffs.Slow50);
			}
			if (Object.op_Implicit((Object)(object)swordController))
			{
				swordController.attacking = false;
			}
		}

		public IEnumerator FireAttack()
		{
			if (!hasFired)
			{
				hasFired = true;
				for (int j = 0; j < 2; j++)
				{
					swordController.PlaySwingSound();
					if (((EntityState)this).isAuthority)
					{
						((BaseState)this).AddRecoil(-1f * attackRecoil, -2f * attackRecoil, -0.5f * attackRecoil, 0.5f * attackRecoil);
						if (swordController.swordActive)
						{
							EffectManager.SimpleMuzzleFlash(swordController.empoweredSpinSlashEffect, ((EntityState)this).gameObject, "SwingCenter", true);
						}
						else
						{
							EffectManager.SimpleMuzzleFlash(swordController.spinSlashEffect, ((EntityState)this).gameObject, "SwingCenter", true);
						}
						((BaseState)this).GetAimRay();
						Vector3 forwardDirection = ((EntityState)this).characterDirection.forward;
						if (PaladinPlugin.IsLocalVRPlayer(((EntityState)this).characterBody))
						{
							forwardDirection = ((Component)Camera.main).transform.forward;
							forwardDirection.y = 0f;
							forwardDirection = ((Vector3)(ref forwardDirection)).normalized;
						}
						CharacterMotor characterMotor = ((EntityState)this).characterMotor;
						characterMotor.velocity += forwardDirection * 25f;
						forwardDirection = default(Vector3);
					}
					yield return (object)new WaitForSeconds(duration * 0.3f);
				}
			}
			for (int i = 0; i < 2; i++)
			{
				if (attack.Fire((List<HurtBox>)null) && !inHitPause)
				{
					if (((EntityState)this).characterMotor.velocity != Vector3.zero)
					{
						storedVelocity = ((EntityState)this).characterMotor.velocity;
					}
					hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Whirlwind.playbackRate");
					hitPauseTimer = 4f * GroundLight.hitPauseDuration / ((BaseState)this).attackSpeedStat;
					inHitPause = true;
				}
				yield return (object)new WaitForSeconds(duration * 0.3f);
			}
		}

		public override void FixedUpdate()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			hitPauseTimer -= Time.fixedDeltaTime;
			if (hitPauseTimer <= 0f && inHitPause)
			{
				((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator);
				inHitPause = false;
				if (storedVelocity != Vector3.zero)
				{
					((EntityState)this).characterMotor.velocity = storedVelocity;
				}
			}
			if (!inHitPause)
			{
				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))
				{
					animat