Decompiled source of Tracer v1.6.3

Tracer.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.Huntress;
using EntityStates.Loader;
using KinematicCharacterController;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Achievements;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("Tracer")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Tracer")]
[assembly: AssemblyTitle("Tracer")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Tracer;

public static class Achievements
{
	[RegisterAchievement("TRACER_CHARACTER", "ACHIEVEMENT_TRACER_CHARACTER_UNLOCKABLE_ID", null, null)]
	public class SurvivorUnlockable : BaseAchievement
	{
		public override void OnInstall()
		{
			((BaseAchievement)this).OnInstall();
			Stage.onStageStartGlobal += Stage_onStageStartGlobal;
		}

		private void Stage_onStageStartGlobal(Stage stage)
		{
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Invalid comparison between Unknown and I4
			if (Object.op_Implicit((Object)(object)Run.instance) && ((object)Run.instance).GetType() == typeof(Run) && Run.instance.loopClearCount > 0)
			{
				SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
				if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && (int)sceneDefForCurrentScene.sceneType == 1 && !sceneDefForCurrentScene.isFinalStage)
				{
					((BaseAchievement)this).Grant();
				}
			}
		}

		public override void OnUninstall()
		{
			((BaseAchievement)this).OnUninstall();
		}
	}

	[RegisterAchievement("TRACER_SPECIAL", "ACHIEVEMENT_TRACER_SPECIAL_UNLOCKABLE_ID", null, typeof(ReduceTimeToZeroServerAchievement))]
	public class SpecialUnlockable : BaseAchievement
	{
		private class ReduceTimeToZeroServerAchievement : BaseServerAchievement
		{
			public override void OnUninstall()
			{
				((BaseServerAchievement)this).OnUninstall();
			}
		}

		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//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_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("TracerBody");
		}

		public override void OnInstall()
		{
			((BaseAchievement)this).OnInstall();
		}

		public override void OnBodyRequirementMet()
		{
			((BaseAchievement)this).OnBodyRequirementMet();
			Tracer.onTimeReduced += Tracer_onTimeReduced;
		}

		private void Tracer_onTimeReduced(float currentTime)
		{
			if (currentTime == 0f)
			{
				((BaseAchievement)this).Grant();
			}
		}

		public override void OnBodyRequirementBroken()
		{
			Tracer.onTimeReduced -= Tracer_onTimeReduced;
			((BaseAchievement)this).OnBodyRequirementBroken();
		}
	}

	[RegisterAchievement("TRACER_MASTERY", "ACHIEVEMENT_TRACER_MASTERY_UNLOCKABLE_ID", null, null)]
	public class MasteryUnlockable : BasePerSurvivorClearGameMonsoonAchievement
	{
		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//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_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("TracerBody");
		}
	}

	internal static UnlockableDef characterUnlock;

	internal static UnlockableDef masteryUnlock;

	internal static UnlockableDef specialUnlock;

	public static void RegisterUnlockables()
	{
		characterUnlock = NewUnlockable<SurvivorUnlockable>("CHARACTER", Assets.MainAssetBundle.LoadAsset<Sprite>("portrait2"), "Slipstream", "Use the Primordial Teleporter to loop back to the first stage.");
		masteryUnlock = NewUnlockable<MasteryUnlockable>("MASTERY", Assets.charPortraitSkinSlipstream, "Tracer: Mastery", "As Tracer, beat the game or obliterate on Monsoon.");
		specialUnlock = NewUnlockable<SpecialUnlockable>("SPECIAL", Assets.icon4Alt, "Tracer: Back to the Past", "As Tracer, reverse the time back to 0 with the Strange Stopwatch.");
	}

	private static UnlockableDef NewUnlockable<T>(string AchievementIdentifier, Sprite Icon, string Title, string Description) where T : BaseAchievement
	{
		string text = "ACHIEVEMENT_TRACER_";
		UnlockableDef val = ScriptableObject.CreateInstance<UnlockableDef>();
		string langName = text + AchievementIdentifier + "_NAME";
		string langDesc = text + AchievementIdentifier + "_DESCRIPTION";
		LanguageAPI.Add(langName, Title);
		LanguageAPI.Add(langDesc, Description);
		Func<string> func = () => Language.GetStringFormatted("UNLOCKED_FORMAT", new object[2]
		{
			Language.GetString(langName),
			Language.GetString(langDesc)
		});
		Type typeFromHandle = typeof(T);
		val.cachedName = text + AchievementIdentifier + "_UNLOCKABLE_ID";
		val.getHowToUnlockString = func;
		val.getUnlockedString = func;
		val.achievementIcon = Icon;
		val.sortScore = 200;
		val.hidden = false;
		ContentAddition.AddUnlockableDef(val);
		return val;
	}
}
public static class Assets
{
	public static AssetBundle MainAssetBundle;

	public static GameObject pulseBombmdl;

	public static Texture charPortrait;

	public static Sprite charPortraitSkin;

	public static Sprite charPortraitSkinSlipstream;

	public static Sprite charPortraitSkinGraffiti;

	public static Sprite charPortraitSkinWillOWisp;

	public static Sprite charPortraitSkinPunk;

	public static Sprite iconP;

	public static Sprite icon1;

	public static Sprite icon2;

	public static Sprite icon2Alt;

	public static Sprite icon2AltD;

	public static Sprite icon3;

	public static Sprite icon3Alt;

	public static Sprite icon4;

	public static Sprite icon4Alt;

	public static void PopulateAssets()
	{
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: Expected O, but got Unknown
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)MainAssetBundle == (Object)null)
		{
			using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Tracer.tracer");
			MainAssetBundle = AssetBundle.LoadFromStream(stream);
		}
		using (Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Tracer.Tracer.bnk"))
		{
			byte[] array = new byte[stream2.Length];
			stream2.Read(array, 0, array.Length);
			SoundBanks.Add(array);
		}
		using (Stream stream3 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Tracer.blinkR.bnk"))
		{
			byte[] array2 = new byte[stream3.Length];
			stream3.Read(array2, 0, array2.Length);
			SoundBanks.Add(array2);
		}
		pulseBombmdl = MainAssetBundle.LoadAsset<GameObject>("pulsebomb");
		Material val = new Material(Prefabs.Load<Shader>("RoR2/Base/Shaders/HGStandard.shader"));
		val.SetTexture("_MainTex", (Texture)(object)MainAssetBundle.LoadAsset<Texture2D>("Bomb_d"));
		val.SetTexture("_EmTex", (Texture)(object)MainAssetBundle.LoadAsset<Texture2D>("Bomb_e"));
		val.SetFloat("_EmPower", 10f);
		val.SetColor("_EmColor", Color.cyan);
		((Renderer)pulseBombmdl.GetComponent<MeshRenderer>()).material = val;
		charPortrait = (Texture)(object)MainAssetBundle.LoadAsset<Sprite>("portrait2").texture;
		charPortraitSkin = MainAssetBundle.LoadAsset<Sprite>("portraitbase");
		charPortraitSkinSlipstream = MainAssetBundle.LoadAsset<Sprite>("portrait-slipstream");
		charPortraitSkinGraffiti = MainAssetBundle.LoadAsset<Sprite>("portrait-graffiti");
		charPortraitSkinWillOWisp = MainAssetBundle.LoadAsset<Sprite>("portrait-wisp");
		charPortraitSkinPunk = MainAssetBundle.LoadAsset<Sprite>("portrait-punk");
		iconP = MainAssetBundle.LoadAsset<Sprite>("PassiveIcon1");
		icon1 = MainAssetBundle.LoadAsset<Sprite>("Skill1Icon");
		icon2 = MainAssetBundle.LoadAsset<Sprite>("Skill2Icon");
		icon2Alt = MainAssetBundle.LoadAsset<Sprite>("Pulse_Rounds_Icon");
		icon2AltD = MainAssetBundle.LoadAsset<Sprite>("Melee_Icon");
		icon3 = MainAssetBundle.LoadAsset<Sprite>("Skill3Icon");
		icon3Alt = MainAssetBundle.LoadAsset<Sprite>("Skill3AltIcon");
		icon4 = MainAssetBundle.LoadAsset<Sprite>("Skill4Icon");
		icon4Alt = MainAssetBundle.LoadAsset<Sprite>("Skill4AltIcon");
	}
}
internal class MineBehaviour : MonoBehaviour
{
	private void Start()
	{
		ProjectileController component = ((Component)this).GetComponent<ProjectileController>();
		if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.owner))
		{
			TickingBombController component2 = component.owner.gameObject.GetComponent<TickingBombController>();
			if (Object.op_Implicit((Object)(object)component2))
			{
				component2.prefab = ((Component)this).gameObject;
				component2.StartTicking();
			}
		}
	}
}
internal class TracerTemporaryOverlay : MonoBehaviour
{
	private float stopwatch;

	private float duration = 3f;

	public Material materialInstance;

