Decompiled source of PlayableBiden v1.0.0

PlayableBiden.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using EntityStates;
using EntityStates.Commando.CommandoWeapon;
using JetBrains.Annotations;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using On.RoR2;
using PlayableBiden.Assets;
using PlayableBiden.Utils;
using PlayableBiden.Utils.Paths;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Audio;
using RoR2.EntitlementManagement;
using RoR2.ExpansionManagement;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Audio;
using UnityEngine.Networking;
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.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("PlayableBiden")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("PlayableBiden")]
[assembly: AssemblyTitle("PlayableBiden")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace PlayableBiden
{
	[CreateAssetMenu(menuName = "PlayableBiden/EliteRequiredSkillDef")]
	public class EliteRequiredSkillDef : SkillDef
	{
		public class InstanceData : BaseSkillInstanceData
		{
			public EliteTracker tracker;
		}

		public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot)
		{
			return (BaseSkillInstanceData)(object)new InstanceData
			{
				tracker = ((Component)skillSlot).GetComponent<EliteTracker>()
			};
		}

		private static bool HasTarget(GenericSkill slot)
		{
			if (slot.skillInstanceData is InstanceData instanceData)
			{
				return (Object)(object)instanceData.tracker.target != (Object)null;
			}
			return false;
		}

		public override bool IsReady([NotNull] GenericSkill skillSlot)
		{
			return ((SkillDef)this).IsReady(skillSlot) && HasTarget(skillSlot);
		}

		public override bool CanExecute([NotNull] GenericSkill skillSlot)
		{
			return ((SkillDef)this).CanExecute(skillSlot) && HasTarget(skillSlot);
		}
	}
	public class EliteTracker : HurtboxTracker
	{
		public SkillDef RequiredSkillDef;

		public GenericSkill TargetSlot;

		public override void Start()
		{
			isActiveCallback = () => (Object)(object)TargetSlot.skillDef == (Object)(object)RequiredSkillDef && TargetSlot.CanExecute();
			validTargetCallback = (CharacterBody body) => body.isElite;
			targetingIndicatorPrefab = PlayableBiden.Assets.GameObject.HuntressTrackingIndicator;
			base.Start();
		}
	}
	[CreateAssetMenu(menuName = "PrimarySkillDef")]
	public class PrimarySkillDef : SkillDef, IPrimarySkillDef
	{
		public string WeaponName;

		public WeaponSlot WeaponSlot;

		public bool TwoHanded;

		public bool IsGreatsword;

		public string _WeaponName => WeaponName;

		public WeaponSlot _WeaponSlot => WeaponSlot;

		public bool _TwoHanded => TwoHanded;

		public bool _IsGreatsword => IsGreatsword;
	}
	public interface IPrimarySkillDef
	{
		string _WeaponName { get; }

		WeaponSlot _WeaponSlot { get; }

		bool _TwoHanded { get; }

		bool _IsGreatsword { get; }
	}
	[CreateAssetMenu(menuName = "SteppedPrimarySkillDef")]
	public class SteppedPrimarySkillDef : SteppedSkillDef, IPrimarySkillDef
	{
		public string WeaponName;

		public WeaponSlot WeaponSlot;

		public bool TwoHanded;

		public bool IsGreatsword;

		public string _WeaponName => WeaponName;

		public WeaponSlot _WeaponSlot => WeaponSlot;

		public bool _TwoHanded => TwoHanded;

		public bool _IsGreatsword => IsGreatsword;
	}
	[CreateAssetMenu(fileName = "Survivor", menuName = "PlayableBiden/Survivor")]
	public class Survivor : ScriptableObject
	{
		public GameObject Body;

		public SurvivorDef SurvivorDef;

		public List<UnlockableDef> Unlocks;

		public List<SkillDef> Skills;

		public List<SkillFamily> SkillFamilies;

		public List<GameObject> Projectiles;

		public List<GameObject> Effects;

		public List<TokenCollection> Tokens;

		public void Initialize()
		{
			foreach (TokenCollection token in Tokens)
			{
				token.Initialize();
			}
			Body.GetComponent<CharacterBody>()._defaultCrosshairPrefab = PlayableBiden.Utils.Paths.GameObject.TreebotCrosshair.Load<GameObject>();
			Body.GetComponent<CameraTargetParams>().cameraParams = PlayableBiden.Utils.Paths.CharacterCameraParams.ccpStandard.Load<CharacterCameraParams>();
			PrefabAPI.RegisterNetworkPrefab(Body);
			ContentAddition.AddBody(Body);
			ContentAddition.AddSurvivorDef(SurvivorDef);
			foreach (UnlockableDef unlock in Unlocks)
			{
				ContentAddition.AddUnlockableDef(unlock);
			}
			foreach (SkillDef skill in Skills)
			{
				ContentAddition.AddSkillDef(skill);
			}
			foreach (SkillFamily skillFamily in SkillFamilies)
			{
				ContentAddition.AddSkillFamily(skillFamily);
			}
			foreach (GameObject projectile in Projectiles)
			{
				ContentAddition.AddProjectile(projectile);
			}
			foreach (GameObject effect in Effects)
			{
				ContentAddition.AddEffect(effect);
			}
		}
	}
	public class TakedownProjectile : MonoBehaviour
	{
		public Transform Hook;

		public ProjectileTargetComponent TargetComponent;

		public float SeekingSpeed = 120f;

		public float ReelingSpeed = 90f;

		public GameObject owner;

		private bool reelingIn = false;

		private bool hasHooked = false;

		private CharacterBody body;

		public void Start()
		{
			owner = ((Component)this).GetComponent<ProjectileController>().owner;
		}

		public void FixedUpdate()
		{
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: 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_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0291: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: 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_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0254: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)TargetComponent.target) || (reelingIn && !Object.op_Implicit((Object)(object)body)) || !Object.op_Implicit((Object)(object)owner))
			{
				Object.Destroy((Object)(object)((Component)this).gameObject);
				return;
			}
			((Component)this).transform.position = owner.transform.position;
			Vector3 zero = Vector3.zero;
			Vector3 val;
			if (!reelingIn && !hasHooked)
			{
				val = TargetComponent.target.position - ((Component)Hook).transform.position;
				zero = ((Vector3)(ref val)).normalized;
				Hook.forward = zero;
				Transform transform = ((Component)Hook).transform;
				transform.position += zero * SeekingSpeed * Time.fixedDeltaTime;
			}
			else
			{
				val = TargetComponent.target.position - owner.transform.position;
				zero = -((Vector3)(ref val)).normalized;
				Hook.forward = -zero;
				Transform transform2 = ((Component)Hook).transform;
				transform2.position += zero * ReelingSpeed * Time.fixedDeltaTime;
				if (!NetworkServer.active)
				{
					return;
				}
				if (Object.op_Implicit((Object)(object)body.characterMotor))
				{
					body.characterMotor.velocity = zero * ReelingSpeed;
				}
				else
				{
					body.transform.position = ((Component)Hook).transform.position;
				}
				Vector3 val2 = TargetComponent.target.position - owner.transform.position;
				if (Vector3.Distance(body.transform.position, owner.transform.position) < 5f)
				{
					reelingIn = false;
					body.healthComponent.Suicide((GameObject)null, (GameObject)null, DamageTypeCombo.op_Implicit((DamageType)65536));
				}
			}
			if (!hasHooked)
			{
				Vector3 val3 = TargetComponent.target.position - Hook.position;
				if (Vector3.Distance(((Component)Hook).transform.position, TargetComponent.target.position) < 3f)
				{
					HookTarget();
				}
				else if (Vector3.Dot(zero, val3) < 0f)
				{
					HookTarget();
				}
			}
		}

		public void HookTarget()
		{
			hasHooked = true;
			reelingIn = true;
			body = ((Component)TargetComponent.target).GetComponent<HurtBox>().healthComponent.body;
			if (!NetworkServer.active)
			{
				return;
			}
			EnumerableExtensions.ForEachTry<EntityStateMachine>((IEnumerable<EntityStateMachine>)((Component)body).GetComponents<EntityStateMachine>(), (Action<EntityStateMachine>)delegate(EntityStateMachine x)
			{
				if (x.customName != "Body")
				{
					((Behaviour)x).enabled = false;
				}
			}, (IDictionary<EntityStateMachine, Exception>)null);
			((Component)body).gameObject.layer = LayerIndex.noCollision.intVal;
			if (Object.op_Implicit((Object)(object)body.characterMotor))
			{
				((BaseCharacterController)body.characterMotor).Motor.RebuildCollidableLayers();
			}
		}
	}
	[CreateAssetMenu(fileName = "TokenCollection", menuName = "PlayableBiden/TokenCollection")]
	public class TokenCollection : ScriptableObject
	{
		public List<Token> tokens;

		public void Initialize()
		{
			foreach (Token token in tokens)
			{
				LanguageAPI.Add(token.Key, token.Value);
			}
		}
	}
	[Serializable]
	public class Token
	{
		public string Key;

		public string Value;
	}
	public class WeaponModelController : MonoBehaviour
	{
		public Transform SidearmHolder;

		public Transform MeleeHolder;

		public SkillFamily TargetSkillFamily;

		public bool IsCSSDisplay = false;

		private LocalUser localUser = null;

		internal WeaponSlot activeSlot = WeaponSlot.Sidearm;

		internal bool UsingGreatswordWeapon = false;

		public Animator ModelAnimator;

		internal bool TwoHanded = false;

		public void Start()
		{
			if (IsCSSDisplay)
			{
				NetworkUser.onLoadoutChangedGlobal += OnLoadoutChanged;
			}
			ForceUpdate();
		}

		public void OnDestroy()
		{
			if (IsCSSDisplay)
			{
				NetworkUser.onLoadoutChangedGlobal -= OnLoadoutChanged;
			}
		}

		public void Update()
		{
			if (UsingGreatswordWeapon)
			{
				ModelAnimator.SetFloat("isHoldingTwoHandedWeapon", 0f);
			}
			else
			{
				ModelAnimator.SetFloat("isHoldingTwoHandedWeapon", TwoHanded ? 1f : (-1f));
			}
		}

		public void EnableWeapon()
		{
			((Component)SidearmHolder).gameObject.SetActive(activeSlot == WeaponSlot.Sidearm);
			((Component)MeleeHolder).gameObject.SetActive(activeSlot == WeaponSlot.Melee);
		}

		public void DisableWeapon()
		{
			if (!TwoHanded)
			{
				((Component)SidearmHolder).gameObject.SetActive(false);
			}
			((Component)MeleeHolder).gameObject.SetActive(false);
		}

		private void OnLoadoutChanged(NetworkUser user)
		{
			ForceUpdate();
		}

		public void ForceUpdate()
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			if (localUser == null)
			{
				localUser = LocalUserManager.GetFirstLocalUser();
			}
			NetworkUser currentNetworkUser = localUser.currentNetworkUser;
			Loadout val = Loadout.RequestInstance();
			currentNetworkUser.networkLoadout.CopyLoadout(val);
			uint skillVariant = val.bodyLoadoutManager.GetSkillVariant(currentNetworkUser.bodyIndexPreference, 0);
			Debug.Log((object)"converting to IPrimarySkillDef");
			IPrimarySkillDef def = TargetSkillFamily.variants[skillVariant].skillDef as IPrimarySkillDef;
			Debug.Log((object)"converted to IPrimarySkillDef");
			UpdateWeapon(def);
		}

		public void UpdateWeapon(IPrimarySkillDef def)
		{
			activeSlot = def._WeaponSlot;
			TwoHanded = def._TwoHanded;
			UsingGreatswordWeapon = def._IsGreatsword;
			Debug.Log((object)"updating active weapon");
			switch (def._WeaponSlot)
			{
			case WeaponSlot.Sidearm:
				((Component)MeleeHolder).gameObject.SetActive(false);
				((Component)SidearmHolder).gameObject.SetActive(true);
				UpdateModel(SidearmHolder, def._WeaponName);
				break;
			case WeaponSlot.Melee:
				((Component)MeleeHolder).gameObject.SetActive(true);
				((Component)SidearmHolder).gameObject.SetActive(false);
				UpdateModel(MeleeHolder, def._WeaponName);
				break;
			}
			static void UpdateModel(Transform root, string name)
			{
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Expected O, but got Unknown
				foreach (Transform item in root)
				{
					Transform val = item;
					if (((Object)val).name != name)
					{
						((Component)val).gameObject.SetActive(false);
					}
					else
					{
						((Component)val).gameObject.SetActive(true);
					}
				}
			}
		}
	}
	public enum WeaponSlot
	{
		Sidearm,
		Melee
	}
	public class CaliforniaCrucible : CoolerBasicMeleeAttack, IStepSetter
	{
		private int _step;

		public override float BaseDuration => 0.8f;

		public override float DamageCoefficient => 4.3f;

		public override string HitboxName => "Punch";

		public override GameObject HitEffectPrefab => null;

		public override float ProcCoefficient => 1f;

		public override float HitPauseDuration => 0.05f;

		public override GameObject SwingEffectPrefab => Main.bundle.LoadAsset<GameObject>("BidenCrucibleSlash.prefab");

		public override string MuzzleString => "MuzzleMelee";

		public override string MechanimHitboxParameter => "Hitbox.active";

		public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack)
		{
			((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack);
		}

		public override void PlayAnimation()
		{
			((EntityState)this).PlayAnimation("Fullbody, Override", (_step % 2 == 0) ? "GreatSlashAlt" : "GreatSlash", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f);
			AkSoundEngine.PostEvent(Events.Play_merc_m1_hard_swing, ((EntityState)this).gameObject);
		}

		public override void BeginMeleeAttackEffect()
		{
			((BasicMeleeAttack)this).swingEffectMuzzleString = ((_step % 2 == 0) ? "MuzzleCrucible_L" : "MuzzleCrucible_R");
			((BasicMeleeAttack)this).BeginMeleeAttackEffect();
		}

		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 void SetStep(int i)
		{
			_step = i;
		}
	}
	public class ColoradoCrush : CoolerBasicMeleeAttack
	{
		public override float BaseDuration => 1.4f;

		public override float DamageCoefficient => 6f;

		public override string HitboxName => "Punch";

		public override GameObject HitEffectPrefab => null;

		public override float ProcCoefficient => 1f;

		public override float HitPauseDuration => 0.05f;

		public override GameObject SwingEffectPrefab => null;

		public override string MuzzleString => "MuzzleMelee";

		public override string MechanimHitboxParameter => "Hitbox.active";

		public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack);
			overlapAttack.damageType |= DamageTypeCombo.op_Implicit((DamageType)32);
		}

		public override void PlayAnimation()
		{
			((EntityState)this).PlayAnimation("Gesture, Override", "Overhead", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f);
		}

		public override void BeginMeleeAttackEffect()
		{
			AkSoundEngine.PostEvent(Events.Play_item_use_meteor_impact, ((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 FloridaFirestarter : BaseSkillState
	{
		public float MinExitTime = 0.2f;

		public float DamagePerSecond = 4f;

		public float TickRate = 5f;

		public float Range = 22f;

		private Animator animator;

		private float fireDelay;

		private float stopwatch = 0f;

		private float damagePerTick;

		private GameObject instance;

		private DirectionOverrideRequest req;

		public GameObject EffectPrefab => Main.bundle.LoadAsset<GameObject>("FirestarterStream.prefab");

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			animator = ((EntityState)this).GetModelAnimator();
			animator.SetBool("isShooting", true);
			TickRate *= ((BaseState)this).attackSpeedStat;
			damagePerTick = DamagePerSecond / TickRate;
			fireDelay = 1f / TickRate;
			instance = Object.Instantiate<GameObject>(EffectPrefab, ((BaseState)this).FindModelChild("MuzzleFlamethrower"));
			AkSoundEngine.PostEvent(Events.Play_mage_R_start, ((EntityState)this).gameObject);
			req = ((Component)((EntityState)this).GetModelTransform()).GetComponent<AimAnimator>().RequestDirectionOverride((Func<Vector3>)(() => Quaternion.AngleAxis(-30f, Vector3.up) * ((EntityState)this).inputBank.aimDirection));
		}

		public override void FixedUpdate()
		{
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: 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_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Expected O, but got Unknown
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			((BaseState)this).StartAimMode(0.2f, false);
			if (!((EntityState)this).inputBank.skill1.down && ((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= MinExitTime)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
			if (Object.op_Implicit((Object)(object)instance))
			{
				instance.transform.forward = Vector3.RotateTowards(instance.transform.forward, ((EntityState)this).inputBank.aimDirection, 90f * Time.fixedDeltaTime, 360f * Time.fixedDeltaTime);
			}
			stopwatch += Time.fixedDeltaTime;
			if (stopwatch >= fireDelay && ((EntityState)this).isAuthority)
			{
				stopwatch = 0f;
				Ray aimRay = ((BaseState)this).GetAimRay();
				BulletAttack val = new BulletAttack();
				val.owner = ((EntityState)this).gameObject;
				val.weapon = ((EntityState)this).gameObject;
				val.origin = ((Ray)(ref aimRay)).origin;
				val.aimVector = ((Ray)(ref aimRay)).direction;
				val.minSpread = 0f;
				val.damage = damagePerTick * ((BaseState)this).damageStat;
				val.force = 20f;
				val.muzzleName = "MuzzleFlamethrower";
				val.hitEffectPrefab = PlayableBiden.Assets.GameObject.ImpactWispEmber;
				val.isCrit = ((BaseState)this).RollCrit();
				val.radius = 2f;
				val.falloffModel = (FalloffModel)0;
				val.stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask;
				val.procCoefficient = 1f;
				val.maxDistance = Range;
				val.smartCollision = true;
				val.damageType = DamageTypeCombo.op_Implicit((DamageType)128);
				val.Fire();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			AkSoundEngine.PostEvent(Events.Play_mage_R_end, ((EntityState)this).gameObject);
			if (Object.op_Implicit((Object)(object)instance))
			{
				EntityState.Destroy((Object)(object)instance);
			}
			((Component)((EntityState)this).GetModelTransform()).GetComponent<AimAnimator>().RemoveRequest(req);
			animator.SetBool("isShooting", false);
		}

		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 PolicyPistol : BaseSkillState
	{
		public float duration = 0.6f;

		public float damageCoeff = 3.6f;

		public override void OnEnter()
		{
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Expected O, but got Unknown
			//IL_0092: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			duration /= ((BaseState)this).attackSpeedStat;
			AkSoundEngine.PostEvent(Events.Play_bandit2_R_fire, ((EntityState)this).gameObject);
			EffectManager.SimpleMuzzleFlash(PlayableBiden.Utils.Paths.GameObject.MuzzleflashBarrage.Load<GameObject>(), ((EntityState)this).gameObject, "MuzzlePistol", false);
			((EntityState)this).PlayAnimation("Gesture, Override", "Shoot", "Generic.playbackRate", duration, 0f);
			if (((EntityState)this).isAuthority)
			{
				BulletAttack val = new BulletAttack();
				val.damage = ((BaseState)this).damageStat * damageCoeff;
				val.falloffModel = (FalloffModel)0;
				Ray aimRay = ((EntityState)this).inputBank.GetAimRay();
				val.aimVector = ((Ray)(ref aimRay)).direction;
				aimRay = ((EntityState)this).inputBank.GetAimRay();
				val.origin = ((Ray)(ref aimRay)).origin;
				val.maxDistance = 160f;
				val.owner = ((EntityState)this).gameObject;
				val.procCoefficient = 1f;
				val.isCrit = ((BaseState)this).RollCrit();
				val.muzzleName = "MuzzlePistol";
				val.tracerEffectPrefab = PlayableBiden.Utils.Paths.GameObject.TracerCommandoBoost.Load<GameObject>();
				val.hitEffectPrefab = PlayableBiden.Utils.Paths.GameObject.OmniImpactVFX.Load<GameObject>();
				val.Fire();
			}
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			((EntityState)this).characterBody.SetAimTimer(0.2f);
			if (((EntityState)this).fixedAge >= duration)
			{
				((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)2;
		}
	}
	public class ArizonaAirstrike : AimThrowableBase
	{
		public override void OnEnter()
		{
			base.maxDistance = 40f;
			base.arcVisualizerPrefab = PlayableBiden.Assets.GameObject.BasicThrowableVisualizer;
			base.endpointVisualizerPrefab = PlayableBiden.Assets.GameObject.HuntressArrowRainIndicator;
			base.endpointVisualizerRadiusScale = 5f;
			base.baseMinimumDuration = 0.15f;
			base.projectilePrefab = PlayableBiden.Assets.GameObject.ToolbotGrenadeLauncherProjectile;
			((AimThrowableBase)this).OnEnter();
			((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f);
			((AimThrowableBase)this).FireProjectile();
		}

		public override void FixedUpdate()
		{
			((AimThrowableBase)this).FixedUpdate();
			if (((EntityState)this).fixedAge >= 1.4f / ((BaseState)this).attackSpeedStat)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override bool KeyIsDown()
		{
			return false;
		}

		public override void FireProjectile()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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)
			((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f);
			if (((EntityState)this).isAuthority)
			{
				Vector3 hitPoint = base.currentTrajectoryInfo.hitPoint;
				RaycastHit val = default(RaycastHit);
				hitPoint = ((!Physics.Raycast(hitPoint, Vector3.up, ref val, 4000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) ? (hitPoint + Vector3.up * 1000f) : (((RaycastHit)(ref val)).point - Vector3.up * 5f));
				((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(FireProjectiles(hitPoint));
			}
		}

		public IEnumerator FireProjectiles(Vector3 origin)
		{
			//IL_000e: 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)
			FireProjectileInfo info = default(FireProjectileInfo);
			info.rotation = Quaternion.LookRotation(Vector3.down);
			info.crit = ((BaseState)this).RollCrit();
			info.owner = ((EntityState)this).gameObject;
			((FireProjectileInfo)(ref info)).speedOverride = 940f;
			info.useSpeedOverride = true;
			info.projectilePrefab = base.projectilePrefab;
			info.damage = ((BaseState)this).damageStat * 1.2f;
			for (int i = 0; i < 3; i++)
			{
				yield return (object)new WaitForSeconds(0.2f);
				info.position = origin + Random.onUnitSphere * 1f;
				ProjectileManager.instance.FireProjectile(info);
			}
			((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)5;
		}
	}
	public class MinnesotaMortar : AimThrowableBase
	{
		public override void OnEnter()
		{
			base.maxDistance = 40f;
			base.arcVisualizerPrefab = PlayableBiden.Assets.GameObject.BasicThrowableVisualizer;
			base.endpointVisualizerPrefab = PlayableBiden.Assets.GameObject.HuntressArrowRainIndicator;
			base.endpointVisualizerRadiusScale = 5f;
			base.baseMinimumDuration = 0.15f;
			base.projectilePrefab = PlayableBiden.Assets.GameObject.ToolbotGrenadeLauncherProjectile;
			((AimThrowableBase)this).OnEnter();
		}

		public override void FireProjectile()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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)
			((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f);
			if (((EntityState)this).isAuthority)
			{
				Vector3 hitPoint = base.currentTrajectoryInfo.hitPoint;
				RaycastHit val = default(RaycastHit);
				hitPoint = ((!Physics.Raycast(hitPoint, Vector3.up, ref val, 4000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) ? (hitPoint + Vector3.up * 1000f) : (((RaycastHit)(ref val)).point - Vector3.up * 5f));
				((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(FireProjectiles(hitPoint));
			}
		}

		public IEnumerator FireProjectiles(Vector3 origin)
		{
			//IL_000e: 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)
			FireProjectileInfo info = default(FireProjectileInfo);
			info.rotation = Quaternion.LookRotation(Vector3.down);
			info.crit = ((BaseState)this).RollCrit();
			info.owner = ((EntityState)this).gameObject;
			((FireProjectileInfo)(ref info)).speedOverride = 940f;
			info.useSpeedOverride = true;
			info.projectilePrefab = base.projectilePrefab;
			info.damage = ((BaseState)this).damageStat * 2.5f;
			for (int i = 0; i < 3; i++)
			{
				yield return (object)new WaitForSeconds(0.2f);
				info.position = origin + Random.onUnitSphere * 3f;
				ProjectileManager.instance.FireProjectile(info);
			}
			((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)5;
		}
	}
	public class RhodeRoundhouse : CoolerBasicMeleeAttack
	{
		public override float BaseDuration => 0.7f;

		public override float DamageCoefficient => 9f;

		public override string HitboxName => "Punch";

		public override GameObject HitEffectPrefab => null;

		public override float ProcCoefficient => 1f;

		public override float HitPauseDuration => 0.05f;

		public override GameObject SwingEffectPrefab => Main.bundle.LoadAsset<GameObject>("BidenSlash.prefab");

		public override string MuzzleString => "MuzzleMelee";

		public override string MechanimHitboxParameter => "Hitbox.active";

		public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack)
		{
			((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack);
		}

		public override void PlayAnimation()
		{
			((EntityState)this).PlayAnimation("Fullbody, Override", "RoundKick", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f);
		}

		public override void BeginMeleeAttackEffect()
		{
			((BasicMeleeAttack)this).BeginMeleeAttackEffect();
			AkSoundEngine.PostEvent(Events.Play_item_use_meteor_impact, ((EntityState)this).gameObject);
		}
	}
	public class SenatePunch : CoolerBasicMeleeAttack
	{
		public override float BaseDuration => 0.7f;

		public override float DamageCoefficient => 5.6f;

		public override string HitboxName => "Punch";

		public override GameObject HitEffectPrefab => null;

		public override float ProcCoefficient => 1f;

		public override float HitPauseDuration => 0.05f;

		public override GameObject SwingEffectPrefab => Main.bundle.LoadAsset<GameObject>("BidenSlash.prefab");

		public override string MuzzleString => "MuzzleMelee";

		public override string MechanimHitboxParameter => "Hitbox.active";

		public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack)
		{
			//IL_0010: 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_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: 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)
			((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack);
			overlapAttack.forceVector = ((EntityState)this).characterDirection.forward * 5000f + Vector3.up * 2400f;
		}

		public override void PlayAnimation()
		{
			((EntityState)this).PlayAnimation("Fullbody, Override", "Kick", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f);
		}

		public override void BeginMeleeAttackEffect()
		{
			AkSoundEngine.PostEvent(Events.Play_item_use_meteor_impact, ((EntityState)this).gameObject);
		}
	}
	public class TexasTakedown : BaseSkillState
	{
		public bool hasFired = false;

		public float duration = 2f;

		public Animator animator;

		public EliteTracker tracker;

		public override void OnEnter()
		{
			((BaseState)this).OnEnter();
			((EntityState)this).PlayAnimation("Body", "Grapple", "Generic.playbackRate", duration, 0f);
			tracker = ((EntityState)this).GetComponent<EliteTracker>();
			animator = ((EntityState)this).GetModelAnimator();
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon();
		}

		public override void FixedUpdate()
		{
			((EntityState)this).FixedUpdate();
			if (animator.GetFloat("Hitbox.active") >= 0.5f && !hasFired)
			{
				Fire();
			}
			if (((EntityState)this).fixedAge >= duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			if (!hasFired)
			{
				Fire();
			}
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon();
		}

		public void Fire()
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			hasFired = true;
			AkSoundEngine.PostEvent(Events.Play_item_proc_bounceChain, ((EntityState)this).gameObject);
			if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)tracker.target))
			{
				FireProjectileInfo val = default(FireProjectileInfo);
				val.position = ((EntityState)this).transform.position;
				val.rotation = Quaternion.identity;
				val.projectilePrefab = Main.Survivor.Projectiles[1];
				val.owner = ((EntityState)this).gameObject;
				val.target = ((Component)tracker.target).gameObject;
				ProjectileManager.instance.FireProjectile(val);
			}
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)5;
		}
	}
	public class BidenBlast : BaseSkillState
	{
		public float chargeDuration = 3f;

		public GameObject chargeInstance;

		private uint id;

		private Animator anim;

		private Transform target;

		public static GameObject chargeEffect => Main.bundle.LoadAsset<GameObject>("BidenBlastCharge.prefab");

		private float scaleMult => ((EntityState)this).fixedAge / chargeDuration;

		public override void OnEnter()
		{
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			chargeDuration /= ((BaseState)this).attackSpeedStat;
			((EntityState)this).PlayAnimation("Body", "Blast", "Generic.playbackRate", chargeDuration, 0f);
			target = ((BaseState)this).FindModelChild("MuzzleMagic");
			chargeInstance = Object.Instantiate<GameObject>(chargeEffect, target.position, Quaternion.identity);
			anim = ((EntityState)this).GetModelAnimator();
			id = AkSoundEngine.PostEvent(Events.Play_mage_m2_charge, ((EntityState)this).gameObject);
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon();
		}

		public override void FixedUpdate()
		{
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: 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)
			((EntityState)this).FixedUpdate();
			((EntityState)this).characterBody.SetAimTimer(0.2f);
			if (Object.op_Implicit((Object)(object)chargeInstance))
			{
				chargeInstance.transform.localScale = Vector3.one * scaleMult;
				chargeInstance.transform.position = target.position;
			}
			if (((EntityState)this).fixedAge >= chargeDuration || anim.GetFloat("Hitbox.active") > 0.5f)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).OnExit();
			AkSoundEngine.StopPlayingID(id);
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon();
			if (Object.op_Implicit((Object)(object)chargeInstance))
			{
				EntityState.Destroy((Object)(object)chargeInstance);
			}
			if (((EntityState)this).isAuthority)
			{
				FireProjectileInfo val = default(FireProjectileInfo);
				Ray aimRay = ((BaseState)this).GetAimRay();
				val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
				val.position = ((Component)((BaseState)this).FindModelChild("MuzzleMagic")).transform.position;
				val.damage = ((BaseState)this).damageStat * 24f;
				val.force = 1000f;
				val.owner = ((EntityState)this).gameObject;
				val.crit = ((BaseState)this).RollCrit();
				val.projectilePrefab = Main.Survivor.Projectiles[0];
				ProjectileManager.instance.FireProjectile(val);
			}
		}
	}
	public class DroneStrike : BaseSkillState
	{
		private float dodgeSpeed = 10f;

		private float duration = 1f;

		private Vector3 vector;

		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_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: 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_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			((BaseState)this).OnEnter();
			((EntityState)this).PlayAnimation("Body", "Roll", "Generic.playbackRate", duration / 2f, 0f);
			((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(Fire());
			Vector3 val;
			if (!(((EntityState)this).characterMotor.moveDirection != Vector3.zero))
			{
				Ray aimRay = ((EntityState)this).inputBank.GetAimRay();
				val = ((Ray)(ref aimRay)).direction * -1f;
			}
			else
			{
				val = ((EntityState)this).characterMotor.moveDirection * -1f;
			}
			vector = val;
			vector = ((Vector3)(ref vector)).normalized;
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon();
		}

		public IEnumerator Fire()
		{
			FireProjectileInfo info = default(FireProjectileInfo);
			info.position = GroundPosition(((EntityState)this).transform.position);
			info.crit = ((BaseState)this).RollCrit();
			info.damage = 4f * ((BaseState)this).damageStat;
			info.projectilePrefab = PlayableBiden.Assets.GameObject.CaptainAirstrikeProjectile1;
			info.owner = ((EntityState)this).gameObject;
			((FireProjectileInfo)(ref info)).speedOverride = 0f;
			for (int i = 0; i < 5; i++)
			{
				info.rotation = Quaternion.Euler(0f, Random.Range(0f, 360f), 0f);
				yield return (object)new WaitForSeconds(duration / 5f);
				ProjectileManager.instance.FireProjectile(info);
			}
		}

		public override void FixedUpdate()
		{
			//IL_000f: 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_001f: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).FixedUpdate();
			((EntityState)this).characterMotor.velocity = vector * dodgeSpeed;
			if (((EntityState)this).fixedAge >= duration)
			{
				((EntityState)this).outer.SetNextStateToMain();
			}
		}

		public override void OnExit()
		{
			((EntityState)this).OnExit();
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon();
		}

		public Vector3 GroundPosition(Vector3 pos)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: 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_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: 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_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			RaycastHit val = default(RaycastHit);
			if (Physics.Raycast(pos + Vector3.up * 5f, Vector3.down, ref val, 400f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1))
			{
				return ((RaycastHit)(ref val)).point;
			}
			return pos;
		}

		public override InterruptPriority GetMinimumInterruptPriority()
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			return (InterruptPriority)5;
		}
	}
	public class NerveGas : GenericProjectileBaseState
	{
		public override void OnEnter()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			ThrowGrenade val = new ThrowGrenade();
			base.effectPrefab = ((GenericProjectileBaseState)val).effectPrefab;
			base.projectilePrefab = Main.Survivor.Projectiles[2];
			base.damageCoefficient = 1f;
			base.force = ((GenericProjectileBaseState)val).force;
			base.minSpread = 0f;
			base.maxSpread = 0f;
			base.baseDuration = ((GenericProjectileBaseState)val).baseDuration;
			base.recoilAmplitude = ((GenericProjectileBaseState)val).recoilAmplitude;
			base.attackSoundString = ((GenericProjectileBaseState)val).attackSoundString;
			base.projectilePitchBonus = ((GenericProjectileBaseState)val).projectilePitchBonus;
			base.baseDelayBeforeFiringProjectile = ((GenericProjectileBaseState)val).baseDelayBeforeFiringProjectile;
			base.targetMuzzle = "MuzzleGun";
			base.bloom = ((GenericProjectileBaseState)val).bloom;
			((GenericProjectileBaseState)this).OnEnter();
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon();
		}

		public override void PlayAnimation(float duration)
		{
			((EntityState)this).PlayAnimation("Gesture, Override", "LobProjectile", "Generic.playbackRate", duration, 0f);
		}

		public override void OnExit()
		{
			((GenericProjectileBaseState)this).OnExit();
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon();
		}

		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 PipeBomb : GenericProjectileBaseState
	{
		public override void OnEnter()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			ThrowGrenade val = new ThrowGrenade();
			base.effectPrefab = ((GenericProjectileBaseState)val).effectPrefab;
			base.projectilePrefab = Main.PipebombProjectile;
			base.damageCoefficient = 12f;
			base.force = ((GenericProjectileBaseState)val).force;
			base.minSpread = 0f;
			base.maxSpread = 0f;
			base.baseDuration = ((GenericProjectileBaseState)val).baseDuration;
			base.recoilAmplitude = ((GenericProjectileBaseState)val).recoilAmplitude;
			base.attackSoundString = ((GenericProjectileBaseState)val).attackSoundString;
			base.projectilePitchBonus = ((GenericProjectileBaseState)val).projectilePitchBonus;
			base.baseDelayBeforeFiringProjectile = ((GenericProjectileBaseState)val).baseDelayBeforeFiringProjectile;
			base.targetMuzzle = "MuzzleGun";
			base.bloom = ((GenericProjectileBaseState)val).bloom;
			((GenericProjectileBaseState)this).OnEnter();
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon();
		}

		public override void PlayAnimation(float duration)
		{
			((EntityState)this).PlayAnimation("Gesture, Override", "LobProjectile", "Generic.playbackRate", duration, 0f);
		}

		public override void OnExit()
		{
			((GenericProjectileBaseState)this).OnExit();
			((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon();
		}

		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 WyomingWarp : AimThrowableBase
	{
		public override void OnEnter()
		{
			base.maxDistance = 40f;
			base.arcVisualizerPrefab = PlayableBiden.Utils.Paths.GameObject.BasicThrowableVisualizer.Load<GameObject>();
			base.endpointVisualizerPrefab = PlayableBiden.Utils.Paths.GameObject.HuntressArrowRainIndicator.Load<GameObject>();
			base.endpointVisualizerRadiusScale = 2f;
			base.baseMinimumDuration = 0.15f;
			base.projectilePrefab = PlayableBiden.Utils.Paths.GameObject.Fireball.Load<GameObject>();
			AkSoundEngine.PostEvent(Events.Play_bandit2_shift_enter, ((EntityState)this).gameObject);
			((AimThrowableBase)this).OnEnter();
			((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f);
		}

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

		public override void FireProjectile()
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f);
			if (((EntityState)this).isAuthority)
			{
				EffectManager.SimpleEffect(PlayableBiden.Utils.Paths.GameObject.Bandit2SmokeBomb.Load<GameObject>(), ((EntityState)this).transform.position, Quaternion.identity, true);
				TeleportHelper.TeleportBody(((EntityState)this).characterBody, base.currentTrajectoryInfo.hitPoint);
				EffectManager.SimpleEffect(PlayableBiden.Utils.Paths.GameObject.Bandit2SmokeBomb.Load<GameObject>(), ((EntityState)this).transform.position, Quaternion.identity, true);
				AkSoundEngine.PostEvent(Events.Play_bandit2_shift_exit, ((EntityState)this).gameObject);
			}
		}
	}
	[BepInPlugin("pseudopulse.PlayableBiden", "PlayableBiden", "1.0.0")]
	public class Main : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static IsAffordableDelegate <>9__15_0;

			public static PayCostDelegate <>9__15_1;

			internal bool <ModifyCatalog>b__15_0(CostTypeDef def, IsAffordableContext context)
			{
				//IL_0001: 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_0030: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>()))
				{
					return true;
				}
				return Money_IsAffordable.Invoke(def, context);
			}

			internal void <ModifyCatalog>b__15_1(CostTypeDef def, PayCostContext context)
			{
				//IL_0001: 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_009c: 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_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: 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_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Unknown result type (might be due to invalid IL or missing references)
				if (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>()))
				{
					DebtManager component = ((Component)context.activator).GetComponent<DebtManager>();
					if (Object.op_Implicit((Object)(object)context.activatorMaster) && context.cost > context.activatorMaster.money)
					{
						uint num = (uint)(context.cost - context.activatorMaster.money);
						component.CurrentDebt -= num;
						context.cost = (int)context.activatorMaster.money;
					}
				}
				Money_PayCost.Invoke(def, context);
			}
		}

		public const string PluginGUID = "pseudopulse.PlayableBiden";

		public const string PluginAuthor = "pseudopulse";

		public const string PluginName = "PlayableBiden";

		public const string PluginVersion = "1.0.0";

		public static AssetBundle bundle;

		public static ManualLogSource ModLogger;

		public static Survivor Survivor;

		private static BodyIndex _index = (BodyIndex)(-1);

		private static IsAffordableDelegate Money_IsAffordable;

		private static PayCostDelegate Money_PayCost;

		public static GameObject PipebombProjectile;

		public static BodyIndex index
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Invalid comparison between Unknown and I4
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: 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_0018: 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)
				if ((int)_index == -1)
				{
					_index = BodyCatalog.FindBodyIndex("BidenBody");
				}
				return _index;
			}
			set
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				_index = value;
			}
		}

		public void Awake()
		{
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Expected O, but got Unknown
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Expected O, but got Unknown
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			bundle = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("PlayableBiden.dll", "bidenbundle"));
			ModLogger = ((BaseUnityPlugin)this).Logger;
			Material[] array = bundle.LoadAllAssets<Material>();
			foreach (Material val in array)
			{
				Material val2 = val;
				string name = ((Object)val.shader).name;
				if (1 == 0)
				{
				}
				Shader shader = (Shader)(name switch
				{
					"StubbedShader/fx/hgcloudremap" => PlayableBiden.Utils.Paths.Shader.HGCloudRemap.Load<Shader>(), 
					"StubbedShader/deferred/hgstandard" => PlayableBiden.Utils.Paths.Shader.HGStandard.Load<Shader>(), 
					"Hopoo Games/FX/Cloud Remap" => PlayableBiden.Assets.Shader.HGCloudRemap, 
					_ => val.shader, 
				});
				if (1 == 0)
				{
				}
				val2.shader = shader;
			}
			Survivor = bundle.LoadAsset<Survivor>("Biden.asset");
			Survivor.Body.GetComponent<CharacterBody>()._defaultCrosshairPrefab = PlayableBiden.Assets.GameObject.CommandoBody.GetComponent<CharacterBody>()._defaultCrosshairPrefab;
			Survivor.Initialize();
			CharacterMaster.GiveMoney += new hook_GiveMoney(GiveMoney);
			CostTypeCatalog.Init += new hook_Init(ModifyCatalog);
			PipebombProjectile = PrefabAPI.InstantiateClone(PlayableBiden.Assets.GameObject.CommandoGrenadeProjectile, "PipeBombProjectile");
			ProjectileImpactExplosion component = PipebombProjectile.GetComponent<ProjectileImpactExplosion>();
			((ProjectileExplosion)component).explosionEffect = PlayableBiden.Assets.GameObject.ExplosionDroneDeath;
			((ProjectileExplosion)component).blastRadius = 20f;
			((ProjectileExplosion)component).falloffModel = (FalloffModel)0;
			component.impactEffect = PlayableBiden.Assets.GameObject.ExplosionDroneDeath;
			ProjectileController component2 = PipebombProjectile.GetComponent<ProjectileController>();
			component2.ghostPrefab = PlayableBiden.Assets.GameObject.CryoCanisterGhost;
			Collider component3 = PipebombProjectile.GetComponent<Collider>();
			component3.material = PlayableBiden.Assets.PhysicMaterial.physmatBouncyButFriction;
			ProjectileDamage component4 = PipebombProjectile.GetComponent<ProjectileDamage>();
			component4.damageType |= DamageTypeCombo.op_Implicit((DamageType)32);
			ContentAddition.AddProjectile(PipebombProjectile);
		}

		private void ModifyCatalog(orig_Init orig)
		{
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Expected O, but got Unknown
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Expected O, but got Unknown
			orig.Invoke();
			CostTypeDef costTypeDef = CostTypeCatalog.GetCostTypeDef((CostTypeIndex)1);
			Money_IsAffordable = costTypeDef.isAffordable;
			Money_PayCost = costTypeDef.payCost;
			object obj = <>c.<>9__15_0;
			if (obj == null)
			{
				IsAffordableDelegate val = (CostTypeDef def, IsAffordableContext context) => (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>())) || Money_IsAffordable.Invoke(def, context);
				<>c.<>9__15_0 = val;
				obj = (object)val;
			}
			costTypeDef.isAffordable = (IsAffordableDelegate)obj;
			object obj2 = <>c.<>9__15_1;
			if (obj2 == null)
			{
				PayCostDelegate val2 = delegate(CostTypeDef def, PayCostContext context)
				{
					//IL_0001: 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_009c: 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_0032: Unknown result type (might be due to invalid IL or missing references)
					//IL_003f: 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_005c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0063: Unknown result type (might be due to invalid IL or missing references)
					//IL_0084: Unknown result type (might be due to invalid IL or missing references)
					if (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>()))
					{
						DebtManager component = ((Component)context.activator).GetComponent<DebtManager>();
						if (Object.op_Implicit((Object)(object)context.activatorMaster) && context.cost > context.activatorMaster.money)
						{
							uint num = (uint)(context.cost - context.activatorMaster.money);
							component.CurrentDebt -= num;
							context.cost = (int)context.activatorMaster.money;
						}
					}
					Money_PayCost.Invoke(def, context);
				};
				<>c.<>9__15_1 = val2;
				obj2 = (object)val2;
			}
			costTypeDef.payCost = (PayCostDelegate)obj2;
		}

		private void GiveMoney(orig_GiveMoney orig, CharacterMaster self, uint amount)
		{
			if (Object.op_Implicit((Object)(object)self.bodyInstanceObject))
			{
				DebtManager component = self.bodyInstanceObject.GetComponent<DebtManager>();
				if (Object.op_Implicit((Object)(object)component) && component.CurrentDebt < 0f)
				{
					float num = (float)amount * component.IncomePenalty;
					amount -= (uint)num;
					component.CurrentDebt += num * component.IncomeEfficiency;
					if (component.CurrentDebt > 0f)
					{
						component.CurrentDebt = 0f;
					}
				}
			}
			orig.Invoke(self, amount);
		}
	}
	public class DebtManager : MonoBehaviour
	{
		public float IncomePenalty;

		public float IncomeEfficiency;

		[HideInInspector]
		public float CurrentDebt = 0f;

		public CharacterBody body;

		private MoneyText instance;

		private CharacterMaster master;

		public void FixedUpdate()
		{
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)instance) && Object.op_Implicit((Object)(object)((IEnumerable<HUD>)HUD.instancesList).FirstOrDefault((Func<HUD, bool>)((HUD x) => Object.op_Implicit((Object)(object)x.targetBodyObject) && (Object)(object)x.targetBodyObject == (Object)(object)((Component)this).gameObject))))
			{
				HUD val = ((IEnumerable<HUD>)HUD.instancesList).FirstOrDefault((Func<HUD, bool>)((HUD x) => Object.op_Implicit((Object)(object)x.targetBodyObject) && (Object)(object)x.targetBodyObject == (Object)(object)((Component)this).gameObject));
				GameObject val2 = Object.Instantiate<GameObject>(((Component)val.moneyText).gameObject, ((Component)val.moneyText).transform.parent);
				instance = val2.GetComponent<MoneyText>();
				((Graphic)instance.targetText).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)15, byte.MaxValue));
				((Graphic)((Component)((Component)instance).transform.Find("DollarSign")).GetComponent<HGTextMeshProUGUI>()).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)15, byte.MaxValue));
				((Graphic)((Component)((Component)instance).transform.Find("BackgroundPanel")).GetComponent<RawImage>()).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)11, (byte)34));
				((Component)instance).transform.SetSiblingIndex(1);
			}
			if (!Object.op_Implicit((Object)(object)master))
			{
				master = body.master;
			}
			if (Object.op_Implicit((Object)(object)instance))
			{
				instance.targetValue = (int)CurrentDebt;
			}
		}
	}
	public abstract class CoolerBasicMeleeAttack : BasicMeleeAttack
	{
		public abstract float BaseDuration { get; }

		public abstract float DamageCoefficient { get; }

		public abstract string HitboxName { get; }

		public abstract GameObject HitEffectPrefab { get; }

		public abstract float ProcCoefficient { get; }

		public abstract float HitPauseDuration { get; }

		public abstract GameObject SwingEffectPrefab { get; }

		public abstract string MuzzleString { get; }

		public virtual string MechanimHitboxParameter { get; }

		public virtual bool ScaleHitPauseDurationWithAttackSpeed { get; } = true;


		public virtual float Knockback { get; } = 0f;


		public override void OnEnter()
		{
			base.baseDuration = BaseDuration;
			base.damageCoefficient = DamageCoefficient;
			base.hitBoxGroupName = HitboxName;
			base.hitEffectPrefab = HitEffectPrefab;
			base.procCoefficient = ProcCoefficient;
			base.hitPauseDuration = HitPauseDuration;
			base.swingEffectPrefab = SwingEffectPrefab;
			base.swingEffectMuzzleString = MuzzleString;
			base.pushAwayForce = Knockback;
			if (MechanimHitboxParameter != null)
			{
				base.mecanimHitboxActiveParameter = MechanimHitboxParameter;
			}
			base.scaleHitPauseDurationAndVelocityWithAttackSpeed = ScaleHitPauseDurationWithAttackSpeed;
			((BasicMeleeAttack)this).OnEnter();
			((EntityState)this).GetModelAnimator().SetBool("noYawAim", true);
			((EntityState)this).GetModelAnimator().SetBool("noPitchAim", true);
		}

		public override void OnExit()
		{
			((BasicMeleeAttack)this).OnExit();
			((EntityState)this).GetModelAnimator().SetBool("noYawAim", false);
			((EntityState)this).GetModelAnimator().SetBool("noPitchAim", false);
		}
	}
	[RequireComponent(typeof(InputBankTest))]
	[RequireComponent(typeof(CharacterBody))]
	public abstract class Tracker : MonoBehaviour
	{
		public Transform target;

		public Indicator indicator;

		public GameObject targetingIndicatorPrefab;

		private float stopwatch = 0f;

		public float searchDelay = 0.4f;

		public float maxSearchAngle = 40f;

		public float maxSearchDistance = 60f;

		public bool isActive = true;

		public InputBankTest inputBank;

		public CharacterBody body;

		public Func<bool> isActiveCallback = DefaultIsActiveCallback;

		public float minDot => Mathf.Cos(Mathf.Clamp(maxSearchAngle, 0f, 180f) * (MathF.PI / 180f));

		private static bool DefaultIsActiveCallback()
		{
			return true;
		}

		public virtual void Start()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			indicator = new Indicator(((Component)this).gameObject, targetingIndicatorPrefab);
			body = ((Component)this).GetComponent<CharacterBody>();
			inputBank = ((Component)this).GetComponent<InputBankTest>();
		}

		public virtual void FixedUpdate()
		{
			if (indicator != null && !DefaultIsActiveCallback())
			{
				indicator.active = false;
				return;
			}
			if (indicator != null && !Object.op_Implicit((Object)(object)target))
			{
				indicator.active = false;
			}
			if (indicator != null && Object.op_Implicit((Object)(object)target))
			{
				indicator.active = true;
			}
			stopwatch += Time.fixedDeltaTime;
			if (stopwatch >= searchDelay)
			{
				stopwatch = 0f;
				target = SearchForTarget();
				if (Object.op_Implicit((Object)(object)target))
				{
					indicator.targetTransform = target;
				}
			}
		}

		public abstract Transform SearchForTarget();
	}
	public class HurtboxTracker : Tracker
	{
		public enum TargetType
		{
			Enemy,
			Friendly,
			All
		}

		public TeamIndex userIndex;

		public TargetType targetType;

		public Func<CharacterBody, bool> validTargetCallback = (CharacterBody x) => true;

		public override void Start()
		{
			//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)
			base.Start();
			userIndex = body.teamComponent.teamIndex;
		}

		public override Transform SearchForTarget()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//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_0016: 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_0027: 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_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: 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_0081: 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_008a: 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_00a0: 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)
			BullseyeSearch val = new BullseyeSearch();
			Ray aimRay = inputBank.GetAimRay();
			val.searchDirection = ((Ray)(ref aimRay)).direction;
			val.searchOrigin = ((Component)this).transform.position;
			val.maxDistanceFilter = maxSearchDistance;
			val.maxAngleFilter = maxSearchAngle;
			TeamMask teamMaskFilter = TeamMask.all;
			switch (targetType)
			{
			case TargetType.Enemy:
				((TeamMask)(ref teamMaskFilter)).RemoveTeam(userIndex);
				break;
			case TargetType.Friendly:
				teamMaskFilter = TeamMask.none;
				((TeamMask)(ref teamMaskFilter)).AddTeam(userIndex);
				break;
			case TargetType.All:
				teamMaskFilter = TeamMask.all;
				break;
			}
			val.teamMaskFilter = teamMaskFilter;
			val.RefreshCandidates();
			val.FilterOutGameObject(((Component)this).gameObject);
			IEnumerable<HurtBox> source = from x in val.GetResults()
				where Object.op_Implicit((Object)(object)x.healthComponent) && validTargetCallback(x.healthComponent.body)
				select x;
			HurtBox? obj = source.FirstOrDefault();
			return ((obj != null) ? ((Component)obj).transform : null) ?? null;
		}
	}
	public class ComponentTracker<T> : Tracker where T : Component
	{
		public Func<T, bool> validFilter = DefaultFilter;

		private static bool DefaultFilter(T t)
		{
			return true;
		}

		public override Transform SearchForTarget()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: 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_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			T[] array = Object.FindObjectsOfType<T>();
			foreach (T val in array)
			{
				if (validFilter(val) && !(Vector3.Distance(((Component)this).transform.position, ((Component)val).transform.position) > maxSearchDistance))
				{
					Ray aimRay = inputBank.GetAimRay();
					Vector3 direction = ((Ray)(ref aimRay)).direction;
					Vector3 val2 = ((Component)val).transform.position - ((Component)this).transform.position;
					float num = Vector3.Dot(direction, ((Vector3)(ref val2)).normalized);
					if (!(num < base.minDot))
					{
						return ((Component)val).transform;
					}
				}
			}
			return null;
		}
	}
}
namespace PlayableBiden.Assets
{
	public static class Texture2D
	{
		public static Texture2D texAttackSpeedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texAttackSpeedIcon.png").WaitForCompletion();

