Decompiled source of EscanorPaladinSkills v1.1.0

EscanorPaladinSkills.dll

Decompiled 2 days 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.Merc;
using EscanorPaladinSkills.Buffs;
using EscanorPaladinSkills.Components;
using EscanorPaladinSkills.Overlays;
using EscanorPaladinSkills.Projectiles;
using EscanorPaladinSkills.SkillDefs;
using EscanorPaladinSkills.States;
using EscanorPaladinSkills.VFX;
using IL.EntityStates;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using PaladinMod;
using PaladinMod.Misc;
using PaladinMod.Modules;
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.1", FrameworkDisplayName = ".NET Standard 2.1")]
[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.1.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.*/)]
	[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.1.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();
			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()
		{
			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)
			bool flag = default(bool);
			ContentAddition.AddEntityState(typeof(CruelSunState), ref flag);
			ContentAddition.AddEntityState(typeof(FlameOfLifeState), ref flag);
			ContentAddition.AddEntityState(typeof(DivineAxeRhittaState), ref flag);
			ContentAddition.AddEntityState(typeof(SunfallState), 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_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Expected O, but got Unknown
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0176: 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_019c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: 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_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			//IL_024f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Unknown result type (might be due to invalid IL or missing references)
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_028b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_030c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0315: Unknown result type (might be due to invalid IL or missing references)
			//IL_0319: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0340: Unknown result type (might be due to invalid IL or missing references)
			//IL_0345: Unknown result type (might be due to invalid IL or missing references)
			//IL_0381: Unknown result type (might be due to invalid IL or missing references)
			//IL_0393: Unknown result type (might be due to invalid IL or missing references)
			//IL_0398: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_03df: 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_03f3: Expected O, but got Unknown
			//IL_03ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0403: Unknown result type (might be due to invalid IL or missing references)
			//IL_0483: Unknown result type (might be due to invalid IL or missing references)
			//IL_0488: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_0527: Unknown result type (might be due to invalid IL or missing references)
			//IL_052c: 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);
			prefab.GetComponent<VFXAttributes>().DoNotPool = true;
			EffectComponent component = prefab.GetComponent<EffectComponent>();
			component.soundName = string.Empty;
			component.applyScale = true;
			Light val = prefab.AddComponent<Light>();
			((Behaviour)val).enabled = false;
			val.range = 13f;
			val.intensity = 20f;
			val.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)0, byte.MaxValue));
			LightIntensityCurve val2 = prefab.AddComponent<LightIntensityCurve>();
			((Behaviour)val2).enabled = false;
			val2.light = val;
			val2.maxIntensity = 20f;
			val2.timeMax = 0.2f;
			val2.curve = new AnimationCurve((Keyframe[])(object)new Keyframe[2]
			{
				new Keyframe(0f, 1f),
				new Keyframe(1f, 0f)
			});
			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 val3 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Nullifier/matNullifierPortalEffectCenter.mat").WaitForCompletion());
			val3.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta1.png"));
			val3.SetFloat("_InvFade", 0f);
			val3.SetFloat("_Boost", 8.725851f);
			val3.SetFloat("_AlphaBoost", 2.285f);
			val3.SetFloat("_AlphaBias", 0.02575896f);
			((Renderer)component2).material = val3;
			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 val4 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matOmniHitspark1Void.mat").WaitForCompletion());
			val4.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta1.png"));
			val4.SetFloat("_Boost", 20f);
			val4.SetFloat("_AlphaBoost", 1.120074f);
			val4.SetFloat("_AlphaBias", 0.1589945f);
			((Renderer)component3).material = val4;
			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 val5 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matOmniRing1Void.mat").WaitForCompletion());
			val5.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta2.png"));
			val5.SetFloat("_InvFade", 0f);
			val5.SetFloat("_Boost", 20f);
			val5.SetFloat("_AlphaBoost", 1.246044f);
			val5.SetFloat("_AlphaBias", 0.0275989f);
			val5.SetTexture("_MainTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/VFX/texOmniHitspark2Mask.png").WaitForCompletion());
			((Renderer)component4).material = val5;
			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 val6 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidCamp/matVoidCampLock.mat").WaitForCompletion());
			val6.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)213, (byte)0, (byte)133)));
			((Renderer)component5).material = val6;
			EffectComponent val7 = groundPrefab.AddComponent<EffectComponent>();
			val7.applyScale = true;
			val7.positionAtReferencedTransform = true;
			val7.parentToReferencedTransform = true;
			((Component)val7).gameObject.AddComponent<VFXAttributes>();
			DestroyOnTimer val8 = groundPrefab.AddComponent<DestroyOnTimer>();
			val8.duration = 0.5f;
			ContentAddition.AddEffect(groundPrefab);
		}
	}
	public static class DivineAxeRhittaJank
	{
		public static GameObject swingPrefab;

		public static void Init()
		{
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: 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_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0219: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_0239: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Expected O, but got Unknown
			GameObject val = Asset.mainAssetBundle.LoadAsset<GameObject>("PaladinSwing");
			swingPrefab = PrefabAPI.InstantiateClone(val, "Divine Axe Rhitta Swing VFX", false);
			VFXAttributes val2 = swingPrefab.AddComponent<VFXAttributes>();
			val2.DoNotPool = true;
			Object.Destroy((Object)(object)swingPrefab.GetComponent<NetworkIdentity>());
			swingPrefab.GetComponent<DestroyOnTimer>().duration = 5f;
			EffectComponent val3 = swingPrefab.AddComponent<EffectComponent>();
			val3.applyScale = false;
			val3.parentToReferencedTransform = true;
			val3.positionAtReferencedTransform = true;
			Transform transform = swingPrefab.transform;
			Transform val4 = transform.Find("SwingTrail");
			val4.localScale = Vector3.one * 4f;
			Material val5 = Object.Instantiate<Material>(Asset.mainAssetBundle.LoadAsset<Material>("matPaladinSwing3"));
			val5.SetColor("_Color", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)74, byte.MaxValue)));
			val5.SetColor("_EmissionColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)0, byte.MaxValue)));
			val5.SetFloat("_Cutoff", 0.12f);
			val5.SetFloat("_BlendOp", 4f);
			val5.SetTexture("_MainTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texMaskSwing.png"));
			val5.SetTexture("_EmissionMap", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texMaskSwing.png"));
			((Renderer)((Component)val4).GetComponent<ParticleSystemRenderer>()).material = val5;
			Transform val6 = val4.Find("SwingTrail2");
			val6.localScale = Vector3.one * 2f;
			Light val7 = ((Component)val4).gameObject.AddComponent<Light>();
			val7.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)0, byte.MaxValue));
			val7.range = 13f;
			val7.intensity = 14f;
			LightIntensityCurve val8 = ((Component)val4).gameObject.AddComponent<LightIntensityCurve>();
			val8.light = val7;
			val8.maxIntensity = 14f;
			val8.curve = new AnimationCurve((Keyframe[])(object)new Keyframe[2]
			{
				new Keyframe(0f, 1f),
				new Keyframe(1f, 0f)
			});
			val8.timeMax = 0.5f;
			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", "CastSun", "Spell.playbackRate", duration * 0.5f, 0f);
			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_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: 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_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).AddRecoil(7f, 7f, -2.5f, 2.5f);
			((EntityState)this).PlayAnimation("Gesture, Override", "ThrowSpell", "Spell.playbackRate", duration * 0.5f, 0f);
			DamageTypeCombo value = default(DamageTypeCombo);
			((DamageTypeCombo)(ref value))..ctor(DamageTypeCombo.op_Implicit((DamageType)128), (DamageTypeExtended)0, (DamageSource)2);
			DamageAPI.AddModdedDamageType(ref value, CruelSun.barrierOnHit);
			FireProjectileInfo val = default(FireProjectileInfo);
			val.crit = ((BaseState)this).RollCrit();
			val.damage = base.damageStat * 7f;
			val.damageTypeOverride = value;
			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)
			{
				text = "SlashCombo1";
			}
			((EntityState)this).PlayCrossfade("Gesture, Override", text, "Slash.playbackRate", baseDuration, 0.05f * baseDuration);
			if (!animator.GetBool("isMoving") && animator.GetBool("isGrounded"))
			{
				((EntityState)this).PlayCrossfade("FullBody, Override", text, "Slash.playbackRate", baseDuration, 0.05f * baseDuration);
			}
		}

		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_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: 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,
				damageType = DamageTypeCombo.GenericPrimary
			};
			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_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: 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_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Expected O, but got Unknown
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: 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 = DamageTypeCombo.op_Implicit((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("Gesture, Override", "LimitBreak", "Rage.playbackRate", 1f, 0f);
			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_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Expected O, but got Unknown
			((EntityState)this).FixedUpdate();
			if (((EntityState)this).fixedAge >= castAnimationDuration && !hasAddedStuff)
			{
				if (Object.op_Implicit((Object)(object)modelTransform))
				{
					TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject);
					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.inspectorCharacterModel = ((Component)modelTransform).GetComponent<CharacterModel>();
					TemporaryOverlayInstance val2 = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject);
					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.inspectorCharacterModel = ((Component)modelTransform).GetComponent<CharacterModel>();
					Light component = ((Component)modelTransform).GetComponent<Light>();
					if (Object.op_Implicit((Object)(object)component))
					{
						((Behaviour)component).enabled = true;
					}
					LightIntensityCurve component2 = ((Component)modelTransform).GetComponent<LightIntensityCurve>();
					if (Object.op_Implicit((Object)(object)component2))
					{
						((Behaviour)component2).enabled = true;
					}
				}
				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);
			}
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				Light component = ((Component)modelTransform).GetComponent<Light>();
				if (Object.op_Implicit((Object)(object)component))
				{
					((Behaviour)component).enabled = false;
				}
				LightIntensityCurve component2 = ((Component)modelTransform).GetComponent<LightIntensityCurve>();
				if (Object.op_Implicit((Object)(object)component2))
				{
					((Behaviour)component2).enabled = false;
				}
			}
		}
	}
	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", "CastSun", "Spell.playbackRate", baseDuration, 0f);
			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 = DamageTypeCombo.GenericSpecial,
						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();
			((EntityState)this).PlayAnimation("Gesture, Override", "ThrowSpell", "Spell.playbackRate", 0.5f, 0f);
			if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active)
			{
				((EntityState)this).characterBody.RemoveBuff(All.sunfallStunDebuff);
			}
		}
	}
}
namespace EscanorPaladinSkills.SkillDefs
{
	public class CruelSunSD : SkillDefBase<CruelSunSD>
	{
		public override string NameToken => "SUNSHINES_CRUEL_SUN";

