Decompiled source of SkillSwap v2.3.4

SkillSwap.dll

Decompiled 2 months ago
using System;
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.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.Mage;
using HG;
using HG.Reflection;
using Microsoft.CodeAnalysis;
using MonoMod.RuntimeDetour;
using On;
using On.EntityStates;
using On.RoR2;
using On.RoR2.ContentManagement;
using R2API;
using RoR2;
using RoR2.ContentManagement;
using RoR2.Skills;
using RoR2.UI;
using SkillSwap.Utils;
using SkillSwap.Utils.Paths;
using UnityEngine;
using UnityEngine.AddressableAssets;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("SkillSwap")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+ff210076e9f93157ed2e302e786c1143304e6c67")]
[assembly: AssemblyProduct("SkillSwap")]
[assembly: AssemblyTitle("SkillSwap")]
[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]
	internal sealed class IsReadOnlyAttribute : Attribute
	{
	}
	[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 SkillSwap
{
	public class Components
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static hook_Start <0>__Huntress;

			public static hook_Start <1>__Viend;
		}

		private static List<SkillDef> corruptions = new List<SkillDef>();

		internal static void Perform()
		{
			//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_001c: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			object obj = <>O.<0>__Huntress;
			if (obj == null)
			{
				hook_Start val = Huntress;
				<>O.<0>__Huntress = val;
				obj = (object)val;
			}
			CharacterBody.Start += (hook_Start)obj;
			object obj2 = <>O.<1>__Viend;
			if (obj2 == null)
			{
				hook_Start val2 = Viend;
				<>O.<1>__Viend = val2;
				obj2 = (object)val2;
			}
			CharacterBody.Start += (hook_Start)obj2;
			corruptions.Add(SkillDef.CrushHealth.Load<SkillDef>());
			corruptions.Add((SkillDef)(object)VoidSurvivorSkillDef.CrushCorruption.Load<VoidSurvivorSkillDef>());
			corruptions.Add((SkillDef)(object)Passives.corruption);
		}

		private static void Huntress(orig_Start orig, CharacterBody self)
		{
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			orig.Invoke(self);
			GenericSkill[] components = ((Component)self).GetComponents<GenericSkill>();
			foreach (GenericSkill val in components)
			{
				if (val.skillDef is HuntressTrackingSkillDef)
				{
					SkillDef skillDef = val.skillDef;
					HuntressTrackingSkillDef val2 = (HuntressTrackingSkillDef)(object)((skillDef is HuntressTrackingSkillDef) ? skillDef : null);
					HuntressTracker val3 = ((Component)self).GetComponent<HuntressTracker>();
					if (!Object.op_Implicit((Object)(object)val3))
					{
						val3 = ((Component)self).gameObject.AddComponent<HuntressTracker>();
						val3.maxTrackingDistance = 60f;
						val3.maxTrackingAngle = 30f;
						val3.trackerUpdateFrequency = 10f;
					}
					val.skillInstanceData = (BaseSkillInstanceData)new InstanceData
					{
						huntressTracker = val3
					};
				}
			}
		}

		private static void Viend(orig_Start orig, CharacterBody self)
		{
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Expected O, but got Unknown
			orig.Invoke(self);
			GenericSkill[] components = ((Component)self).GetComponents<GenericSkill>();
			foreach (GenericSkill val in components)
			{
				if (corruptions.Contains(val.skillDef))
				{
					VoidSurvivorController val2 = ((Component)self).GetComponent<VoidSurvivorController>();
					if (!Object.op_Implicit((Object)(object)val2))
					{
						val2 = ((Component)self).gameObject.AddComponent<VoidSurvivorController>();
						val2.characterBody = self;
						val2.characterAnimator = self.characterDirection.modelAnimator ?? null;
						val2.bodyStateMachine = EntityStateMachine.FindByCustomName(((Component)self).gameObject, "Body");
						val2.weaponStateMachine = EntityStateMachine.FindByCustomName(((Component)self).gameObject, "Weapon");
						val2.corruptionModeStateMachine = EntityStateMachine.FindByCustomName(((Component)self).gameObject, "CorruptMode");
						val2.corruptedBuffDef = Buffs.VoidSurvivorCorruptMode;
						val2.overlayPrefab = GameObject.VoidSurvivorCorruptionUISimplified.Load<GameObject>();
						val2.maxCorruption = 100f;
						val2.minimumCorruptionPerVoidItem = 2f;
						val2.corruptionPerSecondInCombat = 3f;
						val2.corruptionPerSecondOutOfCombat = 3f;
						val2.corruptionForFullDamage = 50f;
						val2.corruptionForFullHeal = -100f;
						val2.corruptionPerCrit = 2f;
						val2.corruptionFractionPerSecondWhileCorrupted = -0.067f;
						val2.overlayChildLocatorEntry = "CrosshairExtras";
						val2.OnDisable();
						val2.OnEnable();
					}
					if (val.skillDef is VoidSurvivorSkillDef)
					{
						val.skillInstanceData = (BaseSkillInstanceData)new InstanceData
						{
							voidSurvivorController = val2
						};
					}
				}
			}
		}
	}
	public class Melee
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_Start <>9__0_0;

			public static hook_FindHitBoxGroup <>9__0_1;

			public static Predicate<HitBoxGroup> <>9__0_3;

			public static hook_Fire <>9__0_2;

			internal void <Perform>b__0_0(orig_Start orig, CharacterBody self)
			{
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: Expected O, but got Unknown
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00af: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(self);
				ModelLocator component = ((Component)self).GetComponent<ModelLocator>();
				if (Object.op_Implicit((Object)(object)component.modelTransform))
				{
					GameObject val = new GameObject("DefaultSSHitbox");
					BoxCollider val2 = val.AddComponent<BoxCollider>();
					val2.size = new Vector3(240f, 180f, 240f);
					HitBox val3 = val.AddComponent<HitBox>();
					val.layer = LayerIndex.triggerZone.intVal;
					((Collider)val2).isTrigger = true;
					val.transform.SetParent(component.modelTransform);
					val.transform.position = component.modelTransform.position;
					val.transform.localPosition = new Vector3(0f, 1f, 1.5f);
					Transform transform = val.transform;
					transform.localScale *= 3.5f;
					HitBoxGroup val4 = ((Component)component.modelTransform).gameObject.AddComponent<HitBoxGroup>();
					val4.groupName = "DefaultSSGroup";
					val4.hitBoxes = (HitBox[])(object)new HitBox[1] { val3 };
				}
			}

			internal HitBoxGroup <Perform>b__0_1(orig_FindHitBoxGroup orig, BaseState self, string str)
			{
				HitBoxGroup val = orig.Invoke(self, str);
				if (Object.op_Implicit((Object)(object)val))
				{
					return val;
				}
				return orig.Invoke(self, "DefaultSSGroup");
			}

			internal bool <Perform>b__0_2(orig_Fire orig, OverlapAttack self, List<HurtBox> res)
			{
				if ((Object)(object)self.hitBoxGroup == (Object)null && Object.op_Implicit((Object)(object)self.attacker))
				{
					CharacterBody component = self.attacker.GetComponent<CharacterBody>();
					if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.modelLocator) && Object.op_Implicit((Object)(object)component.modelLocator.modelTransform))
					{
						HitBoxGroup[] components = ((Component)component.modelLocator.modelTransform).GetComponents<HitBoxGroup>();
						self.hitBoxGroup = Array.Find(components, (HitBoxGroup x) => x.groupName == "DefaultSSGroup");
						Debug.Log((object)self.hitBoxGroup.groupName);
					}
				}
				return orig.Invoke(self, res);
			}

			internal bool <Perform>b__0_3(HitBoxGroup x)
			{
				return x.groupName == "DefaultSSGroup";
			}
		}

		internal static void Perform()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Expected O, but got Unknown
			//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_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_006a: Expected O, but got Unknown
			object obj = <>c.<>9__0_0;
			if (obj == null)
			{
				hook_Start val = delegate(orig_Start orig, CharacterBody self)
				{
					//IL_0028: Unknown result type (might be due to invalid IL or missing references)
					//IL_002e: Expected O, but got Unknown
					//IL_0045: Unknown result type (might be due to invalid IL or missing references)
					//IL_008f: Unknown result type (might be due to invalid IL or missing references)
					//IL_00af: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
					//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
					orig.Invoke(self);
					ModelLocator component2 = ((Component)self).GetComponent<ModelLocator>();
					if (Object.op_Implicit((Object)(object)component2.modelTransform))
					{
						GameObject val5 = new GameObject("DefaultSSHitbox");
						BoxCollider val6 = val5.AddComponent<BoxCollider>();
						val6.size = new Vector3(240f, 180f, 240f);
						HitBox val7 = val5.AddComponent<HitBox>();
						val5.layer = LayerIndex.triggerZone.intVal;
						((Collider)val6).isTrigger = true;
						val5.transform.SetParent(component2.modelTransform);
						val5.transform.position = component2.modelTransform.position;
						val5.transform.localPosition = new Vector3(0f, 1f, 1.5f);
						Transform transform = val5.transform;
						transform.localScale *= 3.5f;
						HitBoxGroup val8 = ((Component)component2.modelTransform).gameObject.AddComponent<HitBoxGroup>();
						val8.groupName = "DefaultSSGroup";
						val8.hitBoxes = (HitBox[])(object)new HitBox[1] { val7 };
					}
				};
				<>c.<>9__0_0 = val;
				obj = (object)val;
			}
			CharacterBody.Start += (hook_Start)obj;
			object obj2 = <>c.<>9__0_1;
			if (obj2 == null)
			{
				hook_FindHitBoxGroup val2 = delegate(orig_FindHitBoxGroup orig, BaseState self, string str)
				{
					HitBoxGroup val4 = orig.Invoke(self, str);
					return Object.op_Implicit((Object)(object)val4) ? val4 : orig.Invoke(self, "DefaultSSGroup");
				};
				<>c.<>9__0_1 = val2;
				obj2 = (object)val2;
			}
			BaseState.FindHitBoxGroup += (hook_FindHitBoxGroup)obj2;
			object obj3 = <>c.<>9__0_2;
			if (obj3 == null)
			{
				hook_Fire val3 = delegate(orig_Fire orig, OverlapAttack self, List<HurtBox> res)
				{
					if ((Object)(object)self.hitBoxGroup == (Object)null && Object.op_Implicit((Object)(object)self.attacker))
					{
						CharacterBody component = self.attacker.GetComponent<CharacterBody>();
						if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.modelLocator) && Object.op_Implicit((Object)(object)component.modelLocator.modelTransform))
						{
							HitBoxGroup[] components = ((Component)component.modelLocator.modelTransform).GetComponents<HitBoxGroup>();
							self.hitBoxGroup = Array.Find(components, (HitBoxGroup x) => x.groupName == "DefaultSSGroup");
							Debug.Log((object)self.hitBoxGroup.groupName);
						}
					}
					return orig.Invoke(self, res);
				};
				<>c.<>9__0_2 = val3;
				obj3 = (object)val3;
			}
			OverlapAttack.Fire += (hook_Fire)obj3;
		}
	}
	public class Passives
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_Start <>9__12_0;

			public static hook_OnHitEnemy <>9__12_1;

			internal void <MakePassivesReal>b__12_0(orig_Start orig, CharacterBody self)
			{
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0038: Unknown result type (might be due to invalid IL or missing references)
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(self);
				if (self.isPlayerControlled)
				{
					if (HasSkillEquipped(self, backstab))
					{
						self.bodyFlags = (BodyFlags)(self.bodyFlags | 0x80);
					}
					if (HasSkillEquipped(self, scrap))
					{
						self.bodyFlags = (BodyFlags)(self.bodyFlags | 1);
					}
					if (HasSkillEquipped(self, doublejump))
					{
						self.baseJumpCount++;
					}
					if (HasSkillEquipped(self, env))
					{
						EntityStateMachine val = EntityStateMachine.FindByCustomName(((Component)self).gameObject, "Jet");
						((Behaviour)val).enabled = true;
					}
					else
					{
						EntityStateMachine val2 = EntityStateMachine.FindByCustomName(((Component)self).gameObject, "Jet");
						((Behaviour)val2).enabled = false;
					}
				}
			}

			internal void <MakePassivesReal>b__12_1(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo info, GameObject obj)
			{
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				//IL_0035: Invalid comparison between Unknown and I4
				//IL_0053: Unknown result type (might be due to invalid IL or missing references)
				//IL_005d: 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)
				if (Object.op_Implicit((Object)(object)info.attacker))
				{
					CharacterBody component = info.attacker.GetComponent<CharacterBody>();
					if (Object.op_Implicit((Object)(object)component) && (info.damageType & 0x4000) > 0 && !HasSkillEquipped(component, weaken))
					{
						info.damageType = (DamageType)(info.damageType & -16385);
					}
				}
				orig.Invoke(self, info, obj);
			}
		}

		private static SkillDef backstab;

		private static SkillDef env;

		private static PassiveItemSkillDef accelerators;

		public static PassiveItemSkillDef corruption;

		private static SkillDef weaken;

		private static SkillDef scrap;

		private static SkillDef doublejump;

		private static PassiveItemSkillDef microbots;

		private static SkillDef poison;

		private static SkillDef blight;

		private static List<SkillDef> passives = new List<SkillDef>();

		internal static void Setup()
		{
			poison = SkillDef.CrocoPassivePoison.Load<SkillDef>();
			blight = SkillDef.CrocoPassiveBlight.Load<SkillDef>();
			accelerators = PassiveItemSkillDef.RailgunnerBodyPassiveConvertCrit.Load<PassiveItemSkillDef>();
			corruption = PassiveItemSkillDef.VoidSurvivorPassive.Load<PassiveItemSkillDef>();
			env = CreatePassive(GameObject.MageBody);
			backstab = CreatePassive(GameObject.Bandit2Body);
			weaken = CreatePassive(GameObject.TreebotBody);
			doublejump = CreatePassive(GameObject.MercBody);
			scrap = CreatePassive(GameObject.LoaderBody);
			microbots = CreatePassiveItem(GameObject.CaptainBody, ItemDef.CaptainDefenseMatrix.Load<ItemDef>());
			passives = new List<SkillDef>
			{
				scrap,
				poison,
				blight,
				(SkillDef)(object)accelerators,
				(SkillDef)(object)corruption,
				env,
				backstab,
				weaken,
				doublejump,
				(SkillDef)(object)microbots
			};
			MakePassivesReal();
		}

		private static void MakePassivesReal()
		{
			//IL_0054: 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_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: 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_00a1: 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_00ac: Expected O, but got Unknown
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Expected O, but got Unknown
			CharacterBody component = GameObject.LoaderBody.Load<GameObject>().GetComponent<CharacterBody>();
			CharacterBody component2 = GameObject.MercBody.Load<GameObject>().GetComponent<CharacterBody>();
			CharacterBody component3 = GameObject.CaptainBody.Load<GameObject>().GetComponent<CharacterBody>();
			CharacterBody component4 = GameObject.Bandit2Body.Load<GameObject>().GetComponent<CharacterBody>();
			CharacterBody component5 = GameObject.MageBody.Load<GameObject>().GetComponent<CharacterBody>();
			component4.bodyFlags = (BodyFlags)(component4.bodyFlags & -129);
			component.bodyFlags = (BodyFlags)(component.bodyFlags & -2);
			component2.baseJumpCount--;
			Object.Destroy((Object)(object)((Component)component3).GetComponent<CaptainDefenseMatrixController>());
			object obj2 = <>c.<>9__12_0;
			if (obj2 == null)
			{
				hook_Start val = delegate(orig_Start orig, CharacterBody self)
				{
					//IL_002e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0038: Unknown result type (might be due to invalid IL or missing references)
					//IL_0039: Unknown result type (might be due to invalid IL or missing references)
					//IL_0051: Unknown result type (might be due to invalid IL or missing references)
					//IL_0057: Unknown result type (might be due to invalid IL or missing references)
					//IL_0058: Unknown result type (might be due to invalid IL or missing references)
					orig.Invoke(self);
					if (self.isPlayerControlled)
					{
						if (HasSkillEquipped(self, backstab))
						{
							self.bodyFlags = (BodyFlags)(self.bodyFlags | 0x80);
						}
						if (HasSkillEquipped(self, scrap))
						{
							self.bodyFlags = (BodyFlags)(self.bodyFlags | 1);
						}
						if (HasSkillEquipped(self, doublejump))
						{
							self.baseJumpCount++;
						}
						if (HasSkillEquipped(self, env))
						{
							EntityStateMachine val3 = EntityStateMachine.FindByCustomName(((Component)self).gameObject, "Jet");
							((Behaviour)val3).enabled = true;
						}
						else
						{
							EntityStateMachine val4 = EntityStateMachine.FindByCustomName(((Component)self).gameObject, "Jet");
							((Behaviour)val4).enabled = false;
						}
					}
				};
				<>c.<>9__12_0 = val;
				obj2 = (object)val;
			}
			CharacterBody.Start += (hook_Start)obj2;
			object obj3 = <>c.<>9__12_1;
			if (obj3 == null)
			{
				hook_OnHitEnemy val2 = delegate(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo info, GameObject obj)
				{
					//IL_0029: Unknown result type (might be due to invalid IL or missing references)
					//IL_0033: Unknown result type (might be due to invalid IL or missing references)
					//IL_0035: Invalid comparison between Unknown and I4
					//IL_0053: Unknown result type (might be due to invalid IL or missing references)
					//IL_005d: 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)
					if (Object.op_Implicit((Object)(object)info.attacker))
					{
						CharacterBody component6 = info.attacker.GetComponent<CharacterBody>();
						if (Object.op_Implicit((Object)(object)component6) && (info.damageType & 0x4000) > 0 && !HasSkillEquipped(component6, weaken))
						{
							info.damageType = (DamageType)(info.damageType & -16385);
						}
					}
					orig.Invoke(self, info, obj);
				};
				<>c.<>9__12_1 = val2;
				obj3 = (object)val2;
			}
			GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj3;
		}

		public static void SetupPassives(GameObject survivor)
		{
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Expected O, but got Unknown
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			GenericSkill val = null;
			GenericSkill[] components = survivor.GetComponents<GenericSkill>();
			foreach (GenericSkill val2 in components)
			{
				if (val2.skillName != null && Object.op_Implicit((Object)(object)val2.skillFamily) && ((Object)val2.skillFamily).name.ToLower().Contains("passive"))
				{
					val = val2;
					break;
				}
			}
			if ((Object)(object)val == (Object)null)
			{
				val = survivor.AddComponent<GenericSkill>();
			}
			val.hideInCharacterSelect = true;
			SkillLocator component = survivor.GetComponent<SkillLocator>();
			SkillFamily val3 = null;
			if ((Object)(object)val._skillFamily == (Object)null)
			{
				val3 = ScriptableObject.CreateInstance<SkillFamily>();
				((Object)val3).name = ((Object)survivor).name + "Passive";
			}
			else
			{
				val3 = val._skillFamily;
			}
			List<Variant> list = new List<Variant>();
			component.passiveSkill.enabled = false;
			foreach (SkillDef passife in passives)
			{
				Variant item = new Variant
				{
					skillDef = passife,
					unlockableDef = null
				};
				((Variant)(ref item)).viewableNode = new Node(passife.skillNameToken, false, (Node)null);
				list.Add(item);
			}
			val3.variants = list.ToArray();
			val._skillFamily = val3;
			val.skillName = ((Object)survivor).name + "Passive";
			ContentAddition.AddSkillFamily(val3);
			CrocoDamageTypeController val4 = survivor.GetComponent<CrocoDamageTypeController>();
			if (!Object.op_Implicit((Object)(object)val4))
			{
				val4 = survivor.AddComponent<CrocoDamageTypeController>();
			}
			val4.blightSkillDef = blight;
			val4.poisonSkillDef = poison;
			val4.passiveSkillSlot = val;
			VoidSurvivorController component2 = survivor.GetComponent<VoidSurvivorController>();
			if (Object.op_Implicit((Object)(object)component2))
			{
				Object.Destroy((Object)(object)component2);
			}
		}

		private static SkillDef CreatePassive(string str)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = str.Load<GameObject>();
			SkillLocator component = val.GetComponent<SkillLocator>();
			PassiveSkill passiveSkill = component.passiveSkill;
			SkillDef val2 = ScriptableObject.CreateInstance<SkillDef>();
			val2.icon = passiveSkill.icon;
			val2.activationState = new SerializableEntityStateType(typeof(Idle));
			val2.activationStateMachineName = "Body";
			val2.canceledFromSprinting = false;
			val2.cancelSprintingOnActivation = false;
			val2.skillNameToken = passiveSkill.skillNameToken;
			val2.skillName = ((Object)val).name + "PassiveName";
			((Object)val2).name = ((Object)val).name + "PassiveName";
			val2.skillDescriptionToken = passiveSkill.skillDescriptionToken;
			ContentAddition.AddSkillDef(val2);
			return val2;
		}

		private static PassiveItemSkillDef CreatePassiveItem(string str, ItemDef item)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = str.Load<GameObject>();
			SkillLocator component = val.GetComponent<SkillLocator>();
			PassiveSkill passiveSkill = component.passiveSkill;
			PassiveItemSkillDef val2 = ScriptableObject.CreateInstance<PassiveItemSkillDef>();
			((SkillDef)val2).icon = passiveSkill.icon;
			((SkillDef)val2).activationState = new SerializableEntityStateType(typeof(Idle));
			((SkillDef)val2).activationStateMachineName = "Body";
			((SkillDef)val2).canceledFromSprinting = false;
			((SkillDef)val2).cancelSprintingOnActivation = false;
			((SkillDef)val2).skillNameToken = passiveSkill.skillNameToken;
			((SkillDef)val2).skillName = ((Object)val).name + "PassiveName";
			((Object)val2).name = ((Object)val).name + "PassiveName";
			((SkillDef)val2).skillDescriptionToken = passiveSkill.skillDescriptionToken;
			val2.passiveItem = item;
			ContentAddition.AddSkillDef((SkillDef)(object)val2);
			return val2;
		}

		public static bool HasSkillEquipped(CharacterBody body, SkillDef skill)
		{
			GenericSkill[] components = ((Component)body).GetComponents<GenericSkill>();
			foreach (GenericSkill val in components)
			{
				if ((Object)(object)val.skillDef == (Object)(object)skill)
				{
					return true;
				}
			}
			return false;
		}
	}
	public static class RealPassives
	{
		public delegate void orig_Build(CharacterSelectController self, Loadout loadout, in BodyInfo info, List<StripDisplayData> dest);

		public delegate void orig_Rebuild(LoadoutPanelController self);

		private static BindingFlags BuildFlags = BindingFlags.Instance | BindingFlags.NonPublic;

		private static BindingFlags BuildHookFlags = BindingFlags.Static | BindingFlags.NonPublic;

		private static BindingFlags RebuildFlags = BindingFlags.Instance | BindingFlags.NonPublic;

		private static BindingFlags RebuildHookFlags = BindingFlags.Static | BindingFlags.NonPublic;

		public static void Hook()
		{
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Expected O, but got Unknown
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Expected O, but got Unknown
			if (!Chainloader.PluginInfos.ContainsKey("xyz.yekoc.PassiveAgression"))
			{
				Hook val = new Hook((MethodBase)typeof(CharacterSelectController).GetMethod("BuildSkillStripDisplayData", BuildFlags), typeof(RealPassives).GetMethod("HopooGames", BuildHookFlags));
				Hook val2 = new Hook((MethodBase)typeof(LoadoutPanelController).GetMethod("Rebuild", RebuildFlags), typeof(RealPassives).GetMethod("HopooGamesTheSequel", RebuildHookFlags));
			}
		}

		private static void HopooGames(orig_Build orig, CharacterSelectController self, Loadout loadout, in BodyInfo bodyInfo, List<StripDisplayData> data)
		{
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: 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_011e: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)bodyInfo.bodyPrefab) || !Object.op_Implicit((Object)(object)bodyInfo.bodyPrefabBodyComponent))
			{
				orig(self, loadout, in bodyInfo, data);
				return;
			}
			GenericSkill[] skillSlots = bodyInfo.skillSlots;
			int num = 0;
			GenericSkill[] array = skillSlots;
			foreach (GenericSkill val in array)
			{
				if (val.skillName != null && val.skillName.ToLower().Contains("passive") && val.hideInCharacterSelect)
				{
					SkillDef skillDef = val.skillFamily.variants[loadout.bodyLoadoutManager.GetSkillVariant(bodyInfo.bodyIndex, num)].skillDef;
					StripDisplayData val2 = default(StripDisplayData);
					val2.enabled = true;
					val2.primaryColor = bodyInfo.bodyColor;
					val2.icon = skillDef.icon;
					val2.actionName = "";
					val2.descriptionString = Language.GetString(skillDef.skillDescriptionToken);
					val2.titleString = Language.GetString(skillDef.skillNameToken);
					val2.keywordString = "";
					StripDisplayData item = val2;
					data.Add(item);
				}
				num++;
			}
			orig(self, loadout, in bodyInfo, data);
		}

		private static void HopooGamesTheSequel(orig_Rebuild orig, LoadoutPanelController self)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				self.DestroyRows();
				CharacterBody bodyPrefabBodyComponent = BodyCatalog.GetBodyPrefabBodyComponent(self.currentDisplayData.bodyIndex);
				if (!Object.op_Implicit((Object)(object)bodyPrefabBodyComponent))
				{
					return;
				}
				GenericSkill[] components = ((Component)bodyPrefabBodyComponent).GetComponents<GenericSkill>();
				for (int i = 0; i < components.Length; i++)
				{
					if (components[i].skillName != null && components[i].skillName.ToLower().Contains("passive") && components[i].hideInCharacterSelect)
					{
						self.rows.Add(Row.FromSkillSlot(self, self.currentDisplayData.bodyIndex, i, components[i]));
					}
				}
				for (int j = 0; j < components.Length; j++)
				{
					bool flag = ((Enum)((Object)components[j]).hideFlags).HasFlag((Enum)(object)(HideFlags)52);
					if ((components[j].skillName == null || !components[j].skillName.ToLower().Contains("passive") || !components[j].hideInCharacterSelect) && !flag)
					{
						self.rows.Add(Row.FromSkillSlot(self, self.currentDisplayData.bodyIndex, j, components[j]));
					}
				}
				self.rows.Add(Row.FromSkin(self, self.currentDisplayData.bodyIndex));
			}
			catch
			{
				orig(self);
			}
		}
	}
	public class SkillHandler
	{
		private struct StateMachine
		{
			public string name;

			public SerializableEntityStateType initial;

			public SerializableEntityStateType main;
		}

		[CompilerGenerated]
		private static class <>O
		{
			public static hook_SetContentPacks <0>__AddSkills;
		}

		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Func<GenericSkill, bool> <>9__9_2;

			public static Func<GenericSkill, bool> <>9__9_3;

			public static hook_FindSkillByFamilyName <>9__9_0;

			public static Func<GenericSkill, bool> <>9__9_4;

			public static Func<GenericSkill, bool> <>9__9_5;

			public static hook_FindSkill <>9__9_1;

			public static Func<GenericSkill, bool> <>9__10_0;

			internal GenericSkill <Perform>b__9_0(orig_FindSkillByFamilyName orig, SkillLocator self, string str)
			{
				GenericSkill val = orig.Invoke(self, str);
				if (Object.op_Implicit((Object)(object)val))
				{
					return val;
				}
				if (str == "ToolbotBodyPrimary1")
				{
					return self.allSkills.First((GenericSkill x) => x.skillName != null && (x.skillName.Contains("FireNailgun") || x.skillName.Contains("Primary")));
				}
				if (str == "ToolbotBodyPrimary2")
				{
					return self.allSkills.First((GenericSkill x) => x.skillName != null && x.skillName.Contains("FireSpear"));
				}
				return null;
			}

			internal bool <Perform>b__9_2(GenericSkill x)
			{
				return x.skillName != null && (x.skillName.Contains("FireNailgun") || x.skillName.Contains("Primary"));
			}

			internal bool <Perform>b__9_3(GenericSkill x)
			{
				return x.skillName != null && x.skillName.Contains("FireSpear");
			}

			internal GenericSkill <Perform>b__9_1(orig_FindSkill orig, SkillLocator self, string str)
			{
				GenericSkill val = orig.Invoke(self, str);
				if (Object.op_Implicit((Object)(object)val))
				{
					return val;
				}
				if (str == "SupplyDrop1")
				{
					return self.allSkills.First((GenericSkill x) => x.skillName != null && x.skillName.Contains("SD1"));
				}
				if (str == "SupplyDrop2")
				{
					return self.allSkills.First((GenericSkill x) => x.skillName != null && x.skillName.Contains("SD2"));
				}
				return null;
			}

			internal bool <Perform>b__9_4(GenericSkill x)
			{
				return x.skillName != null && x.skillName.Contains("SD1");
			}

			internal bool <Perform>b__9_5(GenericSkill x)
			{
				return x.skillName != null && x.skillName.Contains("SD2");
			}

			internal bool <AddSkills>b__10_0(GenericSkill x)
			{
				return x.skillName != null && x.skillName == "FireSpear";
			}
		}

		private static List<StateMachine> machines = new List<StateMachine>();

		private static List<SkillDef> primaries = new List<SkillDef>();

		private static List<SkillDef> secondaries = new List<SkillDef>();

		private static List<SkillDef> utilites = new List<SkillDef>();

		private static List<SkillDef> specials = new List<SkillDef>();

		private static List<SkillDef> all = new List<SkillDef>();

		private static SurvivorDef heretic;

		private static List<SurvivorDef> survs = new List<SurvivorDef>();

		internal static void Perform()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0156: 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_0161: Expected O, but got Unknown
			//IL_017b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Expected O, but got Unknown
			heretic = SurvivorDef.Heretic.Load<SurvivorDef>();
			object obj = <>O.<0>__AddSkills;
			if (obj == null)
			{
				hook_SetContentPacks val = AddSkills;
				<>O.<0>__AddSkills = val;
				obj = (object)val;
			}
			ContentManager.SetContentPacks += (hook_SetContentPacks)obj;
			survs.Add(SurvivorDef.Commando.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Bandit2.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Mage.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Merc.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Toolbot.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Treebot.Load<SurvivorDef>());
			survs.Add(SurvivorDef.VoidSurvivor.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Huntress.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Railgunner.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Loader.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Croco.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Engi.Load<SurvivorDef>());
			survs.Add(SurvivorDef.Captain.Load<SurvivorDef>());
			object obj2 = <>c.<>9__9_0;
			if (obj2 == null)
			{
				hook_FindSkillByFamilyName val2 = delegate(orig_FindSkillByFamilyName orig, SkillLocator self, string str)
				{
					GenericSkill val5 = orig.Invoke(self, str);
					if (Object.op_Implicit((Object)(object)val5))
					{
						return val5;
					}
					if (str == "ToolbotBodyPrimary1")
					{
						return self.allSkills.First((GenericSkill x) => x.skillName != null && (x.skillName.Contains("FireNailgun") || x.skillName.Contains("Primary")));
					}
					return (str == "ToolbotBodyPrimary2") ? self.allSkills.First((GenericSkill x) => x.skillName != null && x.skillName.Contains("FireSpear")) : null;
				};
				<>c.<>9__9_0 = val2;
				obj2 = (object)val2;
			}
			SkillLocator.FindSkillByFamilyName += (hook_FindSkillByFamilyName)obj2;
			object obj3 = <>c.<>9__9_1;
			if (obj3 == null)
			{
				hook_FindSkill val3 = delegate(orig_FindSkill orig, SkillLocator self, string str)
				{
					GenericSkill val4 = orig.Invoke(self, str);
					if (Object.op_Implicit((Object)(object)val4))
					{
						return val4;
					}
					if (str == "SupplyDrop1")
					{
						return self.allSkills.First((GenericSkill x) => x.skillName != null && x.skillName.Contains("SD1"));
					}
					return (str == "SupplyDrop2") ? self.allSkills.First((GenericSkill x) => x.skillName != null && x.skillName.Contains("SD2")) : null;
				};
				<>c.<>9__9_1 = val3;
				obj3 = (object)val3;
			}
			SkillLocator.FindSkill += (hook_FindSkill)obj3;
		}

		private static void AddSkills(orig_SetContentPacks orig, List<ReadOnlyContentPack> packs)
		{
			orig.Invoke(packs);
			bool value = SkillSwap.config.Bind<bool>("Configuration", "Proper Slots Only", true, "Skills can only be equipped in their usual slots (eg lodr grapple can only be on m2s)").Value;
			bool value2 = SkillSwap.config.Bind<bool>("Configuration", "Enable Extra Slots", true, "Enables the extra skill slots needed by certain skills like Retool and Supply Beacon. Can get cluttery.").Value;
			SurvivorDef[] survivorDefs = ContentManager.survivorDefs;
			foreach (SurvivorDef val in survivorDefs)
			{
				if (!((Object)(object)val == (Object)(object)heretic))
				{
					GameObject bodyPrefab = val.bodyPrefab;
					SkillLocator component = bodyPrefab.GetComponent<SkillLocator>();
					CollectSkills(component.primary.skillFamily, ref primaries);
					CollectSkills(component.secondary.skillFamily, ref secondaries);
					CollectSkills(component.utility.skillFamily, ref utilites);
					CollectSkills(component.special.skillFamily, ref specials);
					CollectMachines(bodyPrefab);
				}
			}
			SurvivorDef[] survivorDefs2 = ContentManager.survivorDefs;
			foreach (SurvivorDef val2 in survivorDefs2)
			{
				if ((Object)(object)val2 == (Object)(object)heretic)
				{
					continue;
				}
				GameObject bodyPrefab2 = val2.bodyPrefab;
				SkillLocator component2 = bodyPrefab2.GetComponent<SkillLocator>();
				SetupStateMachines(bodyPrefab2);
				if (value2)
				{
					HandleSpecialSkills(bodyPrefab2);
				}
				if (value)
				{
					ApplySkills(primaries, ref component2.primary._skillFamily);
					ApplySkills(secondaries, ref component2.secondary._skillFamily);
					ApplySkills(utilites, ref component2.utility._skillFamily);
					ApplySkills(specials, ref component2.special._skillFamily);
				}
				else
				{
					ApplySkills(all, ref component2.primary._skillFamily);
					ApplySkills(all, ref component2.secondary._skillFamily);
					ApplySkills(all, ref component2.utility._skillFamily);
					ApplySkills(all, ref component2.special._skillFamily);
				}
				if (((Object)bodyPrefab2).name == "ToolbotBody")
				{
					List<SkillDef> skills = (value ? primaries : all);
					GenericSkill val3 = bodyPrefab2.GetComponents<GenericSkill>().First((GenericSkill x) => x.skillName != null && x.skillName == "FireSpear");
					ApplySkills(skills, ref val3._skillFamily);
				}
				if (survs.Contains(val2))
				{
					Passives.SetupPassives(bodyPrefab2);
				}
			}
		}

		internal static void CollectSkills(SkillFamily family, ref List<SkillDef> list)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: 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)
			Variant[] variants = family.variants;
			foreach (Variant val in variants)
			{
				list.Add(val.skillDef);
				all.Add(val.skillDef);
			}
		}

		internal static void ApplySkills(List<SkillDef> skills, ref SkillFamily family)
		{
			//IL_004f: 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_007b: Expected O, but got Unknown
			//IL_007c: 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)
			foreach (SkillDef skill in skills)
			{
				if (family.variants.Where((Variant x) => (Object)(object)x.skillDef == (Object)(object)skill).Count() == 0)
				{
					Variant val = default(Variant);
					val.skillDef = skill;
					((Variant)(ref val)).viewableNode = new Node(skill.skillNameToken, false, (Node)null);
					Variant val2 = val;
					ArrayUtils.ArrayAppend<Variant>(ref family.variants, ref val2);
				}
			}
		}

		internal static void HandleSpecialSkills(GameObject survivor)
		{
			bool flag = ((Object)survivor).name == "ToolbotBody";
			bool flag2 = ((Object)survivor).name == "CaptainBody";
			bool value = SkillSwap.config.Bind<bool>("Configuration", "Proper Slots Only", true, "Skills can only be equipped in their usual slots (eg lodr grapple can only be on m2s)").Value;
			string name = ((Object)survivor).name;
			if (!flag)
			{
				Debug.Log((object)("creating skill firespear for: " + (object)survivor));
				List<SkillDef> skills = (value ? primaries : all);
				CreateGenericSkill(survivor, name + "FireSpear", skills);
				SkillLocator component = survivor.GetComponent<SkillLocator>();
				if (component.primary.skillName != null && !component.primary.skillName.Contains("Primary"))
				{
					GenericSkill primary = component.primary;
					primary.skillName += "Primary";
				}
			}
			if (!flag2)
			{
				Debug.Log((object)("creating sd1/sd2 skills for: " + (object)survivor));
				List<SkillDef> skills2 = new List<SkillDef>
				{
					SkillDef.CallSupplyDropHealing.Load<SkillDef>(),
					SkillDef.CallSupplyDropShocking.Load<SkillDef>(),
					SkillDef.CallSupplyDropEquipmentRestock.Load<SkillDef>(),
					SkillDef.CallSupplyDropHacking.Load<SkillDef>()
				};
				CreateGenericSkill(survivor, name + "SD1", skills2);
				CreateGenericSkill(survivor, name + "SD2", skills2);
			}
		}

		internal static void CreateGenericSkill(GameObject survivor, string name, List<SkillDef> skills)
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Expected O, but got Unknown
			//IL_0068: 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)
			GenericSkill val = survivor.AddComponent<GenericSkill>();
			val.skillName = name;
			val.hideInCharacterSelect = true;
			SkillFamily family = ScriptableObject.CreateInstance<SkillFamily>();
			((Object)family).name = name + "Family";
			SkillFamily obj = family;
			Variant[] array = new Variant[1];
			Variant val2 = new Variant
			{
				skillDef = skills[0]
			};
			((Variant)(ref val2)).viewableNode = new Node(skills[0].skillNameToken, false, (Node)null);
			array[0] = val2;
			obj.variants = (Variant[])(object)array;
			val._skillFamily = family;
			ApplySkills(skills, ref family);
		}

		internal static void CollectMachines(GameObject survivor)
		{
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			EntityStateMachine[] components = survivor.GetComponents<EntityStateMachine>();
			foreach (EntityStateMachine val in components)
			{
				if (!ContainsMachine(val))
				{
					StateMachine item = default(StateMachine);
					item.name = val.customName;
					item.initial = val.initialStateType;
					item.main = val.mainStateType;
					if (item.name == "Body")
					{
						item.initial = new SerializableEntityStateType(typeof(MageCharacterMain));
						item.main = item.initial;
					}
					machines.Add(item);
				}
			}
			static bool ContainsMachine(EntityStateMachine machine)
			{
				if (machine.customName == null)
				{
					return true;
				}
				foreach (StateMachine machine in machines)
				{
					if (machine.name == machine.customName)
					{
						return true;
					}
				}
				return false;
			}
		}

		internal static void SetupStateMachines(GameObject survivor)
		{
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			foreach (StateMachine machine in machines)
			{
				if (!HasMachine(survivor, machine.name))
				{
					NetworkStateMachine component = survivor.GetComponent<NetworkStateMachine>();
					EntityStateMachine val = survivor.AddComponent<EntityStateMachine>();
					val.customName = machine.name;
					val.initialStateType = machine.initial;
					val.mainStateType = machine.main;
					List<EntityStateMachine> list = component.stateMachines.ToList();
					list.Add(val);
					component.stateMachines = list.ToArray();
				}
			}
		}

		internal static bool HasMachine(GameObject survivor, string name)
		{
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: 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)
			EntityStateMachine[] components = survivor.GetComponents<EntityStateMachine>();
			foreach (EntityStateMachine val in components)
			{
				if (val.customName != null && val.customName == name)
				{
					if (val.customName == "Body")
					{
						val.initialStateType = new SerializableEntityStateType(typeof(MageCharacterMain));
						val.mainStateType = new SerializableEntityStateType(typeof(MageCharacterMain));
					}
					return true;
				}
			}
			return false;
		}
	}
	public class Transforms
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_Start <>9__0_0;

			public static hook_FindChild_string <>9__0_1;

			public static hook_FindChildIndex_string <>9__0_2;

			internal void <Perform>b__0_0(orig_Start orig, CharacterBody self)
			{
				//IL_0038: Unknown result type (might be due to invalid IL or missing references)
				//IL_003e: Expected O, but got Unknown
				orig.Invoke(self);
				ModelLocator component = ((Component)self).GetComponent<ModelLocator>();
				if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.modelTransform) && self.isPlayerControlled)
				{
					GameObject val = new GameObject("FallbackTransform");
					val.transform.SetParent(component.modelTransform);
				}
			}

			internal Transform <Perform>b__0_1(orig_FindChild_string orig, ChildLocator self, string str)
			{
				<>c__DisplayClass0_0 CS$<>8__locals0 = new <>c__DisplayClass0_0();
				Transform val = orig.Invoke(self, str);
				if (Object.op_Implicit((Object)(object)val))
				{
					return val;
				}
				if (str == "HealthBarOrigin")
				{
					return null;
				}
				CS$<>8__locals0.muzzles = new List<string>();
				self.transformPairs.ToList().ForEach(delegate(NameTransformPair x)
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_0021: Unknown result type (might be due to invalid IL or missing references)
					if (x.name.ToLower().Contains("muzzle"))
					{
						CS$<>8__locals0.muzzles.Add(x.name);
					}
				});
				if (CS$<>8__locals0.muzzles.Count >= 1)
				{
					string text = CS$<>8__locals0.muzzles[0];
					return orig.Invoke(self, text);
				}
				return ((Component)self).transform.Find("FallbackTransform");
			}

			internal int <Perform>b__0_2(orig_FindChildIndex_string orig, ChildLocator self, string str)
			{
				<>c__DisplayClass0_1 CS$<>8__locals0 = new <>c__DisplayClass0_1();
				int num = orig.Invoke(self, str);
				if (num != -1)
				{
					return num;
				}
				CS$<>8__locals0.muzzles = new List<string>();
				self.transformPairs.ToList().ForEach(delegate(NameTransformPair x)
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_0021: Unknown result type (might be due to invalid IL or missing references)
					if (x.name.ToLower().Contains("muzzle"))
					{
						CS$<>8__locals0.muzzles.Add(x.name);
					}
				});
				if (CS$<>8__locals0.muzzles.Count >= 1)
				{
					string text = CS$<>8__locals0.muzzles[0];
					return orig.Invoke(self, text);
				}
				return -1;
			}
		}

		[CompilerGenerated]
		private sealed class <>c__DisplayClass0_0
		{
			public List<string> muzzles;

			internal void <Perform>b__3(NameTransformPair x)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				if (x.name.ToLower().Contains("muzzle"))
				{
					muzzles.Add(x.name);
				}
			}
		}

		[CompilerGenerated]
		private sealed class <>c__DisplayClass0_1
		{
			public List<string> muzzles;

			internal void <Perform>b__4(NameTransformPair x)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				if (x.name.ToLower().Contains("muzzle"))
				{
					muzzles.Add(x.name);
				}
			}
		}

		internal static void Perform()
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Expected O, but got Unknown
			//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_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_006a: Expected O, but got Unknown
			object obj = <>c.<>9__0_0;
			if (obj == null)
			{
				hook_Start val = delegate(orig_Start orig, CharacterBody self)
				{
					//IL_0038: Unknown result type (might be due to invalid IL or missing references)
					//IL_003e: Expected O, but got Unknown
					orig.Invoke(self);
					ModelLocator component = ((Component)self).GetComponent<ModelLocator>();
					if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.modelTransform) && self.isPlayerControlled)
					{
						GameObject val5 = new GameObject("FallbackTransform");
						val5.transform.SetParent(component.modelTransform);
					}
				};
				<>c.<>9__0_0 = val;
				obj = (object)val;
			}
			CharacterBody.Start += (hook_Start)obj;
			object obj2 = <>c.<>9__0_1;
			if (obj2 == null)
			{
				hook_FindChild_string val2 = delegate(orig_FindChild_string orig, ChildLocator self, string str)
				{
					Transform val4 = orig.Invoke(self, str);
					if (Object.op_Implicit((Object)(object)val4))
					{
						return val4;
					}
					if (str == "HealthBarOrigin")
					{
						return null;
					}
					List<string> muzzles2 = new List<string>();
					self.transformPairs.ToList().ForEach(delegate(NameTransformPair x)
					{
						//IL_0001: Unknown result type (might be due to invalid IL or missing references)
						//IL_0021: Unknown result type (might be due to invalid IL or missing references)
						if (x.name.ToLower().Contains("muzzle"))
						{
							muzzles2.Add(x.name);
						}
					});
					if (muzzles2.Count >= 1)
					{
						string text2 = muzzles2[0];
						return orig.Invoke(self, text2);
					}
					return ((Component)self).transform.Find("FallbackTransform");
				};
				<>c.<>9__0_1 = val2;
				obj2 = (object)val2;
			}
			ChildLocator.FindChild_string += (hook_FindChild_string)obj2;
			object obj3 = <>c.<>9__0_2;
			if (obj3 == null)
			{
				hook_FindChildIndex_string val3 = delegate(orig_FindChildIndex_string orig, ChildLocator self, string str)
				{
					int num = orig.Invoke(self, str);
					if (num != -1)
					{
						return num;
					}
					List<string> muzzles = new List<string>();
					self.transformPairs.ToList().ForEach(delegate(NameTransformPair x)
					{
						//IL_0001: Unknown result type (might be due to invalid IL or missing references)
						//IL_0021: Unknown result type (might be due to invalid IL or missing references)
						if (x.name.ToLower().Contains("muzzle"))
						{
							muzzles.Add(x.name);
						}
					});
					if (muzzles.Count >= 1)
					{
						string text = muzzles[0];
						return orig.Invoke(self, text);
					}
					return -1;
				};
				<>c.<>9__0_2 = val3;
				obj3 = (object)val3;
			}
			ChildLocator.FindChildIndex_string += (hook_FindChildIndex_string)obj3;
		}
	}
	[BepInPlugin("pseudopulse.SkillSwap", "SkillSwap", "1.0.0")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class SkillSwap : BaseUnityPlugin
	{
		public const string PluginGUID = "pseudopulse.SkillSwap";

		public const string PluginAuthor = "pseudopulse";

		public const string PluginName = "SkillSwap";

		public const string PluginVersion = "1.0.0";

		public static ManualLogSource ModLogger;

		public static ConfigFile config;

		public void Awake()
		{
			ModLogger = ((BaseUnityPlugin)this).Logger;
			config = ((BaseUnityPlugin)this).Config;
			Passives.Setup();
			Melee.Perform();
			Transforms.Perform();
			Components.Perform();
			SkillHandler.Perform();
			RealPassives.Hook();
		}
	}
}
namespace SkillSwap.Utils
{
	public static class AddressableUtils
	{
		public static T Load<T>(this string path)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			return Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion();
		}

