Decompiled source of SeekerEnemiesTweaks v1.0.3

SeekerEnemiesTweaks.dll

Decompiled 2 weeks 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.Logging;
using EntityStates;
using EntityStates.Halcyonite;
using EntityStates.Scorchling;
using HG;
using HG.GeneralSerializer;
using IL.RoR2;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On;
using On.EntityStates.Halcyonite;
using On.EntityStates.Scorchling;
using On.RoR2;
using R2API;
using RoR2;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2BepInExPack.GameAssetPaths.Version_1_39_0;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.ResourceManagement.AsyncOperations;

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

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace SeekerEnemiesTweaks
{
	internal static class Log
	{
		private static ManualLogSource _logSource;

		internal static void Init(ManualLogSource logSource)
		{
			_logSource = logSource;
		}

		internal static void Debug(object data)
		{
			_logSource.LogDebug(data);
		}

		internal static void Error(object data)
		{
			_logSource.LogError(data);
		}

		internal static void Fatal(object data)
		{
			_logSource.LogFatal(data);
		}

		internal static void Info(object data)
		{
			_logSource.LogInfo(data);
		}

		internal static void Message(object data)
		{
			_logSource.LogMessage(data);
		}

		internal static void Warning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
	[BepInPlugin("CrypticAuthor.SeekerEnemiesTweaks", "SeekerEnemiesTweaks", "1.0.3")]
	public class SeekerEnemiesTweaks : BaseUnityPlugin
	{
		public class LavaBombChange : BaseState
		{
			public float breachToSpitTime = 1f;

			public float spitToLaunchTime = 1f;

			public float spitToBurrowTime = 1.5f;

			public float burrowToEndOfTime = 1f;

			public float animDurationBreach;

			public float animDurationSpit = 1f;

			public float animDurationBurrow = 1f;

			public float animDurationPostSpit = 1f;

			public float percentageToFireProjectile = 0.33f;

			public float burrowRadius = 2f;

			public static int mortarCount;

			public static float mortarDamageCoefficient = 1f;

			public static float minimumDistance = 15f;

			public static float timeToTarget = 1.2f;

			public static float projectileVelocity = 50f;

			private bool spitStarted;

			private bool firedProjectile;

			private bool earlyExit;

			public string spitSoundString;

			public GameObject burrowEffectPrefab;

			private ScorchlingController sController;

			private CharacterBody target;

			public override void OnEnter()
			{
				((BaseState)this).OnEnter();
				sController = ((Component)((EntityState)this).characterBody).GetComponent<ScorchlingController>();
				animDurationBreach = (sController.isBurrowed ? animDurationBreach : 0f);
				spitToBurrowTime += animDurationBreach + animDurationSpit;
				burrowToEndOfTime += spitToBurrowTime;
				Target currentEnemy = ((Component)((EntityState)this).characterBody.master).GetComponent<BaseAI>().currentEnemy;
				target = ((currentEnemy != null) ? currentEnemy.characterBody : null);
				if (sController.isBurrowed)
				{
					earlyExit = true;
				}
				else
				{
					((EntityState)this).characterBody.SetAimTimer(burrowToEndOfTime);
				}
			}

			public override void FixedUpdate()
			{
				((EntityState)this).FixedUpdate();
				if (earlyExit)
				{
					return;
				}
				if (!spitStarted && ((EntityState)this).fixedAge > animDurationBreach)
				{
					spitStarted = true;
					((EntityState)this).PlayAnimation("FullBody, Override", "Spit", "Spit.playbackRate", animDurationSpit, 0f);
				}
				if (spitStarted && !firedProjectile && ((EntityState)this).fixedAge > animDurationSpit * percentageToFireProjectile + animDurationBreach)
				{
					firedProjectile = true;
					Util.PlaySound(spitSoundString, ((EntityState)this).gameObject);
					EffectManager.SimpleMuzzleFlash(ScorchlingLavaBomb.mortarMuzzleflashEffect, ((EntityState)this).gameObject, "MuzzleFire", false);
					if (((EntityState)this).isAuthority)
					{
						Spit();
					}
				}
				if (firedProjectile && !(((EntityState)this).fixedAge <= animDurationBreach + animDurationSpit + animDurationPostSpit))
				{
					((EntityState)this).outer.SetNextStateToMain();
				}
			}

			public void Spit()
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				//IL_000a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				//IL_0072: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0089: Expected O, but got Unknown
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b3: Expected O, but got Unknown
				//IL_00b5: 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_00ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: 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_00cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
				//IL_0105: Unknown result type (might be due to invalid IL or missing references)
				//IL_010f: Expected O, but got Unknown
				//IL_009b: 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_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_0140: Unknown result type (might be due to invalid IL or missing references)
				//IL_0142: Unknown result type (might be due to invalid IL or missing references)
				//IL_0146: Unknown result type (might be due to invalid IL or missing references)
				//IL_014b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0212: Unknown result type (might be due to invalid IL or missing references)
				//IL_0214: Unknown result type (might be due to invalid IL or missing references)
				//IL_0218: 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_0222: 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_0165: Unknown result type (might be due to invalid IL or missing references)
				//IL_0167: Unknown result type (might be due to invalid IL or missing references)
				//IL_0169: Unknown result type (might be due to invalid IL or missing references)
				//IL_016d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0172: Unknown result type (might be due to invalid IL or missing references)
				//IL_0177: 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_0182: Unknown result type (might be due to invalid IL or missing references)
				//IL_018e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0190: Unknown result type (might be due to invalid IL or missing references)
				//IL_019b: Unknown result type (might be due to invalid IL or missing references)
				//IL_019f: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c5: 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_01eb: 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_01fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0209: Unknown result type (might be due to invalid IL or missing references)
				LayerIndex val = LayerIndex.world;
				int num = LayerMask.op_Implicit(((LayerIndex)(ref val)).mask);
				val = LayerIndex.entityPrecise;
				int num2 = num | LayerMask.op_Implicit(((LayerIndex)(ref val)).mask);
				Transform val2 = ((Component)((EntityState)this).characterBody.modelLocator.modelTransform).GetComponent<ChildLocator>().FindChild("MuzzleFire");
				Ray val3 = default(Ray);
				((Ray)(ref val3))..ctor(val2.position, val2.forward);
				Ray val4 = default(Ray);
				((Ray)(ref val4))..ctor(((Ray)(ref val3)).origin, Vector3.up);
				bool flag = false;
				Vector3 val5 = Vector3.zero;
				Ray val7;
				if (Object.op_Implicit((Object)target))
				{
					val5 = target.transform.position;
					flag = true;
				}
				else
				{
					BullseyeSearch val6 = new BullseyeSearch();
					val7 = val3;
					val6.searchOrigin = ((Ray)(ref val7)).origin;
					val7 = val3;
					val6.searchDirection = ((Ray)(ref val7)).direction;
					val6.filterByLoS = false;
					val6.sortMode = (SortMode)2;
					val6.RefreshCandidates();
					HurtBox val8 = val6.GetResults().FirstOrDefault();
					RaycastHit val9 = default(RaycastHit);
					RaycastHit val10 = default(RaycastHit);
					if (Object.op_Implicit((Object)val8))
					{
						val5 = ((Component)val8).transform.position;
						flag = true;
					}
					else if (Physics.Raycast(val3, ref val10, 1000f, num2, (QueryTriggerInteraction)1))
					{
						RaycastHit val11 = val9;
						val5 = ((RaycastHit)(ref val11)).point;
						flag = true;
					}
				}
				float magnitude = projectileVelocity;
				if (flag)
				{
					Vector3 val12 = val5;
					val7 = val4;
					Vector3 val13 = val12 - ((Ray)(ref val7)).origin;
					Vector2 val14 = default(Vector2);
					((Vector2)(ref val14))..ctor(val13.x, val13.z);
					Vector2 val15 = val14;
					float magnitude2 = ((Vector2)(ref val15)).magnitude;
					Vector2 val16 = val14 / magnitude2;
					if ((double)magnitude2 < (double)minimumDistance)
					{
						magnitude2 = minimumDistance;
					}
					float num3 = Trajectory.CalculateInitialYSpeed(timeToTarget, val13.y);
					float num4 = magnitude2 / timeToTarget;
					Vector3 val17 = default(Vector3);
					((Vector3)(ref val17))..ctor(val16.x * num4, num3, val16.y * num4);
					Vector3 val18 = val17;
					magnitude = ((Vector3)(ref val18)).magnitude;
					((Ray)(ref val4)).direction = val17;
				}
				val7 = val4;
				Quaternion val19 = Util.QuaternionSafeLookRotation(((Ray)(ref val7)).direction);
				ProjectileManager.instance.FireProjectileWithoutDamageType(ScorchlingLavaBomb.mortarProjectilePrefab, ((Ray)(ref val4)).origin, val19, ((EntityState)this).gameObject, base.damageStat * mortarDamageCoefficient, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, magnitude);
			}

			public override void OnExit()
			{
				((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 TimedBurrow : BaseState
		{
			public string burrowSoundString = "Play_scorchling_burrow";

			public string burrowLoopSoundString = "Play_scorchling_burrow_loop";

			public string burrowStopLoopSoundString = "Stop_scorchling_burrow_loop";

			private bool waitingForBurrow;

			public float burrowRadius = 1f;

			public float animDurationBurrow = 1f;

			public float burrowAnimationDuration = 1f;

			public float teleportDelay = 2f;

			public float burrowDuration = 4f;

			public float timer = 0f;

			public GameObject burrowEffectPrefab;

			private ScorchlingController sController;

			public override void OnEnter()
			{
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: 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_0082: Expected O, but got Unknown
				//IL_00db: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
				((BaseState)this).OnEnter();
				sController = ((Component)((EntityState)this).characterBody).GetComponent<ScorchlingController>();
				if (!sController.isBurrowed)
				{
					Util.PlaySound(burrowSoundString, ((EntityState)this).gameObject);
					Util.PlaySound(burrowLoopSoundString, ((EntityState)this).gameObject);
					EffectManager.SpawnEffect(burrowEffectPrefab, new EffectData
					{
						origin = ((EntityState)this).characterBody.footPosition,
						scale = burrowRadius
					}, true);
					((EntityState)this).PlayAnimation("FullBody, Override", "Burrow", "Burrow.playbackRate", animDurationBurrow, 0f);
					if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor))
					{
						((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = 0f;
					}
					if (Object.op_Implicit((Object)(object)((EntityState)this).rigidbodyMotor))
					{
						((EntityState)this).rigidbodyMotor.moveVector = Vector3.zero;
					}
					if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
					{
						((EntityState)this).characterBody.isSprinting = false;
					}
					waitingForBurrow = true;
				}
			}

			public override void FixedUpdate()
			{
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_0032: Expected O, but got Unknown
				((EntityState)this).FixedUpdate();
				HandleWaitForBurrow();
				if (((EntityState)this).fixedAge > burrowDuration)
				{
					((EntityState)this).outer.SetState((EntityState)new ScorchlingBreach());
				}
			}

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

			private void HandleWaitForBurrow()
			{
				if (waitingForBurrow && !((double)((EntityState)this).fixedAge <= (double)burrowAnimationDuration))
				{
					sController.Burrow();
					waitingForBurrow = false;
				}
			}

			public override InterruptPriority GetMinimumInterruptPriority()
			{
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				if (waitingForBurrow)
				{
					return (InterruptPriority)7;
				}
				return (InterruptPriority)3;
			}
		}

		public class StunDuration : MonoBehaviour
		{
			private EntityStateMachine _bodyStateMachine;

			private EntityStateMachine _weaponStateMachine;

			public const float maxStunCooldown = 5f;

			public float stunCooldown;

			private bool stunned;

			protected virtual void Awake()
			{
				FixedUpdate();
				EntityStateMachine[] components = ((Component)this).GetComponents<EntityStateMachine>();
				EntityStateMachine[] array = components;
				foreach (EntityStateMachine val in array)
				{
					if (val.customName == "Body")
					{
						_bodyStateMachine = val;
					}
					if (val.customName == "Weapon")
					{
						_weaponStateMachine = val;
					}
				}
			}

			private void FixedUpdate()
			{
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Expected O, but got Unknown
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				//IL_0080: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: Unknown result type (might be due to invalid IL or missing references)
				//IL_0088: Unknown result type (might be due to invalid IL or missing references)
				if (!Object.op_Implicit((Object)(object)_weaponStateMachine))
				{
					return;
				}
				RaycastHit val = default(RaycastHit);
				if (!(_weaponStateMachine.state is WhirlwindWarmUp) && !(_weaponStateMachine.state is WhirlWindPersuitCycle) && !(_weaponStateMachine.nextState is WhirlwindWarmUp) && !(_weaponStateMachine.nextState is WhirlWindPersuitCycle))
				{
					Vector3 position = ((Component)this).transform.position;
					Vector3 down = Vector3.down;
					LayerIndex world = LayerIndex.world;
					if (!Physics.Raycast(position, down, ref val, 50f, LayerMask.op_Implicit(((LayerIndex)(ref world)).mask), (QueryTriggerInteraction)1) && _bodyStateMachine.CanInterruptState((InterruptPriority)6))
					{
						_weaponStateMachine.SetInterruptState((EntityState)new WhirlwindWarmUp(), (InterruptPriority)6);
					}
				}
				if (_bodyStateMachine.state is StunState)
				{
					stunned = true;
				}
				else
				{
					if (stunned)
					{
						stunCooldown = 5f;
						SetStateOnHurt val2 = null;
						if (((Component)this).TryGetComponent<SetStateOnHurt>(ref val2))
						{
							val2.canBeStunned = false;
						}
					}
					stunned = false;
				}
				if (!(_weaponStateMachine.state is WhirlwindWarmUp) || _weaponStateMachine.state is WhirlWindPersuitCycle || _weaponStateMachine.nextState is WhirlwindWarmUp || _weaponStateMachine.nextState is WhirlWindPersuitCycle)
				{
					SetStateOnHurt val3 = null;
					if (stunCooldown > 0f && stunCooldown - Time.fixedDeltaTime <= 0f && ((Component)this).TryGetComponent<SetStateOnHurt>(ref val3))
					{
						val3.canBeStunned = true;
					}
					stunCooldown -= Time.fixedDeltaTime;
				}
			}
		}

		public class ScorchlingGrounding : MonoBehaviour
		{
			public float down = 100f;

			public CharacterMotor body;

			public void FixedUpdate()
			{
				CharacterMotor component = ((Component)this).GetComponent<CharacterMotor>();
				if ((Object)(object)component != (Object)null)
				{
					component.gravityScale = down;
					component.velocity.y -= component.gravityScale * Time.deltaTime;
				}
			}
		}

		[CompilerGenerated]
		private static class <>O
		{
			public static hook_RegisterTeleport <0>__DisableInvincibility;

			public static hook_Burrow <1>__Burrow;

			public static hook_OnEnter <2>__OnEnter;

			public static hook_OnEnter <3>__WhirlwindWarmUp_OnEnter;

			public static hook_OnExit <4>__WhirlwindWarmUp_OnExit;

			public static hook_OnEnter <5>__WhirlWindPersuitCycle_OnEnter;

			public static hook_OnExit <6>__WhirlWindPersuitCycle_OnExit;

			public static hook_UpdateLand <7>__WhirlWindPersuitCycle_UpdateLand;
		}

		public const string PluginGUID = "CrypticAuthor.SeekerEnemiesTweaks";

		public const string PluginAuthor = "CrypticAuthor";

		public const string PluginName = "SeekerEnemiesTweaks";

		public const string PluginVersion = "1.0.3";

		public GameObject scorchlingBody = Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC2_Scorchling.ScorchlingBody_prefab).WaitForCompletion();

		public GameObject childBody = Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC2_Child.ChildBody_prefab).WaitForCompletion();

		public GameObject halcyoniteBody = Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC2_Halcyonite.HalcyoniteBody_prefab).WaitForCompletion();

		private SpawnCard childCredit = Addressables.LoadAssetAsync<SpawnCard>((object)RoR2_DLC2_Child.cscChild_asset).WaitForCompletion();

		private SpawnCard scorchlingCredit = Addressables.LoadAssetAsync<SpawnCard>((object)RoR2_DLC2_Scorchling.cscScorchling_asset).WaitForCompletion();

		public static bool TryModifyFieldValue<T>(EntityStateConfiguration entityStateConfiguration, string fieldName, T value)
		{
			ref SerializedField orCreateField = ref ((SerializedFieldCollection)(ref entityStateConfiguration.serializedFieldsCollection)).GetOrCreateField(fieldName);
			Type typeFromHandle = typeof(T);
			if (Object.op_Implicit(orCreateField.fieldValue.objectValue) && ((object)orCreateField.fieldValue.objectValue).GetType().IsAssignableFrom(typeFromHandle))
			{
				ref Object objectValue = ref orCreateField.fieldValue.objectValue;
				object obj = value;
				objectValue = (Object)((obj is Object) ? obj : null);
				return true;
			}
			if (orCreateField.fieldValue.stringValue != null && StringSerializer.CanSerializeType(typeFromHandle))
			{
				orCreateField.fieldValue.stringValue = StringSerializer.Serialize(typeFromHandle, (object)value);
				return true;
			}
			return false;
		}

		public void Awake()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Expected O, but got Unknown
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Expected O, but got Unknown
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Expected O, but got Unknown
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Expected O, but got Unknown
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Expected O, but got Unknown
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Expected O, but got Unknown
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Expected O, but got Unknown
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Expected O, but got Unknown
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Expected O, but got Unknown
			//IL_020e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0213: Unknown result type (might be due to invalid IL or missing references)
			//IL_0222: 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_02ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_034a: Unknown result type (might be due to invalid IL or missing references)
			//IL_034f: Unknown result type (might be due to invalid IL or missing references)
			//IL_035f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_0374: Unknown result type (might be due to invalid IL or missing references)
			//IL_0379: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_038e: Unknown result type (might be due to invalid IL or missing references)
			//IL_039e: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0425: Unknown result type (might be due to invalid IL or missing references)
			//IL_042a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0462: Unknown result type (might be due to invalid IL or missing references)
			//IL_0467: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			ContentAddition.AddEntityState<TimedBurrow>(ref flag);
			ContentAddition.AddEntityState<LavaBombChange>(ref flag);
			GameObject val = Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC2_Scorchling.ScorchlingBody_prefab).WaitForCompletion();
			val.AddComponent<ScorchlingGrounding>();
			LavaBombGhost();
			LavaBombProj();
			LavaBombSkill();
			FrolicSkill();
			SparkSkill();
			BurrowSkill();
			HalcyoniteAttacks();
			ScorchlingMaster();
			ChildMaster();
			HalcyoniteMaster();
			object obj = <>O.<0>__DisableInvincibility;
			if (obj == null)
			{
				hook_RegisterTeleport val2 = DisableInvincibility;
				<>O.<0>__DisableInvincibility = val2;
				obj = (object)val2;
			}
			ChildMonsterController.RegisterTeleport += (hook_RegisterTeleport)obj;
			object obj2 = <>O.<1>__Burrow;
			if (obj2 == null)
			{
				hook_Burrow val3 = Burrow;
				<>O.<1>__Burrow = val3;
				obj2 = (object)val3;
			}
			ScorchlingController.Burrow += (hook_Burrow)obj2;
			object obj3 = <>O.<2>__OnEnter;
			if (obj3 == null)
			{
				hook_OnEnter val4 = OnEnter;
				<>O.<2>__OnEnter = val4;
				obj3 = (object)val4;
			}
			ScorchlingBreach.OnEnter += (hook_OnEnter)obj3;
			TriLaser.FireTriLaser += new hook_FireTriLaser(TriLaserMinDistance);
			object obj4 = <>O.<3>__WhirlwindWarmUp_OnEnter;
			if (obj4 == null)
			{
				hook_OnEnter val5 = WhirlwindWarmUp_OnEnter;
				<>O.<3>__WhirlwindWarmUp_OnEnter = val5;
				obj4 = (object)val5;
			}
			WhirlwindWarmUp.OnEnter += (hook_OnEnter)obj4;
			object obj5 = <>O.<4>__WhirlwindWarmUp_OnExit;
			if (obj5 == null)
			{
				hook_OnExit val6 = WhirlwindWarmUp_OnExit;
				<>O.<4>__WhirlwindWarmUp_OnExit = val6;
				obj5 = (object)val6;
			}
			WhirlwindWarmUp.OnExit += (hook_OnExit)obj5;
			object obj6 = <>O.<5>__WhirlWindPersuitCycle_OnEnter;
			if (obj6 == null)
			{
				hook_OnEnter val7 = WhirlWindPersuitCycle_OnEnter;
				<>O.<5>__WhirlWindPersuitCycle_OnEnter = val7;
				obj6 = (object)val7;
			}
			WhirlWindPersuitCycle.OnEnter += (hook_OnEnter)obj6;
			object obj7 = <>O.<6>__WhirlWindPersuitCycle_OnExit;
			if (obj7 == null)
			{
				hook_OnExit val8 = WhirlWindPersuitCycle_OnExit;
				<>O.<6>__WhirlWindPersuitCycle_OnExit = val8;
				obj7 = (object)val8;
			}
			WhirlWindPersuitCycle.OnExit += (hook_OnExit)obj7;
			object obj8 = <>O.<7>__WhirlWindPersuitCycle_UpdateLand;
			if (obj8 == null)
			{
				hook_UpdateLand val9 = WhirlWindPersuitCycle_UpdateLand;
				<>O.<7>__WhirlWindPersuitCycle_UpdateLand = val9;
				obj8 = (object)val9;
			}
			WhirlWindPersuitCycle.UpdateLand += (hook_UpdateLand)obj8;
			HalcyoniteShrineInteractable.DrainConditionMet += new Manipulator(HalcyoniteShrineInteractable_DrainConditionMet);
			scorchlingCredit.directorCreditCost = 55;
			CharacterBody val10 = default(CharacterBody);
			if (Object.op_Implicit((Object)(object)scorchlingBody) && scorchlingBody.TryGetComponent<CharacterBody>(ref val10))
			{
				val10.baseMoveSpeed = 35f;
				val10.baseMaxHealth = 400f;
				val10.levelMaxHealth = 100f;
				val10.levelDamage = 3f;
				val10.baseAcceleration = 180f;
			}
			EntityStateConfiguration entityStateConfiguration = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Scorchling.EntityStates_Scorchling_Breach_asset).WaitForCompletion();
			EntityStateConfiguration entityStateConfiguration2 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Scorchling.EntityStates_Scorchling_LavaBomb_asset).WaitForCompletion();
			TryModifyFieldValue(entityStateConfiguration2, "mortarDamageCoefficient", 1.2f);
			TryModifyFieldValue(entityStateConfiguration, "blastDamageCoefficient", 2);
			TryModifyFieldValue(entityStateConfiguration, "blastRadius", 9f);
			TryModifyFieldValue(entityStateConfiguration, "blastForce", 50f);
			childCredit.directorCreditCost = 40;
			CharacterBody val11 = default(CharacterBody);
			if (Object.op_Implicit((Object)(object)childBody) && childBody.TryGetComponent<CharacterBody>(ref val11))
			{
				val11.baseMoveSpeed = 13f;
				val11.baseMaxHealth = 210f;
				val11.levelMaxHealth = 52f;
			}
			EntityStateConfiguration entityStateConfiguration3 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Child.EntityStates_ChildMonster_FireTrackingSparkBall_asset).WaitForCompletion();
			EntityStateConfiguration entityStateConfiguration4 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Child.EntityStates_ChildMonster_ChargeTrackingSparkBall_asset).WaitForCompletion();
			TryModifyFieldValue(entityStateConfiguration3, "bombDamageCoefficient", 4);
			TryModifyFieldValue(entityStateConfiguration4, "baseDuration", 1.7f);
			CharacterBody val12 = default(CharacterBody);
			if (Object.op_Implicit((Object)(object)halcyoniteBody) && halcyoniteBody.TryGetComponent<CharacterBody>(ref val12))
			{
				val12.acceleration = 22f;
			}
			EntityStateConfiguration entityStateConfiguration5 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_TriLaser_asset).WaitForCompletion();
			EntityStateConfiguration entityStateConfiguration6 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_ChargeTriLaser_asset).WaitForCompletion();
			EntityStateConfiguration entityStateConfiguration7 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_WhirlwindPersuitCycle_asset).WaitForCompletion();
			EntityStateConfiguration entityStateConfiguration8 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_GoldenSwipe_asset).WaitForCompletion();
			EntityStateConfiguration entityStateConfiguration9 = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)RoR2_DLC2_Halcyonite.EntityStates_HalcyoniteMonster_GoldenSlash_asset).WaitForCompletion();
			TryModifyFieldValue(entityStateConfiguration5, "blastRadius", 3f);
			TryModifyFieldValue(entityStateConfiguration6, "baseDuration", 2f);
			TryModifyFieldValue(entityStateConfiguration7, "dashSpeedCoefficient", 33f);
			TryModifyFieldValue(entityStateConfiguration7, "attackRadius", 9.4f);
			TryModifyFieldValue(entityStateConfiguration8, "baseDuration", 1.4f);
			TryModifyFieldValue(entityStateConfiguration9, "baseDuration", 1.3f);
			AsyncOperationHandle<GameObject> val13 = AssetAsyncReferenceManager<GameObject>.LoadAsset(new AssetReferenceT<GameObject>(RoR2_DLC2_Halcyonite.HalcyoniteBody_prefab), (AsyncReferenceHandleUnloadType)2);
			val13.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				//IL_0063: 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)
				ModelLocator val16 = default(ModelLocator);
				if (x.Result.TryGetComponent<ModelLocator>(ref val16) && Object.op_Implicit((Object)(object)val16.modelTransform))
				{
					Transform val17 = val16.modelTransform.Find("HitboxGoldenSlash");
					Transform val18 = val16.modelTransform.Find("HitboxGoldenSwipe");
					if (Object.op_Implicit((Object)(object)val17))
					{
						val17.localScale = new Vector3(15f, 0.5f, 11f);
					}
					if (Object.op_Implicit((Object)(object)val18))
					{
						val18.localScale = new Vector3(2f, 6f, 13f);
					}
				}
			};
			AssetReferenceT<GameObject> val14 = new AssetReferenceT<GameObject>(RoR2_DLC2_Halcyonite.HalcyoniteBody_prefab);
			AsyncOperationHandle<GameObject> val15 = AssetAsyncReferenceManager<GameObject>.LoadAsset(val14, (AsyncReferenceHandleUnloadType)2);
			val15.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				UnityObjectExtensions.EnsureComponent<StunDuration>(x.Result);
			};
		}

		private static void WhirlwindWarmUp_OnEnter(orig_OnEnter orig, WhirlwindWarmUp self)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Expected O, but got Unknown
			orig.Invoke(self);
			SetStunnable((EntityState)self, stunnable: false);
		}

		private static void WhirlwindWarmUp_OnExit(orig_OnExit orig, WhirlwindWarmUp self)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Expected O, but got Unknown
			orig.Invoke(self);
			SetStunnable((EntityState)self, stunnable: true);
		}

		private static void WhirlWindPersuitCycle_OnEnter(orig_OnEnter orig, WhirlWindPersuitCycle self)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Expected O, but got Unknown
			orig.Invoke(self);
			SetStunnable((EntityState)self, stunnable: false);
		}

		private static void WhirlWindPersuitCycle_OnExit(orig_OnExit orig, WhirlWindPersuitCycle self)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Expected O, but got Unknown
			orig.Invoke(self);
			SetStunnable((EntityState)self, stunnable: true);
		}

		private static void SetStunnable(EntityState self, bool stunnable)
		{
			SetStateOnHurt val = null;
			StunDuration stunDuration = null;
			if (self.TryGetComponent<SetStateOnHurt>(ref val) && self.TryGetComponent<StunDuration>(ref stunDuration) && stunDuration.stunCooldown <= 0f)
			{
				val.canBeStunned = stunnable;
			}
		}

		private static void WhirlWindPersuitCycle_UpdateLand(orig_UpdateLand orig, WhirlWindPersuitCycle self)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Expected O, but got Unknown
			orig.Invoke(self);
			RaycastHit val = default(RaycastHit);
			Vector3 position = ((EntityState)self).transform.position;
			Vector3 down = Vector3.down;
			LayerIndex world = LayerIndex.world;
			if (!Physics.Raycast(position, down, ref val, 50f, LayerMask.op_Implicit(((LayerIndex)(ref world)).mask), (QueryTriggerInteraction)1))
			{
				((EntityState)self).outer.SetNextState((EntityState)new WhirlwindWarmUp());
			}
		}

		private void HalcyoniteShrineInteractable_DrainConditionMet(ILContext iL)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			ILCursor val = new ILCursor(iL);
			if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 100f)
			}))
			{
				val.Prev.Operand = 220f;
			}
		}

		private void TriLaserMinDistance(orig_FireTriLaser orig, TriLaser self)
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			BaseAI[] aiComponents = ((EntityState)self).characterBody.master.AiComponents;
			BaseAI[] array = aiComponents;
			foreach (BaseAI val in array)
			{
				if (val.hasAimTarget && Vector3.Distance(val.skillDriverEvaluation.target.characterBody.transform.position, ((EntityState)self).transform.position) < 25f)
				{
					((EntityState)self).outer.SetNextStateToMain();
				}
			}
		}

		private static void DisableInvincibility(orig_RegisterTeleport orig, ChildMonsterController self, bool addInvincibility)
		{
			orig.Invoke(self, false);
		}

		public static void Burrow(orig_Burrow orig, ScorchlingController self)
		{
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			self.isRecentlyBurrowed = true;
			self.isBurrowed = true;
			self.SetTeleportPermission(true);
			if (NetworkServer.active)
			{
				self.breachSkill.stock = 1;
				self.lavaBombSkill.stock = 0;
				self.ensureBurrowSkill.stock = 5;
				self.characterMotor.walkSpeedPenaltyCoefficient = 1f;
			}
			self.originalLayer = ((Component)self).gameObject.layer;
			((Component)self).gameObject.layer = LayerIndex.GetAppropriateFakeLayerForTeam(self.characterBody.teamComponent.teamIndex).intVal;
			((BaseCharacterController)self.characterMotor).Motor.RebuildCollidableLayers();
			if (Object.op_Implicit((Object)(object)self.baseDirt) && Object.op_Implicit((Object)(object)self.dustTrail))
			{
				self.baseDirt.SetActive(false);
				self.dustTrail.SetActive(true);
				self.dustTrailActive = true;
				self.armatureObject.SetActive(false);
				self.meshObject.SetActive(false);
			}
			self.enemyDetection.Enable();
		}

		public static void OnEnter(orig_OnEnter orig, ScorchlingBreach self)
		{
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_012a: 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_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Expected O, but got Unknown
			self.amServer = NetworkServer.active;
			self.scorchlingController = ((Component)((EntityState)self).characterBody).GetComponent<ScorchlingController>();
			Util.PlaySound(self.preBreachSoundString, ((EntityState)self).gameObject);
			if (self.amServer)
			{
				Target currentEnemy = ((Component)((EntityState)self).characterBody.master).GetComponent<BaseAI>().currentEnemy;
				self.enemyCBody = ((currentEnemy != null) ? currentEnemy.characterBody : null);
				if (self.proceedImmediatelyToLavaBomb)
				{
					self.breachToBurrow = 1f;
				}
				self.breachToBurrow += self.crackToBreachTime;
				self.burrowToEndOfTime += self.breachToBurrow;
				self.breachPosition = ((EntityState)self).characterBody.footPosition;
				if (!self.proceedImmediatelyToLavaBomb && Object.op_Implicit((Object)(object)self.enemyCBody))
				{
					self.breachPosition = self.enemyCBody.footPosition;
				}
				if (Object.op_Implicit((Object)(object)((EntityState)self).characterMotor))
				{
					((EntityState)self).characterMotor.walkSpeedPenaltyCoefficient = 0f;
				}
				((EntityState)self).characterBody.SetAimTimer(self.breachToBurrow);
				self.breachPosition = ((EntityState)self).characterBody.footPosition;
				TeleportHelper.TeleportBody(((EntityState)self).characterBody, self.breachPosition, false);
				EffectManager.SpawnEffect(self.crackEffectPrefab, new EffectData
				{
					origin = self.breachPosition,
					scale = self.crackRadius
				}, true);
				self.scorchlingController.SetTeleportPermission(false);
			}
		}

		private void LavaBombGhost()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<GameObject> val = AssetAsyncReferenceManager<GameObject>.LoadAsset(new AssetReferenceT<GameObject>(RoR2_DLC2_Scorchling.LavaBombHeatOrbGhost_prefab), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				//IL_0009: Unknown result type (might be due to invalid IL or missing references)
				//IL_000f: Expected O, but got Unknown
				//IL_0087: Unknown result type (might be due to invalid IL or missing references)
				GameObject result = x.Result;
				AnimationCurve val2 = new AnimationCurve();
				val2.AddKey(0f, 0f);
				val2.AddKey(0.5f, 0.5f);
				val2.AddKey(1f, 1f);
				ObjectScaleCurve val3 = ((Component)result.transform.GetChild(0)).gameObject.AddComponent<ObjectScaleCurve>();
				val3.overallCurve = val2;
				val3.useOverallCurveOnly = true;
				val3.timeMax = 0.6f;
				((Component)val3).transform.localScale = new Vector3(13f, 13f, 13f);
			};
		}

		private void LavaBombProj()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<GameObject> val = AssetAsyncReferenceManager<GameObject>.LoadAsset(new AssetReferenceT<GameObject>(RoR2_DLC2_Scorchling.LavaBombHeatOrbProjectile_prefab), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				GameObject result = x.Result;
				result.transform.localScale = new Vector3(1.35f, 1.35f, 1.35f);
			};
		}

		private void LavaBombSkill()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<SkillDef> val = AssetAsyncReferenceManager<SkillDef>.LoadAsset(new AssetReferenceT<SkillDef>(RoR2_DLC2_Scorchling.ScorchlingLavaBomb_asset), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<SkillDef> x)
			{
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				SkillDef result = x.Result;
				result.activationState = new SerializableEntityStateType(typeof(LavaBombChange));
				result.baseRechargeInterval = 5f;
			};
		}

		private void BurrowSkill()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<SkillDef> val = AssetAsyncReferenceManager<SkillDef>.LoadAsset(new AssetReferenceT<SkillDef>(RoR2_DLC2_Scorchling.ScorchlingEnsureBurrow_asset), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<SkillDef> x)
			{
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				SkillDef result = x.Result;
				result.activationState = new SerializableEntityStateType(typeof(TimedBurrow));
			};
		}

		private void FrolicSkill()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<SkillDef> val = AssetAsyncReferenceManager<SkillDef>.LoadAsset(new AssetReferenceT<SkillDef>(RoR2_DLC2_Child.ChildBodyFrolic_asset), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<SkillDef> x)
			{
				SkillDef result = x.Result;
				result.baseRechargeInterval = 12f;
			};
		}

		private void SparkSkill()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<SkillDef> val = AssetAsyncReferenceManager<SkillDef>.LoadAsset(new AssetReferenceT<SkillDef>(RoR2_DLC2_Child.ChildBodySparkBall_asset), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<SkillDef> x)
			{
				SkillDef result = x.Result;
				result.beginSkillCooldownOnSkillEnd = true;
				result.baseRechargeInterval = 3f;
			};
		}

		private void HalcyoniteAttacks()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<SkillDef> val = AssetAsyncReferenceManager<SkillDef>.LoadAsset(new AssetReferenceT<SkillDef>(RoR2_DLC2_Halcyonite.HalcyoniteMonsterGoldenSlash_asset), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<SkillDef> x)
			{
				SkillDef result = x.Result;
				result.baseRechargeInterval = 2f;
			};
			AsyncOperationHandle<SkillDef> val2 = AssetAsyncReferenceManager<SkillDef>.LoadAsset(new AssetReferenceT<SkillDef>(RoR2_DLC2_Halcyonite.HalcyoniteMonsterGoldenSwipe_asset), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<SkillDef> x)
			{
				SkillDef result = x.Result;
				result.baseRechargeInterval = 4f;
			};
		}

		private void ScorchlingMaster()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<GameObject> val = AssetAsyncReferenceManager<GameObject>.LoadAsset(new AssetReferenceT<GameObject>(RoR2_DLC2_Scorchling.ScorchlingMaster_prefab), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				AISkillDriver[] components = x.Result.GetComponents<AISkillDriver>();
				BaseAI[] components2 = ((Component)components[0]).GetComponents<BaseAI>();
				AISkillDriver[] array = components;
				foreach (AISkillDriver val2 in array)
				{
					if (val2.customName == "LavaBomb")
					{
						val2.maxDistance = 70f;
						val2.minDistance = 10f;
						val2.noRepeat = false;
						val2.activationRequiresTargetLoS = true;
						val2.selectionRequiresTargetLoS = true;
					}
					if (val2.customName == "Breach")
					{
						val2.selectionRequiresOnGround = false;
						val2.activationRequiresAimConfirmation = false;
						val2.selectionRequiresOnGround = false;
					}
				}
				BaseAI[] array2 = components2;
				foreach (BaseAI val3 in array2)
				{
					val3.xrayVision = true;
				}
			};
		}

		private void ChildMaster()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<GameObject> val = AssetAsyncReferenceManager<GameObject>.LoadAsset(new AssetReferenceT<GameObject>(RoR2_DLC2_Child.ChildMaster_prefab), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				AISkillDriver[] components = x.Result.GetComponents<AISkillDriver>();
				AISkillDriver[] array = components;
				foreach (AISkillDriver val3 in array)
				{
					if (val3.customName == "FireSparkBall")
					{
						val3.maxDistance = 50f;
					}
				}
			};
			AsyncOperationHandle<GameObject> val2 = AssetAsyncReferenceManager<GameObject>.LoadAsset(new AssetReferenceT<GameObject>(RoR2_DLC2_Child.ChildTrackingSparkBall_prefab), (AsyncReferenceHandleUnloadType)2);
			val2.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				ProjectileSimple[] components = x.Result.GetComponents<ProjectileSimple>();
				ProjectileSimple[] array = components;
				foreach (ProjectileSimple val3 in array)
				{
					val3.lifetime = 5f;
					val3.desiredForwardSpeed = 21f;
				}
			};
		}

		private void HalcyoniteMaster()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			AsyncOperationHandle<GameObject> val = AssetAsyncReferenceManager<GameObject>.LoadAsset(new AssetReferenceT<GameObject>(RoR2_DLC2_Halcyonite.HalcyoniteMaster_prefab), (AsyncReferenceHandleUnloadType)2);
			val.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				AISkillDriver[] components = x.Result.GetComponents<AISkillDriver>();
				AISkillDriver[] array = components;
				foreach (AISkillDriver val2 in array)
				{
					if (val2.customName == "Golden Swipe")
					{
						val2.aimVectorMaxSpeedOverride = 0f;
						val2.maxDistance = 25f;
					}
					if (val2.customName == "Golden Slash")
					{
						val2.maxDistance = 18f;
					}
					if (val2.customName == "WhirlwindRush")
					{
						val2.minDistance = 25f;
					}
				}
			};
		}
	}
}