		public override string NameText => "Sunshine's Cruel Sun";

		public override string ConfigNameText => "Sunshines Cruel Sun";

		public override string DescriptionText => "<style=cIsDamage>Ignite</style>. Hurl a slow, homing <style=cIsDamage>miniature sun</style> that explodes in a large radius for <style=cIsDamage>700%</style> damage. Gain <style=cIsHealing>6% barrier</style> for each enemy hit.";

		public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(CruelSunState));

		public override string ActivationStateMachineName => "Weapon";

		public override int BaseMaxStock => 1;

		public override float BaseRechargeInterval => 8f;

		public override bool BeginSkillCooldownOnSkillEnd => true;

		public override bool CanceledFromSprinting => false;

		public override bool CancelSprintingOnActivation => true;

		public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0;

		public override bool IsCombatSkill => true;

		public override bool MustKeyPress => true;

		public override int RechargeStock => 1;

		public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texSunshinesCruelSun3.png");

		public override int StockToConsume => 1;

		public override string[] KeywordTokens => new string[1] { "KEYWORD_IGNITE" };

		public override bool ResetCooldownTimerOnUse => true;

		public override int RequiredStock => 1;

		public override SkillSlot SkillSlot => (SkillSlot)1;

		public override UnlockableDef UnlockableDef => null;
	}
	public class DivineAxeRhittaSD : SkillDefBase<DivineAxeRhittaSD>
	{
		public override string NameToken => "DIVINE_AXE_RHITTA";

		public override string NameText => "Divine Axe Rhitta";

		public override string ConfigNameText => "Divine Axe Rhitta";

		public override string DescriptionText => "<style=cIsDamage>Fleeting</style>. Raise your axe for <style=cIsDamage>700% damage</style>. <style=cIsUtility>Grounds nearby enemies</style> if the Paladin is <style=cIsHealing>blessed</style>.";

		public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(DivineAxeRhittaState));

		public override string ActivationStateMachineName => "Weapon";

		public override int BaseMaxStock => 1;

		public override float BaseRechargeInterval => 0f;

		public override bool BeginSkillCooldownOnSkillEnd => true;

		public override bool CanceledFromSprinting => false;

		public override bool CancelSprintingOnActivation => false;

		public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0;

		public override bool IsCombatSkill => true;

		public override bool MustKeyPress => false;

		public override int RechargeStock => 0;

		public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texDivineAxeRhitta4.png");

		public override int StockToConsume => 0;

		public override string[] KeywordTokens => new string[1] { "KEYWORD_FLEETING" };

		public override bool ResetCooldownTimerOnUse => true;

		public override int RequiredStock => 1;

		public override SkillSlot SkillSlot => (SkillSlot)0;

		public override UnlockableDef UnlockableDef => null;

		public override bool IsStepped => true;

		public override int StepCount => 4;
	}
	public class FlameOfLifeSD : SkillDefBase<FlameOfLifeSD>
	{
		public override string NameToken => "FLAME_OF_LIFE";

		public override string NameText => "Flame of Life";

		public override string ConfigNameText => "Flame of Life";

		public override string DescriptionText => "<style=cIsUtility>Agile</style>. For the next <style=cIsUtility>7 seconds</style>, become <style=cIsHealing>blessed</style>. All attacks <style=cIsDamage>ignite</style> and deal <style=cIsDamage>60%</style> more damage. Increase <style=cIsUtility>movement speed</style> by <style=cIsUtility>25%</style>. <style=cDeath>Disable all healing</style>.";

		public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(FlameOfLifeState));

		public override string ActivationStateMachineName => "Flame";

		public override int BaseMaxStock => 1;

		public override float BaseRechargeInterval => 11f;

		public override bool BeginSkillCooldownOnSkillEnd => true;

		public override bool CanceledFromSprinting => false;

		public override bool CancelSprintingOnActivation => false;

		public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0;

		public override bool IsCombatSkill => false;

		public override bool MustKeyPress => true;

		public override int RechargeStock => 1;

		public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texFlameOfLife3.png");

		public override int StockToConsume => 1;

		public override string[] KeywordTokens => new string[2] { "KEYWORD_AGILE", "KEYWORD_IGNITE" };

		public override bool ResetCooldownTimerOnUse => true;

		public override int RequiredStock => 1;

		public override SkillSlot SkillSlot => (SkillSlot)2;

		public override UnlockableDef UnlockableDef => null;
	}
	public abstract class SkillDefBase
	{
		public SkillDef skillDef;

		public SteppedSkillDef steppedSkillDef;

		public SkillLocator paladinSkillLocator = PaladinPlugin.characterPrefab.GetComponent<SkillLocator>();

		public abstract string NameToken { get; }

		public abstract string NameText { get; }

		public abstract string ConfigNameText { get; }

		public abstract string DescriptionText { get; }

		public abstract SerializableEntityStateType ActivationState { get; }

		public abstract string ActivationStateMachineName { get; }

		public abstract int BaseMaxStock { get; }

		public abstract float BaseRechargeInterval { get; }

		public abstract bool BeginSkillCooldownOnSkillEnd { get; }

		public abstract bool CanceledFromSprinting { get; }

		public abstract bool CancelSprintingOnActivation { get; }

		public virtual bool FullRestockOnAssign { get; } = true;


		public abstract InterruptPriority SkillInterruptPriority { get; }

		public abstract bool IsCombatSkill { get; }

		public abstract bool MustKeyPress { get; }

		public abstract int RechargeStock { get; }

		public abstract Sprite Icon { get; }

		public abstract int StockToConsume { get; }

		public abstract string[] KeywordTokens { get; }

		public abstract bool ResetCooldownTimerOnUse { get; }

		public abstract int RequiredStock { get; }

		public abstract SkillSlot SkillSlot { get; }

		public virtual bool isEnabled { get; } = true;


		public virtual bool IsStepped { get; } = false;


		public virtual int StepCount { get; } = 1;


		public virtual float StepGraceDuration { get; } = 0.5f;


		public virtual bool Add { get; } = true;


		public abstract UnlockableDef UnlockableDef { get; }

		public string d(float f)
		{
			return f * 100f + "%";
		}

		public virtual void Init()
		{
			//IL_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: 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_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_0368: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0403: Expected O, but got Unknown
			//IL_0404: Unknown result type (might be due to invalid IL or missing references)
			//IL_0406: Unknown result type (might be due to invalid IL or missing references)
			string text = "PALADIN_" + NameToken.ToUpper() + "_NAME";
			string text2 = "PALADIN_" + NameToken.ToUpper() + "_DESCRIPTION";
			LanguageAPI.Add(text, NameText);
			LanguageAPI.Add(text2, DescriptionText);
			if (IsStepped)
			{
				steppedSkillDef = ScriptableObject.CreateInstance<SteppedSkillDef>();
				((SkillDef)steppedSkillDef).skillNameToken = text;
				((SkillDef)steppedSkillDef).skillDescriptionToken = text2;
				((SkillDef)steppedSkillDef).activationState = ActivationState;
				((SkillDef)steppedSkillDef).activationStateMachineName = ActivationStateMachineName;
				((SkillDef)steppedSkillDef).baseMaxStock = BaseMaxStock;
				((SkillDef)steppedSkillDef).baseRechargeInterval = BaseRechargeInterval;
				((SkillDef)steppedSkillDef).beginSkillCooldownOnSkillEnd = BeginSkillCooldownOnSkillEnd;
				((SkillDef)steppedSkillDef).canceledFromSprinting = CanceledFromSprinting;
				((SkillDef)steppedSkillDef).cancelSprintingOnActivation = CancelSprintingOnActivation;
				((SkillDef)steppedSkillDef).fullRestockOnAssign = FullRestockOnAssign;
				((SkillDef)steppedSkillDef).interruptPriority = SkillInterruptPriority;
				((SkillDef)steppedSkillDef).isCombatSkill = IsCombatSkill;
				((SkillDef)steppedSkillDef).mustKeyPress = MustKeyPress;
				((SkillDef)steppedSkillDef).rechargeStock = RechargeStock;
				((SkillDef)steppedSkillDef).icon = Icon;
				((SkillDef)steppedSkillDef).stockToConsume = StockToConsume;
				((SkillDef)steppedSkillDef).keywordTokens = KeywordTokens;
				((SkillDef)steppedSkillDef).resetCooldownTimerOnUse = ResetCooldownTimerOnUse;
				((SkillDef)steppedSkillDef).requiredStock = RequiredStock;
				steppedSkillDef.stepCount = StepCount;
				steppedSkillDef.stepGraceDuration = StepGraceDuration;
				ContentAddition.AddSkillDef((SkillDef)(object)steppedSkillDef);
			}
			else
			{
				skillDef = ScriptableObject.CreateInstance<SkillDef>();
				skillDef.skillNameToken = text;
				skillDef.skillDescriptionToken = text2;
				skillDef.activationState = ActivationState;
				skillDef.activationStateMachineName = ActivationStateMachineName;
				skillDef.baseMaxStock = BaseMaxStock;
				skillDef.baseRechargeInterval = BaseRechargeInterval;
				skillDef.beginSkillCooldownOnSkillEnd = BeginSkillCooldownOnSkillEnd;
				skillDef.canceledFromSprinting = CanceledFromSprinting;
				skillDef.cancelSprintingOnActivation = CancelSprintingOnActivation;
				skillDef.fullRestockOnAssign = FullRestockOnAssign;
				skillDef.interruptPriority = SkillInterruptPriority;
				skillDef.isCombatSkill = IsCombatSkill;
				skillDef.mustKeyPress = MustKeyPress;
				skillDef.rechargeStock = RechargeStock;
				skillDef.icon = Icon;
				skillDef.stockToConsume = StockToConsume;
				skillDef.keywordTokens = KeywordTokens;
				skillDef.resetCooldownTimerOnUse = ResetCooldownTimerOnUse;
				skillDef.requiredStock = RequiredStock;
				skillDef.skillName = "Paladin" + NameText.Replace(" ", "");
				ContentAddition.AddSkillDef(skillDef);
			}
			if (Add)
			{
				SkillFamily skillFamily = paladinSkillLocator.GetSkill(SkillSlot).skillFamily;
				Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
				Variant[] variants = skillFamily.variants;
				int num = skillFamily.variants.Length - 1;
				Variant val = new Variant
				{
					skillDef = (SkillDef)(IsStepped ? ((object)steppedSkillDef) : ((object)skillDef)),
					unlockableDef = UnlockableDef
				};
				((Variant)(ref val)).viewableNode = new Node(IsStepped ? ((SkillDef)steppedSkillDef).skillNameToken : skillDef.skillNameToken, false, (Node)null);
				variants[num] = val;
			}
			Main.logger.LogInfo((object)("Added " + NameText));
		}
	}
	public abstract class SkillDefBase<T> : SkillDefBase where T : SkillDefBase<T>
	{
		public static T instance { get; set; }

		public SkillDefBase()
		{
			if (instance != null)
			{
				throw new InvalidOperationException("Singleton class " + typeof(T).Name + " was instantiated twice");
			}
			instance = this as T;
		}
	}
	public class SunfallSD : SkillDefBase<SunfallSD>
	{
		public override string NameToken => "SUNFALL";

		public override string NameText => "Sunfall";

		public override string ConfigNameText => "Sunfall";

		public override string DescriptionText => "<style=cIsDamage>Fleeting</style>. <style=cDeath>Stun yourself</style> and call down your hand, summoning <style=cIsDamage>20</style> meteors for <style=cIsDamage>350% damage</style> each.";

		public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(SunfallState));

		public override string ActivationStateMachineName => "Weapon";

		public override int BaseMaxStock => 5;

		public override float BaseRechargeInterval => 6f;

		public override bool BeginSkillCooldownOnSkillEnd => true;

		public override bool CanceledFromSprinting => false;

		public override bool CancelSprintingOnActivation => false;

		public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0;

		public override bool IsCombatSkill => true;

		public override bool MustKeyPress => false;

		public override int RechargeStock => 1;

		public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texSunfall.png");

		public override int StockToConsume => 5;

		public override string[] KeywordTokens => new string[1] { "KEYWORD_FLEETING" };

		public override bool ResetCooldownTimerOnUse => true;

		public override int RequiredStock => 5;

		public override SkillSlot SkillSlot => (SkillSlot)3;

		public override UnlockableDef UnlockableDef => null;
	}
}
namespace EscanorPaladinSkills.Projectiles
{
	public static class CruelSun
	{
		public static GameObject prefab;

