Decompiled source of Lunar Golem v0.1.5

LunarGolem.dll

Decompiled 2 months ago
using System;
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 EntityStates;
using EntityStates.BrotherMonster;
using EntityStates.BrotherMonster.Weapon;
using EntityStates.LunarGolem;
using EntityStates.LunarWisp;
using FubukiMods.Modules;
using HG.BlendableTypes;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Projectile;
using RoR2.Skills;
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("LunarGolem")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("LunarGolem")]
[assembly: AssemblyTitle("LunarGolem")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace FubukiMods
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Fubuki.LunarGolem", "Lunar Chimera (Golem) Survivor", "0.1.5")]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	public class MainPlugin : BaseUnityPlugin
	{
		public static ConfigEntry<float> configPrimaryLDamage { get; set; }

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

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

		public static ConfigEntry<int> configSecondaryDebuff { get; set; }

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

		public static ConfigEntry<int> configSpecialDebuff { get; set; }

		public void Awake()
		{
			configPrimaryLDamage = ((BaseUnityPlugin)this).Config.Bind<float>("1 - Primary", "Light Attack Damage Scale", 1f, "Default value is 1. 0.5 would be half damage, 2 would be double damage.");
			configPrimaryHDamage = ((BaseUnityPlugin)this).Config.Bind<float>("1 - Primary", "Heavy Attack Damage Scale", 1f, "Default value is 1. 0.5 would be half damage, 2 would be double damage.");
			configSecondaryDamage = ((BaseUnityPlugin)this).Config.Bind<float>("2 - Secondary", "Secondary Attack Damage Scale", 1f, "Default value is 1. 0.5 would be half damage, 2 would be double damage.");
			configSecondaryDebuff = ((BaseUnityPlugin)this).Config.Bind<int>("2 - Secondary", "Secondary Attack Debuff Type", -1, "0=None, 1=Cripple, 2=Tar, 3=Reaver Nullify, 4=Rex Weaken, 5=Shock, 6=Expose, -1=Default");
			configSpecialDamage = ((BaseUnityPlugin)this).Config.Bind<float>("4 - Special", "Special Attack Damage Scale", 1f, "Default value is 1. 0.5 would be half damage, 2 would be double damage.");
			configSpecialDebuff = ((BaseUnityPlugin)this).Config.Bind<int>("4 - Special", "Special Attack Debuff Type", -1, "0=None, 1=Cripple, 2=Tar, 3=Reaver Nullify, 4=Rex Weaken, 5=Shock, 6=Expose, -1=Default");
			Assets.Init();
			Survivors.Init();
		}
	}
}
namespace FubukiMods.Modules
{
	internal class Assets
	{
		public static GameObject lunarGolemCannonProjectile;

		public static GameObject lunarGolemShardProjectile;

		public static GameObject lunarGolemMiniMuzzle;

		public static GameObject lunarGolemMiniDust;

		public static GameObject lunarGolemSlamEffect;

		public static GameObject lunarGolemDashEffect;

		public static GameObject lunarGolemSpecialProjectile;

		public static GameObject lunarGolemSpecialExplosion;