		public static T LoadComponent<T>(this string path) where T : Component
		{
			return path.Load<GameObject>().GetComponent<T>();
		}
	}
}
namespace SkillSwap.Utils.Paths
{
	public static class Texture2D
	{
		public static string texAttackSpeedIcon = "RoR2/Base/Achievements/texAttackSpeedIcon.png";

		public static string texAutomationActivationIcon = "RoR2/Base/Achievements/texAutomationActivationIcon.png";

		public static string texAutomationActivationIconNew = "RoR2/Base/Achievements/texAutomationActivationIcon_New.png";

		public static string texBandit2ClearGameMonsoonIcon = "RoR2/Base/Achievements/texBandit2ClearGameMonsoonIcon.png";

		public static string texBandit2ConsecutiveResetIcon = "RoR2/Base/Achievements/texBandit2ConsecutiveResetIcon.png";

		public static string texBandit2RevolverFinaleIcon = "RoR2/Base/Achievements/texBandit2RevolverFinaleIcon.png";

		public static string texBandit2StackSuperBleedIcon = "RoR2/Base/Achievements/texBandit2StackSuperBleedIcon.png";

		public static string texBeatArenaIcon = "RoR2/Base/Achievements/texBeatArenaIcon.png";

		public static string texBurnToDeathIcon = "RoR2/Base/Achievements/texBurnToDeathIcon.png";