		public static ModdedDamageType barrierOnHit = DamageAPI.ReserveDamageType();

		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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_0094: 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_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Expected O, but got Unknown
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: 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_01aa: 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_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_02ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c7: 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_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_034a: Unknown result type (might be due to invalid IL or missing references)
			prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningBombProjectile.prefab").WaitForCompletion(), "Cruel Sun");
			Rigidbody component = prefab.GetComponent<Rigidbody>();
			component.useGravity = false;
			component.freezeRotation = false;
			ProjectileSimple component2 = prefab.GetComponent<ProjectileSimple>();
			component2.lifetime = 30f;
			component2.desiredForwardSpeed = 20f;
			component2.enableVelocityOverLifetime = true;
			component2.velocityOverLifetime = new AnimationCurve((Keyframe[])(object)new Keyframe[4]
			{
				new Keyframe(0f, 0f),
				new Keyframe(0.025f, 1f),
				new Keyframe(0.026f, 1f),
				new Keyframe(1f, 3f)
			});
			ProjectileDamage component3 = prefab.GetComponent<ProjectileDamage>();
			component3.damageType = DamageTypeCombo.op_Implicit((DamageType)128);
			GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/GrandparentSpawnImpact.prefab").WaitForCompletion(), "Cruel Sun Impact", false);
			Transform val2 = val.transform.Find("Particles");
			for (int i = 0; i < val2.childCount; i++)
			{
				Transform child = val2.GetChild(i);
				child.localScale *= 0.5f;
			}
			EffectComponent component4 = val.GetComponent<EffectComponent>();
			component4.soundName = "PaladinExplosion";
			ContentAddition.AddEffect(val);
			ProjectileImpactExplosion component5 = prefab.GetComponent<ProjectileImpactExplosion>();
			component5.impactEffect = val;
			((ProjectileExplosion)component5).blastRadius = 18f;
			ProjectileController component6 = prefab.GetComponent<ProjectileController>();
			component6.flightSoundLoop = Addressables.LoadAssetAsync<LoopSoundDef>((object)"RoR2/DLC1/VoidMegaCrab/lsdMegaCrabBlackCannonProjectile.asset").WaitForCompletion();
			GameObject val3 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/MegaFireballGhost.prefab").WaitForCompletion(), "Cruel Sun Ghost", false);
			Transform transform = val3.transform;
			for (int j = 0; j < transform.childCount; j++)
			{
				Transform child2 = transform.GetChild(j);
				child2.localScale *= 1.1f;
			}
			Transform val4 = transform.Find("Point Light");
			((Behaviour)((Component)val4).GetComponent<FlickerLight>()).enabled = false;
			Light component7 = ((Component)val4).GetComponent<Light>();
			component7.range = 16f;
			component7.intensity = 40f;
			Mesh mesh = Addressables.LoadAssetAsync<Mesh>((object)"RoR2/Base/Common/VFX/mdlVFXIcosphere.fbx").WaitForCompletion();
			ParticleSystemRenderer component8 = ((Component)transform.Find("FlameTrails, World")).GetComponent<ParticleSystemRenderer>();
			component8.mesh = mesh;
			component8.renderMode = (ParticleSystemRenderMode)4;
			((Component)component8).gameObject.transform.localScale = Vector3.one * 0.85f;
			Material val5 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matOmniExplosion1.mat").WaitForCompletion());
			val5.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/DLC1/Common/ColorRamps/texRampConstructLaserTypeB.png").WaitForCompletion());
			val5.SetFloat("_AlphaBoost", 1f);
			((Renderer)component8).material = val5;
			ParticleSystemRenderer component9 = ((Component)transform.Find("FlameBillboards, Local")).GetComponent<ParticleSystemRenderer>();
			component9.mesh = mesh;
			component9.renderMode = (ParticleSystemRenderMode)4;
			((Component)component9).gameObject.transform.localScale = Vector3.one;
			((Renderer)component9).material = val5;
			component6.ghostPrefab = val3;
			Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkEvent>());
			Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkGameObj>());
			Object.Destroy((Object)(object)prefab.GetComponent<ProjectileProximityBeamController>());
			Object.Destroy((Object)(object)prefab.GetComponent<AntiGravityForce>());
			SphereCollider component10 = prefab.GetComponent<SphereCollider>();
			component10.radius = 0.75f;
			prefab.AddComponent<ProjectileTargetComponent>();
			ProjectileSteerTowardTarget val6 = prefab.AddComponent<ProjectileSteerTowardTarget>();
			val6.yAxisOnly = false;
			val6.rotationSpeed = 90f;
			ProjectileDirectionalTargetFinder val7 = prefab.AddComponent<ProjectileDirectionalTargetFinder>();
			val7.lookRange = 20f;
			val7.lookCone = 35f;
			val7.targetSearchInterval = 0.1f;
			val7.onlySearchIfNoTarget = true;
			val7.allowTargetLoss = false;
			val7.testLoS = false;
			val7.ignoreAir = false;
			val7.flierAltitudeTolerance = float.PositiveInfinity;
			PrefabAPI.RegisterNetworkPrefab(prefab);
			ContentAddition.AddProjectile(prefab);
			GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt;
		}

		private static void GlobalEventManager_onServerDamageDealt(DamageReport report)
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			CharacterBody attackerBody = report.attackerBody;
			if (Object.op_Implicit((Object)(object)attackerBody) && DamageAPI.HasModdedDamageType(report.damageInfo, barrierOnHit))
			{
				attackerBody.healthComponent.AddBarrierAuthority(attackerBody.healthComponent.fullCombinedHealth * CruelSunState.barrierGain);
			}
		}
	}
	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)
			//IL_003c: 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_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: 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_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0236: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_033c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0358: Unknown result type (might be due to invalid IL or missing references)
			//IL_036f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0374: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d0: Expected O, but got Unknown
			//IL_03da: 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_03f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0416: Unknown result type (might be due to invalid IL or missing references)
			//IL_041b: Unknown result type (might be due to invalid IL or missing references)
			//IL_042c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0431: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_0458: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_046f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Unknown result type (might be due to invalid IL or missing references)
			//IL_0482: Unknown result type (might be due to invalid IL or missing references)
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_048b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0490: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a8: Unknown result type (might be due to invalid IL or missing references)
			prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElementalRings/FireTornado.prefab").WaitForCompletion(), "WallOfInfernoPillar");
			prefab.transform.eulerAngles = new Vector3(0f, 0f, 90f);
			Object.Destroy((Object)(object)prefab.GetComponent<SphereCollider>());
			CapsuleCollider val = prefab.AddComponent<CapsuleCollider>();
			((Collider)val).isTrigger = false;
			val.center = new Vector3(0f, 0f, 0f);
			val.radius = 1f;
			val.height = 1f;
			Transform child = prefab.transform.GetChild(0);
			((Component)child).transform.localScale = new Vector3(4000f, 4000f, 10f);
			((Component)child).transform.localPosition = Vector3.zero;
			((Component)child).transform.localEulerAngles = new Vector3(0f, 90f, 0f);
			Rigidbody component = prefab.GetComponent<Rigidbody>();
			component.collisionDetectionMode = (CollisionDetectionMode)1;
			component.useGravity = true;
			component.freezeRotation = true;
			ConstantForce val2 = prefab.AddComponent<ConstantForce>();
			val2.force = new Vector3(0f, -4500f, 0f);
			ProjectileStickOnImpact val3 = prefab.AddComponent<ProjectileStickOnImpact>();
			val3.ignoreCharacters = true;
			val3.ignoreWorld = false;
			val3.alignNormals = false;
			ProjectileSimple component2 = prefab.GetComponent<ProjectileSimple>();
			component2.lifetime = 15f;
			ProjectileDamage component3 = prefab.GetComponent<ProjectileDamage>();
			component3.damageType = DamageTypeCombo.op_Implicit((DamageType)128);
			ProjectileOverlapAttack component4 = prefab.GetComponent<ProjectileOverlapAttack>();
			component4.damageCoefficient = 0.1f;
			component4.resetInterval = 0.1f;
			component4.overlapProcCoefficient = 0.75f;
			ProjectileController component5 = prefab.GetComponent<ProjectileController>();
			GameObject val4 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Mage/MageFirePillarGhost.prefab").WaitForCompletion(), "WallOfInfernoPillarGhost", false);
			((Component)val4.transform.GetChild(1)).gameObject.SetActive(false);
			Transform child2 = val4.transform.GetChild(0);
			child2.localScale = new Vector3(4000f, 4000f, 10f);
			ParticleSystem component6 = ((Component)child2).GetComponent<ParticleSystem>();
			ParticleSystemRenderer component7 = ((Component)component6).GetComponent<ParticleSystemRenderer>();
			component7.maxParticleSize = 1000f;
			component7.alignment = (ParticleSystemRenderSpace)3;
			Material val5 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matFirePillarParticle.mat").WaitForCompletion());
			val5.SetInt("_FadeCloseOn", 1);
			val5.shaderKeywords = new string[4] { "CLOUDOFFSET", "FADECLOSE", "USE_CLOUDS", "_EMISSION" };
			val5.SetFloat("_InvFade", 0.03742486f);
			val5.SetFloat("_Boost", 9.221877f);
			val5.SetFloat("_AlphaBoost", 3.994069f);
			val5.SetFloat("_AlphaBias", 0.4729744f);
			val5.SetFloat("_FadeCloseDistance", 0.02f);
			val5.SetFloat("_DistortionStrength", 0.3714001f);
			val5.SetTextureScale("_MainTex", new Vector2(4000f, 1f));
			val5.SetTextureScale("_Cloud1Tex", new Vector2(4000f, 1000f));
			val5.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/ColorRamps/texRampBeetleQueen.png").WaitForCompletion());
			val5.SetInt("_SrcBlend", 8);
			val5.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)62, (byte)62, byte.MaxValue)));
			((Renderer)component7).material = val5;
			VelocityOverLifetimeModule velocityOverLifetime = component6.velocityOverLifetime;
			Gradient val6 = new Gradient();
			val6.SetKeys((GradientColorKey[])(object)new GradientColorKey[2]
			{
				new GradientColorKey(Color.white, 0f),
				new GradientColorKey(Color.white, 1f)
			}, (GradientAlphaKey[])(object)new GradientAlphaKey[4]
			{
				new GradientAlphaKey(0f, 0f),
				new GradientAlphaKey(1f, 0.7f),
				new GradientAlphaKey(1f, 0.9f),
				new GradientAlphaKey(0f, 1f)
			});
			ColorOverLifetimeModule colorOverLifetime = component6.colorOverLifetime;
			((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(val6);
			MainModule main = component6.main;
			MinMaxCurve startSpeed = ((MainModule)(ref main)).startSpeed;
			val4.transform.eulerAngles = new Vector3(0f, 0f, 90f);
			DestroyOnTimer val7 = val4.AddComponent<DestroyOnTimer>();
			val7.duration = 15f;
			component5.ghostPrefab = val4;
			ContentAddition.AddProjectile(prefab);
		}
	}
	public static class Sunfall
	{
		public static GameObject prefab;

		public static ModdedDamageType barrierOnHit = DamageAPI.ReserveDamageType();

		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_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_0094: 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_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Expected O, but got Unknown
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_01a3: 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_0214: Unknown result type (might be due to invalid IL or missing references)
			//IL_0219: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_0260: 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_0291: Unknown result type (might be due to invalid IL or missing references)
			//IL_0296: 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)
			prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningBombProjectile.prefab").WaitForCompletion(), "Sunfall");
			Rigidbody component = prefab.GetComponent<Rigidbody>();
			component.useGravity = false;
			component.freezeRotation = false;
			ProjectileSimple component2 = prefab.GetComponent<ProjectileSimple>();
			component2.lifetime = 10f;
			component2.desiredForwardSpeed = 50f;
			component2.enableVelocityOverLifetime = true;
			component2.velocityOverLifetime = new AnimationCurve((Keyframe[])(object)new Keyframe[4]
			{
				new Keyframe(0f, 0f),
				new Keyframe(0.025f, 1f),
				new Keyframe(0.026f, 1f),
				new Keyframe(1f, 3f)
			});
			ProjectileDamage component3 = prefab.GetComponent<ProjectileDamage>();
			component3.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
			GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/GrandparentSpawnImpact.prefab").WaitForCompletion(), "Sunfall Impact", false);
			EffectComponent component4 = val.GetComponent<EffectComponent>();
			component4.soundName = "PaladinExplosion";
			ContentAddition.AddEffect(val);
			ProjectileImpactExplosion component5 = prefab.GetComponent<ProjectileImpactExplosion>();
			component5.impactEffect = val;
			((ProjectileExplosion)component5).blastRadius = 18f;
			ProjectileController component6 = prefab.GetComponent<ProjectileController>();
			component6.flightSoundLoop = Addressables.LoadAssetAsync<LoopSoundDef>((object)"RoR2/DLC1/VoidMegaCrab/lsdMegaCrabBlackCannonProjectile.asset").WaitForCompletion();
			GameObject val2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/MegaFireballGhost.prefab").WaitForCompletion(), "Sunfall Ghost", false);
			Transform transform = val2.transform;
			for (int i = 0; i < transform.childCount; i++)
			{
				Transform child = transform.GetChild(i);
				child.localScale *= 11f / 15f;
			}
			Transform val3 = transform.Find("Point Light");
			((Behaviour)((Component)val3).GetComponent<FlickerLight>()).enabled = false;
			Light component7 = ((Component)val3).GetComponent<Light>();
			component7.range = 24f;
			component7.intensity = 50f;
			Mesh mesh = Addressables.LoadAssetAsync<Mesh>((object)"RoR2/Base/Common/VFX/mdlVFXIcosphere.fbx").WaitForCompletion();
			ParticleSystemRenderer component8 = ((Component)transform.Find("FlameTrails, World")).GetComponent<ParticleSystemRenderer>();
			component8.mesh = mesh;
			component8.renderMode = (ParticleSystemRenderMode)4;
			((Component)component8).gameObject.transform.localScale = Vector3.one * (17f / 30f);
			Material val4 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matOmniExplosion1.mat").WaitForCompletion());
			val4.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/ColorRamps/texRampTritoneSmoothed.png").WaitForCompletion());
			val4.SetFloat("_Boost", 4.078308f);
			val4.SetFloat("_AlphaBoost", 1.062106f);
			val4.SetFloat("_AlphaBias", 0f);
			((Renderer)component8).material = val4;
			ParticleSystemRenderer component9 = ((Component)transform.Find("FlameBillboards, Local")).GetComponent<ParticleSystemRenderer>();
			component9.mesh = mesh;
			component9.renderMode = (ParticleSystemRenderMode)4;
			((Component)component9).gameObject.transform.localScale = Vector3.one;
			((Renderer)component9).material = val4;
			component6.ghostPrefab = val2;
			Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkEvent>());
			Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkGameObj>());
			Object.Destroy((Object)(object)prefab.GetComponent<ProjectileProximityBeamController>());
			Object.Destroy((Object)(object)prefab.GetComponent<AntiGravityForce>());
			SphereCollider component10 = prefab.GetComponent<SphereCollider>();
			component10.radius = 0.5f;
			prefab.AddComponent<SunfallController>();
			PrefabAPI.RegisterNetworkPrefab(prefab);
			ContentAddition.AddProjectile(prefab);
			GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt;
		}

		private static void GlobalEventManager_onServerDamageDealt(DamageReport report)
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			CharacterBody attackerBody = report.attackerBody;
			if (Object.op_Implicit((Object)(object)attackerBody) && DamageAPI.HasModdedDamageType(report.damageInfo, barrierOnHit))
			{
				attackerBody.healthComponent.AddBarrierAuthority(attackerBody.healthComponent.fullCombinedHealth * CruelSunState.barrierGain);
			}
		}
	}
	public class SunfallController : MonoBehaviour
	{
		public SphereCollider sphereCollider;

		public float timer;

		public float delay = 0.33f;

		public void Start()
		{
			sphereCollider = ((Component)this).GetComponent<SphereCollider>();
			((Collider)sphereCollider).enabled = false;
		}

		public void FixedUpdate()
		{
			timer += Time.fixedDeltaTime;
			if (timer >= delay)
			{
				((Collider)sphereCollider).enabled = true;
			}
		}
	}
}
namespace EscanorPaladinSkills.Overlays
{
	public static class FlameOfLife
	{
		public static Material prefab1;