	private AnimationCurve curve = AnimationCurve.Linear(0f, 0f, 1f, 0.45f);

	private RecallBehaviour behaviour;

	public static void AddTemporaryOverlay(RecallBehaviour behaviour, GameObject target, Material mat, CharacterModel characterModel)
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Expected O, but got Unknown
		//IL_0029: 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_0030: Unknown result type (might be due to invalid IL or missing references)
		TracerTemporaryOverlay tracerTemporaryOverlay = target.AddComponent<TracerTemporaryOverlay>();
		tracerTemporaryOverlay.behaviour = behaviour;
		tracerTemporaryOverlay.materialInstance = new Material(mat);
		RendererInfo[] baseRendererInfos = characterModel.baseRendererInfos;
		foreach (RendererInfo val in baseRendererInfos)
		{
			val.renderer.material = tracerTemporaryOverlay.materialInstance;
		}
	}

	private void FixedUpdate()
	{
		if (!Object.op_Implicit((Object)(object)behaviour) || behaviour.track)
		{
			stopwatch += Time.fixedDeltaTime;
			if (Object.op_Implicit((Object)(object)materialInstance))
			{
				materialInstance.SetFloat("_ExternalAlpha", curve.Evaluate(stopwatch / duration));
			}
		}
	}
}
internal class RecallBehaviour : MonoBehaviour
{
	public float stopwatch;

	public float maxTime = 3f;

	public int maxCount = (Tracer.performanceMode.Value ? 12 : 55);

	public List<Vector3> positions = new List<Vector3>();

	public List<Vector3> camPositions = new List<Vector3>();

	public List<Vector3> directions = new List<Vector3>();

	public List<Quaternion> rotations = new List<Quaternion>();

	public List<GameObject> models = new List<GameObject>();

	public bool track = true;

	public CameraRigController camera;

	private Transform modelTransform;

	private Transform[] bones;

	private CharacterDirection direction;

	private Animator animator;

	private HealthComponent health;

	private float healthStopwatch;

	public float lastRecordedHealth;

	public float timeBetweenSaves => maxTime / (float)maxCount;

	private void Start()
	{
		health = ((Component)this).GetComponent<HealthComponent>();
		lastRecordedHealth = health.fullHealth;
		direction = ((Component)this).GetComponent<CharacterDirection>();
		ModelLocator modelLocator = ((Component)this).GetComponent<CharacterBody>().modelLocator;
		modelTransform = modelLocator.modelTransform;
		animator = ((Component)modelTransform).GetComponent<Animator>();
		bones = ((Component)((Component)modelTransform).GetComponent<ChildLocator>().FindChild("Armature")).GetComponentsInChildren<Transform>();
	}

	private void OnDisable()
	{
		Reset();
	}

	public void Reset()
	{
		camera.isCutscene = false;
		directions.Clear();
		positions.Clear();
		camPositions.Clear();
		rotations.Clear();
		if (models.Count > 0)
		{
			for (int i = 0; i < models.Count; i++)
			{
				Object.Destroy((Object)(object)models[i]);
			}
			models.Clear();
		}
		lastRecordedHealth = health.health;
		healthStopwatch = 0f;
		track = true;
	}

	private void FixedUpdate()
	{
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0157: 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_028f: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0200: Unknown result type (might be due to invalid IL or missing references)
		if (!Object.op_Implicit((Object)(object)camera) && Util.HasEffectiveAuthority(((Component)this).gameObject))
		{
			camera = CameraRigController.instancesList.Find(delegate(CameraRigController x)
			{
				GameObject val2 = (x.target = ((Component)this).gameObject);
				return Object.op_Implicit((Object)(object)val2);
			});
		}
		if (!track)
		{
			stopwatch = 0f;
			healthStopwatch = 0f;
			return;
		}
		if (Object.op_Implicit((Object)(object)health))
		{
			healthStopwatch += Time.fixedDeltaTime;
			if (Object.op_Implicit((Object)(object)health) && healthStopwatch >= 3f)
			{
				healthStopwatch = 0f;
				lastRecordedHealth = health.health;
			}
		}
		stopwatch += Time.fixedDeltaTime;
		if (!(stopwatch >= timeBetweenSaves))
		{
			return;
		}
		stopwatch = 0f;
		GameObject val = (GameObject)((!Tracer.potatoMode.Value) ? ((object)Object.Instantiate<GameObject>(Prefabs.tracerModel)) : ((object)new GameObject("TracerTrail")));
		val.transform.position = ((Component)modelTransform).transform.position;
		val.transform.rotation = ((Component)modelTransform).transform.rotation;
		val.transform.localScale = ((Component)modelTransform).transform.localScale;
		if (!Tracer.potatoMode.Value)
		{
			Transform[] componentsInChildren = ((Component)val.GetComponent<ChildLocator>().FindChild("Armature")).GetComponentsInChildren<Transform>();
			for (int i = 0; i < bones.Length; i++)
			{
				if (Object.op_Implicit((Object)(object)componentsInChildren[i]))
				{
					((Component)componentsInChildren[i]).transform.localPosition = ((Component)bones[i]).transform.localPosition;
					((Component)componentsInChildren[i]).transform.localRotation = ((Component)bones[i]).transform.localRotation;
				}
			}
			TracerTemporaryOverlay.AddTemporaryOverlay(this, val, Prefabs.mat, val.GetComponent<CharacterModel>());
		}
		models.Add(val);
		if (models.Count > maxCount)
		{
			Object.Destroy((Object)(object)models[0]);
			models.RemoveAt(0);
		}
		directions.Add(direction.forward);
		positions.Add(((Component)this).transform.position);
		if (Object.op_Implicit((Object)(object)camera))
		{
			rotations.Add(((Component)camera).transform.rotation);
			camPositions.Add(((Component)camera).transform.position);
			if (camPositions.Count > maxCount)
			{
				camPositions.RemoveAt(0);
			}
			if (rotations.Count > maxCount)
			{
				rotations.RemoveAt(0);
			}
		}
		if (positions.Count > maxCount)
		{
			positions.RemoveAt(0);
		}
	}
}
internal class TickingBombController : MonoBehaviour
{
	public float ticks;

	public GameObject prefab;

	private void FixedUpdate()
	{
		if ((Object)(object)prefab == (Object)null)
		{
			StopTicking();
		}
	}

	public void Detonate(float num)
	{
		if (Object.op_Implicit((Object)(object)prefab))
		{
			ProjectileImpactExplosion component = prefab.GetComponent<ProjectileImpactExplosion>();
			if (Object.op_Implicit((Object)(object)component))
			{
				((ProjectileExplosion)component).blastDamageCoefficient = ticks + num;
				component.lifetimeAfterImpact = 0f;
				StopTicking();
			}
		}
	}

	public void StopTicking()
	{
		((MonoBehaviour)this).CancelInvoke();
		ticks = 0f;
	}

	public void StartTicking()
	{
		((MonoBehaviour)this).InvokeRepeating("Tick", 0f, 1f);
	}

	public void Tick()
	{
		ticks += 1f;
	}
}
public class Blink : BaseState
{
	private Transform modelTransform;

	private float stopwatch;

	private Vector3 blinkVector = Vector3.zero;

	[SerializeField]
	public float duration = 0.3f;

	[SerializeField]
	public float speedCoefficient = 8f;

	[SerializeField]
	public string beginSoundString;

	[SerializeField]
	public string endSoundString;

	private CharacterModel characterModel;

	private HurtBoxGroup hurtboxGroup;