		public static string texCaptainBuyMegaDroneIcon = "RoR2/Base/Achievements/texCaptainBuyMegaDroneIcon.png";

		public static string texCaptainClearGameMonsoonIcon = "RoR2/Base/Achievements/texCaptainClearGameMonsoonIcon.png";

		public static string texCaptainSupplyDropFinaleIcon = "RoR2/Base/Achievements/texCaptainSupplyDropFinaleIcon.png";

		public static string texCaptainVisitSeveralStagesIcon = "RoR2/Base/Achievements/texCaptainVisitSeveralStagesIcon.png";

		public static string texCarryLunarItemsIcon = "RoR2/Base/Achievements/texCarryLunarItemsIcon.png";

		public static string texChargeTeleporterWhileNearDeathIcon = "RoR2/Base/Achievements/texChargeTeleporterWhileNearDeathIcon.png";

		public static string texCleanupDutyIcon = "RoR2/Base/Achievements/texCleanupDutyIcon.png";

		public static string texCommandoClearGameMonsoonIcon = "RoR2/Base/Achievements/texCommandoClearGameMonsoonIcon.png";

		public static string texCommandoFastFirstStageClearIcon = "RoR2/Base/Achievements/texCommandoFastFirstStageClearIcon.png";

		public static string texCommandoKillOverloadingWormIcon = "RoR2/Base/Achievements/texCommandoKillOverloadingWormIcon.png";