		internal 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_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: 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_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0297: Unknown result type (might be due to invalid IL or missing references)
			//IL_0328: Unknown result type (might be due to invalid IL or missing references)
			//IL_032b: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_0341: Unknown result type (might be due to invalid IL or missing references)
			//IL_040b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0410: Unknown result type (might be due to invalid IL or missing references)
			//IL_0432: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_0435: Unknown result type (might be due to invalid IL or missing references)
			//IL_043a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0471: Unknown result type (might be due to invalid IL or missing references)
			//IL_0476: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_031c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			lunarGolemCannonProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/LunarGolemTwinShotProjectile.prefab").WaitForCompletion(), "FubukiMods/SoulRocketProjectile", true);
			((ProjectileExplosion)lunarGolemCannonProjectile.GetComponent<ProjectileImpactExplosion>()).falloffModel = (FalloffModel)0;
			ProjectileImpactExplosion component = lunarGolemCannonProjectile.GetComponent<ProjectileImpactExplosion>();
			((ProjectileExplosion)component).blastRadius = ((ProjectileExplosion)component).blastRadius * 1.25f;
			((ProjectileExplosion)lunarGolemCannonProjectile.GetComponent<ProjectileImpactExplosion>()).totalDamageMultiplier = 0f;
			((ProjectileExplosion)lunarGolemCannonProjectile.GetComponent<ProjectileImpactExplosion>()).applyDot = true;
			((ProjectileExplosion)lunarGolemCannonProjectile.GetComponent<ProjectileImpactExplosion>()).dotIndex = (DotIndex)2;
			((ProjectileExplosion)lunarGolemCannonProjectile.GetComponent<ProjectileImpactExplosion>()).dotDuration = 4f;
			((ProjectileExplosion)lunarGolemCannonProjectile.GetComponent<ProjectileImpactExplosion>()).dotDamageMultiplier = 1.25f * MainPlugin.configPrimaryHDamage.Value;
			lunarGolemCannonProjectile.GetComponent<ProjectileSimple>().oscillateMagnitude = 12.5f;
			lunarGolemCannonProjectile.GetComponent<ProjectileSimple>().oscillateSpeed = 10f;
			ProjectileSimple component2 = lunarGolemCannonProjectile.GetComponent<ProjectileSimple>();
			component2.desiredForwardSpeed *= 1.5f;
			lunarGolemCannonProjectile.GetComponent<ProjectileDamage>().damage = 0f;
			ContentAddition.AddProjectile(lunarGolemCannonProjectile);
			lunarGolemShardProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/LunarShardProjectile.prefab").WaitForCompletion(), "FubukiMods/LunarShardProjectile", true);
			lunarGolemShardProjectile.GetComponent<ProjectileController>().procCoefficient = 0.5f;
			ContentAddition.AddProjectile(lunarGolemShardProjectile);
			lunarGolemMiniMuzzle = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/MuzzleflashLunarGolemTwinShot.prefab").WaitForCompletion(), "FubukiMods/minimuzzle", true);
			lunarGolemMiniMuzzle.AddComponent<NetworkIdentity>();
			ContentAddition.AddEffect(lunarGolemMiniMuzzle);
			lunarGolemMiniDust = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/BlastSmokeLunarGolem.prefab").WaitForCompletion(), "FubukiMods/minidust", true);
			lunarGolemMiniDust.AddComponent<NetworkIdentity>();
			ContentAddition.AddEffect(lunarGolemMiniDust);
			lunarGolemSlamEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherSlamImpact.prefab").WaitForCompletion(), "FubukiMods/SmallSlam", true);
			lunarGolemSlamEffect.AddComponent<NetworkIdentity>();
			ContentAddition.AddEffect(lunarGolemSlamEffect);
			lunarGolemDashEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherDashEffect.prefab").WaitForCompletion(), "FubukiMods/SmallBrotherDash", true);
			lunarGolemDashEffect.AddComponent<NetworkIdentity>();
			ContentAddition.AddEffect(lunarGolemDashEffect);
			lunarGolemSpecialProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispTrackingBomb.prefab").WaitForCompletion(), "FubukiMods/LunarWispBall", true);
			float num = MainPlugin.configSpecialDebuff.Value;
			float childrenDamageCoefficient = 0.5f;
			DamageType val = ((num == 0f) ? ((DamageType)0) : ((num == 1f) ? ((DamageType)4194304) : ((num == 2f) ? ((DamageType)512) : ((num == 3f) ? ((DamageType)32768) : ((num == 4f) ? ((DamageType)16384) : ((num == 5f) ? ((DamageType)16777216) : ((num != 6f) ? ((DamageType)4194304) : ((DamageType)8388608))))))));
			lunarGolemSpecialProjectile.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)(val | 0x20));
			((ProjectileExplosion)lunarGolemSpecialProjectile.GetComponent<ProjectileImpactExplosion>()).falloffModel = (FalloffModel)0;
			((ProjectileExplosion)lunarGolemSpecialProjectile.GetComponent<ProjectileImpactExplosion>()).blastRadius = 12f;
			((ProjectileExplosion)lunarGolemSpecialProjectile.GetComponent<ProjectileImpactExplosion>()).fireChildren = true;
			((ProjectileExplosion)lunarGolemSpecialProjectile.GetComponent<ProjectileImpactExplosion>()).childrenCount = 1;
			((ProjectileExplosion)lunarGolemSpecialProjectile.GetComponent<ProjectileImpactExplosion>()).childrenDamageCoefficient = childrenDamageCoefficient;
			SphereCollider component3 = lunarGolemSpecialProjectile.GetComponent<SphereCollider>();
			component3.radius *= 0.5f;
			lunarGolemSpecialProjectile.GetComponent<ProjectileSteerTowardTarget>().rotationSpeed = 0f;
			lunarGolemSpecialProjectile.GetComponent<ProjectileSimple>().desiredForwardSpeed = 90f;
			lunarGolemSpecialProjectile.GetComponent<ProjectileSimple>().enableVelocityOverLifetime = true;
			lunarGolemSpecialProjectile.GetComponent<ProjectileSimple>().velocityOverLifetime = AnimationCurve.Linear(0f, 1f, 0.5f, 0.1f);
			lunarGolemSpecialExplosion = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Brother/BrotherFirePillar.prefab").WaitForCompletion(), "Prefabs/Custom/FirePillar", true);
			lunarGolemSpecialExplosion.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)(val | 8));
			lunarGolemSpecialExplosion.GetComponent<AlignToNormal>().maxDistance = 1000f;
			lunarGolemSpecialExplosion.GetComponent<ProjectileDotZone>().lifetime = 10f;
			lunarGolemSpecialExplosion.GetComponent<ProjectileDotZone>().forceVector = Vector3.zero;
			((ProjectileExplosion)lunarGolemSpecialProjectile.GetComponent<ProjectileImpactExplosion>()).childrenProjectilePrefab = lunarGolemSpecialExplosion;
			ContentAddition.AddProjectile(lunarGolemSpecialProjectile);
			MonoBehaviour.print((object)("Added: " + (object)lunarGolemSpecialProjectile));
			ContentAddition.AddProjectile(lunarGolemSpecialExplosion);
			MonoBehaviour.print((object)("Added: " + (object)lunarGolemSpecialExplosion));
		}
	}
	internal static class Skills
	{
		public class LunarSprintPrimary : BaseState
		{
			private int attackType = 0;

			private float totalDuration = 2f;

			private float duration;

			private int needleCounter = 0;

			private float needleTimer = 0f;

			private int muzzleIndex = 0;

			private float chargeDuration;

			private bool hasFired = false;

			public float heavyDamage = 1.25f * MainPlugin.configPrimaryHDamage.Value * 0f;

			public float lightDamage = 1f / 24f * MainPlugin.configPrimaryLDamage.Value;

			public float maxSpread = 8f;

			private GameObject chargeEffectLT;

			private GameObject chargeEffectRT;

			private GameObject chargeEffectLB;

			private GameObject chargeEffectRB;

			private HurtBox target;

			private bool foundTarget = false;

			private GameObject myPrefab0;

			private GameObject myPrefab1;

			public override void OnEnter()
			{
				//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0108: Unknown result type (might be due to invalid IL or missing references)
				//IL_010e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0125: Unknown result type (might be due to invalid IL or missing references)
				//IL_012c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0143: Unknown result type (might be due to invalid IL or missing references)
				//IL_014a: Unknown result type (might be due to invalid IL or missing references)
				((BaseState)this).OnEnter();
				duration = totalDuration / base.attackSpeedStat;
				chargeDuration = duration * 0.4f;
				myPrefab0 = Assets.lunarGolemCannonProjectile;
				myPrefab1 = Assets.lunarGolemShardProjectile;
				if (((EntityState)this).characterBody.isSprinting)
				{
					attackType = 1;
					needleCounter = 12;
				}
				else
				{
					((EntityState)this).PlayCrossfade("Gesture, Additive", "ChargeTwinShot", "TwinShot.playbackRate", chargeDuration, 0.1f);
					Util.PlayAttackSpeedSound(ChargeTwinShot.chargeSoundString, ((EntityState)this).gameObject, 1.4f * base.attackSpeedStat);
					ChildLocator component = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
					Transform val = component.FindChild("MuzzleLT");
					Transform val2 = component.FindChild("MuzzleRT");
					Transform val3 = component.FindChild("MuzzleLB");
					Transform val4 = component.FindChild("MuzzleRB");
					chargeEffectLT = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val.position, val.rotation);
					chargeEffectRT = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val2.position, val2.rotation);
					chargeEffectLB = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val3.position, val3.rotation);
					chargeEffectRB = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val4.position, val4.rotation);
					chargeEffectLT.transform.parent = val;
					chargeEffectRT.transform.parent = val2;
					chargeEffectLB.transform.parent = val3;
					chargeEffectRB.transform.parent = val4;
					chargeEffectLT.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
					chargeEffectRT.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
					chargeEffectLB.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
					chargeEffectRB.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
				}
				((BaseState)this).StartAimMode(2f, false);
			}

			public override void FixedUpdate()
			{
				//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_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_0123: Unknown result type (might be due to invalid IL or missing references)
				//IL_013c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0173: 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_0177: Unknown result type (might be due to invalid IL or missing references)
				//IL_0179: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_017d: Unknown result type (might be due to invalid IL or missing references)
				//IL_017f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				//IL_0187: 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_0195: Unknown result type (might be due to invalid IL or missing references)
				//IL_019a: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
				//IL_020a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0217: 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_02d1: 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_02f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_03b2: 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_03c2: Expected O, but got Unknown
				//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_03d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_03d9: 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_03fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0410: Unknown result type (might be due to invalid IL or missing references)
				//IL_041e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0459: Unknown result type (might be due to invalid IL or missing references)
				//IL_045e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0463: Unknown result type (might be due to invalid IL or missing references)
				//IL_04ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_04d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_04de: Unknown result type (might be due to invalid IL or missing references)
				//IL_053d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0542: Unknown result type (might be due to invalid IL or missing references)
				//IL_048f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0496: Unknown result type (might be due to invalid IL or missing references)
				//IL_049b: Unknown result type (might be due to invalid IL or missing references)
				//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_04a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0573: Unknown result type (might be due to invalid IL or missing references)
				//IL_0578: Unknown result type (might be due to invalid IL or missing references)
				//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
				//IL_05df: Unknown result type (might be due to invalid IL or missing references)
				//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_062c: Unknown result type (might be due to invalid IL or missing references)
				//IL_062e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0661: Unknown result type (might be due to invalid IL or missing references)
				//IL_067a: Unknown result type (might be due to invalid IL or missing references)
				//IL_06e6: Unknown result type (might be due to invalid IL or missing references)
				((EntityState)this).FixedUpdate();
				if (attackType == 0 && ((EntityState)this).fixedAge >= chargeDuration && !hasFired)
				{
					if (((EntityState)this).isAuthority)
					{
						Ray aimRay = ((BaseState)this).GetAimRay();
						ChildLocator component = ((Component)((EntityState)this).modelLocator.modelTransform).GetComponent<ChildLocator>();
						int num = component.FindChildIndex(FireTwinShots.leftMuzzleTop);
						int num2 = component.FindChildIndex(FireTwinShots.rightMuzzleTop);
						int num3 = component.FindChildIndex(FireTwinShots.leftMuzzleBot);
						int num4 = component.FindChildIndex(FireTwinShots.rightMuzzleBot);
						Transform val = component.FindChild(num);
						Transform val2 = component.FindChild(num2);
						Transform val3 = component.FindChild(num3);
						Transform val4 = component.FindChild(num4);
						FireProjectileInfo val5 = default(FireProjectileInfo);
						val5.position = ((EntityState)this).characterBody.corePosition;
						val5.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
						bool crit = ((EntityState)this).characterBody.RollCrit();
						val5.crit = crit;
						val5.damage = ((EntityState)this).characterBody.damage * FireTwinShots.damageCoefficient * heavyDamage;
						val5.damageColorIndex = (DamageColorIndex)0;
						val5.owner = ((EntityState)this).gameObject;
						val5.procChainMask = default(ProcChainMask);
						val5.force = 150f;
						val5.useFuseOverride = false;
						val5.useSpeedOverride = false;
						val5.target = null;
						val5.projectilePrefab = myPrefab0;
						FireProjectileInfo val6 = val5;
						FireProjectileInfo val7 = val5;
						FireProjectileInfo val8 = val5;
						FireProjectileInfo val9 = val5;
						val6.position = val.position;
						val7.position = val2.position;
						val8.position = val3.position;
						val9.position = val4.position;
						val7.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction, Vector3.down);
						val9.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction, Vector3.down);
						ProjectileManager.instance.FireProjectile(val6);
						ProjectileManager.instance.FireProjectile(val7);
						ProjectileManager.instance.FireProjectile(val8);
						ProjectileManager.instance.FireProjectile(val9);
						float num5 = 1f;
						((BaseState)this).AddRecoil(-0.4f * num5, -0.8f * num5, -0.3f * num5, 0.3f * num5);
					}
					if (Object.op_Implicit((Object)(object)chargeEffectLT) && Object.op_Implicit((Object)(object)chargeEffectRT) && Object.op_Implicit((Object)(object)chargeEffectLB) && Object.op_Implicit((Object)(object)chargeEffectRB))
					{
						EntityState.Destroy((Object)(object)chargeEffectLT);
						EntityState.Destroy((Object)(object)chargeEffectRT);
						EntityState.Destroy((Object)(object)chargeEffectLB);
						EntityState.Destroy((Object)(object)chargeEffectRB);
					}
					GameObject lunarGolemMiniMuzzle = Assets.lunarGolemMiniMuzzle;
					lunarGolemMiniMuzzle.transform.localScale = Vector3.one * 0.5f;
					GameObject lunarGolemMiniDust = Assets.lunarGolemMiniDust;
					lunarGolemMiniDust.transform.localScale = Vector3.one * 0.5f;
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.leftMuzzleTop, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.rightMuzzleTop, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.leftMuzzleBot, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.rightMuzzleBot, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniDust, ((EntityState)this).gameObject, "Head", false);
					Util.PlaySound(FireTwinShots.attackSoundString, ((EntityState)this).gameObject);
					((EntityState)this).PlayAnimation("Gesture, Additive", "FireTwinShot", "TwinShot.playbackRate", duration, 0f);
					hasFired = true;
				}
				while (attackType == 1 && needleTimer <= 0f && needleCounter > 0)
				{
					if (((EntityState)this).isAuthority)
					{
						Ray aimRay2 = ((BaseState)this).GetAimRay();
						foundTarget = false;
						BullseyeSearch val10 = new BullseyeSearch();
						val10.searchOrigin = ((Ray)(ref aimRay2)).origin;
						val10.searchDirection = ((Ray)(ref aimRay2)).direction;
						val10.maxDistanceFilter = 150f;
						val10.maxAngleFilter = 15f;
						val10.teamMaskFilter = TeamMask.allButNeutral;
						((TeamMask)(ref val10.teamMaskFilter)).RemoveTeam(TeamComponent.GetObjectTeam(((EntityState)this).gameObject));
						val10.sortMode = (SortMode)1;
						val10.RefreshCandidates();
						target = val10.GetResults().FirstOrDefault();
						if (Object.op_Implicit((Object)(object)target))
						{
							foundTarget = true;
						}
						Quaternion rotation = Quaternion.LookRotation(((Ray)(ref aimRay2)).direction);
						if (foundTarget && Object.op_Implicit((Object)(object)target))
						{
							rotation = Util.QuaternionSafeLookRotation(((Component)target).transform.position - ((Ray)(ref aimRay2)).origin);
						}
						((Ray)(ref aimRay2)).direction = Util.ApplySpread(((Ray)(ref aimRay2)).direction, 0f, maxSpread, 4f, 4f, 0f, 0f);
						FireProjectileInfo val11 = default(FireProjectileInfo);
						ChildLocator component2 = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
						Transform val12 = component2.FindChild("MuzzleLT");
						Transform val13 = component2.FindChild("MuzzleRT");
						Transform val14 = component2.FindChild("MuzzleLB");
						Transform val15 = component2.FindChild("MuzzleRB");
						if (muzzleIndex == 0)
						{
							val11.position = val12.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleLT", true);
						}
						if (muzzleIndex == 1)
						{
							val11.position = val13.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleRT", true);
						}
						if (muzzleIndex == 2)
						{
							val11.position = val14.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleLB", true);
						}
						if (muzzleIndex == 3)
						{
							val11.position = val15.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleRB", true);
						}
						muzzleIndex++;
						if (muzzleIndex >= 4)
						{
							muzzleIndex = 0;
						}
						val11.rotation = rotation;
						val11.crit = ((EntityState)this).characterBody.RollCrit();
						val11.damage = ((EntityState)this).characterBody.damage * lightDamage;
						val11.damageColorIndex = (DamageColorIndex)0;
						val11.owner = ((EntityState)this).gameObject;
						val11.procChainMask = default(ProcChainMask);
						val11.force = 0f;
						val11.useFuseOverride = false;
						val11.useSpeedOverride = false;
						val11.target = null;
						if (foundTarget && Object.op_Implicit((Object)(object)target))
						{
							val11.target = ((Component)target).gameObject;
						}
						val11.projectilePrefab = myPrefab1;
						ProjectileManager.instance.FireProjectile(val11);
					}
					Util.PlaySound(FireLunarShards.fireSound, ((EntityState)this).gameObject);
					needleTimer += 0.1f / base.attackSpeedStat;
					needleCounter--;
				}
				needleTimer -= 1f / 60f;
				if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
			}

			public override void OnExit()
			{
				if (Object.op_Implicit((Object)(object)chargeEffectLT) && Object.op_Implicit((Object)(object)chargeEffectRT) && Object.op_Implicit((Object)(object)chargeEffectLB) && Object.op_Implicit((Object)(object)chargeEffectRB))
				{
					EntityState.Destroy((Object)(object)chargeEffectLT);
					EntityState.Destroy((Object)(object)chargeEffectRT);
					EntityState.Destroy((Object)(object)chargeEffectLB);
					EntityState.Destroy((Object)(object)chargeEffectRB);
				}
				((EntityState)this).OnExit();
			}

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

		public class LunarChargePrimary : BaseState
		{
			private int attackType = 0;

			private float totalDuration = 2f;

			private float duration;

			private int needleCounter = 12;

			private float needleTimer = 0f;

			private int muzzleIndex = 0;

			private float chargeDuration;

			private bool hasFired = false;

			public float heavyDamage = 1.25f * MainPlugin.configPrimaryHDamage.Value * 0f;

			public float lightDamage = 1f / 24f * MainPlugin.configPrimaryLDamage.Value;

			public float maxSpread = 8f;

			private GameObject chargeEffectLT;

			private GameObject chargeEffectRT;

			private GameObject chargeEffectLB;

			private GameObject chargeEffectRB;

			private HurtBox target;

			private bool foundTarget = false;

			private GameObject myPrefab0;

			private GameObject myPrefab1;

			public override void OnEnter()
			{
				//IL_00a5: 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_00c1: 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_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_0101: Unknown result type (might be due to invalid IL or missing references)
				((BaseState)this).OnEnter();
				duration = totalDuration / base.attackSpeedStat;
				chargeDuration = duration * 0.4f;
				myPrefab0 = Assets.lunarGolemCannonProjectile;
				myPrefab1 = Assets.lunarGolemShardProjectile;
				Util.PlayAttackSpeedSound(ChargeTwinShot.chargeSoundString, ((EntityState)this).gameObject, 1.4f * base.attackSpeedStat);
				ChildLocator component = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
				Transform val = component.FindChild("MuzzleLT");
				Transform val2 = component.FindChild("MuzzleRT");
				Transform val3 = component.FindChild("MuzzleLB");
				Transform val4 = component.FindChild("MuzzleRB");
				chargeEffectLT = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val.position, val.rotation);
				chargeEffectRT = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val2.position, val2.rotation);
				chargeEffectLB = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val3.position, val3.rotation);
				chargeEffectRB = Object.Instantiate<GameObject>(ChargeTwinShot.effectPrefab, val4.position, val4.rotation);
				chargeEffectLT.transform.parent = val;
				chargeEffectRT.transform.parent = val2;
				chargeEffectLB.transform.parent = val3;
				chargeEffectRB.transform.parent = val4;
				chargeEffectLT.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
				chargeEffectRT.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
				chargeEffectLB.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
				chargeEffectRB.GetComponent<ScaleParticleSystemDuration>().newDuration = chargeDuration;
				((BaseState)this).StartAimMode(2f, false);
			}

			public override void FixedUpdate()
			{
				//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_0166: Unknown result type (might be due to invalid IL or missing references)
				//IL_0174: Unknown result type (might be due to invalid IL or missing references)
				//IL_0179: Unknown result type (might be due to invalid IL or missing references)
				//IL_0182: Unknown result type (might be due to invalid IL or missing references)
				//IL_0187: Unknown result type (might be due to invalid IL or missing references)
				//IL_018c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e2: 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_021b: Unknown result type (might be due to invalid IL or missing references)
				//IL_021d: Unknown result type (might be due to invalid IL or missing references)
				//IL_021f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0221: Unknown result type (might be due to invalid IL or missing references)
				//IL_0223: Unknown result type (might be due to invalid IL or missing references)
				//IL_0225: Unknown result type (might be due to invalid IL or missing references)
				//IL_0227: Unknown result type (might be due to invalid IL or missing references)
				//IL_022d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0232: Unknown result type (might be due to invalid IL or missing references)
				//IL_023b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0240: Unknown result type (might be due to invalid IL or missing references)
				//IL_0249: Unknown result type (might be due to invalid IL or missing references)
				//IL_024e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0257: Unknown result type (might be due to invalid IL or missing references)
				//IL_025c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0265: 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_0274: Unknown result type (might be due to invalid IL or missing references)
				//IL_027d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0282: Unknown result type (might be due to invalid IL or missing references)
				//IL_0287: Unknown result type (might be due to invalid IL or missing references)
				//IL_028c: 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_02a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_036d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0377: Unknown result type (might be due to invalid IL or missing references)
				//IL_0390: 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_0456: Unknown result type (might be due to invalid IL or missing references)
				//IL_045b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0464: Unknown result type (might be due to invalid IL or missing references)
				//IL_046b: Expected O, but got Unknown
				//IL_046f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0474: Unknown result type (might be due to invalid IL or missing references)
				//IL_047d: 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_04a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_04c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0502: Unknown result type (might be due to invalid IL or missing references)
				//IL_0507: Unknown result type (might be due to invalid IL or missing references)
				//IL_050c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0556: Unknown result type (might be due to invalid IL or missing references)
				//IL_057a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0587: Unknown result type (might be due to invalid IL or missing references)
				//IL_05e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_05eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0538: Unknown result type (might be due to invalid IL or missing references)
				//IL_053f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0544: Unknown result type (might be due to invalid IL or missing references)
				//IL_0549: Unknown result type (might be due to invalid IL or missing references)
				//IL_054e: Unknown result type (might be due to invalid IL or missing references)
				//IL_061c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0621: Unknown result type (might be due to invalid IL or missing references)
				//IL_0652: Unknown result type (might be due to invalid IL or missing references)
				//IL_0657: Unknown result type (might be due to invalid IL or missing references)
				//IL_0688: Unknown result type (might be due to invalid IL or missing references)
				//IL_068d: Unknown result type (might be due to invalid IL or missing references)
				//IL_06d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_070a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0723: Unknown result type (might be due to invalid IL or missing references)
				//IL_078f: Unknown result type (might be due to invalid IL or missing references)
				((EntityState)this).FixedUpdate();
				if (attackType == 0 && ((EntityState)this).fixedAge < chargeDuration && !((EntityState)this).inputBank.skill1.down)
				{
					attackType = 1;
					if (Object.op_Implicit((Object)(object)chargeEffectLT) && Object.op_Implicit((Object)(object)chargeEffectRT) && Object.op_Implicit((Object)(object)chargeEffectLB) && Object.op_Implicit((Object)(object)chargeEffectRB))
					{
						EntityState.Destroy((Object)(object)chargeEffectLT);
						EntityState.Destroy((Object)(object)chargeEffectRT);
						EntityState.Destroy((Object)(object)chargeEffectLB);
						EntityState.Destroy((Object)(object)chargeEffectRB);
					}
				}
				if (attackType == 0 && ((EntityState)this).fixedAge >= chargeDuration && !hasFired)
				{
					if (((EntityState)this).isAuthority)
					{
						Ray aimRay = ((BaseState)this).GetAimRay();
						ChildLocator component = ((Component)((EntityState)this).modelLocator.modelTransform).GetComponent<ChildLocator>();
						int num = component.FindChildIndex(FireTwinShots.leftMuzzleTop);
						int num2 = component.FindChildIndex(FireTwinShots.rightMuzzleTop);
						int num3 = component.FindChildIndex(FireTwinShots.leftMuzzleBot);
						int num4 = component.FindChildIndex(FireTwinShots.rightMuzzleBot);
						Transform val = component.FindChild(num);
						Transform val2 = component.FindChild(num2);
						Transform val3 = component.FindChild(num3);
						Transform val4 = component.FindChild(num4);
						FireProjectileInfo val5 = default(FireProjectileInfo);
						val5.position = ((EntityState)this).characterBody.corePosition;
						val5.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
						bool crit = ((EntityState)this).characterBody.RollCrit();
						val5.crit = crit;
						val5.damage = ((EntityState)this).characterBody.damage * FireTwinShots.damageCoefficient * heavyDamage;
						val5.damageColorIndex = (DamageColorIndex)0;
						val5.owner = ((EntityState)this).gameObject;
						val5.procChainMask = default(ProcChainMask);
						val5.force = 150f;
						val5.useFuseOverride = false;
						val5.useSpeedOverride = false;
						val5.target = null;
						val5.projectilePrefab = myPrefab0;
						FireProjectileInfo val6 = val5;
						FireProjectileInfo val7 = val5;
						FireProjectileInfo val8 = val5;
						FireProjectileInfo val9 = val5;
						val6.position = val.position;
						val7.position = val2.position;
						val8.position = val3.position;
						val9.position = val4.position;
						val7.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction, Vector3.down);
						val9.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction, Vector3.down);
						ProjectileManager.instance.FireProjectile(val6);
						ProjectileManager.instance.FireProjectile(val7);
						ProjectileManager.instance.FireProjectile(val8);
						ProjectileManager.instance.FireProjectile(val9);
						float num5 = 1f;
						((BaseState)this).AddRecoil(-0.4f * num5, -0.8f * num5, -0.3f * num5, 0.3f * num5);
					}
					if (Object.op_Implicit((Object)(object)chargeEffectLT) && Object.op_Implicit((Object)(object)chargeEffectRT) && Object.op_Implicit((Object)(object)chargeEffectLB) && Object.op_Implicit((Object)(object)chargeEffectRB))
					{
						EntityState.Destroy((Object)(object)chargeEffectLT);
						EntityState.Destroy((Object)(object)chargeEffectRT);
						EntityState.Destroy((Object)(object)chargeEffectLB);
						EntityState.Destroy((Object)(object)chargeEffectRB);
					}
					GameObject lunarGolemMiniMuzzle = Assets.lunarGolemMiniMuzzle;
					lunarGolemMiniMuzzle.transform.localScale = Vector3.one * 0.5f;
					GameObject lunarGolemMiniDust = Assets.lunarGolemMiniDust;
					lunarGolemMiniDust.transform.localScale = Vector3.one * 0.5f;
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.leftMuzzleTop, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.rightMuzzleTop, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.leftMuzzleBot, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniMuzzle, ((EntityState)this).gameObject, FireTwinShots.rightMuzzleBot, false);
					EffectManager.SimpleMuzzleFlash(lunarGolemMiniDust, ((EntityState)this).gameObject, "Head", false);
					Util.PlaySound(FireTwinShots.attackSoundString, ((EntityState)this).gameObject);
					((EntityState)this).PlayAnimation("Gesture, Additive", "FireTwinShot", "TwinShot.playbackRate", duration, 0f);
					hasFired = true;
				}
				while (attackType == 1 && needleTimer <= 0f && needleCounter > 0)
				{
					if (((EntityState)this).isAuthority)
					{
						Ray aimRay2 = ((BaseState)this).GetAimRay();
						foundTarget = false;
						BullseyeSearch val10 = new BullseyeSearch();
						val10.searchOrigin = ((Ray)(ref aimRay2)).origin;
						val10.searchDirection = ((Ray)(ref aimRay2)).direction;
						val10.maxDistanceFilter = 150f;
						val10.maxAngleFilter = 15f;
						val10.teamMaskFilter = TeamMask.allButNeutral;
						((TeamMask)(ref val10.teamMaskFilter)).RemoveTeam(TeamComponent.GetObjectTeam(((EntityState)this).gameObject));
						val10.sortMode = (SortMode)1;
						val10.RefreshCandidates();
						target = val10.GetResults().FirstOrDefault();
						if (Object.op_Implicit((Object)(object)target))
						{
							foundTarget = true;
						}
						Quaternion rotation = Quaternion.LookRotation(((Ray)(ref aimRay2)).direction);
						if (foundTarget && Object.op_Implicit((Object)(object)target))
						{
							rotation = Util.QuaternionSafeLookRotation(((Component)target).transform.position - ((Ray)(ref aimRay2)).origin);
						}
						((Ray)(ref aimRay2)).direction = Util.ApplySpread(((Ray)(ref aimRay2)).direction, 0f, maxSpread, 4f, 4f, 0f, 0f);
						FireProjectileInfo val11 = default(FireProjectileInfo);
						ChildLocator component2 = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
						Transform val12 = component2.FindChild("MuzzleLT");
						Transform val13 = component2.FindChild("MuzzleRT");
						Transform val14 = component2.FindChild("MuzzleLB");
						Transform val15 = component2.FindChild("MuzzleRB");
						if (muzzleIndex == 0)
						{
							val11.position = val12.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleLT", true);
						}
						if (muzzleIndex == 1)
						{
							val11.position = val13.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleRT", true);
						}
						if (muzzleIndex == 2)
						{
							val11.position = val14.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleLB", true);
						}
						if (muzzleIndex == 3)
						{
							val11.position = val15.position;
							EffectManager.SimpleMuzzleFlash(FireLunarShards.muzzleFlashEffectPrefab, ((EntityState)this).gameObject, "MuzzleRB", true);
						}
						muzzleIndex++;
						if (muzzleIndex >= 4)
						{
							muzzleIndex = 0;
						}
						val11.rotation = rotation;
						val11.crit = ((EntityState)this).characterBody.RollCrit();
						val11.damage = ((EntityState)this).characterBody.damage * lightDamage;
						val11.damageColorIndex = (DamageColorIndex)0;
						val11.owner = ((EntityState)this).gameObject;
						val11.procChainMask = default(ProcChainMask);
						val11.force = 0f;
						val11.useFuseOverride = false;
						val11.useSpeedOverride = false;
						val11.target = null;
						if (foundTarget && Object.op_Implicit((Object)(object)target))
						{
							val11.target = ((Component)target).gameObject;
						}
						val11.projectilePrefab = myPrefab1;
						ProjectileManager.instance.FireProjectile(val11);
					}
					Util.PlaySound(FireLunarShards.fireSound, ((EntityState)this).gameObject);
					needleTimer += 0.1f / base.attackSpeedStat;
					needleCounter--;
				}
				if (attackType == 1)
				{
					needleTimer -= 1f / 60f;
				}
				if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
			}

			public override void OnExit()
			{
				if (Object.op_Implicit((Object)(object)chargeEffectLT) && Object.op_Implicit((Object)(object)chargeEffectRT) && Object.op_Implicit((Object)(object)chargeEffectLB) && Object.op_Implicit((Object)(object)chargeEffectRB))
				{
					EntityState.Destroy((Object)(object)chargeEffectLT);
					EntityState.Destroy((Object)(object)chargeEffectRT);
					EntityState.Destroy((Object)(object)chargeEffectLB);
					EntityState.Destroy((Object)(object)chargeEffectRB);
				}
				((EntityState)this).OnExit();
			}

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

		public class LunarGolemSecondary : BaseState
		{
			private float totalDuration = 0.5f;

			private float maxDuration = 5f;

			private float duration;

			private bool hasJumped = false;

			private bool startedFall = false;

			private bool hasLanded = false;

			private float adjustedDuration = 0f;

			private float postLandDuration = 0.1f;

			private float damage = 12f * MainPlugin.configSecondaryDamage.Value;

			private float debuffID = MainPlugin.configSecondaryDebuff.Value;

			private DamageType debuffType;

			private GameObject smallSlam;

			public override void OnEnter()
			{
				//IL_0031: Unknown result type (might be due to invalid IL or missing references)
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c3: 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_0107: Unknown result type (might be due to invalid IL or missing references)
				//IL_0138: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				((BaseState)this).OnEnter();
				duration = totalDuration / base.attackSpeedStat;
				smallSlam = Assets.lunarGolemSlamEffect;
				smallSlam.transform.localScale = Vector3.one * 0.25f;
				if (debuffID == 0f)
				{
					debuffType = (DamageType)0;
				}
				else if (debuffID == 1f)
				{
					debuffType = (DamageType)4194304;
				}
				else if (debuffID == 2f)
				{
					debuffType = (DamageType)512;
				}
				else if (debuffID == 3f)
				{
					debuffType = (DamageType)32768;
				}
				else if (debuffID == 4f)
				{
					debuffType = (DamageType)16384;
				}
				else if (debuffID == 5f)
				{
					debuffType = (DamageType)16777216;
				}
				else if (debuffID == 6f)
				{
					debuffType = (DamageType)8388608;
				}
				else
				{
					debuffType = (DamageType)4194304;
				}
			}

			public override void FixedUpdate()
			{
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_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_00b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00de: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: 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_0119: Unknown result type (might be due to invalid IL or missing references)
				//IL_011e: Unknown result type (might be due to invalid IL or missing references)
				//IL_013f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0144: Unknown result type (might be due to invalid IL or missing references)
				//IL_016f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0176: Expected O, but got Unknown
				//IL_01b3: 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_01be: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_020a: Unknown result type (might be due to invalid IL or missing references)
				//IL_020f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0216: Unknown result type (might be due to invalid IL or missing references)
				((EntityState)this).FixedUpdate();
				if (!hasJumped)
				{
					hasJumped = true;
					EffectManager.SimpleEffect(BaseSlideState.slideEffectPrefab, ((EntityState)this).characterBody.corePosition, Quaternion.LookRotation(Vector3.down), false);
					Util.PlaySound(BaseSlideState.soundString, ((EntityState)this).gameObject);
					((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f);
					((EntityState)this).characterMotor.velocity.y = 50f;
				}
				if (((EntityState)this).fixedAge >= duration && !startedFall)
				{
					startedFall = true;
					EffectManager.SimpleEffect(BaseSlideState.slideEffectPrefab, ((EntityState)this).characterBody.corePosition, Quaternion.LookRotation(Vector3.up), false);
					((EntityState)this).characterMotor.velocity.y = -100f;
					CharacterBody characterBody = ((EntityState)this).characterBody;
					characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1);
				}
				if (startedFall && !hasLanded && ((BaseState)this).isGrounded)
				{
					hasLanded = true;
					((EntityState)this).characterMotor.velocity = Vector3.zero;
					((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = 0f;
					EffectManager.SimpleEffect(smallSlam, ((EntityState)this).characterBody.footPosition, Quaternion.identity, false);
					Util.PlaySound(ExitSkyLeap.soundString, ((EntityState)this).gameObject);
					if (((EntityState)this).isAuthority)
					{
						BlastAttack val = new BlastAttack();
						val.attacker = ((EntityState)this).gameObject;
						val.baseDamage = damage * base.damageStat;
						val.baseForce = 200f;
						val.crit = ((BaseState)this).RollCrit();
						val.damageType = DamageTypeCombo.op_Implicit((DamageType)(debuffType | 0x20000));
						val.falloffModel = (FalloffModel)0;
						val.inflictor = ((EntityState)this).gameObject;
						val.position = ((EntityState)this).characterBody.footPosition;
						val.procCoefficient = 1f;
						val.radius = 12f;
						val.teamIndex = ((BaseState)this).GetTeam();
						val.Fire();
					}
					adjustedDuration = ((EntityState)this).fixedAge;
				}
				if (hasLanded && ((EntityState)this).fixedAge >= adjustedDuration + postLandDuration / base.attackSpeedStat)
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
				else if (((EntityState)this).fixedAge >= maxDuration)
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
			}

			public override void OnExit()
			{
				//IL_002a: 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_0032: Unknown result type (might be due to invalid IL or missing references)
				((EntityState)this).PlayAnimation("Gesture, Additive", "Empty");
				((EntityState)this).PlayAnimation("Gesture, Override", "Empty");
				CharacterBody characterBody = ((EntityState)this).characterBody;
				characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2);
				((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = 1f;
				((EntityState)this).OnExit();
			}

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

		public class LunarGolemUtility : BaseState
		{
			private Vector3 slipVector = Vector3.zero;

			public float duration = 0.3f;

			public float speedCoefficient = 6.5f;

			public override void OnEnter()
			{
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: 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_0045: 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_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Expected O, but got Unknown
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: 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)
				((BaseState)this).OnEnter();
				((EntityState)this).characterBody.isSprinting = true;
				Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector);
				slipVector = ((Vector3)(ref val)).normalized;
				EffectData val2 = new EffectData();
				val2.rotation = Util.QuaternionSafeLookRotation(slipVector);
				val2.origin = ((EntityState)this).gameObject.GetComponent<CharacterBody>().corePosition;
				GameObject lunarGolemDashEffect = Assets.lunarGolemDashEffect;
				lunarGolemDashEffect.transform.localScale = Vector3.one * 0.3f;
				EffectManager.SpawnEffect(lunarGolemDashEffect, val2, false);
				((EntityState)this).PlayCrossfade("Body", "Run", 0.05f);
				Util.PlaySound(BaseSlideState.soundString, ((EntityState)this).gameObject);
			}

			public override void FixedUpdate()
			{
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_001f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				((EntityState)this).FixedUpdate();
				((EntityState)this).characterMotor.velocity = Vector3.zero;
				((EntityState)this).characterMotor.rootMotion = slipVector * (base.moveSpeedStat * speedCoefficient * Time.fixedDeltaTime) * Mathf.Cos(((EntityState)this).fixedAge / (duration * 1.3f) * (MathF.PI / 2f));
				if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
			}

			public override void OnExit()
			{
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_0020: Unknown result type (might be due to invalid IL or missing references)
				//IL_0043: 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)
				((EntityState)this).characterMotor.velocity = slipVector * (base.moveSpeedStat * speedCoefficient * Time.fixedDeltaTime) * Mathf.Cos(((EntityState)this).fixedAge / (duration * 1.3f) * (MathF.PI / 2f));
				((EntityState)this).OnExit();
			}

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

		public class LunarGolemSpecial : BaseState
		{
			private float startDuration = 1f;

			private float fireDuration = 2f;

			private float duration;

			private float baseDamage = 2f * MainPlugin.configSpecialDamage.Value;

			private float chargeDurationLT;

			private float chargeDurationRT;

			private float chargeDurationLB;

			private float chargeDurationRB;

			private bool hasFiredLT = false;

			private bool hasFiredRT = false;

			private bool hasFiredLB = false;

			private bool hasFiredRB = false;

			private GameObject myProjectile;

			private GameObject myProjectile2;

			private GameObject chargeEffectLT;

			private GameObject chargeEffectRT;

			private GameObject chargeEffectLB;

			private GameObject chargeEffectRB;

			private float camOffset = 10f;

			public override void OnEnter()
			{
				//IL_011e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0123: Unknown result type (might be due to invalid IL or missing references)
				//IL_0136: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01da: Unknown result type (might be due to invalid IL or missing references)
				//IL_01df: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f5: 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_01ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0203: Unknown result type (might be due to invalid IL or missing references)
				//IL_0208: Unknown result type (might be due to invalid IL or missing references)
				//IL_021f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0224: Unknown result type (might be due to invalid IL or missing references)
				//IL_0229: Unknown result type (might be due to invalid IL or missing references)
				//IL_022d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0232: Unknown result type (might be due to invalid IL or missing references)
				//IL_0249: Unknown result type (might be due to invalid IL or missing references)
				//IL_024e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0253: Unknown result type (might be due to invalid IL or missing references)
				//IL_0257: Unknown result type (might be due to invalid IL or missing references)
				//IL_025c: Unknown result type (might be due to invalid IL or missing references)
				((BaseState)this).OnEnter();
				fireDuration /= base.attackSpeedStat;
				duration = startDuration + fireDuration;
				if (Random.Range(0f, 1f) < 0.5f)
				{
					chargeDurationLT = fireDuration * 0f;
					chargeDurationRT = fireDuration * 0.33f;
					chargeDurationLB = fireDuration * 0.66f;
					chargeDurationRB = fireDuration * 0.99f;
				}
				else
				{
					chargeDurationLT = fireDuration * 0.33f;
					chargeDurationRT = fireDuration * 0f;
					chargeDurationLB = fireDuration * 0.99f;
					chargeDurationRB = fireDuration * 0.66f;
				}
				((BaseState)this).StartAimMode(4f, false);
				((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f);
				((EntityState)this).characterMotor.velocity.y = 80f;
				CharacterGravityParameters gravityParameters = ((EntityState)this).characterMotor.gravityParameters;
				gravityParameters.channeledAntiGravityGranterCount++;
				((EntityState)this).characterMotor.gravityParameters = gravityParameters;
				myProjectile = Assets.lunarGolemSpecialProjectile;
				myProjectile2 = Assets.lunarGolemSpecialExplosion;
				Util.PlaySound(((EntityState)this).sfxLocator.barkSound, ((EntityState)this).gameObject);
				Util.PlayAttackSpeedSound(SeekingBomb.spinUpSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
				ChildLocator component = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
				Transform val = component.FindChild("MuzzleLT");
				Transform val2 = component.FindChild("MuzzleRT");
				Transform val3 = component.FindChild("MuzzleLB");
				Transform val4 = component.FindChild("MuzzleRB");
				GameObject chargingEffectPrefab = SeekingBomb.chargingEffectPrefab;
				Vector3 position = val.position;
				Vector3 insideUnitSphere = Random.insideUnitSphere;
				chargeEffectLT = Object.Instantiate<GameObject>(chargingEffectPrefab, position, Quaternion.LookRotation(((Vector3)(ref insideUnitSphere)).normalized));
				GameObject chargingEffectPrefab2 = SeekingBomb.chargingEffectPrefab;
				Vector3 position2 = val2.position;
				insideUnitSphere = Random.insideUnitSphere;
				chargeEffectRT = Object.Instantiate<GameObject>(chargingEffectPrefab2, position2, Quaternion.LookRotation(((Vector3)(ref insideUnitSphere)).normalized));
				GameObject chargingEffectPrefab3 = SeekingBomb.chargingEffectPrefab;
				Vector3 position3 = val3.position;
				insideUnitSphere = Random.insideUnitSphere;
				chargeEffectLB = Object.Instantiate<GameObject>(chargingEffectPrefab3, position3, Quaternion.LookRotation(((Vector3)(ref insideUnitSphere)).normalized));
				GameObject chargingEffectPrefab4 = SeekingBomb.chargingEffectPrefab;
				Vector3 position4 = val4.position;
				insideUnitSphere = Random.insideUnitSphere;
				chargeEffectRB = Object.Instantiate<GameObject>(chargingEffectPrefab4, position4, Quaternion.LookRotation(((Vector3)(ref insideUnitSphere)).normalized));
				chargeEffectLT.transform.parent = val;
				chargeEffectRT.transform.parent = val2;
				chargeEffectLB.transform.parent = val3;
				chargeEffectRB.transform.parent = val4;
				chargeEffectLT.GetComponent<ScaleParticleSystemDuration>().newDuration = startDuration + chargeDurationLT;
				chargeEffectRT.GetComponent<ScaleParticleSystemDuration>().newDuration = startDuration + chargeDurationRT;
				chargeEffectLB.GetComponent<ScaleParticleSystemDuration>().newDuration = startDuration + chargeDurationLB;
				chargeEffectRB.GetComponent<ScaleParticleSystemDuration>().newDuration = startDuration + chargeDurationRB;
				((EntityState)this).PlayCrossfade("Gesture, Additive", "ChargeTwinShot", "TwinShot.playbackRate", Math.Min(Math.Min(chargeDurationLT, chargeDurationRT), Math.Min(chargeDurationLB, chargeDurationRB)), 0.1f);
			}

			public override void FixedUpdate()
			{
				//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0100: Unknown result type (might be due to invalid IL or missing references)
				//IL_0106: Unknown result type (might be due to invalid IL or missing references)
				//IL_010b: Unknown result type (might be due to invalid IL or missing references)
				//IL_010f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0114: Unknown result type (might be due to invalid IL or missing references)
				//IL_022a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0230: Unknown result type (might be due to invalid IL or missing references)
				//IL_0235: 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: Unknown result type (might be due to invalid IL or missing references)
				//IL_0248: Unknown result type (might be due to invalid IL or missing references)
				//IL_024e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0253: Unknown result type (might be due to invalid IL or missing references)
				//IL_0257: Unknown result type (might be due to invalid IL or missing references)
				//IL_025c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0373: 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_037e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0382: Unknown result type (might be due to invalid IL or missing references)
				//IL_038c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0391: Unknown result type (might be due to invalid IL or missing references)
				//IL_0397: Unknown result type (might be due to invalid IL or missing references)
				//IL_039c: Unknown result type (might be due to invalid IL or missing references)
				//IL_03a0: 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_04bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_04c2: Unknown result type (might be due to invalid IL or missing references)
				//IL_04c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_04cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_04d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_04da: Unknown result type (might be due to invalid IL or missing references)
				//IL_04e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_04e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
				((EntityState)this).FixedUpdate();
				((EntityState)this).characterMotor.velocity.y *= 0.9f;
				Ray aimRay;
				if (((EntityState)this).fixedAge > startDuration + chargeDurationLT && !hasFiredLT)
				{
					hasFiredLT = true;
					if (Object.op_Implicit((Object)(object)chargeEffectLT))
					{
						EntityState.Destroy((Object)(object)chargeEffectLT);
					}
					Util.PlayAttackSpeedSound(SeekingBomb.spinDownSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					Util.PlayAttackSpeedSound(SeekingBomb.fireBombSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					ChildLocator component = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
					Transform val = component.FindChild("MuzzleLT");
					bool flag = ((BaseState)this).RollCrit();
					if (((EntityState)this).isAuthority)
					{
						ProjectileManager instance = ProjectileManager.instance;
						GameObject obj = myProjectile;
						Vector3 position = val.position;
						aimRay = ((BaseState)this).GetAimRay();
						Vector3 val2 = position + ((Ray)(ref aimRay)).direction * 4f;
						aimRay = ((BaseState)this).GetAimRay();
						instance.FireProjectile(obj, val2, Quaternion.LookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * baseDamage, 0f, flag, (DamageColorIndex)0, (GameObject)null, -1f);
					}
					((EntityState)this).PlayAnimation("Gesture, Additive", "FireTwinShot", "TwinShot.playbackRate", duration, 0f);
				}
				if (((EntityState)this).fixedAge > startDuration + chargeDurationRT && !hasFiredRT)
				{
					hasFiredRT = true;
					if (Object.op_Implicit((Object)(object)chargeEffectRT))
					{
						EntityState.Destroy((Object)(object)chargeEffectRT);
					}
					Util.PlayAttackSpeedSound(SeekingBomb.spinDownSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					Util.PlayAttackSpeedSound(SeekingBomb.fireBombSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					ChildLocator component2 = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
					Transform val3 = component2.FindChild("MuzzleRT");
					bool flag2 = ((BaseState)this).RollCrit();
					if (((EntityState)this).isAuthority)
					{
						ProjectileManager instance2 = ProjectileManager.instance;
						GameObject obj2 = myProjectile;
						Vector3 position2 = val3.position;
						aimRay = ((BaseState)this).GetAimRay();
						Vector3 val4 = position2 + ((Ray)(ref aimRay)).direction * 4f;
						aimRay = ((BaseState)this).GetAimRay();
						instance2.FireProjectile(obj2, val4, Quaternion.LookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * baseDamage, 0f, flag2, (DamageColorIndex)0, (GameObject)null, -1f);
					}
					((EntityState)this).PlayAnimation("Gesture, Additive", "FireTwinShot", "TwinShot.playbackRate", duration, 0f);
				}
				if (((EntityState)this).fixedAge > startDuration + chargeDurationLB && !hasFiredLB)
				{
					hasFiredLB = true;
					if (Object.op_Implicit((Object)(object)chargeEffectLB))
					{
						EntityState.Destroy((Object)(object)chargeEffectLB);
					}
					Util.PlayAttackSpeedSound(SeekingBomb.spinDownSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					Util.PlayAttackSpeedSound(SeekingBomb.fireBombSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					ChildLocator component3 = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
					Transform val5 = component3.FindChild("MuzzleLB");
					bool flag3 = ((BaseState)this).RollCrit();
					if (((EntityState)this).isAuthority)
					{
						ProjectileManager instance3 = ProjectileManager.instance;
						GameObject obj3 = myProjectile;
						Vector3 position3 = val5.position;
						aimRay = ((BaseState)this).GetAimRay();
						Vector3 val6 = position3 + ((Ray)(ref aimRay)).direction * 4f;
						aimRay = ((BaseState)this).GetAimRay();
						instance3.FireProjectile(obj3, val6, Quaternion.LookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * baseDamage, 0f, flag3, (DamageColorIndex)0, (GameObject)null, -1f);
					}
					((EntityState)this).PlayAnimation("Gesture, Additive", "FireTwinShot", "TwinShot.playbackRate", duration, 0f);
				}
				if (((EntityState)this).fixedAge > startDuration + chargeDurationRB && !hasFiredRB)
				{
					hasFiredRB = true;
					if (Object.op_Implicit((Object)(object)chargeEffectRB))
					{
						EntityState.Destroy((Object)(object)chargeEffectRB);
					}
					Util.PlayAttackSpeedSound(SeekingBomb.spinDownSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					Util.PlayAttackSpeedSound(SeekingBomb.fireBombSoundString, ((EntityState)this).gameObject, 1f * base.attackSpeedStat);
					ChildLocator component4 = ((Component)((EntityState)this).GetModelTransform()).GetComponent<ChildLocator>();
					Transform val7 = component4.FindChild("MuzzleRB");
					bool flag4 = ((BaseState)this).RollCrit();
					if (((EntityState)this).isAuthority)
					{
						ProjectileManager instance4 = ProjectileManager.instance;
						GameObject obj4 = myProjectile;
						Vector3 position4 = val7.position;
						aimRay = ((BaseState)this).GetAimRay();
						Vector3 val8 = position4 + ((Ray)(ref aimRay)).direction * 4f;
						aimRay = ((BaseState)this).GetAimRay();
						instance4.FireProjectile(obj4, val8, Quaternion.LookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, base.damageStat * baseDamage, 0f, flag4, (DamageColorIndex)0, (GameObject)null, -1f);
					}
					((EntityState)this).PlayAnimation("Gesture, Additive", "FireTwinShot", "TwinShot.playbackRate", duration, 0f);
				}
				if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration && hasFiredLT && hasFiredRT && hasFiredLB && hasFiredRB)
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
			}

			public override void OnExit()
			{
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_000c: 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)
				CharacterGravityParameters gravityParameters = ((EntityState)this).characterMotor.gravityParameters;
				gravityParameters.channeledAntiGravityGranterCount--;
				((EntityState)this).characterMotor.gravityParameters = gravityParameters;
				if (Object.op_Implicit((Object)(object)chargeEffectLT))
				{
					EntityState.Destroy((Object)(object)chargeEffectLT);
				}
				if (Object.op_Implicit((Object)(object)chargeEffectRT))
				{
					EntityState.Destroy((Object)(object)chargeEffectRT);
				}
				if (Object.op_Implicit((Object)(object)chargeEffectLB))
				{
					EntityState.Destroy((Object)(object)chargeEffectLB);
				}
				if (Object.op_Implicit((Object)(object)chargeEffectRB))
				{
					EntityState.Destroy((Object)(object)chargeEffectRB);
				}
				((EntityState)this).OnExit();
			}

			public override InterruptPriority GetMinimumInterruptPriority()
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0005: Unknown result type (might be due to invalid IL or missing references)
				return (InterruptPriority)5;
			}
		}
	}
	internal class Survivors
	{
		internal static void Init()
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Expected O, but got Unknown
			//IL_0136: Expected O, but got Unknown
			//IL_014e: 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_0168: 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_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d6: 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_02f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0309: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0325: Unknown result type (might be due to invalid IL or missing references)
			//IL_032a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0341: Unknown result type (might be due to invalid IL or missing references)
			//IL_0346: Unknown result type (might be due to invalid IL or missing references)
			//IL_035d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0362: 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_037e: Unknown result type (might be due to invalid IL or missing references)
			//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_03b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_040e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0413: Unknown result type (might be due to invalid IL or missing references)
			//IL_043b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0454: Unknown result type (might be due to invalid IL or missing references)
			//IL_0459: 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_052f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0548: Unknown result type (might be due to invalid IL or missing references)
			//IL_054d: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0623: Unknown result type (might be due to invalid IL or missing references)
			//IL_063c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0641: Unknown result type (might be due to invalid IL or missing references)
			//IL_0699: Unknown result type (might be due to invalid IL or missing references)
			//IL_0711: Unknown result type (might be due to invalid IL or missing references)
			//IL_072a: Unknown result type (might be due to invalid IL or missing references)
			//IL_072f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0787: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0818: Unknown result type (might be due to invalid IL or missing references)
			//IL_081d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0875: Unknown result type (might be due to invalid IL or missing references)
			//IL_0929: Unknown result type (might be due to invalid IL or missing references)
			//IL_0933: Unknown result type (might be due to invalid IL or missing references)
			//IL_094f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0954: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = Tools.CreateBody("PlayerLunarGolem", "RoR2/Base/LunarGolem/LunarGolemBody.prefab");
			GameObject val2 = PrefabAPI.InstantiateClone(((Component)val.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "FubukiMods/PlayerLunarGolemDisplay");
			val2.transform.localScale = Vector3.one * 0.85f;
			val2.AddComponent<NetworkIdentity>();
			GameObject gameObject = ((Component)val.GetComponent<ModelLocator>().modelBaseTransform).gameObject;
			gameObject.transform.localScale = Vector3.one * 0.65f;
			gameObject.transform.Translate(new Vector3(0f, -0.2f, 0f));
			val.GetComponent<CharacterBody>().aimOriginTransform.Translate(new Vector3(0f, 0f, 0f));
			val.GetComponent<CharacterBody>().bodyFlags = (BodyFlags)48;
			KinematicCharacterMotor[] componentsInChildren = val.GetComponentsInChildren<KinematicCharacterMotor>();
			foreach (KinematicCharacterMotor val3 in componentsInChildren)
			{
				val3.SetCapsuleDimensions(val3.Capsule.radius * 0.4f, val3.Capsule.height * 0.4f, 0f);
			}
			CameraTargetParams component = val.GetComponent<CameraTargetParams>();
			CharacterCameraParams val4 = new CharacterCameraParams();
			CharacterCameraParams val5 = val4;
			component.cameraParams = val4;
			CharacterCameraParams val6 = val5;
			val6.data.idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 3f, -12f));
			val6.data.pivotVerticalOffset = BlendableFloat.op_Implicit(0f);
			val.GetComponent<Interactor>().maxInteractionDistance = 5f;
			val.GetComponent<SetStateOnHurt>().canBeHitStunned = false;
			CharacterBody component2 = val.GetComponent<CharacterBody>();
			component2.baseDamage = 12f;
			component2.levelDamage = component2.baseDamage * 0.2f;
			component2.baseCrit = 1f;
			component2.levelCrit = 0f;
			component2.baseMaxHealth = 200f;
			component2.levelMaxHealth = component2.baseMaxHealth * 0.3f;
			component2.baseMaxShield = 0f;
			component2.levelMaxShield = 0f;
			component2.baseArmor = 16f;
			component2.levelArmor = 0f;
			component2.baseRegen = 1f;
			component2.levelRegen = component2.baseRegen * 0.2f;
			component2.baseMoveSpeed = 9f;
			component2.levelMoveSpeed = 0f;
			component2.baseAcceleration = 80f;
			component2.baseJumpCount = 1;
			component2.baseJumpPower = 15f;
			component2.baseAttackSpeed = 1f;
			component2.sprintingSpeedMultiplier = 1.45f;
			component2.baseNameToken = "Lunar Golem Survivor";
			Color[] palette = (Color[])(object)new Color[16]
			{
				new Color(0f, 0f, 0f),
				new Color(0.2f, 0.3f, 0.75f),
				new Color(0.3f, 0.4f, 0.9f),
				new Color(0f, 0.6f, 0.7f),
				new Color(0.45f, 0.7f, 0.8f),
				new Color(0.7f, 0.85f, 0.92f),
				new Color(1f, 1f, 1f),
				new Color(0.25f, 0.3f, 0.4f),
				new Color(0.6f, 0.7f, 1f),
				new Color(0.5f, 0.5f, 0.7f),
				new Color(0.3f, 0.4f, 0.5f),
				new Color(0.15f, 0.2f, 0.25f),
				default(Color),
				default(Color),
				default(Color),
				new Color(0f, 0f, 0f, 0f)
			};
			component2.portraitIcon = (Texture)(object)Tools.SpriteFromString("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88888ffffffffffffffffffffffffff89a9998ffffffffffffffffffffffff8954a9b98ffffffffffffffff88fffff8964a9bb98fffffffffffff886688fff899999bbb98ff8888fffff855556688f8b9999bbbb8f8a99a88ff89999999b9888bbbbbbbb8f8969ba9888aaa999bb08988bbbbbbb8f8949bbba98a99999bb069b88bbbbbb8f899abbbbbb99999abb059bb88bbbbb08f888bbbbbb999995bb09bbb8889abb08f8888889ab999aa9bb09bb0999a9bbb88a99a8999b999999bb0bbb9aa99bbbb88969bba99ba9999abb00b0a6499bb0b88949bbbbb0baaaaaabb0b095499bbbb88a9abbbbbb0bbbbbbbb000b999abb0b8f800000bbb008ff00000088bbbbbb008ff8888000088ff8888008ff8800bb008ffffff8888fff899ab88fffff800088fffffffffffff8babbbb8ffffff888ffffffffffff8ff888888898f88fffffffffff88fff8688a9999b6ab8b08ff88f8f8f89b8f869866996b69abbba088ab8a8988aa88b998ba99b99aabbaaa8abb09a99889b8bb9b8b9ab9aabbba999bb099a99b8bb88bb908bb0babbba69999b09aa9bb88b88bbbb0808bbb8ba699999baabbbbb88f8aab88f8f8b88bba999998bbbbbb08fff8a08fffff8ff8bbb9999b8bbb088ffff8b08ffffffff8bbbbaabb88b", palette, Flipped: true).texture;
			ContentAddition.AddBody(val);
			bool flag = default(bool);
			ContentAddition.AddEntityState<Skills.LunarChargePrimary>(ref flag);
			SkillDef val7 = ScriptableObject.CreateInstance<SkillDef>();
			val7.activationState = new SerializableEntityStateType(typeof(Skills.LunarChargePrimary));
			val7.activationStateMachineName = "Weapon";
			val7.baseMaxStock = 1;
			val7.baseRechargeInterval = 1f;
			val7.beginSkillCooldownOnSkillEnd = true;
			val7.canceledFromSprinting = false;
			val7.cancelSprintingOnActivation = false;
			val7.dontAllowPastMaxStocks = false;
			val7.forceSprintDuringState = false;
			val7.fullRestockOnAssign = true;
			val7.interruptPriority = (InterruptPriority)1;
			val7.isCombatSkill = true;
			val7.mustKeyPress = false;
			val7.rechargeStock = val7.baseMaxStock;
			val7.requiredStock = 1;
			val7.stockToConsume = 0;
			val7.skillDescriptionToken = "Charged: Fire swaying soul rockets for <style=cIsDamage>4x250% damage over time</style> and have <style=cIsUtility>high knockback</style>.\r\nUncharged: Fire a barrage of 12 tracking shards that deal <style=cIsDamage>12x50% damage</style>.";
			val7.skillName = "LUNAR_CHARGE_PRIMARY";
			val7.skillNameToken = "Lunar Artillery (Charge)";
			val7.icon = Tools.SpriteFromString("7711177777777777217131711144477715271311444444771257713313345547177777111135654711177777771555774172777177777777417721772777777741171527721777774417725771527777444177177725777755541772777777776665417721777777666651771527717766665177725777276666517777777772", palette);
			Tools.AddSkill(val, val7);
			ContentAddition.AddEntityState<Skills.LunarSprintPrimary>(ref flag);
			SkillDef val8 = ScriptableObject.CreateInstance<SkillDef>();
			val8.activationState = new SerializableEntityStateType(typeof(Skills.LunarSprintPrimary));
			val8.activationStateMachineName = "Weapon";
			val8.baseMaxStock = 1;
			val8.baseRechargeInterval = 1f;
			val8.beginSkillCooldownOnSkillEnd = true;
			val8.canceledFromSprinting = false;
			val8.cancelSprintingOnActivation = false;
			val8.dontAllowPastMaxStocks = false;
			val8.forceSprintDuringState = false;
			val8.fullRestockOnAssign = true;
			val8.interruptPriority = (InterruptPriority)1;
			val8.isCombatSkill = true;
			val8.mustKeyPress = false;
			val8.rechargeStock = val8.baseMaxStock;
			val8.requiredStock = 1;
			val8.stockToConsume = 0;
			val8.skillDescriptionToken = "Default: Fire swaying soul rockets for <style=cIsDamage>4x250% damage over time</style> and have <style=cIsUtility>high knockback</style>.\r\nSprinting: Fire a barrage of 12 tracking shards that deal <style=cIsDamage>12x50% damage</style>.";
			val8.skillName = "LUNAR_SPRINT_PRIMARY";
			val8.skillNameToken = "Lunar Artillery (Mobile)";
			val8.icon = Tools.SpriteFromString("7711177777777777217131711144477715271311444444771257713313345547177777111135654711177777771555774172777177777777417721772777777741171527721777774417725771527777444177177725777755541772777777776665417721777777666651771527717766665177725777276666517777777772", palette);
			Tools.AddSkill(val, val8, "primary", 1);
			ContentAddition.AddEntityState<Skills.LunarGolemSecondary>(ref flag);
			SkillDef val9 = ScriptableObject.CreateInstance<SkillDef>();
			val9.activationState = new SerializableEntityStateType(typeof(Skills.LunarGolemSecondary));
			val9.activationStateMachineName = "Weapon";
			val9.baseMaxStock = 1;
			val9.baseRechargeInterval = 8f;
			val9.beginSkillCooldownOnSkillEnd = true;
			val9.canceledFromSprinting = false;
			val9.cancelSprintingOnActivation = false;
			val9.dontAllowPastMaxStocks = false;
			val9.forceSprintDuringState = false;
			val9.fullRestockOnAssign = true;
			val9.interruptPriority = (InterruptPriority)2;
			val9.isCombatSkill = true;
			val9.mustKeyPress = false;
			val9.rechargeStock = 1;
			val9.requiredStock = 1;
			val9.stockToConsume = 1;
			val9.skillDescriptionToken = "Leap into the air, and upon landing, crush any vermin beneath you for <style=cIsDamage>1200% damage</style>. <style=cIsUtility>Stuns</style> those who are hit by the impact.";
			val9.skillName = "LUNAR_GOLEM_SECONDARY";
			val9.skillNameToken = "Crush";
			val9.icon = Tools.SpriteFromString("0072700070007270072320007000727066642070756072276666557056667366666555702567236666655070270726666665502727072666665257373277366666225767327736666656223732274665656663424227466555666642432766656556666343276665665566666422665566655666662666556644556666266655", palette);
			Tools.AddSkill(val, val9, "secondary");
			ContentAddition.AddEntityState<Skills.LunarGolemUtility>(ref flag);
			SkillDef val10 = ScriptableObject.CreateInstance<SkillDef>();
			val10.activationState = new SerializableEntityStateType(typeof(Skills.LunarGolemUtility));
			val10.activationStateMachineName = "Weapon";
			val10.baseMaxStock = 2;
			val10.baseRechargeInterval = 2.5f;
			val10.beginSkillCooldownOnSkillEnd = true;
			val10.canceledFromSprinting = false;
			val10.cancelSprintingOnActivation = false;
			val10.dontAllowPastMaxStocks = false;
			val10.forceSprintDuringState = true;
			val10.fullRestockOnAssign = true;
			val10.interruptPriority = (InterruptPriority)2;
			val10.isCombatSkill = false;
			val10.mustKeyPress = true;
			val10.rechargeStock = 1;
			val10.requiredStock = 1;
			val10.stockToConsume = 1;
			val10.skillDescriptionToken = "Take advantage of chimera's lightweight frame and <style=cIsUtility>dash</style> in <style=cIsUtility>any direction</style>.";
			val10.skillName = "LUNAR_GOLEM_UTILITY";
			val10.skillNameToken = "Speed";
			val10.icon = Tools.SpriteFromString("7777777777777777777755666277777777755772566777777755577772562777757527777725627727775577777755277777652725777557777577775657725277277775655777557777725675277725777725772257777577725772577527257725772577525555725777777777255777775777777775777775777777775777", palette);
			Tools.AddSkill(val, val10, "utility");
			ContentAddition.AddEntityState<Skills.LunarGolemSpecial>(ref flag);
			SkillDef val11 = ScriptableObject.CreateInstance<SkillDef>();
			val11.activationState = new SerializableEntityStateType(typeof(Skills.LunarGolemSpecial));
			val11.activationStateMachineName = "Weapon";
			val11.baseMaxStock = 1;
			val11.baseRechargeInterval = 18f;
			val11.beginSkillCooldownOnSkillEnd = true;
			val11.canceledFromSprinting = false;
			val11.cancelSprintingOnActivation = true;
			val11.dontAllowPastMaxStocks = false;
			val11.forceSprintDuringState = true;
			val11.fullRestockOnAssign = true;
			val11.interruptPriority = (InterruptPriority)2;
			val11.isCombatSkill = true;
			val11.mustKeyPress = false;
			val11.rechargeStock = val11.baseMaxStock;
			val11.requiredStock = 1;
			val11.stockToConsume = 1;
			val11.skillDescriptionToken = "Hover in the air while charging 4 energy orbs that deal <style=cIsDamage>4x200% damage</style>. Creates a pillar of light upon impact that <style=cIsUtility>weakens</style> and <style=cIsUtility>slows</style>, each pillar dealing <style=cIsDamage>3x50% damage per second</style>.";
			val11.skillName = "LUNAR_GOLEM_SPECIAL";
			val11.skillNameToken = "Violent Creation";
			val11.icon = Tools.SpriteFromString("1112232262210000011123522656107700052245246513770050122644644137006031364556543710065334555555471077773465566551417775745566665163177754556666514443777745566517655437733455537756554777713317775665517777777777666653777777777766665377777777775665317777777777", palette);
			Tools.AddSkill(val, val11, "special");
			SurvivorDef val12 = ScriptableObject.CreateInstance<SurvivorDef>();
			val12.bodyPrefab = val;
			val12.descriptionToken = "Lunar Chimera (Golem Form) is a loyal stone crab. <style=cSub>\r\n\r\n < ! > Tips go here." + Environment.NewLine;
			val12.displayPrefab = val2;
			val12.displayPrefab.transform.localScale = Vector3.one * 0.3f;
			val12.primaryColor = new Color(0.55f, 0.7f, 0.8f);
			val12.desiredSortPosition = 44.44f;
			val12.displayNameToken = "Lunar Chimera (Golem Form)";
			ContentAddition.AddSurvivorDef(val12);
		}
	}
	internal static class Tools
	{
		internal static int Hex2Num(string hex)
		{
			int result = 0;
			hex = hex.ToUpper();
			switch (hex)
			{
			case "1":
				result = 1;
				break;
			case "2":
				result = 2;
				break;
			case "3":
				result = 3;
				break;
			case "4":
				result = 4;
				break;
			case "5":
				result = 5;
				break;
			case "6":
				result = 6;
				break;
			case "7":
				result = 7;
				break;
			case "8":
				result = 8;
				break;
			case "9":
				result = 9;
				break;
			case "A":
				result = 10;
				break;
			case "B":
				result = 11;
				break;
			case "C":
				result = 12;
				break;
			case "D":
				result = 13;
				break;
			case "E":
				result = 14;
				break;
			case "F":
				result = 15;
				break;
			}
			return result;
		}

		internal static string Num2Hex(int num)
		{
			string result = "0";
			switch (num)
			{
			case 1:
				result = "1";
				break;
			case 2:
				result = "2";
				break;
			case 3:
				result = "3";
				break;
			case 4:
				result = "4";
				break;
			case 5:
				result = "5";
				break;
			case 6:
				result = "6";
				break;
			case 7:
				result = "7";
				break;
			case 8:
				result = "8";
				break;
			case 9:
				result = "9";
				break;
			case 10:
				result = "A";
				break;
			case 11:
				result = "B";
				break;
			case 12:
				result = "C";
				break;
			case 13:
				result = "D";
				break;
			case 14:
				result = "E";
				break;
			case 15:
				result = "F";
				break;
			}
			return result;
		}

		public static Sprite SpriteFromString(string texture, Color[] palette, bool Flipped = false)
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			int num = (int)Math.Floor(Math.Pow(texture.Length, 0.5));
			Texture2D val = new Texture2D(num, num, (TextureFormat)4, false);
			((Texture)val).filterMode = (FilterMode)0;
			((Texture)val).wrapMode = (TextureWrapMode)1;
			int num2 = 0;
			int i = 0;
			int num3 = 0;
			for (; i < num; i++)
			{
				for (num2 = 0; num2 < num; num2++)
				{
					if (!Flipped)
					{
						val.SetPixel(num - 1 - num2, i, palette[Hex2Num(texture.Substring(num3, 1))]);
					}
					else
					{
						val.SetPixel(num2, num - 1 - i, palette[Hex2Num(texture.Substring(num3, 1))]);
					}
					num3++;
				}
			}
			val.Apply();
			return Sprite.Create(val, new Rect((float)num, (float)num, (float)(-num), (float)(-num)), new Vector2((float)num * 0.5f, (float)num * 0.5f), (floa