	public override void OnEnter()
	{
		//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: 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)
		((BaseState)this).OnEnter();
		AkSoundEngine.PostEvent(Sounds.Blink, ((Component)((EntityState)this).characterBody).gameObject);
		modelTransform = ((EntityState)this).GetModelTransform();
		if (Object.op_Implicit((Object)(object)modelTransform))
		{
			characterModel = ((Component)modelTransform).GetComponent<CharacterModel>();
			hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>();
		}
		if (Object.op_Implicit((Object)(object)characterModel))
		{
			CharacterModel obj = characterModel;
			obj.invisibilityCount++;
		}
		if (Object.op_Implicit((Object)(object)hurtboxGroup))
		{
			HurtBoxGroup val = hurtboxGroup;
			int hurtBoxesDeactivatorCounter = val.hurtBoxesDeactivatorCounter + 1;
			val.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter;
		}
		blinkVector = GetBlinkVector();
		CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject));
	}

	protected virtual Vector3 GetBlinkVector()
	{
		//IL_0021: 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_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		return (((EntityState)this).isAuthority && ((EntityState)this).inputBank.skill1.down) ? ((EntityState)this).inputBank.moveVector : ((EntityState)this).inputBank.aimDirection;
	}

	private void CreateBlinkEffect(Vector3 origin)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Expected O, but got Unknown
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: 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)
		EffectData val = new EffectData();
		val.rotation = Util.QuaternionSafeLookRotation(blinkVector);
		val.origin = origin;
		EffectManager.SpawnEffect(BlinkState.blinkPrefab, val, false);
	}

	public override void FixedUpdate()
	{
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0079: Unknown result type (might be due to invalid IL or missing references)
		((EntityState)this).FixedUpdate();
		stopwatch += Time.fixedDeltaTime;
		if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection))
		{
			((EntityState)this).characterMotor.velocity = Vector3.zero;
			CharacterMotor characterMotor = ((EntityState)this).characterMotor;
			characterMotor.rootMotion += blinkVector * (base.moveSpeedStat * speedCoefficient * Time.fixedDeltaTime);
		}
		if (stopwatch >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override void OnExit()
	{
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		if (!((EntityState)this).outer.destroying)
		{
			Util.PlaySound(endSoundString, ((EntityState)this).gameObject);
			CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject));
			modelTransform = ((EntityState)this).GetModelTransform();
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
				val.duration = 0.6f;
				val.animateShaderAlpha = true;
				val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
				val.destroyComponentOnEnd = true;
				val.originalMaterial = Prefabs.Load<Material>("RoR2/Base/Huntress/matHuntressFlashBright.mat");
				val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
				TemporaryOverlay val2 = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
				val2.duration = 0.7f;
				val2.animateShaderAlpha = true;
				val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
				val2.destroyComponentOnEnd = true;
				val2.originalMaterial = Prefabs.Load<Material>("RoR2/Base/Huntress/matHuntressFlashExpanded.mat");
				val2.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
			}
		}
		if (Object.op_Implicit((Object)(object)characterModel))
		{
			CharacterModel obj = characterModel;
			obj.invisibilityCount--;
		}
		if (Object.op_Implicit((Object)(object)hurtboxGroup))
		{
			HurtBoxGroup val3 = hurtboxGroup;
			int hurtBoxesDeactivatorCounter = val3.hurtBoxesDeactivatorCounter - 1;
			val3.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter;
		}
		((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 ChronoTriggers : BaseSkillState
{
	private Transform modelTransform;

	private float stopwatch;

	private Vector3 blinkVector = Vector3.zero;

	[SerializeField]
	public float duration = 0.3f;

	[SerializeField]
	public float speedCoefficient = 8f;

	[SerializeField]
	public string beginSoundString;

	[SerializeField]
	public string endSoundString;

	private CharacterModel characterModel;

	private HurtBoxGroup hurtboxGroup;

	private float chargeDuration;

	private float charge;

	public float baseChargeDuration = 3f;

	public static float minCharge = 25f;

	private uint soundID;

	private bool playR1;

	private bool playR2;

	private bool playR3;

	public override void OnEnter()
	{
		((BaseState)this).OnEnter();
		playR1 = false;
		playR2 = false;
		playR3 = false;
		chargeDuration = baseChargeDuration / ((BaseState)this).attackSpeedStat;
		Util.PlaySound(BaseChargeFist.enterSFXString, ((EntityState)this).gameObject);
		soundID = Util.PlaySound(BaseChargeFist.startChargeLoopSFXString, ((EntityState)this).gameObject);
	}

	public override void Update()
	{
		((EntityState)this).Update();
		float num = 100f * charge;
		if (!playR1 && num > 32f && num < 34f)
		{
			playR1 = true;
			AkSoundEngine.PostEvent(Sounds.blinkR1, ((Component)((EntityState)this).characterBody).gameObject);
		}
		if (!playR2 && num > 65f && num < 67f)
		{
			playR2 = true;
			AkSoundEngine.PostEvent(Sounds.blinkR2, ((Component)((EntityState)this).characterBody).gameObject);
		}
		if (!playR3 && num > 98f && num < 100f)
		{
			playR3 = true;
			AkSoundEngine.PostEvent(Sounds.blinkR3, ((Component)((EntityState)this).characterBody).gameObject);
		}
		Mathf.Clamp01(((EntityState)this).age / chargeDuration);
	}

	public override void FixedUpdate()
	{
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		((EntityState)this).FixedUpdate();
		charge = Mathf.Clamp01(((EntityState)this).fixedAge / chargeDuration);
		AkSoundEngine.SetRTPCValueByPlayingID("loaderShift_chargeAmount", charge * 100f, soundID);
		((EntityState)this).characterBody.SetSpreadBloom(charge, true);
		((EntityState)this).characterBody.SetAimTimer(3f);
		if (((EntityState)this).isAuthority)
		{
			AuthorityFixedUpdate();
		}
	}

	private void AuthorityFixedUpdate()
	{
		if (!ShouldKeepChargingAuthority())
		{
			((EntityState)this).outer.SetNextState(GetNextStateAuthority());
		}
	}

	protected virtual bool ShouldKeepChargingAuthority()
	{
		return ((BaseSkillState)this).IsKeyDownAuthority();
	}

	protected virtual EntityState GetNextStateAuthority()
	{
		float num = 100f * charge;
		if (num <= minCharge)
		{
			return (EntityState)(object)new Blink2
			{
				speedCoefficient = 200f
			};
		}
		return (EntityState)(object)new Blink2
		{
			speedCoefficient = 8f * num
		};
	}

	public override void OnExit()
	{
		((EntityState)this).OnExit();
		Util.PlaySound(BaseChargeFist.endChargeLoopSFXString, ((EntityState)this).gameObject);
	}

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

	private float stopwatch;

	private Vector3 blinkVector = Vector3.zero;

	[SerializeField]
	public float duration = 0.01f;

	[SerializeField]
	public float speedCoefficient = 8f;

	[SerializeField]
	public string beginSoundString;

	[SerializeField]
	public string endSoundString;

	private CharacterModel characterModel;

	private HurtBoxGroup hurtboxGroup;

	public override void OnEnter()
	{
		//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b3: 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)
		((BaseState)this).OnEnter();
		AkSoundEngine.PostEvent(Sounds.Blink, ((Component)((EntityState)this).characterBody).gameObject);
		modelTransform = ((EntityState)this).GetModelTransform();
		if (Object.op_Implicit((Object)(object)modelTransform))
		{
			characterModel = ((Component)modelTransform).GetComponent<CharacterModel>();
			hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>();
		}
		if (Object.op_Implicit((Object)(object)characterModel))
		{
			CharacterModel obj = characterModel;
			obj.invisibilityCount++;
		}
		if (Object.op_Implicit((Object)(object)hurtboxGroup))
		{
			HurtBoxGroup val = hurtboxGroup;
			int hurtBoxesDeactivatorCounter = val.hurtBoxesDeactivatorCounter + 1;
			val.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter;
		}
		blinkVector = GetBlinkVector();
		CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject));
	}

	protected virtual Vector3 GetBlinkVector()
	{
		//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_000f: Unknown result type (might be due to invalid IL or missing references)
		return ((EntityState)this).inputBank.aimDirection;
	}

	private void CreateBlinkEffect(Vector3 origin)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Expected O, but got Unknown
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: 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)
		EffectData val = new EffectData();
		val.rotation = Util.QuaternionSafeLookRotation(blinkVector);
		val.origin = origin;
		EffectManager.SpawnEffect(BlinkState.blinkPrefab, val, false);
	}

	public override void FixedUpdate()
	{
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0079: Unknown result type (might be due to invalid IL or missing references)
		((EntityState)this).FixedUpdate();
		stopwatch += Time.fixedDeltaTime;
		if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection))
		{
			((EntityState)this).characterMotor.velocity = Vector3.zero;
			CharacterMotor characterMotor = ((EntityState)this).characterMotor;
			characterMotor.rootMotion += blinkVector * (base.moveSpeedStat * speedCoefficient * Time.fixedDeltaTime);
		}
		if (stopwatch >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override void OnExit()
	{
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		if (!((EntityState)this).outer.destroying)
		{
			Util.PlaySound(endSoundString, ((EntityState)this).gameObject);
			CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject));
			modelTransform = ((EntityState)this).GetModelTransform();
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
				val.duration = 0.6f;
				val.animateShaderAlpha = true;
				val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
				val.destroyComponentOnEnd = true;
				val.originalMaterial = Prefabs.Load<Material>("RoR2/Base/Huntress/matHuntressFlashBright.mat");
				val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
				TemporaryOverlay val2 = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
				val2.duration = 0.7f;
				val2.animateShaderAlpha = true;
				val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
				val2.destroyComponentOnEnd = true;
				val2.originalMaterial = Prefabs.Load<Material>("RoR2/Base/Huntress/matHuntressFlashExpanded.mat");
				val2.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
			}
		}
		if (Object.op_Implicit((Object)(object)characterModel))
		{
			CharacterModel obj = characterModel;
			obj.invisibilityCount--;
		}
		if (Object.op_Implicit((Object)(object)hurtboxGroup))
		{
			HurtBoxGroup val3 = hurtboxGroup;
			int hurtBoxesDeactivatorCounter = val3.hurtBoxesDeactivatorCounter - 1;
			val3.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter;
		}
		((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;
	}
}
internal class PartingGift : Recall
{
	private float healAmount;