		public static string texCommandoNonLunarEnduranceIcon = "RoR2/Base/Achievements/texCommandoNonLunarEnduranceIcon.png";

		public static string texComplete20StagesIcon = "RoR2/Base/Achievements/texComplete20StagesIcon.png";

		public static string texComplete30StagesCareerIcon = "RoR2/Base/Achievements/texComplete30StagesCareerIcon.png";

		public static string texCompleteMainEndingHardIcon = "RoR2/Base/Achievements/texCompleteMainEndingHardIcon.png";

		public static string texCompleteMainEndingIcon = "RoR2/Base/Achievements/texCompleteMainEndingIcon.png";

		public static string texCompleteMultiBossShrineIcon = "RoR2/Base/Achievements/texCompleteMultiBossShrineIcon.png";

		public static string texCompletePrismaticTrialIcon = "RoR2/Base/Achievements/texCompletePrismaticTrialIcon.png";

		public static string texCompleteTeleporterIcon = "RoR2/Base/Achievements/texCompleteTeleporterIcon.png";

		public static string texCompleteTeleporterWithoutInjuryIcon = "RoR2/Base/Achievements/texCompleteTeleporterWithoutInjuryIcon.png";

		public static string texCompleteThreeStagesIcon = "RoR2/Base/Achievements/texCompleteThreeStagesIcon.png";