		public static Texture2D texAutomationActivationIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texAutomationActivationIcon.png").WaitForCompletion();

		public static Texture2D texAutomationActivationIconNew => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texAutomationActivationIcon_New.png").WaitForCompletion();

		public static Texture2D texBandit2ClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2ClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texBandit2ConsecutiveResetIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2ConsecutiveResetIcon.png").WaitForCompletion();

		public static Texture2D texBandit2RevolverFinaleIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2RevolverFinaleIcon.png").WaitForCompletion();

		public static Texture2D texBandit2StackSuperBleedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2StackSuperBleedIcon.png").WaitForCompletion();

		public static Texture2D texBeatArenaIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBeatArenaIcon.png").WaitForCompletion();

		public static Texture2D texBurnToDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBurnToDeathIcon.png").WaitForCompletion();

		public static Texture2D texCaptainBuyMegaDroneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainBuyMegaDroneIcon.png").WaitForCompletion();

		public static Texture2D texCaptainClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texCaptainSupplyDropFinaleIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainSupplyDropFinaleIcon.png").WaitForCompletion();

		public static Texture2D texCaptainVisitSeveralStagesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainVisitSeveralStagesIcon.png").WaitForCompletion();

		public static Texture2D texCarryLunarItemsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCarryLunarItemsIcon.png").WaitForCompletion();