	private bool healed = false;

	public override void OnEnter()
	{
		//IL_0018: 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_006c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: 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_00c2: 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)
		base.OnEnter();
		if (((EntityState)this).isAuthority)
		{
			FireProjectileInfo val = default(FireProjectileInfo);
			val.crit = ((BaseState)this).RollCrit();
			val.damage = ((EntityState)this).characterBody.damage * 10f;
			val.damageColorIndex = (DamageColorIndex)0;
			val.force = 500f;
			val.owner = ((EntityState)this).gameObject;
			val.position = ((EntityState)this).characterBody.footPosition;
			val.procChainMask = default(ProcChainMask);
			val.projectilePrefab = Prefabs.minePrefab;
			Ray aimRay = ((BaseState)this).GetAimRay();
			val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay)).direction);
			val.useFuseOverride = false;
			val.useSpeedOverride = false;
			val.target = null;
			FireProjectileInfo val2 = val;
			ProjectileManager.instance.FireProjectile(val2);
		}
	}

	public override void Heal()
	{
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		if (!(behaviour.lastRecordedHealth > ((EntityState)this).healthComponent.health))
		{
			healAmount = behaviour.lastRecordedHealth - ((EntityState)this).healthComponent.health;
			if (NetworkServer.active)
			{
				((EntityState)this).healthComponent.Heal(healAmount, default(ProcChainMask), true);
			}
			healed = true;
		}
	}

	public override void OnExit()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: 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_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Expected O, but got Unknown
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: 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_0077: 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_0095: Unknown result type (might be due to invalid IL or missing references)
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
		if (healed)
		{
			float num = 18f;
			EffectData val = new EffectData
			{
				origin = ((EntityState)this).characterBody.corePosition,
				scale = num
			};
			EffectManager.SpawnEffect(Prefabs.Load<GameObject>("RoR2/Base/Lightning/LightningStrikeImpact.prefab"), val, false);
			if (((EntityState)this).isAuthority)
			{
				new BlastAttack
				{
					attacker = ((EntityState)this).gameObject,
					baseDamage = healAmount * 1000f,
					baseForce = healAmount * 1000f,
					crit = ((BaseState)this).RollCrit(),
					damageType = (DamageType)0,
					falloffModel = (FalloffModel)0,
					procCoefficient = 1f,
					radius = num,
					position = ((EntityState)this).characterBody.corePosition,
					attackerFiltering = (AttackerFiltering)2,
					impactEffect = EffectCatalog.FindEffectIndexFromPrefab(Prefabs.Load<GameObject>("RoR2/Junk/Common/VFX/ImpactLightning.prefab")),
					teamIndex = ((EntityState)this).teamComponent.teamIndex
				}.Fire();
			}
		}
		base.OnExit();
	}
}
public class PulseBomb : BaseState
{
	public static GameObject effectPrefab;

	public static GameObject projectilePrefab;

	public static float damageCoefficient;

	public static float force;

	public static float selfForce;

	private float duration;

	public int bulletCountCurrent = 1;

	public override void OnEnter()
	{
		//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_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cf: 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_00d8: 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_00fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: Unknown result type (might be due to invalid IL or missing references)
		//IL_0131: Unknown result type (might be due to invalid IL or missing references)
		//IL_0136: Unknown result type (might be due to invalid IL or missing references)
		//IL_0140: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		((BaseState)this).OnEnter();
		duration = 0.1f;
		Ray aimRay = ((BaseState)this).GetAimRay();
		((BaseState)this).StartAimMode(aimRay, 2f, false);
		((EntityState)this).PlayAnimation("Gesture, Override", "BombThrow", "BombThrow.playbackRate", duration);
		if (((EntityState)this).isAuthority)
		{
			FireProjectileInfo val = default(FireProjectileInfo);
			val.crit = ((BaseState)this).RollCrit();
			val.damage = ((EntityState)this).characterBody.damage * 10f;
			val.damageColorIndex = (DamageColorIndex)0;
			val.force = 500f;
			val.owner = ((EntityState)this).gameObject;
			val.position = ((Ray)(ref aimRay)).origin;
			val.procChainMask = default(ProcChainMask);
			val.projectilePrefab = Prefabs.minePrefab;
			Ray aimRay2 = ((BaseState)this).GetAimRay();
			val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay2)).direction);
			val.useFuseOverride = false;
			val.useSpeedOverride = false;
			val.target = null;
			FireProjectileInfo val2 = val;
			ProjectileManager.instance.FireProjectile(val2);
		}
		if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
		{
			Vector3 val3 = -((Ray)(ref aimRay)).direction * selfForce;
			val3.y *= 0.5f;
			((EntityState)this).characterMotor.ApplyForce(val3, true, false);
		}
		if (!Object.op_Implicit((Object)(object)Prefabs.minePrefab.GetComponent<ProjectileStickOnImpact>()))
		{
			AkSoundEngine.PostEvent(Sounds.BombAttach, ((Component)((EntityState)this).characterBody).gameObject);
		}
	}

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

	public override void FixedUpdate()
	{
		((EntityState)this).FixedUpdate();
		if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override InterruptPriority GetMinimumInterruptPriority()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		return (InterruptPriority)0;
	}
}
public class QuantumSpike : BaseState
{
	public static GameObject effectPrefab;

	public static GameObject projectilePrefab;

	private float duration;

	public static SkillDef SkillDef;

	public static GenericSkill secondarySkillSlot;

	public override void OnEnter()
	{
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		((BaseState)this).OnEnter();
		duration = 0.1f;
		((EntityState)this).PlayAnimation("FullBody, Override", "BombThrow", "BombThrow.playbackRate", duration);
		SkillDef = ScriptableObject.CreateInstance<SkillDef>();
		SkillDef.activationState = new SerializableEntityStateType(typeof(Detonate));
		SkillDef.activationStateMachineName = "Detonate";
		SkillDef.baseMaxStock = 1;
		SkillDef.baseRechargeInterval = 0f;
		SkillDef.beginSkillCooldownOnSkillEnd = true;
		SkillDef.canceledFromSprinting = false;
		SkillDef.fullRestockOnAssign = false;
		SkillDef.interruptPriority = (InterruptPriority)0;
		SkillDef.isCombatSkill = true;
		SkillDef.mustKeyPress = true;
		SkillDef.cancelSprintingOnActivation = false;
		SkillDef.rechargeStock = 0;
		SkillDef.requiredStock = 0;
		SkillDef.stockToConsume = 0;
		SkillDef.icon = Assets.icon2AltD;
		SkillDef.skillDescriptionToken = "TRACER_DETONATE_DESCRIPTION";
		SkillDef.skillName = "TRACER_DETONATE";
		SkillDef.skillNameToken = "TRACER_DETONATE";
		secondarySkillSlot = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) ? ((EntityState)this).skillLocator.secondary : null);
		if (Object.op_Implicit((Object)(object)secondarySkillSlot))
		{
			secondarySkillSlot.SetSkillOverride((object)((EntityState)this).gameObject, SkillDef, (SkillOverridePriority)4);
		}
		Mine();
	}

	public void Mine()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_00af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ce: 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_0103: 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_010d: 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)
		Ray aimRay = ((BaseState)this).GetAimRay();
		((BaseState)this).StartAimMode(aimRay, 2f, false);
		if (((EntityState)this).isAuthority)
		{
			FireProjectileInfo val = default(FireProjectileInfo);
			val.crit = ((BaseState)this).RollCrit();
			val.damage = ((EntityState)this).characterBody.damage * 2f;
			val.damageColorIndex = (DamageColorIndex)0;
			val.force = 500f;
			val.owner = ((EntityState)this).gameObject;
			val.position = ((Ray)(ref aimRay)).origin;
			val.procChainMask = default(ProcChainMask);
			val.projectilePrefab = Prefabs.minePrefabAlt;
			Ray aimRay2 = ((BaseState)this).GetAimRay();
			val.rotation = Quaternion.LookRotation(((Ray)(ref aimRay2)).direction);
			val.useFuseOverride = false;
			val.useSpeedOverride = false;
			val.target = null;
			FireProjectileInfo val2 = val;
			ProjectileManager.instance.FireProjectile(val2);
		}
		if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded)
		{
			Vector3 val3 = -((Ray)(ref aimRay)).direction;
			val3.y *= 0.5f;
			((EntityState)this).characterMotor.ApplyForce(val3, true, false);
		}
		if (!Object.op_Implicit((Object)(object)Prefabs.minePrefab.GetComponent<ProjectileStickOnImpact>()))
		{
			AkSoundEngine.PostEvent(Sounds.BombAttach, ((Component)((EntityState)this).characterBody).gameObject);
		}
	}

	public override void OnExit()
	{
		((EntityState)this).OnExit();
		if (!Object.op_Implicit((Object)(object)secondarySkillSlot))
		{
		}
	}

	public override void FixedUpdate()
	{
		((EntityState)this).FixedUpdate();
		if (!Object.op_Implicit((Object)(object)secondarySkillSlot) || secondarySkillSlot.stock == 0)
		{
		}
		if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override InterruptPriority GetMinimumInterruptPriority()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		return (InterruptPriority)6;
	}
}
public class Detonate : BaseState
{
	private float duration = 0.1f;