		public static Material prefab2;

		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_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			prefab1 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashBright.mat").WaitForCompletion());
			prefab1.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)191, (byte)11, (byte)3, (byte)170)));
			prefab2 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion());
			prefab2.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)148, (byte)17, (byte)0, (byte)170)));
		}
	}
	public static class TheOne
	{
		public static Material prefab1;

		public static Material prefab2;

		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_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			prefab1 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashBright.mat").WaitForCompletion());
			prefab1.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)198, (byte)0, (byte)0, (byte)190)));
			prefab2 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion());
			prefab2.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)43, (byte)0, (byte)0, (byte)190)));
		}
	}
}
namespace EscanorPaladinSkills.Components
{
	public class Init
	{
		public static void SetUpComponents()
		{
			CharacterBody.onBodyStartGlobal += CharacterBody_onBodyStartGlobal;
		}

		public static void HUD_shouldHudDisplay(HUD hud, ref bool shouldDisplay)
		{
		}

		public static void CharacterBody_onBodyStartGlobal(CharacterBody body)
		{
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Expected O, but got Unknown
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: 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_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0254: Unknown result type (might be due to invalid IL or missing references)
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_026f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0280: Unknown result type (might be due to invalid IL or missing references)
			//IL_0285: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Expected O, but got Unknown
			if (((Object)body).name != "RobPaladinBody(Clone)")
			{
				return;
			}
			ModelLocator modelLocator = body.modelLocator;
			if (!Object.op_Implicit((Object)(object)modelLocator))
			{
				return;
			}
			Transform modelTransform = modelLocator.modelTransform;
			if (!Object.op_Implicit((Object)(object)modelTransform) || (Object)(object)modelTransform.Find("say gex hitbox") != (Object)null)
			{
				return;
			}
			GameObject val = new GameObject("say gex hitbox");
			val.transform.parent = modelTransform;
			val.AddComponent<HitBox>();
			val.transform.localPosition = new Vector3(0f, 0f, 7f);
			val.transform.localScale = new Vector3(16f, 20f, 24f);
			val.transform.localEulerAngles = Vector3.zero;
			HitBoxGroup val2 = ((Component)modelTransform).gameObject.AddComponent<HitBoxGroup>();
			val2.hitBoxes = (HitBox[])(object)new HitBox[1] { val.GetComponent<HitBox>() };
			val2.groupName = "SayGex";
			SkillLocator component = ((Component)body).GetComponent<SkillLocator>();
			if (component.primary.skillDef.skillNameToken == "PALADIN_DIVINE_AXE_RHITTA_NAME")
			{
				ChildLocator component2 = ((Component)modelTransform).GetComponent<ChildLocator>();
				NameTransformPair[] transformPairs = component2.transformPairs;
				if (transformPairs.Length > 21)
				{
					Transform transform = component2.transformPairs[20].transform;
					if (Object.op_Implicit((Object)(object)transform))
					{
						SwordSizeController swordSizeController = ((Component)transform).gameObject.AddComponent<SwordSizeController>();
						swordSizeController.sword = transform;
					}
				}
			}
			if (component.utility.skillDef.skillNameToken == "PALADIN_FLAME_OF_LIFE_NAME")
			{
				Light val3 = ((Component)modelTransform).gameObject.AddComponent<Light>();
				((Behaviour)val3).enabled = false;
				val3.range = 20f;
				val3.intensity = 15f;
				val3.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)102, (byte)0, byte.MaxValue));
				LightIntensityCurve val4 = ((Component)modelTransform).gameObject.AddComponent<LightIntensityCurve>();
				((Behaviour)val4).enabled = false;
				val4.light = val3;
				val4.maxIntensity = 15f;
				val4.timeMax = 8f;
				val4.curve = new AnimationCurve((Keyframe[])(object)new Keyframe[3]
				{
					new Keyframe(0f, 1f),
					new Keyframe(0.85f, 1f),
					new Keyframe(1f, 0f)
				});
			}
		}
	}
	public class SwordSizeController : MonoBehaviour
	{
		public Vector3 idealSwordSize;

		public Transform sword;

		public void Start()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			idealSwordSize = Vector3.one * Main.swordScale.Value;
		}

		public void LateUpdate()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)sword))
			{
				sword.localScale = idealSwordSize;
			}
		}
	}
}
namespace EscanorPaladinSkills.Buffs
{
	public static class All
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients;

