Pyke.dll

Decompiled 8 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using EntityStates;
using EntityStates.Merc;
using KinematicCharacterController;
using On.RoR2;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Achievements;
using RoR2.Projectile;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;

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

public static class Achievements
{
	[RegisterAchievement("PYKE_SKIN01UNLOCKABLE", "ACHIEVEMENT_PYKE_SKIN01UNLOCKABLE_UNLOCKABLE_ID", null, null)]
	public class Skin01Unlockable : BaseAchievement
	{
		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("PykeBody");
		}

		public override void OnBodyRequirementMet()
		{
			((BaseAchievement)this).OnBodyRequirementMet();
			Run.onClientGameOverGlobal += OnClientGameOverGlobal;
		}

		public override void OnBodyRequirementBroken()
		{
			Run.onClientGameOverGlobal -= OnClientGameOverGlobal;
			((BaseAchievement)this).OnBodyRequirementBroken();
		}

		private void OnClientGameOverGlobal(Run run, RunReport runReport)
		{
			if (Object.op_Implicit((Object)(object)runReport.gameEnding) && runReport.gameEnding.isWin && ((BaseAchievement)this).meetsBodyRequirement)
			{
				((BaseAchievement)this).Grant();
			}
		}
	}

	[RegisterAchievement("PYKE_SKIN02UNLOCKABLE", "ACHIEVEMENT_PYKE_SKIN02UNLOCKABLE_UNLOCKABLE_ID", null, null)]
	public class Skin02Unlockable : BaseAchievement
	{
		private int progress;

		private bool waitingForKill;

		private float stopwatch;

		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("PykeBody");
		}

		public override void OnBodyRequirementMet()
		{
			((BaseAchievement)this).OnBodyRequirementMet();
			RoR2Application.onFixedUpdate += FixedUpdate;
			SpecialExecute.onExecute += SpecialExecute_onExecute;
		}

		public override void OnBodyRequirementBroken()
		{
			((BaseAchievement)this).OnBodyRequirementBroken();
			RoR2Application.onFixedUpdate -= FixedUpdate;
			SpecialExecute.onExecute -= SpecialExecute_onExecute;
		}

		private void SpecialExecute_onExecute(SpecialExecute obj)
		{
			waitingForKill = true;
			progress++;
			stopwatch = 0f;
		}

		private void FixedUpdate()
		{
			if (waitingForKill)
			{
				stopwatch += Time.fixedDeltaTime;
			}
			else
			{
				stopwatch = 0f;
			}
			if (stopwatch >= 6f)
			{
				stopwatch = 0f;
				progress = 0;
				waitingForKill = false;
			}
			if (progress >= 20)
			{
				((BaseAchievement)this).Grant();
			}
		}
	}

	[RegisterAchievement("PYKE_SKIN03UNLOCKABLE", "ACHIEVEMENT_PYKE_SKIN03UNLOCKABLE_UNLOCKABLE_ID", null, null)]
	public class Skin03Unlockable : BasePerSurvivorClearGameMonsoonAchievement
	{
		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("PykeBody");
		}
	}

	[RegisterAchievement("PYKE_SKIN04UNLOCKABLE", "ACHIEVEMENT_PYKE_SKIN04UNLOCKABLE_UNLOCKABLE_ID", null, null)]
	public class Skin04Unlockable : BaseAchievement
	{
		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("PykeBody");
		}

		public override void OnBodyRequirementMet()
		{
			((BaseAchievement)this).OnBodyRequirementMet();
			UtilityFire.onHit += UtilityFire_onHit;
		}

		private void UtilityFire_onHit(UtilityFire arg1, int count)
		{
			if (count >= 10)
			{
				((BaseAchievement)this).Grant();
			}
		}

		public override void OnBodyRequirementBroken()
		{
			UtilityFire.onHit -= UtilityFire_onHit;
			((BaseAchievement)this).OnBodyRequirementBroken();
		}
	}

	[RegisterAchievement("PYKE_SKIN05UNLOCKABLE", "ACHIEVEMENT_PYKE_SKIN05UNLOCKABLE_UNLOCKABLE_ID", null, null)]
	public class Skin05Unlockable : BaseAchievement
	{
		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("PykeBody");
		}

		public override void OnBodyRequirementMet()
		{
			((BaseAchievement)this).OnBodyRequirementMet();
			Run.onClientGameOverGlobal += OnClientGameOverGlobal;
		}

		public override void OnBodyRequirementBroken()
		{
			Run.onClientGameOverGlobal -= OnClientGameOverGlobal;
			((BaseAchievement)this).OnBodyRequirementBroken();
		}

		private void OnClientGameOverGlobal(Run run, RunReport runReport)
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Invalid comparison between Unknown and I4
			if (Object.op_Implicit((Object)(object)runReport.gameEnding) && runReport.gameEnding.isWin && ((BaseAchievement)this).meetsBodyRequirement)
			{
				DifficultyIndex val = runReport.ruleBook.FindDifficulty();
				if ((int)val == 1)
				{
					((BaseAchievement)this).Grant();
				}
			}
		}
	}

	[RegisterAchievement("PYKE_SKIN06UNLOCKABLE", "ACHIEVEMENT_PYKE_SKIN06UNLOCKABLE_UNLOCKABLE_ID", null, null)]
	public class Skin06Unlockable : BaseAchievement
	{
		public override BodyIndex LookUpRequiredBodyIndex()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			return BodyCatalog.FindBodyIndex("PykeBody");
		}

		public override void OnBodyRequirementMet()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			((BaseAchievement)this).OnBodyRequirementMet();
			HealthComponent.Suicide += new hook_Suicide(HealthComponent_Suicide);
		}

		private void HealthComponent_Suicide(orig_Suicide orig, HealthComponent self, GameObject killerOverride, GameObject inflictorOverride, DamageType damageType)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Invalid comparison between Unknown and I4
			orig.Invoke(self, killerOverride, inflictorOverride, damageType);
			if (Object.op_Implicit((Object)(object)self.body) && ((Object)self.body).name.Contains("BrotherHurt") && (int)damageType == 64 && ((BaseAchievement)this).meetsBodyRequirement)
			{
				((BaseAchievement)this).Grant();
			}
		}

		public override void OnBodyRequirementBroken()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			HealthComponent.Suicide -= new hook_Suicide(HealthComponent_Suicide);
			((BaseAchievement)this).OnBodyRequirementBroken();
		}
	}

	internal static UnlockableDef Skin01Unlock;

	internal static UnlockableDef Skin02Unlock;

	internal static UnlockableDef Skin03Unlock;

	internal static UnlockableDef Skin04Unlock;

	internal static UnlockableDef Skin05Unlock;

	internal static UnlockableDef Skin06Unlock;

	public static void RegisterUnlockables()
	{
		Skin01Unlock = NewUnlockable<Skin03Unlockable>("SKIN01UNLOCKABLE", Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin01"), "Pyke: Beginner", "As Pyke, the game or obliterate on any difficulty.");
		Skin02Unlock = NewUnlockable<Skin03Unlockable>("SKIN02UNLOCKABLE", Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin02"), "Pyke: Calculated Executioner", "As Pyke, execute 20 enemies in a row using Death From Below.");
		Skin03Unlock = NewUnlockable<Skin03Unlockable>("SKIN03UNLOCKABLE", Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin03"), "Pyke: Mastery", "As Pyke, beat the game or obliterate on Monsoon.");
		Skin04Unlock = NewUnlockable<Skin03Unlockable>("SKIN04UNLOCKABLE", Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin04"), "Pyke: Stunning Performance", "As Pyke, stun 10 enemies with one use of Phantom Undertow.");
		Skin05Unlock = NewUnlockable<Skin03Unlockable>("SKIN05UNLOCKABLE", Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin05"), "Pyke: Adept", "As Pyke, beat the game or obliterate on Rainstorm.");
		Skin06Unlock = NewUnlockable<Skin03Unlockable>("SKIN06UNLOCKABLE", Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin06"), "Pyke: GGEZ", "As Pyke, kill the final boss with Death From Below.");
	}

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

	public static void PopulateAssets()
	{
		if ((Object)(object)MainAssetBundle == (Object)null)
		{
			using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Pyke.pykeassets");
			MainAssetBundle = AssetBundle.LoadFromStream(stream);
		}
		using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Pyke.Pyke.bnk");
		byte[] array = new byte[stream2.Length];
		stream2.Read(array, 0, array.Length);
		SoundBanks.Add(array);
	}
}
internal class ExecuteIndicatorBehaviour : MonoBehaviour
{
	private HealthComponent health;

	private GameObject indicator;

	private CharacterBody attacker;

	private Transform modelTransform;

	private bool isExecutable()
	{
		bool result = false;
		if (Object.op_Implicit((Object)(object)health) && Object.op_Implicit((Object)(object)attacker) && health.health <= attacker.damage * 4f + health.fullHealth * (SpecialExecute.executeThreshhold + attacker.crit / 100f))
		{
			result = true;
		}
		return result;
	}

	public void SetCharacterBody(CharacterBody body)
	{
		if (Object.op_Implicit((Object)(object)body))
		{
			attacker = body;
		}
	}

	private void OnEnable()
	{
		CharacterBody component = ((Component)this).GetComponent<CharacterBody>();
		if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.healthComponent))
		{
			health = component.healthComponent;
			ModelLocator component2 = ((Component)this).GetComponent<ModelLocator>();
			if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component2.modelTransform))
			{
				modelTransform = component2.modelTransform;
			}
		}
	}

	private void Update()
	{
		if (!Object.op_Implicit((Object)(object)indicator) && isExecutable() && Object.op_Implicit((Object)(object)modelTransform))
		{
			indicator = Object.Instantiate<GameObject>(Prefabs.specialExecuteIndicator, ((Component)health.body.mainHurtBox).transform);
		}
		if (!isExecutable() && Object.op_Implicit((Object)(object)indicator))
		{
			Object.Destroy((Object)(object)indicator);
		}
		if (Object.op_Implicit((Object)(object)health) && !health.alive && Object.op_Implicit((Object)(object)indicator))
		{
			Object.Destroy((Object)(object)indicator);
		}
	}

	private void OnDisable()
	{
		if (Object.op_Implicit((Object)(object)indicator))
		{
			Object.Destroy((Object)(object)indicator);
		}
	}
}
internal class Blank : MonoBehaviour
{
}
internal class CharacterMain : GenericCharacterMain
{
	private Animator animator;

	private BullseyeSearch targetFinder = new BullseyeSearch();

	private Ray aimRay;

	internal static int skinIndex;

	private GameObject trail;

	private bool gotPassive;

	private float stopwatch;

	private TemporaryOverlay overlay;

	public override void OnEnter()
	{
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		((GenericCharacterMain)this).OnEnter();
		if (!Object.op_Implicit((Object)(object)trail))
		{
			trail = Object.Instantiate<GameObject>(Prefabs.pykeEyeTrail, ((EntityState)this).GetModelChildLocator().FindChild("EyeMuzzle"));
		}
		animator = ((EntityState)this).GetModelAnimator();
		aimRay = ((BaseState)this).GetAimRay();
		Transform modelTransform = ((EntityState)this).GetModelTransform();
		if (!Object.op_Implicit((Object)(object)modelTransform))
		{
			return;
		}
		CharacterModel component = ((Component)modelTransform).GetComponent<CharacterModel>();
		if (!Object.op_Implicit((Object)(object)component))
		{
			return;
		}
		ModelSkinController component2 = ((Component)component).GetComponent<ModelSkinController>();
		if (Object.op_Implicit((Object)(object)component2))
		{
			if (component2.skins[((EntityState)this).characterBody.skinIndex].nameToken == "PYKEBODY_DEFAULT_SKIN_NAME")
			{
				skinIndex = 0;
			}
			if (component2.skins[((EntityState)this).characterBody.skinIndex].nameToken == "PYKEBODY_SKIN03_SKIN_NAME")
			{
				skinIndex = 1;
			}
			if (component2.skins[((EntityState)this).characterBody.skinIndex].nameToken == "PYKEBODY_SKIN06_SKIN_NAME")
			{
				skinIndex = 2;
			}
		}
	}

	public override void FixedUpdate()
	{
		//IL_0114: Unknown result type (might be due to invalid IL or missing references)
		//IL_011a: Expected O, but got Unknown
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0132: Unknown result type (might be due to invalid IL or missing references)
		//IL_0137: Unknown result type (might be due to invalid IL or missing references)
		//IL_0149: Unknown result type (might be due to invalid IL or missing references)
		//IL_014e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_015a: Unknown result type (might be due to invalid IL or missing references)
		((GenericCharacterMain)this).FixedUpdate();
		if (!Object.op_Implicit((Object)(object)overlay) && ((EntityState)this).characterBody.hasCloakBuff)
		{
			overlay = ((Component)((EntityState)this).GetModelTransform()).gameObject.AddComponent<TemporaryOverlay>();
			overlay.duration = 3f;
			overlay.animateShaderAlpha = true;
			overlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
			overlay.destroyComponentOnEnd = true;
			overlay.originalMaterial = Assets.MainAssetBundle.LoadAsset<Material>("cloakMat");
			overlay.AddToCharacerModel(((Component)((EntityState)this).GetModelTransform()).GetComponent<CharacterModel>());
			((EntityState)this).PlayAnimation("FullBody, Override", "Spell2Enter");
		}
		animator.SetBool("Cloaked", ((EntityState)this).characterBody.hasCloakBuff);
		if (!Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) || !((EntityState)this).skillLocator.special.IsReady())
		{
			return;
		}
		BullseyeSearch val = new BullseyeSearch();
		val.searchOrigin = ((EntityState)this).characterBody.corePosition;
		val.searchDirection = ((Ray)(ref aimRay)).direction;
		val.maxDistanceFilter = 120f;
		val.teamMaskFilter = TeamMask.GetUnprotectedTeams(((BaseState)this).GetTeam());
		val.sortMode = (SortMode)1;
		val.RefreshCandidates();
		val.FilterOutGameObject(((EntityState)this).gameObject);
		List<HurtBox> list = val.GetResults().ToList();
		for (int i = 0; i < list.Count; i++)
		{
			GameObject gameObject = ((Component)list[i].healthComponent).gameObject;
			if (Object.op_Implicit((Object)(object)gameObject))
			{
				ExecuteIndicatorBehaviour component = gameObject.GetComponent<ExecuteIndicatorBehaviour>();
				if (!Object.op_Implicit((Object)(object)component))
				{
					gameObject.AddComponent<ExecuteIndicatorBehaviour>().SetCharacterBody(((EntityState)this).characterBody);
				}
			}
		}
	}
}
internal class Hook
{
	internal static void Hooks()
	{
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Expected O, but got Unknown
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Expected O, but got Unknown
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Expected O, but got Unknown
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Expected O, but got Unknown
		RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
		HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage);
		DotController.AddDot += new hook_AddDot(DotController_AddDot);
		CharacterBody.RecalculateStats += new hook_RecalculateStats(CharacterBody_RecalculateStats);
	}

	private static void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self)
	{
		orig.Invoke(self);
		if (Object.op_Implicit((Object)(object)((Component)self).GetComponent<Blank>()))
		{
			if (NetworkServer.active)
			{
				self.healthComponent.Networkhealth = Math.Max(self.healthComponent.Networkhealth, 1f);
			}
			self.healthComponent.health = Math.Max(self.healthComponent.health, 1f);
		}
	}

	private static void DotController_AddDot(orig_AddDot orig, DotController self, GameObject attackerObject, float duration, DotIndex dotIndex, float damageMultiplier, uint? maxStacksFromAttacker, float? totalDamage, DotIndex? preUpgradeDotIndex)
	{
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		orig.Invoke(self, attackerObject, duration, dotIndex, damageMultiplier, maxStacksFromAttacker, totalDamage, preUpgradeDotIndex);
		if (!Object.op_Implicit((Object)(object)attackerObject) || !((Object)attackerObject).name.Contains("Pyke"))
		{
			return;
		}
		for (int i = 0; i < self.dotStackList.Count; i++)
		{
			if (self.dotStackList[i] != null)
			{
				self.dotStackList[i].damageType = (DamageType)1;
			}
		}
	}

	private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
	{
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//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_00bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		orig.Invoke(self, damageInfo);
		if (!Object.op_Implicit((Object)(object)damageInfo.attacker) || !DamageAPI.HasModdedDamageType(damageInfo, Prefabs.pykeHook) || !NetworkServer.active)
		{
			return;
		}
		EffectManager.SimpleEffect(Prefabs.pykeImpactEffect1, damageInfo.position, Quaternion.identity, true);
		if (Object.op_Implicit((Object)(object)self.body))
		{
			float num = 0f;
			RigidbodyMotor component = ((Component)self.body).GetComponent<RigidbodyMotor>();
			if (Object.op_Implicit((Object)(object)self.body.characterMotor))
			{
				num = self.body.characterMotor.mass;
			}
			else if (Object.op_Implicit((Object)(object)component))
			{
				num = component.mass;
			}
			Vector3 val = damageInfo.attacker.transform.position - ((Component)self).transform.position;
			self.TakeDamageForce(((Vector3)(ref val)).normalized * 40f * num, true, false);
		}
	}

	internal static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody body, StatHookEventArgs args)
	{
		if (Object.op_Implicit((Object)(object)((Component)body).GetComponent<Blank>()) && Object.op_Implicit((Object)(object)body.inventory))
		{
			float num = 0.2f;
			float num2 = 0.5f;
			float num3 = 1f;
			int itemCount = body.inventory.GetItemCount(Items.FlatHealth);
			int itemCount2 = body.inventory.GetItemCount(Items.Pearl);
			int itemCount3 = body.inventory.GetItemCount(Items.Knurl);
			bool flag = body.HasBuff(Buffs.TonicBuff);
			args.baseHealthAdd -= (float)body.inventory.infusionBonus;
			args.baseDamageAdd += (float)body.inventory.infusionBonus * num2;
			if (body.hasCloakBuff)
			{
				args.regenMultAdd += 3f;
			}
			if (itemCount > 0)
			{
				args.baseHealthAdd -= (float)(25 * itemCount);
				args.baseDamageAdd += 25f * ((float)itemCount * num);
			}
			if (itemCount2 > 0)
			{
				args.healthMultAdd -= 0.1f * (float)itemCount2;
				args.damageMultAdd += 0.1f * ((float)itemCount2 * num3);
			}
			if (itemCount3 > 0)
			{
				args.baseHealthAdd -= (float)(40 * itemCount3);
				args.baseDamageAdd += 40f * ((float)itemCount3 * num);
			}
			if (flag)
			{
				args.healthMultAdd -= 0.5f;
				args.damageMultAdd += 0.5f * num;
			}
		}
	}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.Dragonyck.Pyke", "Pyke", "1.0.5")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