		public static Texture2D texChargeTeleporterWhileNearDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texChargeTeleporterWhileNearDeathIcon.png").WaitForCompletion();

		public static Texture2D texCleanupDutyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCleanupDutyIcon.png").WaitForCompletion();

		public static Texture2D texCommandoClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texCommandoFastFirstStageClearIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoFastFirstStageClearIcon.png").WaitForCompletion();

		public static Texture2D texCommandoKillOverloadingWormIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoKillOverloadingWormIcon.png").WaitForCompletion();

		public static Texture2D texCommandoNonLunarEnduranceIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoNonLunarEnduranceIcon.png").WaitForCompletion();

		public static Texture2D texComplete20StagesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texComplete20StagesIcon.png").WaitForCompletion();

		public static Texture2D texComplete30StagesCareerIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texComplete30StagesCareerIcon.png").WaitForCompletion();

		public static Texture2D texCompleteMainEndingHardIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteMainEndingHardIcon.png").WaitForCompletion();

		public static Texture2D texCompleteMainEndingIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteMainEndingIcon.png").WaitForCompletion();

		public static Texture2D texCompleteMultiBossShrineIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteMultiBossShrineIcon.png").WaitForCompletion();

		public static Texture2D texCompletePrismaticTrialIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompletePrismaticTrialIcon.png").WaitForCompletion();