		public static string texCompleteThreeStagesIconOLD = "RoR2/Base/Achievements/texCompleteThreeStagesIconOLD.png";

		public static string texCompleteThreeStagesWithoutHealingIcon = "RoR2/Base/Achievements/texCompleteThreeStagesWithoutHealingIcon.png";

		public static string texCompleteUnknownEndingIcon = "RoR2/Base/Achievements/texCompleteUnknownEndingIcon.png";

		public static string texCrocoClearGameMonsoonIcon = "RoR2/Base/Achievements/texCrocoClearGameMonsoonIcon.png";

		public static string texCrocoKillScavengerIcon = "RoR2/Base/Achievements/texCrocoKillScavengerIcon.png";

		public static string texCrocoKillWeakEnemiesMilestoneIcon = "RoR2/Base/Achievements/texCrocoKillWeakEnemiesMilestoneIcon.png";

		public static string texCrocoTotalInfectionsMilestoneIcon = "RoR2/Base/Achievements/texCrocoTotalInfectionsMilestoneIcon.png";

		public static string texDefeatSuperRoboBallBossIcon = "RoR2/Base/Achievements/texDefeatSuperRoboBallBossIcon.png";

		public static string texDie20TimesIcon = "RoR2/Base/Achievements/texDie20TimesIcon.png";

		public static string texDie5TimesIcon = "RoR2/Base/Achievements/texDie5TimesIcon.png";

		public static string texDiscover10UniqueTier1Icon = "RoR2/Base/Achievements/texDiscover10UniqueTier1Icon.png";

		public static string texDiscover5EquipmentIcon = "RoR2/Base/Achievements/texDiscover5EquipmentIcon.png";

		public static string texEngiArmyIcon = "RoR2/Base/Achievements/texEngiArmyIcon.png";

		public static string texEngiClearGameMonsoonIcon = "RoR2/Base/Achievements/texEngiClearGameMonsoonIcon.png";

		public static string texEngiClearTeleporterWithZeroMonstersIcon = "RoR2/Base/Achievements/texEngiClearTeleporterWithZeroMonstersIcon.png";

		public static string texEngiKillBossQuickIcon = "RoR2/Base/Achievements/texEngiKillBossQuickIcon.png";

		public static string texFailShrineChanceIcon = "RoR2/Base/Achievements/texFailShrineChanceIcon.png";

		public static string texFindDevilAltarIcon = "RoR2/Base/Achievements/texFindDevilAltarIcon.png";

		public static string texFindTimedChestIcon = "RoR2/Base/Achievements/texFindTimedChestIcon.png";

		public static string texFindUniqueNewtStatuesIcon = "RoR2/Base/Achievements/texFindUniqueNewtStatuesIcon.png";

		public static string texFreeMageIcon = "RoR2/Base/Achievements/texFreeMageIcon.png";

		public static string texHardEliteBossKillIcon = "RoR2/Base/Achievements/texHardEliteBossKillIcon.png";

		public static string texHardHitterIcon = "RoR2/Base/Achievements/texHardHitterIcon.png";

		public static string texHuntressAllGlaiveBouncesKillIcon = "RoR2/Base/Achievements/texHuntressAllGlaiveBouncesKillIcon.png";

		public static string texHuntressAttackSpeedIcon = "RoR2/Base/Achievements/texHuntressAttackSpeedIcon.png";

		public static string texHuntressClearGameMonsoonIcon = "RoR2/Base/Achievements/texHuntressClearGameMonsoonIcon.png";

		public static string texHuntressCollectCrowbarsIcon = "RoR2/Base/Achievements/texHuntressCollectCrowbarsIcon.png";

		public static string texHuntressMaintainFullHealthOnFrozenWallIcon = "RoR2/Base/Achievements/texHuntressMaintainFullHealthOnFrozenWallIcon.png";

		public static string texKillBossQuantityInRunIcon = "RoR2/Base/Achievements/texKillBossQuantityInRunIcon.png";

		public static string texKillBossQuickIcon = "RoR2/Base/Achievements/texKillBossQuickIcon.png";

		public static string texKillElementalLemuriansIcon = "RoR2/Base/Achievements/texKillElementalLemuriansIcon.png";

		public static string texKillEliteMonsterIcon = "RoR2/Base/Achievements/texKillEliteMonsterIcon.png";

		public static string texKillElitesMilestoneIcon = "RoR2/Base/Achievements/texKillElitesMilestoneIcon.png";

		public static string texKillGoldTitanInOneCycleIcon = "RoR2/Base/Achievements/texKillGoldTitanInOneCycleIcon.png";

		public static string texKillTotalEnemiesIcon = "RoR2/Base/Achievements/texKillTotalEnemiesIcon.png";

		public static string texLoaderBigSlamIcon = "RoR2/Base/Achievements/texLoaderBigSlamIcon.png";

		public static string texLoaderClearGameMonsoonIcon = "RoR2/Base/Achievements/texLoaderClearGameMonsoonIcon.png";

		public static string texLoaderKillLoadersIcon = "RoR2/Base/Achievements/texLoaderKillLoadersIcon.png";

		public static string texLoaderSpeedRunIcon = "RoR2/Base/Achievements/texLoaderSpeedRunIcon.png";

		public static string texLoaderThatsWeirdIcon = "RoR2/Base/Achievements/texLoaderThatsWeirdIcon.png";

		public static string texLogCollectorIcon = "RoR2/Base/Achievements/texLogCollectorIcon.png";

		public static string texLoopOnceIcon = "RoR2/Base/Achievements/texLoopOnceIcon.png";

		public static string texMageAirborneMultiKillIcon = "RoR2/Base/Achievements/texMageAirborneMultiKillIcon.png";

		public static string texMageClearGameMonsoonIcon = "RoR2/Base/Achievements/texMageClearGameMonsoonIcon.png";

		public static string texMageFastBossIcon = "RoR2/Base/Achievements/texMageFastBossIcon.png";

		public static string texMageMultiExecuteIcon = "RoR2/Base/Achievements/texMageMultiExecuteIcon.png";

		public static string texMageMultiKillIcon = "RoR2/Base/Achievements/texMageMultiKillIcon.png";

		public static string texMajorMultikillIcon = "RoR2/Base/Achievements/texMajorMultikillIcon.png";

		public static string texMaxHealingShrineIcon = "RoR2/Base/Achievements/texMaxHealingShrineIcon.png";

		public static string texMercClearGameMonsoonIcon = "RoR2/Base/Achievements/texMercClearGameMonsoonIcon.png";

		public static string texMercCompleteTrialWithFullHealthIcon = "RoR2/Base/Achievements/texMercCompleteTrialWithFullHealthIcon.png";

		public static string texMercDontTouchGroundIcon = "RoR2/Base/Achievements/texMercDontTouchGroundIcon.png";

		public static string texMercXSkillsInYSecondsIcon = "RoR2/Base/Achievements/texMercXSkillsInYSecondsIcon.png";

		public static string texMoveSpeedIcon = "RoR2/Base/Achievements/texMoveSpeedIcon.png";

		public static string texMultiCombatShrineIcon = "RoR2/Base/Achievements/texMultiCombatShrineIcon.png";

		public static string texNeverBackDownIcon = "RoR2/Base/Achievements/texNeverBackDownIcon.png";

		public static string texObtainArtifactBombIcon = "RoR2/Base/Achievements/texObtainArtifactBombIcon.png";

		public static string texObtainArtifactCommandIcon = "RoR2/Base/Achievements/texObtainArtifactCommandIcon.png";

		public static string texObtainArtifactEliteOnlyIcon = "RoR2/Base/Achievements/texObtainArtifactEliteOnlyIcon.png";

		public static string texObtainArtifactEnigmaIcon = "RoR2/Base/Achievements/texObtainArtifactEnigmaIcon.png";

		public static string texObtainArtifactFriendlyFireIcon = "RoR2/Base/Achievements/texObtainArtifactFriendlyFireIcon.png";

		public static string texObtainArtifactGlassIcon = "RoR2/Base/Achievements/texObtainArtifactGlassIcon.png";

		public static string texObtainArtifactMixEnemyIcon = "RoR2/Base/Achievements/texObtainArtifactMixEnemyIcon.png";

		public static string texObtainArtifactMonsterTeamGainsItemsIcon = "RoR2/Base/Achievements/texObtainArtifactMonsterTeamGainsItemsIcon.png";

		public static string texObtainArtifactRandomSurvivorOnRespawnIcon = "RoR2/Base/Achievements/texObtainArtifactRandomSurvivorOnRespawnIcon.png";

		public static string texObtainArtifactSacrificeIcon = "RoR2/Base/Achievements/texObtainArtifactSacrificeIcon.png";

		public static string texObtainArtifactShadowCloneIcon = "RoR2/Base/Achievements/texObtainArtifactShadowCloneIcon.png";

		public static string texObtainArtifactSingleMonsterTypeIcon = "RoR2/Base/Achievements/texObtainArtifactSingleMonsterTypeIcon.png";

		public static string texObtainArtifactSwarmsIcon = "RoR2/Base/Achievements/texObtainArtifactSwarmsIcon.png";

		public static string texObtainArtifactTeamDeathIcon = "RoR2/Base/Achievements/texObtainArtifactTeamDeathIcon.png";

		public static string texObtainArtifactWeakAssKneesIcon = "RoR2/Base/Achievements/texObtainArtifactWeakAssKneesIcon.png";

		public static string texObtainArtifactWispOnDeathIcon = "RoR2/Base/Achievements/texObtainArtifactWispOnDeathIcon.png";

		public static string texPlaceholderAchievement = "RoR2/Base/Achievements/texPlaceholderAchievement.png";

		public static string texRepeatedlyDuplicateItemsIcon = "RoR2/Base/Achievements/texRepeatedlyDuplicateItemsIcon.png";

		public static string texRepeatFirstTeleporterIcon = "RoR2/Base/Achievements/texRepeatFirstTeleporterIcon.png";

		public static string texRescueTreebotIcon = "RoR2/Base/Achievements/texRescueTreebotIcon.png";

		public static string texStayAlive1Icon = "RoR2/Base/Achievements/texStayAlive1Icon.png";

		public static string texSuicideHermitCrabsIcon = "RoR2/Base/Achievements/texSuicideHermitCrabsIcon.png";

		public static string texToolbotBeatArenaLaterIcon = "RoR2/Base/Achievements/texToolbotBeatArenaLaterIcon.png";

		public static string texToolbotClearGameMonsoonIcon = "RoR2/Base/Achievements/texToolbotClearGameMonsoonIcon.png";

		public static string texToolbotGuardTeleporterIcon = "RoR2/Base/Achievements/texToolbotGuardTeleporterIcon.png";

		public static string texToolbotKillImpBossWithBfgIcon = "RoR2/Base/Achievements/texToolbotKillImpBossWithBfgIcon.png";

		public static string texTotalDronesRepairedIcon = "RoR2/Base/Achievements/texTotalDronesRepairedIcon.png";

		public static string texTotalMoneyCollectedIcon = "RoR2/Base/Achievements/texTotalMoneyCollectedIcon.png";

		public static string texTreebotBigHealIcon = "RoR2/Base/Achievements/texTreebotBigHealIcon.png";

		public static string texTreebotClearGameMonsoonIcon = "RoR2/Base/Achievements/texTreebotClearGameMonsoonIcon.png";

		public static string texTreebotDunkClayBossIcon = "RoR2/Base/Achievements/texTreebotDunkClayBossIcon.png";

		public static string texTreebotLowHealthTeleporterIcon = "RoR2/Base/Achievements/texTreebotLowHealthTeleporterIcon.png";

		public static string texUseThreePortalsIcon = "RoR2/Base/Achievements/texUseThreePortalsIcon.png";