	public override void OnEnter()
	{
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		((BaseState)this).OnEnter();
		TickingBombController component = ((EntityState)this).gameObject.GetComponent<TickingBombController>();
		if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.prefab))
		{
			int itemCount = ((EntityState)this).characterBody.inventory.GetItemCount(ItemCatalog.FindItemIndex("SecondarySkillMagazine"));
			ProjectileImpactExplosion component2 = component.prefab.GetComponent<ProjectileImpactExplosion>();
			if (Object.op_Implicit((Object)(object)component2))
			{
				component.Detonate(itemCount * 3);
			}
		}
		if (Object.op_Implicit((Object)(object)QuantumSpike.secondarySkillSlot))
		{
			QuantumSpike.secondarySkillSlot.UnsetSkillOverride((object)((EntityState)this).gameObject, QuantumSpike.SkillDef, (SkillOverridePriority)4);
		}
	}

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

	public override void FixedUpdate()
	{
		((EntityState)this).FixedUpdate();
		if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override InterruptPriority GetMinimumInterruptPriority()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		return (InterruptPriority)6;
	}
}
public class PulsePistols : BaseSkillState
{
	private float duration;

	public static float baseDuration = 0.05f;

	public GameObject effectPrefab = Prefabs.Load<GameObject>("RoR2/Base/Huntress/OmniImpactVFXHuntress.prefab");

	public GameObject hitEffectPrefab = Prefabs.hiteffect;

	public GameObject tracerEffectPrefab = Prefabs.tracer;

	private Animator animator;

	public float Delay = 0.3f;

	private bool buttonReleased;

	public string muzzleString;

	public string muzzleString1;

	public static string firePistolSoundString;

	private uint ShootID;

	private uint ReloadID;

	public bool hasFired;

	public override void OnEnter()
	{
		//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_015f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_0166: Unknown result type (might be due to invalid IL or missing references)
		//IL_016b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0177: Unknown result type (might be due to invalid IL or missing references)
		//IL_0183: Unknown result type (might be due to invalid IL or missing references)
		//IL_0186: Unknown result type (might be due to invalid IL or missing references)
		//IL_018b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: Unknown result type (might be due to invalid IL or missing references)
		//IL_0193: Unknown result type (might be due to invalid IL or missing references)
		//IL_019e: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0207: Unknown result type (might be due to invalid IL or missing references)
		//IL_0213: 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_0226: Unknown result type (might be due to invalid IL or missing references)
		//IL_0238: Unknown result type (might be due to invalid IL or missing references)
		//IL_023d: Unknown result type (might be due to invalid IL or missing references)
		//IL_023f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0244: Unknown result type (might be due to invalid IL or missing references)
		//IL_0250: 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_025f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0264: Unknown result type (might be due to invalid IL or missing references)
		//IL_0269: Unknown result type (might be due to invalid IL or missing references)
		//IL_026c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0277: Unknown result type (might be due to invalid IL or missing references)
		//IL_0282: Unknown result type (might be due to invalid IL or missing references)
		//IL_028d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0294: Unknown result type (might be due to invalid IL or missing references)
		//IL_029f: 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_02c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ff: Unknown result type (might be due to invalid IL or missing references)
		((BaseState)this).OnEnter();
		duration = baseDuration;
		Ray aimRay = ((BaseState)this).GetAimRay();
		animator = ((EntityState)this).GetModelAnimator();
		((BaseState)this).StartAimMode(0.5f, false);
		muzzleString = "MuzzleR";
		muzzleString1 = "MuzzleL";
		EffectManager.SimpleMuzzleFlash(Prefabs.muzzleflash, ((EntityState)this).gameObject, muzzleString, false);
		EffectManager.SimpleMuzzleFlash(Prefabs.muzzleflash, ((EntityState)this).gameObject, muzzleString1, false);
		ShootID = AkSoundEngine.PostEvent(Sounds.SingleShot0, ((Component)((EntityState)this).characterBody).gameObject);
		if (!hasFired)
		{
			hasFired = true;
			((BaseState)this).AddRecoil(-0.4f * FirePistol2.recoilAmplitude, -0.6f * FirePistol2.recoilAmplitude, -0.3f * FirePistol2.recoilAmplitude, 0.3f * FirePistol2.recoilAmplitude);
		}
		((EntityState)this).PlayAnimation("Gesture, Override", "PulsePistols", "PulsePistols.playbackRate", duration * 0.5f);
		animator.SetBool("isShooting", true);
		if ((float)((EntityState)this).characterBody.skillLocator.primary.stock <= 0f)
		{
			AkSoundEngine.PostEvent(Sounds.Reload, ((Component)((EntityState)this).characterBody).gameObject);
		}
		if (((EntityState)this).isAuthority)
		{
			new BulletAttack
			{
				falloffModel = (FalloffModel)1,
				owner = ((EntityState)this).gameObject,
				weapon = ((EntityState)this).gameObject,
				origin = ((Ray)(ref aimRay)).origin,
				aimVector = ((Ray)(ref aimRay)).direction,
				minSpread = 0.15f,
				maxSpread = 0.3f,
				bulletCount = 1u,
				procCoefficient = 0.5f,
				damage = ((EntityState)this).characterBody.damage * ((BaseState)this).attackSpeedStat * 0.3f,
				force = 40f,
				tracerEffectPrefab = tracerEffectPrefab,
				hitEffectPrefab = hitEffectPrefab,
				muzzleName = muzzleString,
				isCrit = ((BaseState)this).RollCrit(),
				smartCollision = true,
				maxDistance = 300f
			}.Fire();
			new BulletAttack
			{
				falloffModel = (FalloffModel)1,
				owner = ((EntityState)this).gameObject,
				weapon = ((EntityState)this).gameObject,
				origin = ((Ray)(ref aimRay)).origin,
				aimVector = ((Ray)(ref aimRay)).direction,
				minSpread = 0.15f,
				maxSpread = 0.3f,
				bulletCount = 1u,
				procCoefficient = 0.5f,
				damage = ((EntityState)this).characterBody.damage * ((BaseState)this).attackSpeedStat * 0.3f,
				force = 40f,
				tracerEffectPrefab = tracerEffectPrefab,
				hitEffectPrefab = hitEffectPrefab,
				muzzleName = muzzleString1,
				isCrit = ((BaseState)this).RollCrit(),
				smartCollision = true,
				maxDistance = 300f
			}.Fire();
		}
	}

	public override void OnExit()
	{
		animator.SetBool("isShooting", false);
		((EntityState)this).PlayAnimation("Reload", "Reload", "Reload.playbackRate", duration);
		AkSoundEngine.StopPlayingID(ShootID);
		((EntityState)this).OnExit();
	}

	public override void FixedUpdate()
	{
		((EntityState)this).FixedUpdate();
		if (((EntityState)this).isAuthority)
		{
			((EntityState)this).skillLocator.primary.rechargeStopwatch = 0f;
		}
		if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override InterruptPriority GetMinimumInterruptPriority()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		return (InterruptPriority)1;
	}
}
internal class Recall : BaseState
{
	public float duration = 0.91f;

	private Transform modelTransform;

	public static GameObject blinkPrefab;

	private Vector3 direction;

	public string beginSoundString;

	public string endSoundString;

	private CharacterModel characterModel;

	private HurtBoxGroup hurtboxGroup;

	public RecallBehaviour behaviour;

	private int index;

	private float timeBetweenPositions;

	private float speed;

	private float distance;

	public override void OnEnter()
	{
		//IL_007f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0120: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
		((BaseState)this).OnEnter();
		behaviour = ((EntityState)this).GetComponent<RecallBehaviour>();
		behaviour.track = false;
		index = behaviour.positions.Count - 1;
		timeBetweenPositions = duration / (float)behaviour.positions.Count;
		behaviour.camera.isCutscene = true;
		for (int i = 0; i < behaviour.positions.Count - 1; i++)
		{
			distance += Vector3.Distance(behaviour.positions[i], behaviour.positions[i + 1]);
		}
		speed = distance / duration;
		AkSoundEngine.PostEvent(Sounds.Recall, ((Component)((EntityState)this).characterBody).gameObject);
		Ray aimRay = ((BaseState)this).GetAimRay();
		Vector3 val = ((Ray)(ref aimRay)).direction;
		direction = -val;
		direction.y = 0f;
		direction = ((Vector3)(ref direction)).normalized;
		modelTransform = ((EntityState)this).GetModelTransform();
		if (Object.op_Implicit((Object)(object)modelTransform))
		{
			characterModel = ((Component)modelTransform).GetComponent<CharacterModel>();
			hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>();
		}
		if (Object.op_Implicit((Object)(object)characterModel))
		{
			CharacterModel obj = characterModel;
			obj.invisibilityCount++;
		}
		if (Object.op_Implicit((Object)(object)hurtboxGroup))
		{
			HurtBoxGroup val2 = hurtboxGroup;
			int hurtBoxesDeactivatorCounter = val2.hurtBoxesDeactivatorCounter + 1;
			val2.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter;
		}
		CreateBlinkEffect(Util.GetCorePosition(((EntityState)this).gameObject));
		Heal();
	}