		public static Texture2D texCompleteTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteTeleporterIcon.png").WaitForCompletion();

		public static Texture2D texCompleteTeleporterWithoutInjuryIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteTeleporterWithoutInjuryIcon.png").WaitForCompletion();

		public static Texture2D texCompleteThreeStagesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteThreeStagesIcon.png").WaitForCompletion();

		public static Texture2D texCompleteThreeStagesIconOLD => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteThreeStagesIconOLD.png").WaitForCompletion();

		public static Texture2D texCompleteThreeStagesWithoutHealingIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteThreeStagesWithoutHealingIcon.png").WaitForCompletion();

		public static Texture2D texCompleteUnknownEndingIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteUnknownEndingIcon.png").WaitForCompletion();

		public static Texture2D texCrocoClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texCrocoKillScavengerIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoKillScavengerIcon.png").WaitForCompletion();

		public static Texture2D texCrocoKillWeakEnemiesMilestoneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoKillWeakEnemiesMilestoneIcon.png").WaitForCompletion();

		public static Texture2D texCrocoTotalInfectionsMilestoneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoTotalInfectionsMilestoneIcon.png").WaitForCompletion();

		public static Texture2D texDefeatSuperRoboBallBossIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDefeatSuperRoboBallBossIcon.png").WaitForCompletion();