			public static Action<DamageReport> <1>__GlobalEventManager_onServerDamageDealt;

			public static hook_Heal <2>__HealthComponent_Heal;

			public static hook_RecalculateStats <3>__CharacterBody_RecalculateStats;

			public static hook_FixedUpdate <4>__HealthComponent_FixedUpdate;

			public static hook_FixedUpdate <5>__CharacterBody_FixedUpdate;

			public static Manipulator <6>__GenericCharacterMain_ProcessJump;
		}

		public static BuffDef flameOfLifeHealingDebuff;

		public static BuffDef flameOfLifeBuff;

		public static BuffDef sunfallStunDebuff;

		public static BuffDef theOneBuff;

		public static BuffDef theOneCurseDebuff;

		public static void Init()
		{
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: 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_01e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Expected O, but got Unknown
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_0337: Unknown result type (might be due to invalid IL or missing references)
			//IL_033d: Expected O, but got Unknown
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_0358: Unknown result type (might be due to invalid IL or missing references)
			//IL_035e: Expected O, but got Unknown
			//IL_0374: Unknown result type (might be due to invalid IL or missing references)
			//IL_0379: Unknown result type (might be due to invalid IL or missing references)
			//IL_037f: Expected O, but got Unknown
			//IL_0395: Unknown result type (might be due to invalid IL or missing references)
			//IL_039a: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a0: Expected O, but got Unknown
			//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_03c1: Expected O, but got Unknown
			flameOfLifeHealingDebuff = ScriptableObject.CreateInstance<BuffDef>();
			flameOfLifeHealingDebuff.isDebuff = false;
			flameOfLifeHealingDebuff.isCooldown = false;
			flameOfLifeHealingDebuff.canStack = false;
			flameOfLifeHealingDebuff.buffColor = Color32.op_Implicit(new Color32((byte)246, (byte)119, (byte)32, byte.MaxValue));
			flameOfLifeHealingDebuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffFucked.png");
			flameOfLifeHealingDebuff.isHidden = false;
			((Object)flameOfLifeHealingDebuff).name = "Flame of Life Healing Removal";
			ContentAddition.AddBuffDef(flameOfLifeHealingDebuff);
			flameOfLifeBuff = ScriptableObject.CreateInstance<BuffDef>();
			flameOfLifeBuff.isDebuff = false;
			flameOfLifeBuff.isCooldown = false;
			flameOfLifeBuff.canStack = false;
			flameOfLifeBuff.buffColor = Color32.op_Implicit(new Color32((byte)246, (byte)119, (byte)32, byte.MaxValue));
			flameOfLifeBuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffEnraged.png");
			flameOfLifeBuff.isHidden = false;
			((Object)flameOfLifeBuff).name = "Flame of Life Enrage";
			ContentAddition.AddBuffDef(flameOfLifeBuff);
			sunfallStunDebuff = ScriptableObject.CreateInstance<BuffDef>();
			sunfallStunDebuff.isDebuff = false;
			sunfallStunDebuff.isCooldown = false;
			sunfallStunDebuff.canStack = false;
			sunfallStunDebuff.buffColor = Color32.op_Implicit(new Color32((byte)246, (byte)119, (byte)32, byte.MaxValue));
			sunfallStunDebuff.iconSprite = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/Common/bdSlow50.asset").WaitForCompletion().iconSprite;
			sunfallStunDebuff.isHidden = false;
			((Object)sunfallStunDebuff).name = "Sunfall Slow";
			ContentAddition.AddBuffDef(sunfallStunDebuff);
			theOneBuff = ScriptableObject.CreateInstance<BuffDef>();
			theOneBuff.isDebuff = false;
			theOneBuff.isCooldown = false;
			theOneBuff.canStack = false;
			theOneBuff.buffColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue));
			theOneBuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffEnraged.png");
			theOneBuff.isHidden = false;
			((Object)theOneBuff).name = "The One Blessing";
			ContentAddition.AddBuffDef(theOneBuff);
			theOneCurseDebuff = ScriptableObject.CreateInstance<BuffDef>();
			theOneCurseDebuff.isDebuff = false;
			theOneCurseDebuff.isCooldown = false;
			theOneCurseDebuff.canStack = false;
			theOneCurseDebuff.buffColor = Color.gray;
			theOneCurseDebuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffFucked.png");
			theOneCurseDebuff.isHidden = false;
			((Object)theOneCurseDebuff).name = "The One Curse";
			ContentAddition.AddBuffDef(theOneCurseDebuff);
			LanguageAPI.Add("KEYWORD_FLEETING", "<style=cKeywordName>Fleeting</style><style=cSub><style=cIsDamage>Attack speed</style> increases <style=cIsDamage>skill damage</style> instead, at <style=cIsDamage>66%</style> effectiveness.</style>");
			LanguageAPI.Add("KEYWORD_CURSED", "<style=cKeywordName>Cursed</style><style=cSub>While not <style=cIsDamage>The One</style>, <style=cDeath>reduce all armor</style> by <style=cDeath>40%</style>, <style=cDeath>maximum health</style> by <style=cDeath>20%</style>, and <style=cDeath>all healing</style> by <style=cDeath>25%</style>.</style>");
			LanguageAPI.Add("KEYWORD_THEONE", "<style=cKeywordName>The One</style><style=cSub><style=cIsHealing>Increase armor</style> by <style=cIsHealing>30</style>, <style=cIsHealing>health regeneration</style> by <style=cIsHealing>100%</style>, and <style=cIsDamage>upgrade skills</style> in unique ways.</style>");
			object obj = <>O.<0>__RecalculateStatsAPI_GetStatCoefficients;
			if (obj == null)
			{
				StatHookEventHandler val =