	public virtual void Heal()
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		if (NetworkServer.active)
		{
			((EntityState)this).healthComponent.Heal(((EntityState)this).healthComponent.fullHealth * 0.25f, default(ProcChainMask), true);
			Util.CleanseBody(((EntityState)this).characterBody, true, false, false, true, true, false);
		}
	}

	private void CreateBlinkEffect(Vector3 origin)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Expected O, but got Unknown
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: 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)
		EffectData val = new EffectData();
		val.rotation = Util.QuaternionSafeLookRotation(direction);
		val.origin = origin;
		EffectManager.SpawnEffect(BlinkState.blinkPrefab, val, false);
	}

	public override void FixedUpdate()
	{
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0122: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: Unknown result type (might be due to invalid IL or missing references)
		//IL_013e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0154: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a8: 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_00e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
		((EntityState)this).FixedUpdate();
		if (!Object.op_Implicit((Object)(object)behaviour))
		{
			return;
		}
		((BaseCharacterController)((EntityState)this).characterMotor).Motor.SetPosition(Vector3.Lerp(((EntityState)this).transform.position, behaviour.positions[index], speed), true);
		if (((EntityState)this).isAuthority)
		{
			((Component)behaviour.camera).transform.position = Vector3.Lerp(((Component)behaviour.camera).transform.position, behaviour.camPositions[index], speed);
			((Component)behaviour.camera).transform.rotation = Quaternion.Lerp(((Component)behaviour.camera).transform.rotation, behaviour.rotations[index], speed);
		}
		((EntityState)this).characterDirection.forward = Vector3.Lerp(((EntityState)this).characterDirection.forward, behaviour.directions[index], speed);
		if (((EntityState)this).transform.position == behaviour.positions[index])
		{
			if (Object.op_Implicit((Object)(object)behaviour.models[index]))
			{
				EntityState.Destroy((Object)(object)behaviour.models[index]);
				behaviour.models.RemoveAt(index);
			}
			index--;
		}
		if (((EntityState)this).isAuthority && index == 0)
		{
			((EntityState)this).outer.SetNextStateToMain();
		}
	}

	public override void OnExit()
	{
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		behaviour.Reset();
		if (!((EntityState)this).outer.destroying)
		{
			Util.PlaySound(endSoundString, ((EntityState)this).gameObject);
			CreateBlinkEffect(((EntityState)this).characterBody.corePosition);
			modelTransform = ((EntityState)this).GetModelTransform();
			if (Object.op_Implicit((Object)(object)modelTransform))
			{
				TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
				val.duration = 1.25f;
				val.animateShaderAlpha = true;
				val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
				val.destroyComponentOnEnd = true;
				val.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashBright");
				val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
				TemporaryOverlay val2 = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
				val2.duration = 1.35f;
				val2.animateShaderAlpha = true;
				val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
				val2.destroyComponentOnEnd = true;
				val2.originalMaterial = LegacyResourcesAPI.Load<Material>("Materials/matHuntressFlashExpanded");
				val2.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
			}
		}
		if (Object.op_Implicit((Object)(object)characterModel))
		{
			CharacterModel obj = characterModel;
			obj.invisibilityCount--;
		}
		if (Object.op_Implicit((Object)(object)hurtboxGroup))
		{
			HurtBoxGroup val3 = hurtboxGroup;
			int hurtBoxesDeactivatorCounter = val3.hurtBoxesDeactivatorCounter - 1;
			val3.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter;
		}
		((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)6;
	}
}
internal class Prefabs
{
	public static GameObject Crosshair;

	public static GameObject minePrefab;

	public static GameObject minePrefabAlt;

	public static GameObject muzzleflash;

	public static GameObject hiteffect;

	public static GameObject tracer;

	public static GameObject tracerModel;

	public static Material mat;

	public static ItemDef stopwatch;