		public static string texArtifactCompoundCircleMask = "RoR2/Base/ArtifactCompounds/texArtifactCompoundCircleMask.png";

		public static string texArtifactCompoundCircleNormal = "RoR2/Base/ArtifactCompounds/texArtifactCompoundCircleNormal.png";

		public static string texArtifactCompoundDiamondMask = "RoR2/Base/ArtifactCompounds/texArtifactCompoundDiamondMask.png";

		public static string texArtifactCompoundDiamondNormal = "RoR2/Base/ArtifactCompounds/texArtifactCompoundDiamondNormal.png";

		public static string texArtifactCompoundFrameMask = "RoR2/Base/ArtifactCompounds/texArtifactCompoundFrameMask.png";

		public static string texArtifactCompoundFrameNormal = "RoR2/Base/ArtifactCompounds/texArtifactCompoundFrameNormal.png";

		public static string texArtifactCompoundScavScarMask = "RoR2/Base/ArtifactCompounds/texArtifactCompoundScavScarMask.png";

		public static string texArtifactCompoundScavScarNormal = "RoR2/Base/ArtifactCompounds/texArtifactCompoundScavScarNormal.png";

		public static string texArtifactCompoundSquareMask = "RoR2/Base/ArtifactCompounds/texArtifactCompoundSquareMask.png";

		public static string texArtifactCompoundSquareNormal = "RoR2/Base/ArtifactCompounds/texArtifactCompoundSquareNormal.png";

		public static string texArtifactCompoundTriangleMask = "RoR2/Base/ArtifactCompounds/texArtifactCompoundTriangleMask.png";

		public static string texArtifactCompoundTriangleNormal = "RoR2/Base/ArtifactCompounds/texArtifactCompoundTriangleNormal.png";

		public static string texArtifactBombDisabled = "RoR2/Base/Bomb/texArtifactBombDisabled.png";

		public static string texArtifactBombEnabled = "RoR2/Base/Bomb/texArtifactBombEnabled.png";

		public static string texArtifactCommandDisabled = "RoR2/Base/Command/texArtifactCommandDisabled.png";

		public static string texArtifactCommandEnabled = "RoR2/Base/Command/texArtifactCommandEnabled.png";

		public static string texArtifactEliteOnlyDisabled = "RoR2/Base/EliteOnly/texArtifactEliteOnlyDisabled.png";

		public static string texArtifactEliteOnlyEnabled = "RoR2/Base/EliteOnly/texArtifactEliteOnlyEnabled.png";

		public static string texArtifactRandomEquipmentDisabled = "RoR2/Base/Enigma/texArtifactRandomEquipmentDisabled.png";

		public static string texArtifactRandomEquipmentEnabled = "RoR2/Base/Enigma/texArtifactRandomEquipmentEnabled.png";

		public static string texArtifactFriendlyFireDisabled = "RoR2/Base/FriendlyFire/texArtifactFriendlyFireDisabled.png";

		public static string texArtifactFriendlyFireEnabled = "RoR2/Base/FriendlyFire/texArtifactFriendlyFireEnabled.png";

		public static string texArtifactGlassDisabled = "RoR2/Base/Glass/texArtifactGlassDisabled.png";

		public static string texArtifactGlassEnabled = "RoR2/Base/Glass/texArtifactGlassEnabled.png";

		public static string texArtifactMixEnemyDisabled = "RoR2/Base/MixEnemy/texArtifactMixEnemyDisabled.png";

		public static string texArtifactMixEnemyEnabled = "RoR2/Base/MixEnemy/texArtifactMixEnemyEnabled.png";

		public static string texArtifactEvolutionDisabled = "RoR2/Base/MonsterTeamGainsItems/texArtifactEvolutionDisabled.png";

		public static string texArtifactEvolutionEnabled = "RoR2/Base/MonsterTeamGainsItems/texArtifactEvolutionEnabled.png";

		public static string texArtifactMetamorphDisabled = "RoR2/Base/RandomSurvivorOnRespawn/texArtifactMetamorphDisabled.png";

		public static string texArtifactMetamorphEnabled = "RoR2/Base/RandomSurvivorOnRespawn/texArtifactMetamorphEnabled.png";

		public static string texArtifactSacrificeDisabled = "RoR2/Base/Sacrifice/texArtifactSacrificeDisabled.png";

		public static string texArtifactSacrificeEnabled = "RoR2/Base/Sacrifice/texArtifactSacrificeEnabled.png";

		public static string texArtifactShadowCloneDisabled = "RoR2/Base/ShadowClone/texArtifactShadowCloneDisabled.png";

		public static string texArtifactShadowCloneEnabled = "RoR2/Base/ShadowClone/texArtifactShadowCloneEnabled.png";

		public static string texArtifactKinDisabled = "RoR2/Base/SingleMonsterType/texArtifactKinDisabled.png";

		public static string texArtifactKinEnabled = "RoR2/Base/SingleMonsterType/texArtifactKinEnabled.png";

		public static string texArtifactSwarmsDisabled = "RoR2/Base/Swarms/texArtifactSwarmsDisabled.png";

		public static string texArtifactSwarmsEnabled = "RoR2/Base/Swarms/texArtifactSwarmsEnabled.png";

		public static string texArtifactDeathDisabled = "RoR2/Base/TeamDeath/texArtifactDeathDisabled.png";

		public static string texArtifactDeathEnabled = "RoR2/Base/TeamDeath/texArtifactDeathEnabled.png";

		public static string texArtifactFallDamageDisabled = "RoR2/Base/WeakAssKnees/texArtifactFallDamageDisabled.png";

		public static string texArtifactFallDamageEnabled = "RoR2/Base/WeakAssKnees/texArtifactFallDamageEnabled.png";

		public static string texArtifactWispDisabled = "RoR2/Base/WispOnDeath/texArtifactWispDisabled.png";

		public static string texArtifactWispEnabled = "RoR2/Base/WispOnDeath/texArtifactWispEnabled.png";

		public static string texUnidentifiedKillerIcon = "RoR2/Base/ArtifactShell/texUnidentifiedKillerIcon.png";

		public static string texBanditKnifeEmissive = "RoR2/Base/Bandit2/texBanditKnifeEmissive.png";

		public static string texBanditKnifeFresnelMask = "RoR2/Base/Bandit2/texBanditKnifeFresnelMask.png";

		public static string texBanditKnifeNormal = "RoR2/Base/Bandit2/texBanditKnifeNormal.png";

		public static string texBanditRevolverFresnelMask = "RoR2/Base/Bandit2/texBanditRevolverFresnelMask.png";

		public static string texBanditShotgunAltDiffuse = "RoR2/Base/Bandit2/texBanditShotgunAltDiffuse.png";

		public static string texBanditShotgunDiffuse = "RoR2/Base/Bandit2/texBanditShotgunDiffuse.png";

		public static string texBanditShotgunEmissive = "RoR2/Base/Bandit2/texBanditShotgunEmissive.png";

		public static string texBandit2SkillIcons = "RoR2/Base/Bandit2/texBandit2SkillIcons.png";

		public static string texBandit2AltEmission = "RoR2/Base/Bandit2/texBandit2AltEmission.png";

		public static string texBandit2CoatAltDiffuse = "RoR2/Base/Bandit2/texBandit2CoatAltDiffuse.png";

		public static string texBandit2DiffuseAlt = "RoR2/Base/Bandit2/texBandit2DiffuseAlt.png";

		public static string texBandit2CoatDiffuse = "RoR2/Base/Bandit2/texBandit2CoatDiffuse.png";

		public static string texBandit2CoatNormal = "RoR2/Base/Bandit2/texBandit2CoatNormal.png";

		public static string texBandit2Diffuse = "RoR2/Base/Bandit2/texBandit2Diffuse.png";

		public static string texBandit2Emission = "RoR2/Base/Bandit2/texBandit2Emission.png";

		public static string texBandit2Normal = "RoR2/Base/Bandit2/texBandit2Normal.png";

		public static string texBanditCoatDiffuse = "RoR2/Base/Bandit2/texBanditCoatDiffuse.png";

		public static string texBanditCoatEmissive = "RoR2/Base/Bandit2/texBanditCoatEmissive.png";

		public static string texBanditIcon = "RoR2/Base/Bandit2/texBanditIcon.png";

		public static string texBuffBanditSkullIcon = "RoR2/Base/Bandit2/texBuffBanditSkullIcon.tif";

		public static string texBuffSuperBleedingIcon = "RoR2/Base/Bandit2/texBuffSuperBleedingIcon.tif";

		public static string texBandit2BackstabMask = "RoR2/Base/Bandit2/texBandit2BackstabMask.png";

		public static string texBanditSkullMask = "RoR2/Base/Bandit2/texBanditSkullMask.png";

		public static string BeetleBody = "RoR2/Base/Beetle/BeetleBody.png";

		public static string texSulfurBeetleDiffuse = "RoR2/Base/Beetle/texSulfurBeetleDiffuse.png";

		public static string texSulfurBeetleFresnelMask = "RoR2/Base/Beetle/texSulfurBeetleFresnelMask.png";

		public static string texBeetleDiffuse = "RoR2/Base/Beetle/texBeetleDiffuse.png";

		public static string texBeetleEmission = "RoR2/Base/Beetle/texBeetleEmission.png";

		public static string BeetleGuardBody = "RoR2/Base/Beetle/BeetleGuardBody.png";

		public static string texSulfurBeetleGuardDiffuse = "RoR2/Base/Beetle/texSulfurBeetleGuardDiffuse.png";

		public static string texSulfurBeetleGuardFresnelMask = "RoR2/Base/Beetle/texSulfurBeetleGuardFresnelMask.png";

		public static string BeetleQueen2Body = "RoR2/Base/Beetle/BeetleQueen2Body.png";

		public static string texAcidDecalDiffuse = "RoR2/Base/Beetle/texAcidDecalDiffuse.png";

		public static string texBuggyMask = "RoR2/Base/Beetle/texBuggyMask.png";

		public static string texSulfurBeetleQueenDiffuse = "RoR2/Base/Beetle/texSulfurBeetleQueenDiffuse.png";

		public static string texSulfurBeetleQueenFresnelMask = "RoR2/Base/Beetle/texSulfurBeetleQueenFresnelMask.png";

		public static string texAcidDecalMask = "RoR2/Base/Beetle/texAcidDecalMask.png";

		public static string texAcidDecalNormal = "RoR2/Base/Beetle/texAcidDecalNormal.png";

		public static string texBeetleDiffuse2 = "RoR2/Base/Beetle/texBeetleDiffuse2.png";

		public static string texBeetleGrubRangeIndicator = "RoR2/Base/Beetle/texBeetleGrubRangeIndicator.png";

		public static string texBeetleGuardAllyDiffuse = "RoR2/Base/Beetle/texBeetleGuardAllyDiffuse.png";

		public static string texBeetleGuardAllyFresnelMask = "RoR2/Base/Beetle/texBeetleGuardAllyFresnelMask.png";

		public static string texBeetleGuardDiffuse = "RoR2/Base/Beetle/texBeetleGuardDiffuse.png";

		public static string texBeetleGuardEmission = "RoR2/Base/Beetle/texBeetleGuardEmission.png";

		public static string texBeetleGuardNormal = "RoR2/Base/Beetle/texBeetleGuardNormal.png";

		public static string texBeetleGuardShellMask = "RoR2/Base/Beetle/texBeetleGuardShellMask.png";

		public static string texBeetleNormal = "RoR2/Base/Beetle/texBeetleNormal.png";

		public static string texBeetleQueenDiffuse = "RoR2/Base/Beetle/texBeetleQueenDiffuse.png";

		public static string texBeetleQueenEyeMask = "RoR2/Base/Beetle/texBeetleQueenEyeMask.png";

		public static string texBeetleQueenNormal = "RoR2/Base/Beetle/texBeetleQueenNormal.png";

		public static string texBeetleQueenSplatmap = "RoR2/Base/Beetle/texBeetleQueenSplatmap.png";

		public static string texBeetleStrike = "RoR2/Base/Beetle/texBeetleStrike.png";

		public static string texBuffBeetleJuiceIcon = "RoR2/Base/Beetle/texBuffBeetleJuiceIcon.tif";

		public static string BellBody = "RoR2/Base/Bell/BellBody.png";

		public static string texBellBallDiffuse = "RoR2/Base/Bell/texBellBallDiffuse.png";

		public static string texBellBallNormal = "RoR2/Base/Bell/texBellBallNormal.png";

		public static string texBellDeviceDiffuse = "RoR2/Base/Bell/texBellDeviceDiffuse.png";

		public static string texBellDeviceNormal = "RoR2/Base/Bell/texBellDeviceNormal.png";

		public static string texBellDiffuse = "RoR2/Base/Bell/texBellDiffuse.png";