		public static Texture2D texDie20TimesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDie20TimesIcon.png").WaitForCompletion();

		public static Texture2D texDie5TimesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDie5TimesIcon.png").WaitForCompletion();

		public static Texture2D texDiscover10UniqueTier1Icon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDiscover10UniqueTier1Icon.png").WaitForCompletion();

		public static Texture2D texDiscover5EquipmentIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDiscover5EquipmentIcon.png").WaitForCompletion();

		public static Texture2D texEngiArmyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiArmyIcon.png").WaitForCompletion();

		public static Texture2D texEngiClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texEngiClearTeleporterWithZeroMonstersIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiClearTeleporterWithZeroMonstersIcon.png").WaitForCompletion();

		public static Texture2D texEngiKillBossQuickIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiKillBossQuickIcon.png").WaitForCompletion();

		public static Texture2D texFailShrineChanceIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFailShrineChanceIcon.png").WaitForCompletion();

		public static Texture2D texFindDevilAltarIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFindDevilAltarIcon.png").WaitForCompletion();

		public static Texture2D texFindTimedChestIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFindTimedChestIcon.png").WaitForCompletion();

		public static Texture2D texFindUniqueNewtStatuesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFindUniqueNewtStatuesIcon.png").WaitForCompletion();

		public static Texture2D texFreeMageIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFreeMageIcon.png").WaitForCompletion();