	internal static T Load<T>(string path)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		return Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion();
	}

	public static Material InstantiateMaterial(Texture tex, Texture norm = null)
	{
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Expected O, but got Unknown
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		Material val = new Material(Load<Shader>("RoR2/Base/Shaders/HGStandard.shader"));
		if (Object.op_Implicit((Object)(object)val))
		{
			val.SetColor("_Color", Color.white);
			val.SetTexture("_MainTex", tex);
			val.SetFloat("_NormalStrength", 1f);
			val.SetTexture("_NormalTex", norm);
			return val;
		}
		return val;
	}

	internal static void CreatePrefabs()
	{
		//IL_0108: 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_021d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0223: Expected O, but got Unknown
		//IL_023a: Unknown result type (might be due to invalid IL or missing references)
		//IL_023f: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_045c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0466: 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_04b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0511: Unknown result type (might be due to invalid IL or missing references)
		//IL_051b: Unknown result type (might be due to invalid IL or missing references)
		LanguageAPI.Add("TRACER_STOPWATCH", "Strange Stopwatch");
		LanguageAPI.Add("TRACER_STOPWATCH_DESCRIPTION", "At the start of each stage, time falls back by <style=cIsUtility>1m <style=cStack>(+1m per stack)</style></style>.");
		LanguageAPI.Add("TRACER_STOPWATCH_PICKUP", "Go back in time!");
		LanguageAPI.Add("TRACER_STOPWATCH_LORE", "Order: Strange Stopwatch\r\nTracking Number: 826******\r\nEstimated Delivery: 02/06/1917\r\nShipping Method: Priority\r\nShipping Address: 20004 Washington, DC\r\nShipping Details:\r\n\r\n" + Environment.NewLine);
		GameObject val = Assets.MainAssetBundle.LoadAsset<GameObject>("stopwatch");
		Renderer[] componentsInChildren = val.GetComponentsInChildren<Renderer>();
		componentsInChildren[0].material = Load<Material>("RoR2/DLC1/HealingPotion/matHealingPotionGlass.mat");
		componentsInChildren[1].material = InstantiateMaterial((Texture)(object)Assets.MainAssetBundle.LoadAsset<Texture2D>("stopwatch_d"), (Texture)(object)Assets.MainAssetBundle.LoadAsset<Texture2D>("stopwatch_n"));
		stopwatch = ScriptableObject.CreateInstance<ItemDef>();
		stopwatch.pickupModelPrefab = val;
		((Object)stopwatch).name = "TracerStopwatchItem";
		stopwatch.nameToken = "TRACER_STOPWATCH";
		stopwatch.descriptionToken = "TRACER_STOPWATCH_DESCRIPTION";
		stopwatch.pickupToken = "TRACER_STOPWATCH_PICKUP";
		stopwatch.loreToken = "TRACER_STOPWATCH_LORE";
		stopwatch.deprecatedTier = (ItemTier)2;
		ItemDef obj = stopwatch;
		ItemTag[] array = new ItemTag[4];
		RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
		obj.tags = (ItemTag[])(object)array;
		stopwatch.pickupIconSprite = Assets.MainAssetBundle.LoadAsset<Sprite>("stopwatchIcon3");
		ContentAddition.AddItemDef(stopwatch);
		mat = Object.Instantiate<Material>(Load<Material>("RoR2/Base/Huntress/matHuntressFlashBright.mat"));
		mat.SetFloat("_ExternalAlpha", 0f);
		Crosshair = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/UI/SimpleDotCrosshair.prefab"), "TracerCrosshair", false);
		Object.Destroy((Object)(object)Crosshair.GetComponent<RawImage>());
		foreach (object item in Crosshair.transform)
		{
			Object.Destroy((Object)(object)((Component)(Transform)item).gameObject);
		}
		Crosshair.GetComponent<CrosshairController>().spriteSpreadPositions = Array.Empty<SpritePosition>();
		GameObject val2 = new GameObject("TracerCrosshairImage", new Type[1] { typeof(RectTransform) });
		Transform transform = val2.transform;
		RectTransform val3 = (RectTransform)(object)((transform is RectTransform) ? transform : null);
		((Transform)val3).localPosition = Vector2.op_Implicit(new Vector2(0f, 0f));
		val3.SetSizeWithCurrentAnchors((Axis)0, Tracer.crosshairSize.Value);
		val3.SetSizeWithCurrentAnchors((Axis)1, Tracer.crosshairSize.Value);
		val2.transform.SetParent(Crosshair.transform);
		val2.AddComponent<Image>().sprite = Assets.MainAssetBundle.LoadAsset<Sprite>("crosshair");
		val2.GetComponent<Image>().preserveAspect = true;
		((Transform)((Graphic)val2.GetComponent<Image>()).rectTransform).localPosition = new Vector3(0f, -8f, 0f);
		minePrefab = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Commando/CommandoGrenadeProjectile.prefab"), "TracerMinePrefab", true);
		ProjectileController component = minePrefab.GetComponent<ProjectileController>();
		ProjectileStickOnImpact val4 = minePrefab.AddComponent<ProjectileStickOnImpact>();
		ProjectileImpactExplosion component2 = minePrefab.GetComponent<ProjectileImpactExplosion>();
		Object.Destroy((Object)(object)minePrefab.GetComponent<ProjectileDeployToOwner>());
		GameObject val5 = PrefabAPI.InstantiateClone(Assets.pulseBombmdl, "CommandoGrenadeGhost", true);
		Object.Destroy((Object)(object)val5.GetComponent<ProjectileDeployToOwner>());
		val5.AddComponent<NetworkIdentity>();
		val5.AddComponent<ProjectileGhostController>();
		component.ghostPrefab = val5;
		component.allowPrediction = false;
		val4.ignoreCharacters = false;
		val4.ignoreWorld = false;
		((ProjectileExplosion)component2).blastRadius = 20f;
		tracer = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Commando/TracerCommandoShotgun.prefab"), "TracerTracer", false);
		Tracer component3 = tracer.GetComponent<Tracer>();
		component3.speed = 260f;
		component3.beamDensity = 5f;
		component3.length = 5f;
		((Renderer)tracer.GetComponent<LineRenderer>()).material.SetTextureScale("_MainTex", new Vector2(0.4f, 1f));
		Object.Destroy((Object)(object)tracer.GetComponent<DetachTrailOnDestroy>());
		Object.Destroy((Object)(object)tracer.GetComponentInChildren<TrailRenderer>());
		ContentAddition.AddEffect(tracer);
		hiteffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Junk/Huntress/ImpactHuntress.prefab"), "TracerPulseHitEffect", false);
		ParticleSystemRenderer[] componentsInChildren2 = hiteffect.GetComponentsInChildren<ParticleSystemRenderer>();
		((Renderer)componentsInChildren2[0]).material = Load<Material>("RoR2/Base/LunarGolem/matLunarGolemMuzzleFlash.mat");
		((Component)componentsInChildren2[0]).transform.localScale = Vector3.one * 0.6f;
		((Renderer)componentsInChildren2[1]).material = Load<Material>("RoR2/Base/LunarWisp/matLunarWispBombTrail.mat");
		((Renderer)componentsInChildren2[1]).material.SetColor("_TintColor", new Color(0.066666f, 0.286274f, 255f));
		((Component)componentsInChildren2[1]).transform.localScale = Vector3.one * 0.6f;
		ContentAddition.AddEffect(hiteffect);
		muzzleflash = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Commando/MuzzleflashFMJ.prefab"), "TracerPulseMuzzleFlash", false);
		ParticleSystemRenderer[] componentsInChildren3 = muzzleflash.GetComponentsInChildren<ParticleSystemRenderer>();
		foreach (ParticleSystemRenderer val6 in componentsInChildren3)
		{
			((Component)val6).transform.localScale = Vector3.one * 0.55f;
		}
		ContentAddition.AddEffect(muzzleflash);
		GameObject val7 = PrefabAPI.InstantiateClone(Assets.pulseBombmdl, "TracerPulseBombAltGhost", true);
		Object.Destroy((Object)(object)val7.GetComponent<ProjectileDeployToOwner>());
		val7.AddComponent<NetworkIdentity>();
		val7.AddComponent<ProjectileGhostController>();
		minePrefabAlt = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Commando/CommandoGrenadeProjectile.prefab"), "TracerMinePrefabAlt", true);
		minePrefabAlt.AddComponent<MineBehaviour>();
		ProjectileController component4 = minePrefabAlt.GetComponent<ProjectileController>();
		ProjectileStickOnImpact val8 = minePrefabAlt.AddComponent<ProjectileStickOnImpact>();
		ProjectileImpactExplosion component5 = minePrefabAlt.GetComponent<ProjectileImpactExplosion>();
		ProjectileDamage component6 = minePrefabAlt.GetComponent<ProjectileDamage>();
		ProjectileSimple component7 = minePrefabAlt.GetComponent<ProjectileSimple>();
		Object.Destroy((Object)(object)minePrefabAlt.GetComponent<ProjectileDeployToOwner>());
		component4.ghostPrefab = val7;
		component4.allowPrediction = false;
		val8.ignoreCharacters = false;
		val8.ignoreWorld = false;
		((ProjectileExplosion)component5).blastRadius = 1f;
		component5.lifetimeAfterImpact = 999999f;
		component5.lifetime = 999999f;
		component7.lifetime = 999999f;
		ContentAddition.AddProjectile(minePrefab);
		ContentAddition.AddProjectile(minePrefabAlt);
	}
}
public static class Sounds
{
	public static readonly uint Reload = 456382354u;

	public static readonly uint BombThrow = 1325857779u;

	public static readonly uint BombAttach = 1375977958u;

	public static readonly uint PulsePistols = 2314892076u;

	public static readonly uint Blink = 3379926649u;

	public static readonly uint Recall = 3886774750u;

	public static readonly uint BombExplosion = 3910346330u;

	public static readonly uint SingleShot = 4085013133u;

	public static readonly uint SingleShot0 = 3653405639u;

	public static readonly uint Cringe = 3508439051u;

	public static readonly uint blinkR3 = 1541516824u;

	public static readonly uint blinkR2 = 1541516825u;

	public static readonly uint blinkR1 = 1541516826u;
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.Dragonyck.Tracer", "Tracer", "1.6.3")]
public class Tracer : BaseUnityPlugin
{
	public const string MODUID = "com.Dragonyck.Tracer";

	public static GameObject characterPrefab;

	public GameObject characterDisplay;

	public GameObject doppelganger;

	public static ConfigEntry<float> crosshairSize;

	public static ConfigEntry<bool> performanceMode;

	public static ConfigEntry<bool> potatoMode;

	private static readonly Color characterColor = new Color(1f, 0.7f, 0f);

	public static event Action<float> onTimeReduced;