		public static string texBellNormal = "RoR2/Base/Bell/texBellNormal.png";

		public static string texBirdsharkDiffuse = "RoR2/Base/Birdshark/texBirdsharkDiffuse.png";

		public static string BisonBody = "RoR2/Base/Bison/BisonBody.png";

		public static string texBisonDiffuse = "RoR2/Base/Bison/texBisonDiffuse.png";

		public static string texBisonHairDiffuse = "RoR2/Base/Bison/texBisonHairDiffuse.png";

		public static string texBisonNormal = "RoR2/Base/Bison/texBisonNormal.png";

		public static string texBrotherIcon = "RoR2/Base/Brother/texBrotherIcon.png";

		public static string texBrotherClothRipped = "RoR2/Base/Brother/texBrotherClothRipped.png";

		public static string texBrotherDiffuse = "RoR2/Base/Brother/texBrotherDiffuse.png";

		public static string texBrotherEyeDiffuse = "RoR2/Base/Brother/texBrotherEyeDiffuse.png";

		public static string texBrotherEyeHurtDiffuse = "RoR2/Base/Brother/texBrotherEyeHurtDiffuse.png";

		public static string texBrotherNormal = "RoR2/Base/Brother/texBrotherNormal.png";

		public static string texCaptainSupplyRadius = "RoR2/Base/Captain/texCaptainSupplyRadius.png";

		public static string texCrosshairDrone1 = "RoR2/Base/Captain/texCrosshairDrone1.png";

		public static string texScanlineMask = "RoR2/Base/Captain/texScanlineMask.jpg";

		public static string texWarning = "RoR2/Base/Captain/texWarning.png";

		public static string texCaptainJacketDiffuse = "RoR2/Base/Captain/texCaptainJacketDiffuse.png";

		public static string texCaptainJacketDiffuseAlt = "RoR2/Base/Captain/texCaptainJacketDiffuseAlt.png";

		public static string texCaptainJacketNormal = "RoR2/Base/Captain/texCaptainJacketNormal.png";

		public static string texCaptainPalette = "RoR2/Base/Captain/texCaptainPalette.psd";

		public static string texCaptainPaletteAlt = "RoR2/Base/Captain/texCaptainPaletteAlt.psd";

		public static string texCaptainCrosshairInner = "RoR2/Base/Captain/texCaptainCrosshairInner.png";

		public static string texCaptainCrosshairOuter = "RoR2/Base/Captain/texCaptainCrosshairOuter.png";

		public static string texCaptainSkillIcons = "RoR2/Base/Captain/texCaptainSkillIcons.png";

		public static string texCaptainIcon = "RoR2/Base/Captain/texCaptainIcon.png";

		public static string texRampCrosshair2 = "RoR2/Base/Captain/texRampCrosshair2.png";

		public static string texClayFlowmap = "RoR2/Base/Clay/texClayFlowmap.png";

		public static string ClayBossBody = "RoR2/Base/ClayBoss/ClayBossBody.png";

		public static string texClayBossDiffuse = "RoR2/Base/ClayBoss/texClayBossDiffuse.png";

		public static string texClayBossNormal = "RoR2/Base/ClayBoss/texClayBossNormal.png";

		public static string texClayProjectileDiffuse = "RoR2/Base/ClayBoss/texClayProjectileDiffuse.png";

		public static string texClayProjectileMask = "RoR2/Base/ClayBoss/texClayProjectileMask.png";

		public static string ClayBruiserBody = "RoR2/Base/ClayBruiser/ClayBruiserBody.png";

		public static string texClayBruiserDeathDecalMask = "RoR2/Base/ClayBruiser/texClayBruiserDeathDecalMask.png";

		public static string texClayBruiserDiffuse = "RoR2/Base/ClayBruiser/texClayBruiserDiffuse.png";

		public static string texClayBruiserNormal = "RoR2/Base/ClayBruiser/texClayBruiserNormal.png";

		public static string texCommandoSkillIcons = "RoR2/Base/Commando/texCommandoSkillIcons.png";

		public static string texCommandoIcon = "RoR2/Base/Commando/texCommandoIcon.png";

		public static string texCommandoPaletteDiffuse = "RoR2/Base/Commando/texCommandoPaletteDiffuse.png";

		public static string texCommandoPaletteDiffuseAlt = "RoR2/Base/Commando/texCommandoPaletteDiffuseAlt.psd";

		public static string texCommandoPaletteEmission = "RoR2/Base/Commando/texCommandoPaletteEmission.png";

		public static string CrocoBody = "RoR2/Base/Croco/CrocoBody.png";

		public static string texCrocoSkillIcons = "RoR2/Base/Croco/texCrocoSkillIcons.png";

		public static string texBuffRegenBoostIcon = "RoR2/Base/Croco/texBuffRegenBoostIcon.tif";

		public static string texCrocoAltDiffuse = "RoR2/Base/Croco/texCrocoAltDiffuse.png";

		public static string texCrocoBiteMask = "RoR2/Base/Croco/texCrocoBiteMask.png";

		public static string texCrocoDecalMask = "RoR2/Base/Croco/texCrocoDecalMask.png";

		public static string texCrocoDiffuse = "RoR2/Base/Croco/texCrocoDiffuse.png";

		public static string texCrocoEmission = "RoR2/Base/Croco/texCrocoEmission.png";

		public static string texCrocoNormal = "RoR2/Base/Croco/texCrocoNormal.png";

		public static string texCrocoPoisonMask = "RoR2/Base/Croco/texCrocoPoisonMask.png";

		public static string texCrocoSlashMask1 = "RoR2/Base/Croco/texCrocoSlashMask 1.png";

		public static string texCrocoSlashMask = "RoR2/Base/Croco/texCrocoSlashMask.png";

		public static string texCrocoSlashMaskSharp = "RoR2/Base/Croco/texCrocoSlashMaskSharp.png";

		public static string texCrocoSpinesDiffuse = "RoR2/Base/Croco/texCrocoSpinesDiffuse.png";

		public static string texCrocoSpinesMask = "RoR2/Base/Croco/texCrocoSpinesMask.png";

		public static string texPoisonMask = "RoR2/Base/Croco/texPoisonMask.png";

		public static string texPoisonNormal = "RoR2/Base/Croco/texPoisonNormal.png";

		public static string texBackupDroneBodyIcon = "RoR2/Base/Drones/texBackupDroneBodyIcon.png";

		public static string texDrone1Icon = "RoR2/Base/Drones/texDrone1Icon.png";

		public static string texDrone2Icon = "RoR2/Base/Drones/texDrone2Icon.png";

		public static string EmergencyDroneBody = "RoR2/Base/Drones/EmergencyDroneBody.png";

		public static string EquipmentDroneBody = "RoR2/Base/Drones/EquipmentDroneBody.png";

		public static string FlameDroneBody = "RoR2/Base/Drones/FlameDroneBody.png";

		public static string MegaDroneBody = "RoR2/Base/Drones/MegaDroneBody.png";

		public static string texMissileDroneIcon = "RoR2/Base/Drones/texMissileDroneIcon.png";

		public static string texDroneBlades = "RoR2/Base/Drones/texDroneBlades.png";

		public static string texTurret1Diffuse = "RoR2/Base/Drones/texTurret1Diffuse.png";

		public static string texTurret1Icon = "RoR2/Base/Drones/texTurret1Icon.png";

		public static string ElectricWormBody = "RoR2/Base/ElectricWorm/ElectricWormBody.png";

		public static string texEngiSkillIcons = "RoR2/Base/Engi/texEngiSkillIcons.png";

		public static string texEngiIcon = "RoR2/Base/Engi/texEngiIcon.png";

		public static string texUIEngiMissileLockedOn = "RoR2/Base/Engi/texUIEngiMissileLockedOn.png";

		public static string texUIEngiMissilePaint = "RoR2/Base/Engi/texUIEngiMissilePaint.png";

		public static string texEngiTurretDiffuse = "RoR2/Base/Engi/texEngiTurretDiffuse.png";

		public static string texEngiTurretEmission = "RoR2/Base/Engi/texEngiTurretEmission.png";

		public static string texEngiTurretIcon = "RoR2/Base/Engi/texEngiTurretIcon.png";

		public static string texEngiFlare = "RoR2/Base/Engi/texEngiFlare.png";

		public static string texEngiDiffuse = "RoR2/Base/Engi/texEngiDiffuse.png";

		public static string texEngiDiffuseAlt = "RoR2/Base/Engi/texEngiDiffuseAlt.png";

		public static string texEngiEmission = "RoR2/Base/Engi/texEngiEmission.png";

		public static string texEngiEmissionAlt = "RoR2/Base/Engi/texEngiEmissionAlt.png";

		public static string texEngiShield = "RoR2/Base/Engi/texEngiShield.png";

		public static string texEngiShieldBlurred = "RoR2/Base/Engi/texEngiShieldBlurred.png";

		public static string GolemBody = "RoR2/Base/Golem/GolemBody.png";

		public static string texGolemNormal1 = "RoR2/Base/Golem/texGolemNormal 1.png";

		public static string texNatureGolemDiffuse = "RoR2/Base/Golem/texNatureGolemDiffuse.png";

		public static string texSandyGolemDiffuse = "RoR2/Base/Golem/texSandyGolemDiffuse.png";

		public static string texZap1Mask = "RoR2/Base/Golem/texZap1Mask.png";

		public static string texSnowyGolemDiffuse = "RoR2/Base/Golem/texSnowyGolemDiffuse.png";

		public static string texGolemDiffuse = "RoR2/Base/Golem/texGolemDiffuse.png";

		public static string texGolemEmission = "RoR2/Base/Golem/texGolemEmission.png";

		public static string texGolemNormal = "RoR2/Base/Golem/texGolemNormal.png";

		public static string GrandparentBody = "RoR2/Base/Grandparent/GrandparentBody.png";

		public static string texBuffOverheat = "RoR2/Base/Grandparent/texBuffOverheat.tif";

		public static string texGrandparentDetailBDiffuse = "RoR2/Base/Grandparent/texGrandparentDetailBDiffuse.png";

		public static string texGrandparentDetailBNormal = "RoR2/Base/Grandparent/texGrandparentDetailBNormal.png";

		public static string texGrandparentDetailGDiffuse = "RoR2/Base/Grandparent/texGrandparentDetailGDiffuse.png";

		public static string texGrandparentDetailGNormal = "RoR2/Base/Grandparent/texGrandparentDetailGNormal.png";

		public static string texGrandparentDiffuse = "RoR2/Base/Grandparent/texGrandparentDiffuse.png";

		public static string texGrandparentEmission = "RoR2/Base/Grandparent/texGrandparentEmission.png";

		public static string texGrandparentNormal = "RoR2/Base/Grandparent/texGrandparentNormal.png";

		public static string texGrandparentSplat = "RoR2/Base/Grandparent/texGrandparentSplat.png";

		public static string GravekeeperBody = "RoR2/Base/Gravekeeper/GravekeeperBody.png";

		public static string texChainTrailMask = "RoR2/Base/Gravekeeper/texChainTrailMask.png";

		public static string texChainTrailNormal = "RoR2/Base/Gravekeeper/texChainTrailNormal.png";

		public static string texGravekeeperFurDiffuse = "RoR2/Base/Gravekeeper/texGravekeeperFurDiffuse.png";

		public static string texGravekeeperTestDiffuse = "RoR2/Base/Gravekeeper/texGravekeeperTestDiffuse.png";

		public static string GreaterWispBody = "RoR2/Base/GreaterWisp/GreaterWispBody.png";

		public static string texGreaterWispCracks = "RoR2/Base/GreaterWisp/texGreaterWispCracks.png";

		public static string texGreaterWispDiffuse = "RoR2/Base/GreaterWisp/texGreaterWispDiffuse.png";

		public static string texHandDiffuse = "RoR2/Base/HAND/texHandDiffuse.png";

		public static string texHandEmission = "RoR2/Base/HAND/texHandEmission.png";

		public static string texHereticBodyDiffuse = "RoR2/Base/Heretic/texHereticBody_Diffuse.png";

		public static string texHereticBodyEmission = "RoR2/Base/Heretic/texHereticBody_Emission.png";

		public static string texHereticBodyNormals = "RoR2/Base/Heretic/texHereticBody_Normals.png";

		public static string texHereticClothesDiffuse = "RoR2/Base/Heretic/texHereticClothes_Diffuse.png";

		public static string texHereticClothesNormal = "RoR2/Base/Heretic/texHereticClothes_Normal.png";

		public static string texHereticFeather = "RoR2/Base/Heretic/texHereticFeather.png";