public class MainPlugin : BaseUnityPlugin
{
	public const string MODUID = "com.Dragonyck.Pyke";

	public const string MODNAME = "Pyke";

	public const string VERSION = "1.0.5";

	public const string SURVIVORNAME = "Pyke";

	public const string SURVIVORNAMEKEY = "PYKE";

	public static GameObject characterPrefab;

	public GameObject characterDisplay;

	public GameObject doppelganger;

	private static readonly Color characterColor = new Color(0.16471f, 0.28627f, 0.2549f);

	private void Awake()
	{
		Assets.PopulateAssets();
		Achievements.RegisterUnlockables();
		Prefabs.CreatePrefabs();
		CreatePrefab();
		RegisterStates();
		RegisterCharacter();
		CreateDoppelganger();
		Hook.Hooks();
		((MonoBehaviour)this).InvokeRepeating("MatOffset", 1f, 0.01f);
	}

	private void MatOffset()
	{
		//IL_003f: 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_0089: Unknown result type (might be due to invalid IL or missing references)
		float num = Time.time * -2.5f;
		float num2 = Time.time * -1.5f;
		float num3 = Time.time * -2f;
		Assets.MainAssetBundle.LoadAsset<Material>("matEWaterLine").SetTextureOffset("_MainTex", new Vector2(num, 0f));
		Assets.MainAssetBundle.LoadAsset<Material>("matEWaterLine2").SetTextureOffset("_MainTex", new Vector2(num, 0f));
		Assets.MainAssetBundle.LoadAsset<Material>("matEWaterLine3").SetTextureOffset("_MainTex", new Vector2(num, 0f));
	}

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