	private void Awake()
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Expected O, but got Unknown
		//IL_0030: Expected O, but got Unknown
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Expected O, but got Unknown
		//IL_0060: Expected O, but got Unknown
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: Expected O, but got Unknown
		//IL_0090: Expected O, but got Unknown
		crosshairSize = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Crosshair Size", "Size"), 40f, new ConfigDescription("Changes the size of the crosshair.", (AcceptableValueBase)null, Array.Empty<object>()));
		performanceMode = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Enable Performance Trails", "Enable"), false, new ConfigDescription("Stores less Recall data on positions, rotations, trails, etc. Can be used with NO Trails for even better performance.", (AcceptableValueBase)null, Array.Empty<object>()));
		potatoMode = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("NO Trails", "Enable"), false, new ConfigDescription("No Recall trails.", (AcceptableValueBase)null, Array.Empty<object>()));
		Stage.onStageStartGlobal += delegate
		{
			float num = 0f;
			foreach (CharacterMaster readOnlyInstances in CharacterMaster.readOnlyInstancesList)
			{
				if (Object.op_Implicit((Object)(object)readOnlyInstances.inventory))
				{
					int itemCount = readOnlyInstances.inventory.GetItemCount(Prefabs.stopwatch);
					if (itemCount > 0)
					{
						num += (float)(60 * itemCount);
					}
				}
			}
			if (num > 0f)
			{
				if (NetworkServer.active)
				{
					float runStopwatch = Run.instance.GetRunStopwatch();
					Run.instance.SetRunStopwatch((num > runStopwatch) ? 0f : (runStopwatch - num));
				}
				Tracer.onTimeReduced?.Invoke(Run.instance.GetRunStopwatch());
			}
		};
		Assets.PopulateAssets();
		Achievements.RegisterUnlockables();
		Prefabs.CreatePrefabs();
		CreatePrefab();
		RegisterStates();
		RegisterCharacter();
		CreateDoppelganger();
	}

	private static GameObject CreateModel(GameObject main)
	{
		Object.Destroy((Object)(object)((Component)main.transform.Find("ModelBase")).gameObject);
		Object.Destroy((Object)(object)((Component)main.transform.Find("CameraPivot")).gameObject);
		Object.Destroy((Object)(object)((Component)main.transform.Find("AimOrigin")).gameObject);
		return Assets.MainAssetBundle.LoadAsset<GameObject>("Tracermdl");
	}

	internal static void CreatePrefab()
	{
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Expected O, but got Unknown
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Expected O, but got Unknown
		//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_0123: Unknown result type (might be due to invalid IL or missing references)
		//IL_0129: Expected O, but got Unknown
		//IL_0150: 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_0172: 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_01b1: 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_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_0247: Unknown result type (might be due to invalid IL or missing references)
		//IL_0384: Unknown result type (might be due to invalid IL or missing references)
		//IL_0457: Unknown result type (might be due to invalid IL or missing references)
		//IL_047f: Unknown result type (might be due to invalid IL or missing references)
		//IL_048c: Unknown result type (might be due to invalid IL or missing references)
		//IL_048e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0497: 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_04e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_052b: 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_053a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0543: Unknown result type (might be due to invalid IL or missing references)
		//IL_0581: Unknown result type (might be due to invalid IL or missing references)
		//IL_058e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0590: Unknown result type (might be due to invalid IL or missing references)
		//IL_0599: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d7: 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_05e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_062d: Unknown result type (might be due to invalid IL or missing references)
		//IL_063a: 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_0645: Unknown result type (might be due to invalid IL or missing references)
		//IL_0683: Unknown result type (might be due to invalid IL or missing references)
		//IL_0690: Unknown result type (might be due to invalid IL or missing references)
		//IL_0692: Unknown result type (might be due to invalid IL or missing references)
		//IL_069b: Unknown result type (might be due to invalid IL or missing references)
		//IL_06d9: 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)
		//IL_06e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_06f1: 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_073c: Unknown result type (might be due to invalid IL or missing references)
		//IL_073e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0823: Unknown result type (might be due to invalid IL or missing references)
		//IL_085b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0881: Unknown result type (might be due to invalid IL or missing references)
		//IL_0883: Unknown result type (might be due to invalid IL or missing references)
		//IL_088c: Unknown result type (might be due to invalid IL or missing references)
		//IL_08b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_08b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_08bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_08e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_08ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_0914: Unknown result type (might be due to invalid IL or missing references)
		//IL_0916: Unknown result type (might be due to invalid IL or missing references)
		//IL_091f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0945: Unknown result type (might be due to invalid IL or missing references)
		//IL_0947: Unknown result type (might be due to invalid IL or missing references)
		//IL_0950: Unknown result type (might be due to invalid IL or missing references)
		//IL_0976: Unknown result type (might be due to invalid IL or missing references)
		//IL_0978: Unknown result type (might be due to invalid IL or missing references)
		//IL_0981: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_09a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_09b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_09d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_09da: Unknown result type (might be due to invalid IL or missing references)
		//IL_09fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a1a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a1c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a25: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a61: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a63: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a6c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aa8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aaa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ab3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aef: Unknown result type (might be due to invalid IL or missing references)
		//IL_0af1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0afa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b36: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b38: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b41: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b7d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b7f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b88: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bc4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bc6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bcf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c0b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c0d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c16: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c52: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c54: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c95: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cf9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d24: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e1c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e47: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f17: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f42: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fd0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ffb: Unknown result type (might be due to invalid IL or missing references)
		//IL_1157: Unknown result type (might be due to invalid IL or missing references)
		//IL_1162: Unknown result type (might be due to invalid IL or missing references)
		//IL_119a: Unknown result type (might be due to invalid IL or missing references)
		//IL_11c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_11c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_11cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_11f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_11f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_11fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_1222: Unknown result type (might be due to invalid IL or missing references)
		//IL_1224: Unknown result type (might be due to invalid IL or missing references)
		//IL_122d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1253: Unknown result type (might be due to invalid IL or missing references)
		//IL_1255: Unknown result type (might be due to invalid IL or missing references)
		//IL_125e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1284: Unknown result type (might be due to invalid IL or missing references)
		//IL_1286: Unknown result type (might be due to invalid IL or missing references)
		//IL_12a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_12cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_12cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_12d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_1308: Unknown result type (might be due to invalid IL or missing references)
		//IL_130a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1313: Unknown result type (might be due to invalid IL or missing references)
		//IL_1343: Unknown result type (might be due to invalid IL or missing references)
		//IL_1345: Unknown result type (might be due to invalid IL or missing references)
		//IL_134e: Unknown result type (might be due to invalid IL or missing references)
		//IL_137e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1380: Unknown result type (might be due to invalid IL or missing references)
		//IL_1389: Unknown result type (might be due to invalid IL or missing references)
		//IL_13b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_13bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_13c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_13f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_13f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_13ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_142f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1431: Unknown result type (might be due to invalid IL or missing references)
		//IL_143a: Unknown result type (might be due to invalid IL or missing references)
		//IL_146a: Unknown result type (might be due to invalid IL or missing references)
		//IL_146c: Unknown result type (might be due to invalid IL or missing references)
		//IL_14b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_10bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_10e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_1515: Unknown result type (might be due to invalid IL or missing references)
		//IL_1540: Unknown result type (might be due to invalid IL or missing references)
		//IL_1638: Unknown result type (might be due to invalid IL or missing references)
		//IL_1663: Unknown result type (might be due to invalid IL or missing references)
		//IL_1733: Unknown result type (might be due to invalid IL or missing references)
		//IL_175e: Unknown result type (might be due to invalid IL or missing references)
		//IL_18d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_18de: Unknown result type (might be due to invalid IL or missing references)
		//IL_1916: Unknown result type (might be due to invalid IL or missing references)
		//IL_193c: Unknown result type (might be due to invalid IL or missing references)
		//IL_193e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1947: Unknown result type (might be due to invalid IL or missing references)
		//IL_196d: Unknown result type (might be due to invalid IL or missing references)
		//IL_196f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1978: Unknown result type (might be due to invalid IL or missing references)
		//IL_199e: Unknown result type (might be due to invalid IL or missing references)
		//IL_19a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_19a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_19cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_19d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_19da: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a00: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a02: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a24: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a49: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a4b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a54: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a84: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a86: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a8f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1abf: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ac1: Unknown result type (might be due to invalid IL or missing references)
		//IL_1aca: Unknown result type (might be due to invalid IL or missing references)
		//IL_1afa: Unknown result type (might be due to invalid IL or missing references)
		//IL_1afc: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b41: Unknown result type (might be due to invalid IL or missing references)
		//IL_181f: Unknown result type (might be due to invalid IL or missing references)
		//IL_184a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ba5: Unknown result type (might be due to invalid IL or missing references)
		//IL_1bd0: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c77: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ca2: Unknown result type (might be due to invalid IL or missing references)
		//IL_1de4: Unknown result type (might be due to invalid IL or missing references)
		//IL_1def: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e27: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e4d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e4f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e58: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e7e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e80: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e89: Unknown result type (might be due to invalid IL or missing references)
		//IL_1eaf: Unknown result type (might be due to invalid IL or missing references)
		//IL_1eb1: Unknown result type (might be due to invalid IL or missing references)
		//IL_1eba: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ee0: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ee2: Unknown result type (might be due to invalid IL or missing references)
		//IL_1eeb: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f11: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f13: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f35: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f5a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f5c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f65: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f95: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f97: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fa0: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fd0: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fd2: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fdb: Unknown result type (might be due to invalid IL or missing references)
		//IL_200b: Unknown result type (might be due to invalid IL or missing references)
		//IL_200d: Unknown result type (might be due to invalid IL or missing references)
		//IL_2016: Unknown result type (might be due to invalid IL or missing references)
		//IL_2046: Unknown result type (might be due to invalid IL or missing references)
		//IL_2048: Unknown result type (might be due to invalid IL or missing references)
		//IL_2051: Unknown result type (might be due to invalid IL or missing references)
		//IL_2081: Unknown result type (might be due to invalid IL or missing references)
		//IL_2083: Unknown result type (might be due to invalid IL or missing references)
		//IL_208c: Unknown result type (might be due to invalid IL or missing references)
		//IL_20bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_20be: Unknown result type (might be due to invalid IL or missing references)
		//IL_2103: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d30: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d5b: Unknown result type (might be due to invalid IL or missing references)
		//IL_2167: Unknown result type (might be due to invalid IL or missing references)
		//IL_2192: Unknown result type (might be due to invalid IL or missing references)
		//IL_222f: Unknown result type (might be due to invalid IL or missing references)
		//IL_225a: Unknown result type (might be due to invalid IL or missing references)
		//IL_232a: Unknown result type (might be due to invalid IL or missing references)
		//IL_2355: Unknown result type (might be due to invalid IL or missing references)
		//IL_23d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_240a: Unknown result type (might be due to invalid IL or missing references)
		//IL_2533: Unknown result type (might be due to invalid IL or missing references)
		//IL_253e: Unknown result type (might be due to invalid IL or missing references)
		//IL_2576: Unknown result type (might be due to invalid IL or missing references)
		//IL_259c: Unknown result type (might be due to invalid IL or missing references)
		//IL_259e: Unknown result type (might be due to invalid IL or missing references)
		//IL_25a7: Unknown result ty