		public static string texHereticFeatherEmission = "RoR2/Base/Heretic/texHereticFeatherEmission.png";

		public static string texHereticIcon = "RoR2/Base/Heretic/texHereticIcon.png";

		public static string HermitCrabBody = "RoR2/Base/HermitCrab/HermitCrabBody.png";

		public static string texHermitCrabDiffuse = "RoR2/Base/HermitCrab/texHermitCrabDiffuse.png";

		public static string texHermitCrabNormal = "RoR2/Base/HermitCrab/texHermitCrabNormal.png";

		public static string texHuntressDiffuseAlt = "RoR2/Base/Huntress/texHuntressDiffuseAlt.png";

		public static string texHuntressSkillIcons = "RoR2/Base/Huntress/texHuntressSkillIcons.png";

		public static string texBowDiffuse = "RoR2/Base/Huntress/texBowDiffuse.png";

		public static string texBowEmission = "RoR2/Base/Huntress/texBowEmission.png";

		public static string texHuntressArrowBigMask = "RoR2/Base/Huntress/texHuntressArrowBigMask.png";

		public static string texHuntressArrowMask = "RoR2/Base/Huntress/texHuntressArrowMask.png";

		public static string texHuntressDiffuse = "RoR2/Base/Huntress/texHuntressDiffuse.png";

		public static string texHuntressEmission = "RoR2/Base/Huntress/texHuntressEmission.png";

		public static string texHuntressIcon = "RoR2/Base/Huntress/texHuntressIcon.png";

		public static string texHuntressNormal = "RoR2/Base/Huntress/texHuntressNormal.png";

		public static string texHuntressScarfDiffuseAlt = "RoR2/Base/Huntress/texHuntressScarfDiffuseAlt.png";

		public static string ImpBody = "RoR2/Base/Imp/ImpBody.png";

		public static string texImpBossDiffuse = "RoR2/Base/Imp/texImpBossDiffuse.png";

		public static string texImpBossEmission = "RoR2/Base/Imp/texImpBossEmission.png";

		public static string texImpBossNormals = "RoR2/Base/Imp/texImpBossNormals.png";

		public static string texImpDiffuse = "RoR2/Base/Imp/texImpDiffuse.png";

		public static string texImpEmission = "RoR2/Base/Imp/texImpEmission.png";

		public static string texImpNormal = "RoR2/Base/Imp/texImpNormal.png";

		public static string texImpSwipeMask = "RoR2/Base/Imp/texImpSwipeMask.png";

		public static string ImpBossBody = "RoR2/Base/ImpBoss/ImpBossBody.png";

		public static string JellyfishBody = "RoR2/Base/Jellyfish/JellyfishBody.png";

		public static string texJellyfishAO = "RoR2/Base/Jellyfish/texJellyfishAO.png";

		public static string texJellyfishDiffuse = "RoR2/Base/Jellyfish/texJellyfishDiffuse.png";

		public static string texJellyfishEmission = "RoR2/Base/Jellyfish/texJellyfishEmission.png";

		public static string texJellyfishNormal = "RoR2/Base/Jellyfish/texJellyfishNormal.png";

		public static string LemurianBody = "RoR2/Base/Lemurian/LemurianBody.png";

		public static string texLemurianBruiserDiffuse = "RoR2/Base/Lemurian/texLemurianBruiserDiffuse.png";

		public static string texLemurianBruiserEmission = "RoR2/Base/Lemurian/texLemurianBruiserEmission.png";

		public static string texLemurianBruiserNormal = "RoR2/Base/Lemurian/texLemurianBruiserNormal.png";

		public static string texLemurianDiffuse = "RoR2/Base/Lemurian/texLemurianDiffuse.tga";

		public static string texLemurianEmission = "RoR2/Base/Lemurian/texLemurianEmission.png";

		public static string texLemurianNormal = "RoR2/Base/Lemurian/texLemurianNormal.png";

		public static string texLemurianSlash = "RoR2/Base/Lemurian/texLemurianSlash.png";

		public static string LemurianBruiserBody = "RoR2/Base/LemurianBruiser/LemurianBruiserBody.png";

		public static string LoaderBody = "RoR2/Base/Loader/LoaderBody.png";

		public static string texLoaderSkillIcons = "RoR2/Base/Loader/texLoaderSkillIcons.png";

		public static string texLoaderPilotDiffuse = "RoR2/Base/Loader/texLoaderPilotDiffuse.png";

		public static string texLoaderPilotDiffuseAlt = "RoR2/Base/Loader/texLoaderPilotDiffuseAlt.png";

		public static string texLoaderPilotEmission = "RoR2/Base/Loader/texLoaderPilotEmission.png";

		public static string texLoaderRopeNormal = "RoR2/Base/Loader/texLoaderRopeNormal.png";

		public static string LunarExploderBody = "RoR2/Base/LunarExploder/LunarExploderBody.png";

		public static string LunarGolemBody = "RoR2/Base/LunarGolem/LunarGolemBody.png";

		public static string texBuffLunarShellIcon = "RoR2/Base/LunarGolem/texBuffLunarShellIcon.tif";

		public static string texLunarGolemDiffuse = "RoR2/Base/LunarGolem/texLunarGolemDiffuse.png";

		public static string texLunarGolemEmmission = "RoR2/Base/LunarGolem/texLunarGolemEmmission.png";

		public static string texLunarGolemNormal = "RoR2/Base/LunarGolem/texLunarGolemNormal.png";

		public static string LunarWispBody = "RoR2/Base/LunarWisp/LunarWispBody.png";

		public static string texChargeRing = "RoR2/Base/LunarWisp/texChargeRing.png";

		public static string texLunarWispDiffuse = "RoR2/Base/LunarWisp/texLunarWispDiffuse.png";

		public static string texLunarWispNormal = "RoR2/Base/LunarWisp/texLunarWispNormal.png";

		public static string texLunarWispTracerLead = "RoR2/Base/LunarWisp/texLunarWispTracerLead.png";

		public static string texMageMatrixMask = "RoR2/Base/Mage/texMageMatrixMask.png";

		public static string texMageMatrixMaskDirectional = "RoR2/Base/Mage/texMageMatrixMaskDirectional.png";

		public static string texMageMatrixTri = "RoR2/Base/Mage/texMageMatrixTri.png";

		public static string texMageSkillIcons = "RoR2/Base/Mage/texMageSkillIcons.png";

		public static string texMageDiffuse = "RoR2/Base/Mage/texMageDiffuse.png";

		public static string texMageDiffuseAlt = "RoR2/Base/Mage/texMageDiffuseAlt.png";

		public static string texMageIcon = "RoR2/Base/Mage/texMageIcon.png";

		public static string texMageMask = "RoR2/Base/Mage/texMageMask.png";

		public static string MagmaWormBody = "RoR2/Base/MagmaWorm/MagmaWormBody.png";

		public static string texMagma1 = "RoR2/Base/MagmaWorm/texMagma1.png";

		public static string texMagmaWormDiffuse = "RoR2/Base/MagmaWorm/texMagmaWormDiffuse.png";

		public static string texMagmaWormDiffuseOff = "RoR2/Base/MagmaWorm/texMagmaWormDiffuseOff.png";

		public static string texMagmaWormHeight = "RoR2/Base/MagmaWorm/texMagmaWormHeight.png";

		public static string texMagmaWormHeight2 = "RoR2/Base/MagmaWorm/texMagmaWormHeight2.png";

		public static string texMagmaWormNormal = "RoR2/Base/MagmaWorm/texMagmaWormNormal.png";

		public static string texMagmaWormSplat = "RoR2/Base/MagmaWorm/texMagmaWormSplat.png";

		public static string texMercSkillIcons = "RoR2/Base/Merc/texMercSkillIcons.png";

		public static string texBuffMercExposeIcon = "RoR2/Base/Merc/texBuffMercExposeIcon.tif";

		public static string texMercAltDiffuse = "RoR2/Base/Merc/texMercAltDiffuse.png";

		public static string texMercAltEmission = "RoR2/Base/Merc/texMercAltEmission.png";

		public static string texMercDiffuse = "RoR2/Base/Merc/texMercDiffuse.png";

		public static string texMercExposedMask = "RoR2/Base/Merc/texMercExposedMask.png";

		public static string texMercIcon = "RoR2/Base/Merc/texMercIcon.png";

		public static string texMercNormal = "RoR2/Base/Merc/texMercNormal.png";

		public static string texMercSwipeMask = "RoR2/Base/Merc/texMercSwipeMask.png";

		public static string texMercSwordDiffuse = "RoR2/Base/Merc/texMercSwordDiffuse.png";

		public static string texMercSwordMask = "RoR2/Base/Merc/texMercSwordMask.png";

		public static string texMercTestingDiffuse = "RoR2/Base/Merc/texMercTestingDiffuse.png";

		public static string MiniMushroomBody = "RoR2/Base/MiniMushroom/MiniMushroomBody.png";

		public static string texMiniMushroomDiffuse = "RoR2/Base/MiniMushroom/texMiniMushroomDiffuse.png";

		public static string texMiniMushroomEmission = "RoR2/Base/MiniMushroom/texMiniMushroomEmission.png";

		public static string texMiniMushroomNormal = "RoR2/Base/MiniMushroom/texMiniMushroomNormal.png";

		public static string texMushDecalMask = "RoR2/Base/MiniMushroom/texMushDecalMask.png";

		public static string texNullifierAllyDiffuse = "RoR2/Base/Nullifier/texNullifierAllyDiffuse.png";

		public static string NullifierAllyBody = "RoR2/Base/Nullifier/NullifierAllyBody.png";

		public static string NullifierBody = "RoR2/Base/Nullifier/NullifierBody.png";

		public static string texBuffNullifiedIcon = "RoR2/Base/Nullifier/texBuffNullifiedIcon.tif";

		public static string texBuffNullifyStackIcon = "RoR2/Base/Nullifier/texBuffNullifyStackIcon.tif";

		public static string texNullifierDiffuse = "RoR2/Base/Nullifier/texNullifierDiffuse.png";

		public static string texNullifierDiffuse2 = "RoR2/Base/Nullifier/texNullifierDiffuse2.png";

		public static string texNullifierEmission = "RoR2/Base/Nullifier/texNullifierEmission.png";

		public static string texNullifierNormal = "RoR2/Base/Nullifier/texNullifierNormal.png";

		public static string texNullifierSky = "RoR2/Base/Nullifier/texNullifierSky.png";

		public static string texNullifierSky2 = "RoR2/Base/Nullifier/texNullifierSky2.png";

		public static string texNullifierSky3Alpha = "RoR2/Base/Nullifier/texNullifierSky3Alpha.png";

		public static string texNullifierSkySparse = "RoR2/Base/Nullifier/texNullifierSkySparse.png";

		public static string ParentBody = "RoR2/Base/Parent/ParentBody.png";

		public static string texParentDiffuse = "RoR2/Base/Parent/texParentDiffuse.png";

		public static string texParentEmission = "RoR2/Base/Parent/texParentEmission.png";

		public static string texParentEyeMask = "RoR2/Base/Parent/texParentEyeMask.png";

		public static string texParentNormal = "RoR2/Base/Parent/texParentNormal.png";

		public static string RoboBallBossBody = "RoR2/Base/RoboBallBoss/RoboBallBossBody.png";

		public static string RoboBallMiniBody = "RoR2/Base/RoboBallBoss/RoboBallMiniBody.png";

		public static string SuperRoboBallBossBody = "RoR2/Base/RoboBallBoss/SuperRoboBallBossBody.png";

		public static string texBuffEngiShieldIcon = "RoR2/Base/RoboBallBoss/texBuffEngiShieldIcon.tif";

		public static string ScavBody = "RoR2/Base/Scav/ScavBody.png";

		public static string texScavBackpackDiffuse = "RoR2/Base/Scav/texScavBackpackDiffuse.png";

		public static string texScavBackpackNormal = "RoR2/Base/Scav/texScavBackpackNormal.png";

		public static string texScavDiffuse = "RoR2/Base/Scav/texScavDiffuse.png";

		public static string texScavEyeDiffuse = "RoR2/Base/Scav/texScavEyeDiffuse.png";

		public static string texScavEyeMask = "RoR2/Base/Scav/texScavEyeMask.png";

		public static string texScavEyeNormal = "RoR2/Base/Scav/texScavEyeNormal.png";

		public static string texScavLunarDiffuse = "RoR2/Base/Scav/texScavLunarDiffuse.png";

		public static string texScavNormal = "RoR2/Base/Scav/texScavNormal.png";

		public static string ScavLunarBody = "RoR2/Base/ScavLunar/ScavLunarBody.png";

		public static string ShopkeeperBody = "RoR2/Base/Shopkeeper/ShopkeeperBody.