	internal static void CreatePrefab()
	{
		//IL_0047: Unknown result type (might be due to invalid IL or missing references)
		//IL_004d: Expected O, but got Unknown
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bf: Expected O, but got Unknown
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0108: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: Unknown result type (might be due to invalid IL or missing references)
		//IL_0143: Unknown result type (might be due to invalid IL or missing references)
		//IL_014f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0168: Unknown result type (might be due to invalid IL or missing references)
		//IL_016d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0316: Unknown result type (might be due to invalid IL or missing references)
		//IL_0358: Unknown result type (might be due to invalid IL or missing references)
		//IL_035d: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0401: Unknown result type (might be due to invalid IL or missing references)
		//IL_0486: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_04bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0504: Unknown result type (might be due to invalid IL or missing references)
		//IL_0511: Unknown result type (might be due to invalid IL or missing references)
		//IL_0513: Unknown result type (might be due to invalid IL or missing references)
		//IL_051c: Unknown result type (might be due to invalid IL or missing references)
		//IL_055a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0567: Unknown result type (might be due to invalid IL or missing references)
		//IL_0569: Unknown result type (might be due to invalid IL or missing references)
		//IL_0572: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_05bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_05bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0606: Unknown result type (might be due to invalid IL or missing references)
		//IL_0613: Unknown result type (might be due to invalid IL or missing references)
		//IL_0615: Unknown result type (might be due to invalid IL or missing references)
		//IL_061e: Unknown result type (might be due to invalid IL or missing references)
		//IL_065c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0669: Unknown result type (might be due to invalid IL or missing references)
		//IL_066b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0674: Unknown result type (might be due to invalid IL or missing references)
		//IL_06b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_06c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_06ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_0708: Unknown result type (might be due to invalid IL or missing references)
		//IL_0715: Unknown result type (might be due to invalid IL or missing references)
		//IL_0717: Unknown result type (might be due to invalid IL or missing references)
		//IL_0720: Unknown result type (might be due to invalid IL or missing references)
		//IL_075e: Unknown result type (might be due to invalid IL or missing references)
		//IL_076b: Unknown result type (might be due to invalid IL or missing references)
		//IL_076d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0777: Unknown result type (might be due to invalid IL or missing references)
		//IL_07b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_07c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_07c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_07ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_080c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0819: Unknown result type (might be due to invalid IL or missing references)
		//IL_081b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0825: Unknown result type (might be due to invalid IL or missing references)
		//IL_0863: Unknown result type (might be due to invalid IL or missing references)
		//IL_0870: Unknown result type (might be due to invalid IL or missing references)
		//IL_0872: Unknown result type (might be due to invalid IL or missing references)
		//IL_087c: Unknown result type (might be due to invalid IL or missing references)
		//IL_08ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_08c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_08c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_08d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0911: Unknown result type (might be due to invalid IL or missing references)
		//IL_091e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0920: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a4a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a83: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aa9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0aab: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ab4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ada: Unknown result type (might be due to invalid IL or missing references)
		//IL_0adc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ae5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b0b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b0d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b16: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b3c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b3e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b47: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b6d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b6f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b78: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b9e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ba0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ba9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bcf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bd1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bda: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c00: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c02: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c0b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c31: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c33: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c3d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c63: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c65: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c6f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c95: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c97: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ca1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cc7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cc9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cd3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cf9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cfb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d05: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d2b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d2d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0d9a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0db9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dd7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0def: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e0d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e25: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e43: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e5b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e79: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e91: Unknown result type (might be due to invalid IL or missing references)
		//IL_0eaf: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ec7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ee5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0efd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f1b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fa5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fb0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0fe9: Unknown result type (might be due to invalid IL or missing references)
		//IL_100f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1011: Unknown result type (might be due to invalid IL or missing references)
		//IL_101a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1040: Unknown result type (might be due to invalid IL or missing references)
		//IL_1042: Unknown result type (might be due to invalid IL or missing references)
		//IL_104b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1071: Unknown result type (might be due to invalid IL or missing references)
		//IL_1073: Unknown result type (might be due to invalid IL or missing references)
		//IL_107c: Unknown result type (might be due to invalid IL or missing references)
		//IL_10a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_10a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_10ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_10d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_10d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_10de: Unknown result type (might be due to invalid IL or missing references)
		//IL_1104: Unknown result type (might be due to invalid IL or missing references)
		//IL_1106: Unknown result type (might be due to invalid IL or missing references)
		//IL_110f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1135: Unknown result type (might be due to invalid IL or missing references)
		//IL_1137: Unknown result type (might be due to invalid IL or missing references)
		//IL_1140: Unknown result type (might be due to invalid IL or missing references)
		//IL_1166: Unknown result type (might be due to invalid IL or missing references)
		//IL_1168: Unknown result type (might be due to invalid IL or missing references)
		//IL_1171: Unknown result type (might be due to invalid IL or missing references)
		//IL_1197: Unknown result type (might be due to invalid IL or missing references)
		//IL_1199: Unknown result type (might be due to invalid IL or missing references)
		//IL_11a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_11c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_11cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_11d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_11fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_11fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_1207: Unknown result type (might be due to invalid IL or missing references)
		//IL_122d: Unknown result type (might be due to invalid IL or missing references)
		//IL_122f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1239: Unknown result type (might be due to invalid IL or missing references)
		//IL_125f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1261: Unknown result type (might be due to invalid IL or missing references)
		//IL_126b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1291: Unknown result type (might be due to invalid IL or missing references)
		//IL_1293: Unknown result type (might be due to invalid IL or missing references)
		//IL_12f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_1303: Unknown result type (might be due to invalid IL or missing references)
		//IL_133c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1362: Unknown result type (might be due to invalid IL or missing references)
		//IL_1364: Unknown result type (might be due to invalid IL or missing references)
		//IL_136d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1393: Unknown result type (might be due to invalid IL or missing references)
		//IL_1395: Unknown result type (might be due to invalid IL or missing references)
		//IL_139e: Unknown result type (might be due to invalid IL or missing references)
		//IL_13c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_13c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_13cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_13f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_13f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_1400: Unknown result type (might be due to invalid IL or missing references)
		//IL_1426: Unknown result type (might be due to invalid IL or missing references)
		//IL_1428: Unknown result type (might be due to invalid IL or missing references)
		//IL_1431: Unknown result type (might be due to invalid IL or missing references)
		//IL_1457: Unknown result type (might be due to invalid IL or missing references)
		//IL_1459: Unknown result type (might be due to invalid IL or missing references)
		//IL_1462: Unknown result type (might be due to invalid IL or missing references)
		//IL_1488: Unknown result type (might be due to invalid IL or missing references)
		//IL_148a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1493: Unknown result type (might be due to invalid IL or missing references)
		//IL_14b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_14bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_14c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_14ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_14ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_14f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_151c: Unknown result type (might be due to invalid IL or missing references)
		//IL_151e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1528: Unknown result type (might be due to invalid IL or missing references)
		//IL_154e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1550: Unknown result type (might be due to invalid IL or missing references)
		//IL_155a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1580: Unknown result type (might be due to invalid IL or missing references)
		//IL_1582: Unknown result type (might be due to invalid IL or missing references)
		//IL_158c: Unknown result type (might be due to invalid IL or missing references)
		//IL_15b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_15b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_15be: Unknown result type (might be due to invalid IL or missing references)
		//IL_15e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_15e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_164b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1656: Unknown result type (might be due to invalid IL or missing references)
		//IL_168f: Unknown result type (might be due to invalid IL or missing references)
		//IL_16b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_16b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_16c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_16e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_16e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_16f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_1717: Unknown result type (might be due to invalid IL or missing references)
		//IL_1719: Unknown result type (might be due to invalid IL or missing references)
		//IL_1722: Unknown result type (might be due to invalid IL or missing references)
		//IL_1748: Unknown result type (might be due to invalid IL or missing references)
		//IL_174a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1753: Unknown result type (might be due to invalid IL or missing references)
		//IL_1779: Unknown result type (might be due to invalid IL or missing references)
		//IL_177b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1784: Unknown result type (might be due to invalid IL or missing references)
		//IL_17aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_17ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_17b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_17db: Unknown result type (might be due to invalid IL or missing references)
		//IL_17dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_17e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_180c: Unknown result type (might be due to invalid IL or missing references)
		//IL_180e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1817: Unknown result type (might be due to invalid IL or missing references)
		//IL_183d: Unknown result type (might be due to invalid IL or missing references)
		//IL_183f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1849: Unknown result type (might be due to invalid IL or missing references)
		//IL_186f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1871: Unknown result type (might be due to invalid IL or missing references)
		//IL_187b: Unknown result type (might be due to invalid IL or missing references)
		//IL_18a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_18a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_18ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_18d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_18d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_18df: Unknown result type (might be due to invalid IL or missing references)
		//IL_1905: Unknown result type (might be due to invalid IL or missing references)
		//IL_1907: Unknown result type (might be due to invalid IL or missing references)
		//IL_1911: Unknown result type (might be due to invalid IL or missing references)
		//IL_1937: Unknown result type (might be due to invalid IL or missing references)
		//IL_1939: Unknown result type (might be due to invalid IL or missing references)
		//IL_199e: Unknown result type (might be due to invalid IL or missing references)
		//IL_19a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_19e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a08: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a0a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a13: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a39: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a3b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a44: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a6a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a6c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a75: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a9b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1a9d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1aa6: Unknown result type (might be due to invalid IL or missing references)
		//IL_1acc: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ace: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ad7: Unknown result type (might be due to invalid IL or missing references)
		//IL_1afd: Unknown result type (might be due to invalid IL or missing references)
		//IL_1aff: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b08: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b2e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b30: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b39: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b5f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b61: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b6a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b90: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b92: Unknown result type (might be due to invalid IL or missing references)
		//IL_1b9c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1bc2: Unknown result type (might be due to invalid IL or missing references)
		//IL_1bc4: Unknown result type (might be due to invalid IL or missing references)
		//IL_1bce: Unknown result type (might be due to invalid IL or missing references)
		//IL_1bf4: Unknown result type (might be due to invalid IL or missing references)
		//IL_1bf6: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c00: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c26: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c28: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c32: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c58: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c5a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c64: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c8a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1c8c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1cf1: Unknown result type (might be due to invalid IL or missing references)
		//IL_1cfc: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d35: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d5b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d5d: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d66: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d8c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d8e: Unknown result type (might be due to invalid IL or missing references)
		//IL_1d97: Unknown result type (might be due to invalid IL or missing references)
		//IL_1dbd: Unknown result type (might be due to invalid IL or missing references)
		//IL_1dbf: Unknown result type (might be due to invalid IL or missing references)
		//IL_1dc8: Unknown result type (might be due to invalid IL or missing references)
		//IL_1dee: Unknown result type (might be due to invalid IL or missing references)
		//IL_1df0: Unknown result type (might be due to invalid IL or missing references)
		//IL_1df9: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e1f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e21: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e2a: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e50: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e52: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e5b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e81: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e83: Unknown result type (might be due to invalid IL or missing references)
		//IL_1e8c: Unknown result type (might be due to invalid IL or missing references)
		//IL_1eb2: Unknown result type (might be due to invalid IL or missing references)
		//IL_1eb4: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ebd: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ee3: Unknown result type (might be due to invalid IL or missing references)
		//IL_1ee5: Unknown result type (might be due to invalid IL or missing references)
		//IL_1eef: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f15: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f17: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f21: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f47: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f49: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f53: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f79: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f7b: Unknown result type (might be due to invalid IL or missing references)
		//IL_1f85: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fab: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fad: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fb7: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fdd: Unknown result type (might be due to invalid IL or missing references)
		//IL_1fdf: Unknown result type (might be due to invalid IL or missing references)
		//IL_2044: Unknown result type (might be due to invalid IL or missing references)
		//IL_204f: Unknown result type (might be due to invalid IL or missing references)
		//IL_2088: Unknown result type (might be due to invalid IL or missing references)
		//IL_20ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_20b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_20b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_20df: Unknown result type (might be due to invalid IL or missing references)
		//IL_20e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_20ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_2110: Unknown result type (might be due to invalid IL or missing references)
		//IL_2112: Unknown result type (might be due to invalid IL or missing references)
		//IL_211b: Unknown result type (might be due to invalid IL or missing references)
		//IL_2141: Unknown result type (might be due to invalid IL or missing references)
		//IL_2143: Unknown result type (might be due to invalid IL or missing references)
		//IL_214c: Unknown result type (might be due to invalid IL or missing references)
		//IL_2172: Unknown result type (might be due to invalid IL or missing references)
		//IL_2174: Unknown result type (might be due to invalid IL or missing references)
		//IL_217d: Unknown result type (might be due to invalid IL or missing references)
		//IL_21a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_21a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_21ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_21d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_21d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_21df: Unknown result type (might be due to invalid IL or missing references)
		//IL_2205: Unknown result type (might be due to invalid IL or missing references)
		//IL_2207: Unknown result type (might be due to invalid IL or missing references)
		//IL_2210: Unknown result type (might be due to invalid IL or missing references)
		//IL_2236: Unknown result type (might be due to invalid IL or missing references)
		//IL_2238: Unknown result type (might be due to invalid IL or missing references)
		//IL_2242: Unknown result type (might be due to invalid IL or missing references)
		//IL_2268: Unknown result type (might be due to invalid IL or missing references)
		//IL_226a: Unknown result type (might be due to invalid IL or missing references)
		//IL_2274: Unknown result type (might be due to invalid IL or missing references)
		//IL_229a: Unknown result type (might be due to invalid IL or missing references)
		//IL_229c: Unknown result type (might be due to invalid IL or missing references)
		//IL_22a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_22cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_22ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_22d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_22fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_2300: Unknown result type (might be due to invalid IL or missing references)
		//IL_230a: Unknown result type (might be due to invalid IL or missing references)
		//IL_2330: Unknown result type (might be due to invalid IL or missing references)
		//IL_2332: Unknown result type (might be due to invalid IL or missing references)
		//IL_2397: Unknown result type (might be due to invalid IL or missing references)
		//IL_25f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_2607: Unknown result type (might be due to invalid IL or missing references)
		//IL_260c: Unknown result type (might be due to invalid IL or missing references)
		//IL_2614: Unknown result type (might be due to invalid IL or missing references)
		//IL_2676: Unknown result type (might be due to invalid IL or missing references)
		//IL_26cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_26eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_26f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_2720: Unknown result type (might be due to invalid IL or missing references)
		//IL_27e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_27ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_281a: Unknown result type (might be due to invalid IL or missing references)
		//IL_281f: Unknown result type (might be due to invalid IL or missing references)
		//IL_2848: Unknown result type (might be due to invalid IL or missing references)
		//IL_284d: Unknown result type (might be due to invalid IL or missing references)
		//IL_285e: Unknown result type (might be due to invalid IL or missing references)
		//IL_2863: Unknown result type (might be due to invalid IL or missing references)
		//IL_288c: Unknown result type (might be due to invalid IL or missing references)
		//IL_2891: Unknown result type (might be due to invalid IL or missing references)
		//IL_28a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_28a7: Unknown result type (might be due to invalid IL or missing references)
		characterPrefab = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody"), "PykeBody", true);
		characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true;
		characterPrefab.AddComponent<Blank>();
		GameObject val = CreateModel(characterPrefab);
		GameObject val2 = new GameObject("ModelBase");
		val2.transform.parent = characterPrefab.transform;
		val2.transform.localPosition = new Vector3(0f, -0.94f, 0f);
		val2.transform.localRotation = Quaternion.identity;
		val2.transform.localScale = new Vector3(1f, 1f, 1f);
		GameObject val3 = new GameObject("AimOrigin");
		val3.transform.parent = val2.transform;
		val3.transform.localPosition = new Vector3(0f, 2f, 0f);
		val3.transform.localRotation = Quaternion.identity;
		val3.transform.localScale = Vector3.one;
		Transform transform = val.transform;
		transform.parent = val2.transform;
		transform.localPosition = Vector3.zero;
		transform.localScale = new Vector3(1f, 1f, 1f);
		transform.localRotation = Quaternion.identity;
		CharacterDirection component = characterPrefab.GetComponent<CharacterDirection>();
		component.moveVector = Vector3.zero;
		component.targetTransform = val2.transform;
		component.overrideAnimatorForwardTransform = null;
		component.rootMotionAccumulator = null;
		component.modelAnimator = val.GetComponentInChildren<Animator>();
		component.driveFromRootRotation = false;
		component.turnSpeed = 720f;
		CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>();
		((Object)component2).name = "PykeBody";
		component2.baseNameToken = "PYKE_NAME";
		component2.subtitleNameToken = "PYKE_SUBTITLE";
		component2.bodyFlags = (BodyFlags)16;
		component2.rootMotionInMainState = false;
		component2.mainRootSpeed = 0f;
		component2.baseMaxHealth = 130f;
		component2.levelMaxHealth = 45f;
		component2.baseRegen = 1f;
		component2.levelRegen = 0.33f;
		component2.baseMaxShield = 0f;
		component2.levelMaxShield = 0f;
		component2.baseMoveSpeed = 7f;
		component2.levelMoveSpeed = 0f;
		component2.baseAcceleration = 110f;
		component2.baseJumpPower = 15f;
		component2.levelJumpPower = 0f;
		component2.baseDamage = 12f;
		component2.levelDamage = 2.4f;
		component2.baseAttackSpeed = 1f;
		component2.levelAttackSpeed = 0f;
		component2.baseCrit = 1f;
		component2.levelCrit = 0f;
		component2.baseArmor = 30f;
		component2.levelArmor = 0f;
		component2.baseJumpCount = 2;
		component2.sprintingSpeedMultiplier = 1.45f;
		component2.wasLucky = false;
		component2.hideCrosshair = false;
		component2.aimOriginTransform = val3.transform;
		component2.hullClassification = (HullClassification)0;
		component2.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait").texture;
		component2.isChampion = false;
		component2.currentVehicle = null;
		component2.skinIndex = 0u;
		component2.preferredPodPrefab = null;
		component2.bodyColor = characterColor;
		CharacterMotor component3 = characterPrefab.GetComponent<CharacterMotor>();
		component3.walkSpeedPenaltyCoefficient = 1f;
		component3.characterDirection = component;
		component3.muteWalkMotion = false;
		component3.mass = 80f;
		component3.airControl = 0.25f;
		component3.disableAirControlUntilCollision = false;
		component3.generateParametersOnAwake = true;
		InputBankTest component4 = characterPrefab.GetComponent<InputBankTest>();
		component4.moveVector = Vector3.zero;
		CameraTargetParams component5 = characterPrefab.GetComponent<CameraTargetParams>();
		component5.cameraParams = LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponent<CameraTargetParams>().cameraParams;
		component5.cameraPivotTransform = null;
		component5.recoil = Vector2.zero;
		component5.dontRaycastToPivot = false;
		ModelLocator component6 = characterPrefab.GetComponent<ModelLocator>();
		component6.modelTransform = transform;
		component6.modelBaseTransform = val2.transform;
		component6.dontReleaseModelOnDeath = false;
		component6.autoUpdateModelTransform = true;
		component6.dontDetatchFromParent = false;
		component6.noCorpse = false;
		component6.normalizeToFloor = false;
		component6.preserveModel = false;
		ChildLocator component7 = val.GetComponent<ChildLocator>();
		CharacterModel val4 = val.AddComponent<CharacterModel>();
		val4.body = component2;
		val4.baseRendererInfos = (RendererInfo[])(object)new RendererInfo[14]
		{
			new RendererInfo
			{
				defaultMaterial = ((Renderer)val.GetComponentInChildren<SkinnedMeshRenderer>()).material,
				renderer = (Renderer)(object)val.GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("BaseBlade")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("BaseBlade")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin01")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin01")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin01Blade")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin01Blade")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin02")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin02")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin02Blade")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin02Blade")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin03")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin03")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin03Blade")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin03Blade")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin04")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin04")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin04Blade")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin04Blade")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin05")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin05")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin05Blade")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin05Blade")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin06")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin06")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			},
			new RendererInfo
			{
				renderer = (Renderer)(object)((Component)component7.FindChild("Skin06Blade")).GetComponentInChildren<SkinnedMeshRenderer>(),
				defaultMaterial = ((Renderer)((Component)component7.FindChild("Skin06Blade")).GetComponentInChildren<SkinnedMeshRenderer>()).material,
				defaultShadowCastingMode = (ShadowCastingMode)1,
				ignoreOverlays = false
			}
		};
		val4.autoPopulateLightInfos = true;
		val4.invisibilityCount = 0;
		val4.temporaryOverlays = new List<TemporaryOverlay>();
		Reflection.SetFieldValue<SkinnedMeshRenderer>((object)val4, "mainSkinnedMeshRenderer", ((Component)val4.baseRendererInfos[0].renderer).gameObject.GetComponent<SkinnedMeshRenderer>());
		GameObject gameObject = ((Component)characterPrefab.GetComponentInChildren<ModelLocator>().modelTransform).gameObject;
		CharacterModel component8 = gameObject.GetComponent<CharacterModel>();
		ModelSkinController val5 = gameObject.AddComponent<ModelSkinController>();
		ChildLocator component9 = gameObject.GetComponent<ChildLocator>();
		SkinnedMeshRenderer fieldValue = Reflection.GetFieldValue<SkinnedMeshRenderer>((object)component8, "mainSkinnedMeshRenderer");
		LanguageAPI.Add("PYKEBODY_DEFAULT_SKIN_NAME", "Default");
		LanguageAPI.Add("PYKEBODY_SKIN01_SKIN_NAME", "Sand Wraith");
		LanguageAPI.Add("PYKEBODY_SKIN02_SKIN_NAME", "Blood Moon");
		LanguageAPI.Add("PYKEBODY_SKIN03_SKIN_NAME", "PROJECT");
		LanguageAPI.Add("PYKEBODY_SKIN04_SKIN_NAME", "PsyOps");
		LanguageAPI.Add("PYKEBODY_SKIN05_SKIN_NAME", "Sentinel");
		LanguageAPI.Add("PYKEBODY_SKIN06_SKIN_NAME", "Ashen Knight");
		UnlockableDef skin01Unlock = Achievements.Skin01Unlock;
		UnlockableDef skin02Unlock = Achievements.Skin02Unlock;
		UnlockableDef skin03Unlock = Achievements.Skin03Unlock;
		UnlockableDef skin04Unlock = Achievements.Skin04Unlock;
		UnlockableDef skin05Unlock = Achievements.Skin05Unlock;
		UnlockableDef skin06Unlock = Achievements.Skin06Unlock;
		SkinDefInfo val6 = default(SkinDefInfo);
		val6.BaseSkins = Array.Empty<SkinDef>();
		val6.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val6.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val6.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[14]
		{
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Base")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("BaseBlade")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06Blade")).gameObject,
				shouldActivate = false
			}
		};
		val6.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin");
		RendererInfo[] baseRendererInfos = val4.baseRendererInfos;
		val6.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val6.Name = "PYKEBODY_DEFAULT_SKIN_NAME";
		val6.NameToken = "PYKEBODY_DEFAULT_SKIN_NAME";
		val6.RendererInfos = component8.baseRendererInfos;
		val6.RootObject = gameObject;
		val6.UnlockableDef = null;
		RendererInfo[] rendererInfos = val6.RendererInfos;
		RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[rendererInfos.Length];
		rendererInfos.CopyTo(array, 0);
		Material defaultMaterial = Utils.InstantiateMaterial(Color.white, Assets.MainAssetBundle.LoadAsset<Material>("base").GetTexture("_MainTex"), Color.black, 0f, null, 1f, null);
		Material defaultMaterial2 = Utils.InstantiateMaterial(Color.white, Assets.MainAssetBundle.LoadAsset<Material>("skin01").GetTexture("_MainTex"), Color.black, 0f, null, 1f, null);
		Material defaultMaterial3 = Utils.InstantiateMaterial(Color.white, Assets.MainAssetBundle.LoadAsset<Material>("skin02").GetTexture("_MainTex"), Color.black, 0f, null, 1f, null);
		Material defaultMaterial4 = Utils.InstantiateMaterial(Color.white, Assets.MainAssetBundle.LoadAsset<Material>("skin03").GetTexture("_MainTex"), Color.black, 0f, null, 1f, null);
		Material defaultMaterial5 = Utils.InstantiateMaterial(Color.white, Assets.MainAssetBundle.LoadAsset<Material>("skin04").GetTexture("_MainTex"), Color.black, 0f, null, 1f, null);
		Material defaultMaterial6 = Utils.InstantiateMaterial(Color.white, Assets.MainAssetBundle.LoadAsset<Material>("skin05").GetTexture("_MainTex"), Color.black, 0f, null, 1f, null);
		Material defaultMaterial7 = Utils.InstantiateMaterial(Color.white, Assets.MainAssetBundle.LoadAsset<Material>("skin06").GetTexture("_MainTex"), Color.black, 0f, null, 1f, null);
		array[0].defaultMaterial = defaultMaterial;
		array[1].defaultMaterial = defaultMaterial2;
		array[2].defaultMaterial = defaultMaterial3;
		array[3].defaultMaterial = defaultMaterial4;
		array[4].defaultMaterial = defaultMaterial5;
		array[5].defaultMaterial = defaultMaterial6;
		array[6].defaultMaterial = defaultMaterial7;
		val6.RendererInfos = array;
		SkinDef val7 = LoadoutAPI.CreateNewSkinDef(val6);
		SkinDefInfo val8 = default(SkinDefInfo);
		val8.BaseSkins = Array.Empty<SkinDef>();
		val8.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val8.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val8.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[14]
		{
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Base")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("BaseBlade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01Blade")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06Blade")).gameObject,
				shouldActivate = false
			}
		};
		val8.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin01");
		val8.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val8.Name = "PYKEBODY_SKIN01_SKIN_NAME";
		val8.NameToken = "PYKEBODY_SKIN01_SKIN_NAME";
		val8.RendererInfos = component8.baseRendererInfos;
		val8.RootObject = gameObject;
		val8.UnlockableDef = skin01Unlock;
		SkinDef val9 = LoadoutAPI.CreateNewSkinDef(val8);
		SkinDefInfo val10 = default(SkinDefInfo);
		val10.BaseSkins = Array.Empty<SkinDef>();
		val10.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val10.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val10.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[14]
		{
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Base")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("BaseBlade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02Blade")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06Blade")).gameObject,
				shouldActivate = false
			}
		};
		val10.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin02");
		val10.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val10.Name = "PYKEBODY_SKIN02_SKIN_NAME";
		val10.NameToken = "PYKEBODY_SKIN02_SKIN_NAME";
		val10.RendererInfos = component8.baseRendererInfos;
		val10.RootObject = gameObject;
		val10.UnlockableDef = skin02Unlock;
		SkinDef val11 = LoadoutAPI.CreateNewSkinDef(val10);
		SkinDefInfo val12 = default(SkinDefInfo);
		val12.BaseSkins = Array.Empty<SkinDef>();
		val12.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val12.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val12.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[14]
		{
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Base")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("BaseBlade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03Blade")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06Blade")).gameObject,
				shouldActivate = false
			}
		};
		val12.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin03");
		val12.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val12.Name = "PYKEBODY_SKIN03_SKIN_NAME";
		val12.NameToken = "PYKEBODY_SKIN03_SKIN_NAME";
		val12.RendererInfos = component8.baseRendererInfos;
		val12.RootObject = gameObject;
		val12.UnlockableDef = skin03Unlock;
		SkinDef val13 = LoadoutAPI.CreateNewSkinDef(val12);
		SkinDefInfo val14 = default(SkinDefInfo);
		val14.BaseSkins = Array.Empty<SkinDef>();
		val14.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val14.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val14.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[14]
		{
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Base")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("BaseBlade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04Blade")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06Blade")).gameObject,
				shouldActivate = false
			}
		};
		val14.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin04");
		val14.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val14.Name = "PYKEBODY_SKIN04_SKIN_NAME";
		val14.NameToken = "PYKEBODY_SKIN04_SKIN_NAME";
		val14.RendererInfos = component8.baseRendererInfos;
		val14.RootObject = gameObject;
		val14.UnlockableDef = skin04Unlock;
		SkinDef val15 = LoadoutAPI.CreateNewSkinDef(val14);
		SkinDefInfo val16 = default(SkinDefInfo);
		val16.BaseSkins = Array.Empty<SkinDef>();
		val16.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val16.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val16.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[14]
		{
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Base")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("BaseBlade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05Blade")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06Blade")).gameObject,
				shouldActivate = false
			}
		};
		val16.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin05");
		val16.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val16.Name = "PYKEBODY_SKIN05_SKIN_NAME";
		val16.NameToken = "PYKEBODY_SKIN05_SKIN_NAME";
		val16.RendererInfos = component8.baseRendererInfos;
		val16.RootObject = gameObject;
		val16.UnlockableDef = skin05Unlock;
		SkinDef val17 = LoadoutAPI.CreateNewSkinDef(val16);
		SkinDefInfo val18 = default(SkinDefInfo);
		val18.BaseSkins = Array.Empty<SkinDef>();
		val18.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0];
		val18.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0];
		val18.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[14]
		{
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Base")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("BaseBlade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin01Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin02Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin03Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin04Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin05Blade")).gameObject,
				shouldActivate = false
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06")).gameObject,
				shouldActivate = true
			},
			new GameObjectActivation
			{
				gameObject = ((Component)component9.FindChild("Skin06Blade")).gameObject,
				shouldActivate = true
			}
		};
		val18.Icon = Assets.MainAssetBundle.LoadAsset<Sprite>("portraitSkin06");
		val18.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0];
		val18.Name = "PYKEBODY_SKIN06_SKIN_NAME";
		val18.NameToken = "PYKEBODY_SKIN06_SKIN_NAME";
		val18.RendererInfos = component8.baseRendererInfos;
		val18.RootObject = gameObject;
		val18.UnlockableDef = skin06Unlock;
		SkinDef val19 = LoadoutAPI.CreateNewSkinDef(val18);
		val5.skins = (SkinDef[])(object)new SkinDef[7] { val7, val9, val11, val13, val15, val17, val19 };
		TeamComponent val20 = null;
		val20 = ((!((Object)(object)characterPrefab.GetComponent<TeamComponent>() != (Object)null)) ? characterPrefab.GetComponent<TeamComponent>() : characterPrefab.GetComponent<TeamComponent>());
		val20.hideAllyCardDisplay = false;
		val20.teamIndex = (TeamIndex)(-1);
		HealthComponent component10 = characterPrefab.GetComponent<HealthComponent>();
		component10.health = 130f;
		component10.shield = 0f;
		component10.barrier = 0f;
		component10.magnetiCharge = 0f;
		component10.body = null;
		component10.dontShowHealthbar = false;
		component10.globalDeathEventChanceCoefficient = 1f;
		characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 3f;
		characterPrefab.GetComponent<InteractionDriver>().highlightInteractor = true;
		SfxLocator component11 = characterPrefab.GetComponent<SfxLocator>();
		component11.deathSound = "Play_ui_player_death";
		component11.barkSound = "";
		component11.openSound = "";
		component11.landingSound = "Play_char_land";
		component11.fallDamageSound = "Play_char_land_fall_damage";
		component11.aliveLoopStart = "";
		component11.aliveLoopStop = "";
		Rigidbody component12 = characterPrefab.GetComponent<Rigidbody>();
		component12.mass = 100f;
		component12.drag = 0f;
		component12.angularDrag = 0f;
		component12.useGravity = false;
		component12.isKinematic = true;
		component12.interpolation = (RigidbodyInterpolation)0;
		component12.collisionDetectionMode = (CollisionDetectionMode)0;
		component12.constraints = (RigidbodyConstraints)0;
		CapsuleCollider component13 = characterPrefab.GetComponent<CapsuleCollider>();
		((Collider)component13).isTrigger = false;
		((Collider)component13).material = null;
		KinematicCharacterMotor component14 = characterPrefab.GetComponent<KinematicCharacterMotor>();
		component14.CharacterController = (BaseCharacterController)(object)component3;
		component14.Capsule = component13;
		component14.Rigidbody = component12;
		component14.DetectDiscreteCollisions = false;
		component14.GroundDetectionExtraDistance = 0f;
		component14.MaxStepHeight = 0.2f;
		component14.MinRequiredStepDepth = 0.1f;
		component14.MaxStableSlopeAngle = 55f;
		component14.MaxStableDistanceFromLedge = 0.5f;
		component14.PreventSnappingOnLedges = false;
		component14.MaxStableDenivelationAngle = 55f;
		component14.RigidbodyInteractionType = (RigidbodyInteractionType)0;
		component14.PreserveAttachedRigidbodyMomentum = true;
		component14.HasPlanarConstraint = false;
		component14.PlanarConstraintAxis = Vector3.up;
		component14.StepHandling = (StepHandlingMethod)0;
		component14.LedgeHandling = true;
		component14.InteractiveRigidbodyHandling = true;
		component14.SafeMovement = false;
		HurtBoxGroup val21 = val.AddComponent<HurtBoxGroup>();
		HurtBox val22 = ((Component)val.GetComponentInChildren<CapsuleCollider>()).gameObject.AddComponent<HurtBox>();
		((Component)val22).gameObject.layer = LayerIndex.entityPrecise.intVal;
		val22.healthComponent = component10;
		val22.isBullseye = true;
		val22.damageModifier = (DamageModifier)0;
		val22.hurtBoxGroup = val21;
		val22.indexInGroup = 0;
		val21.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val22 };
		val21.mainHurtBox = val22;
		val21.bullseyeCount = 1;
		Utils.CreateHitbox("Swing", component9.FindChild("SwingMuzzle"), new Vector3(6f, 5f, 6f));
		Utils.CreateHitbox("Execute", component9.FindChild("CenterMuzzle"), Vector3.one * 10f);
		Utils.CreateHitbox("ShortHook", component9.FindChild("SwingMuzzle"), new Vector3(3.5f, 5f, 8.5f));
		AimAnimator val23 = val.AddComponent<AimAnimator>();
		val23.inputBank = component4;
		val23.directionComponent = component;
		val23.pitchRangeMax = 55f;
		val23.pitchRangeMin = -50f;
		val23.yawRangeMin = -44f;
		val23.yawRangeMax = 44f;
		val23.pitchGiveupRange = 30f;
		val23.yawGiveupRange = 10f;
		val23.giveupDuration = 8f;
		FootstepHandler val24 = val.AddComponent<FootstepHandler>();
		val24.baseFootstepString = "Play_player_footstep";
		val24.sprintFootstepOverrideString = "";
		val24.enableFootstepDust = true;
		val24.footstepDustPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/GenericFootstepDust");
		EntityStateMachine component15 = ((Component)component2).GetComponent<EntityStateMachine>();
		component15.mainStateType = new SerializableEntityStateType(typeof(CharacterMain));
		CharacterDeathBehavior component16 = characterPrefab.GetComponent<CharacterDeathBehavior>();
		component16.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>();
		component16.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath));
		EntityStateMachine val25 = characterPrefab.AddComponent<EntityStateMachine>();
		val25.customName = "Dash";
		val25.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val25.mainStateType = new SerializableEntityStateType(typeof(Idle));
		EntityStateMachine val26 = characterPrefab.AddComponent<EntityStateMachine>();
		val26.customName = "Execute";
		val26.initialStateType = new SerializableEntityStateType(typeof(Idle));
		val26.mainStateType = new SerializableEntityStateType(typeof(Idle));
		NetworkStateMachine component17 = ((Component)component2).GetComponent<NetworkStateMachine>();
		List<EntityStateMachine> list = component17.stateMachines.ToList();
		list.Add(val25);
		list.Add(val26);
		component17.stateMachines = list.ToArray();
		ContentAddition.AddBody(characterPrefab);
	}

	private void RegisterCharacter()
	{
		//IL_016b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0170: Unknown result type (might be due to invalid IL or missing references)
		characterDisplay = PrefabAPI.InstantiateClone(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "PykeDisplay", true);
		characterDisplay.AddComponent<NetworkIdentity>();
		SkinDef[] skins = characterDisplay.GetComponentInChildren<ModelSkinController>().skins;
		for (int i = 0; i < skins.Length; i++)
		{
			RendererInfo[] rendererInfos = skins[i].rendererInfos;
			for (int j = 0; j < rendererInfos.Length; j++)
			{
				rendererInfos[j].defaultMaterial.shaderKeywords = null;
			}
		}
		string text = "Pyke is a high risk, high reward burst damage assassin who thrives on executing groups of low health targets.<style=cSub>\r\n\r\n< ! > Pyke can single enemies out by pulling them using the hold variation of his Bone Skewer." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Be sure to utilize Pykes passive to remain healthy and reposition for damage potential." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Learning to manipulate Pykes skills can make him very lethal. However misusing an Ult can lead to death. Be sure to use your kit to its fullest potential." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Death From Below will execute enemies under 10% max health. This effect stacks with Critical Hit Chance up to a maximum of 25% upon reaching 200% critical hit chance.";
		string text2 = "..and so he left, returning to the depths to seek revenge.";
		string text3 = "..and so he vanished, never to be seen again.";
		string text4 = "A renowned harpooner from the slaughter docks of Bilgewater, Pyke should have met his death in the belly of a gigantic jaull-fish… and yet, he returned. Now, stalking the dank alleys and backways of his former hometown, he uses his new supernatural gifts to bring a swift and gruesome end to those who make their fortune by exploiting others—and a city that prides itself on hunting monsters now finds a monster hunting them.";
		LanguageAPI.Add("PYKE_NAME", "Pyke");
		LanguageAPI.Add("PYKE_DESCRIPTION", text);
		LanguageAPI.Add("PYKE_LORE", text4);
		LanguageAPI.Add("PYKE_SUBTITLE", "The Bloodharbor Ripper");
		LanguageAPI.Add("PYKE_OUTRO", text2);
		LanguageAPI.Add("PYKE_FAIL", text3);
		SurvivorDef val = ScriptableObject.CreateInstance<SurvivorDef>();
		val.cachedName = "PYKE_NAME";
		val.unlockableDef = null;
		val.descriptionToken = "PYKE_DESCRIPTION";
		val.primaryColor = characterColor;
		val.bodyPrefa