		public static Texture2D texHardEliteBossKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHardEliteBossKillIcon.png").WaitForCompletion();

		public static Texture2D texHardHitterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHardHitterIcon.png").WaitForCompletion();

		public static Texture2D texHuntressAllGlaiveBouncesKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressAllGlaiveBouncesKillIcon.png").WaitForCompletion();

		public static Texture2D texHuntressAttackSpeedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressAttackSpeedIcon.png").WaitForCompletion();

		public static Texture2D texHuntressClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texHuntressCollectCrowbarsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressCollectCrowbarsIcon.png").WaitForCompletion();

		public static Texture2D texHuntressMaintainFullHealthOnFrozenWallIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressMaintainFullHealthOnFrozenWallIcon.png").WaitForCompletion();

		public static Texture2D texKillBossQuantityInRunIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillBossQuantityInRunIcon.png").WaitForCompletion();

		public static Texture2D texKillBossQuickIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillBossQuickIcon.png").WaitForCompletion();

		public static Texture2D texKillElementalLemuriansIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillElementalLemuriansIcon.png").WaitForCompletion();

		public static Texture2D texKillEliteMonsterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillEliteMonsterIcon.png").WaitForCompletion();

		public static Texture2D texKillElitesMilestoneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillElitesMilestoneIcon.png").WaitForCompletion();

		public static Texture2D texKillGoldTitanInOneCycleIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillGoldTitanInOneCycleIcon.png").WaitForCompletion();

		public static Texture2D texKillTotalEnemiesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillTotalEnemiesIcon.png").WaitForCompletion();

		public static Texture2D texLoaderBigSlamIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderBigSlamIcon.png").WaitForCompletion();

		public static Texture2D texLoaderClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texLoaderKillLoadersIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderKillLoadersIcon.png").WaitForCompletion();

		public static Texture2D texLoaderSpeedRunIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderSpeedRunIcon.png").WaitForCompletion();

		public static Texture2D texLoaderThatsWeirdIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderThatsWeirdIcon.png").WaitForCompletion();

		public static Texture2D texLogCollectorIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLogCollectorIcon.png").WaitForCompletion();

		public static Texture2D texLoopOnceIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoopOnceIcon.png").WaitForCompletion();

		public static Texture2D texMageAirborneMultiKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageAirborneMultiKillIcon.png").WaitForCompletion();

		public static Texture2D texMageClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texMageFastBossIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageFastBossIcon.png").WaitForCompletion();

		public static Texture2D texMageMultiExecuteIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageMultiExecuteIcon.png").WaitForCompletion();

		public static Texture2D texMageMultiKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageMultiKillIcon.png").WaitForCompletion();

		public static Texture2D texMajorMultikillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMajorMultikillIcon.png").WaitForCompletion();

		public static Texture2D texMaxHealingShrineIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMaxHealingShrineIcon.png").WaitForCompletion();

		public static Texture2D texMercClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texMercCompleteTrialWithFullHealthIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercCompleteTrialWithFullHealthIcon.png").WaitForCompletion();

		public static Texture2D texMercDontTouchGroundIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercDontTouchGroundIcon.png").WaitForCompletion();

		public static Texture2D texMercXSkillsInYSecondsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercXSkillsInYSecondsIcon.png").WaitForCompletion();

		public static Texture2D texMoveSpeedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMoveSpeedIcon.png").WaitForCompletion();

		public static Texture2D texMultiCombatShrineIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMultiCombatShrineIcon.png").WaitForCompletion();

		public static Texture2D texNeverBackDownIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texNeverBackDownIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactBombIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactBombIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactCommandIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactCommandIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactEliteOnlyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactEliteOnlyIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactEnigmaIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactEnigmaIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactFriendlyFireIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactFriendlyFireIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactGlassIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactGlassIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactMixEnemyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactMixEnemyIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactMonsterTeamGainsItemsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactMonsterTeamGainsItemsIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactRandomSurvivorOnRespawnIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactRandomSurvivorOnRespawnIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactSacrificeIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactSacrificeIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactShadowCloneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactShadowCloneIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactSingleMonsterTypeIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactSingleMonsterTypeIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactSwarmsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactSwarmsIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactTeamDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactTeamDeathIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactWeakAssKneesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactWeakAssKneesIcon.png").WaitForCompletion();

		public static Texture2D texObtainArtifactWispOnDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactWispOnDeathIcon.png").WaitForCompletion();

		public static Texture2D texPlaceholderAchievement => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texPlaceholderAchievement.png").WaitForCompletion();

		public static Texture2D texRepeatedlyDuplicateItemsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texRepeatedlyDuplicateItemsIcon.png").WaitForCompletion();

		public static Texture2D texRepeatFirstTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texRepeatFirstTeleporterIcon.png").WaitForCompletion();

		public static Texture2D texRescueTreebotIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texRescueTreebotIcon.png").WaitForCompletion();

		public static Texture2D texStayAlive1Icon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texStayAlive1Icon.png").WaitForCompletion();

		public static Texture2D texSuicideHermitCrabsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texSuicideHermitCrabsIcon.png").WaitForCompletion();

		public static Texture2D texToolbotBeatArenaLaterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotBeatArenaLaterIcon.png").WaitForCompletion();

		public static Texture2D texToolbotClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texToolbotGuardTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotGuardTeleporterIcon.png").WaitForCompletion();

		public static Texture2D texToolbotKillImpBossWithBfgIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotKillImpBossWithBfgIcon.png").WaitForCompletion();

		public static Texture2D texTotalDronesRepairedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTotalDronesRepairedIcon.png").WaitForCompletion();

		public static Texture2D texTotalMoneyCollectedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTotalMoneyCollectedIcon.png").WaitForCompletion();

		public static Texture2D texTreebotBigHealIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotBigHealIcon.png").WaitForCompletion();

		public static Texture2D texTreebotClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotClearGameMonsoonIcon.png").WaitForCompletion();

		public static Texture2D texTreebotDunkClayBossIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotDunkClayBossIcon.png").WaitForCompletion();

		public static Texture2D texTreebotLowHealthTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotLowHealthTeleporterIcon.png").WaitForCompletion();

		public static Texture2D texUseThreePortalsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texUseThreePortalsIcon.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundCircleMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundCircleMask.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundCircleNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundCircleNormal.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundDiamondMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundDiamondMask.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundDiamondNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundDiamondNormal.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundFrameMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundFrameMask.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundFrameNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundFrameNormal.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundScavScarMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundScavScarMask.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundScavScarNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundScavScarNormal.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundSquareMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundSquareMask.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundSquareNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundSquareNormal.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundTriangleMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundTriangleMask.png").WaitForCompletion();

		public static Texture2D texArtifactCompoundTriangleNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundTriangleNormal.png").WaitForCompletion();

		public static Texture2D texArtifactBombDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Bomb/texArtifactBombDisabled.png").WaitForCompletion();

		public static Texture2D texArtifactBombEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Bomb/texArtifactBombEnabled.png").WaitForCompletion();

		public static Texture2D texArtifactCommandDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Command/texArtifactCommandDisabled.png").WaitForCompletion();

		public static Texture2D texArtifactCommandEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Command/texArtifactCommandEnabled.png").WaitForCompletion();

		public static Texture2D texArtifactEliteOnlyDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyDisabled.png").WaitForCompletion();

		public static Texture2D texArtifactEliteOnlyEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyEnabled.png").WaitForCompletion();

		public static Texture2D texArtifactRandomEquipmentDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Enigma/texArtifactRandomEquipmentDisabled.png").WaitForCompletion();

		public static Texture2D texArtifactRandomEquipmentEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Enigma/texArtifactRandomEquipmentEnabled.png").WaitForCompletion();

		public static Texture2D texArtifactFriendlyFireDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/FriendlyFire/texArtifactFriendlyFireDisabled.png").WaitForCompletion();

		public static Texture2D texArtifactFriendlyFireEnabled => A