Decompiled source of NewTrix v1.6.0

NewTrix.dll

Decompiled a week ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Reptile;
using UnityEngine;
using UnityEngine.SceneManagement;
using newtrickx;
using trickyclown;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")]
[assembly: AssemblyCompany("NewTrix")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("New Tricks for Bomb Rush Cyberfunk")]
[assembly: AssemblyFileVersion("1.6.0.0")]
[assembly: AssemblyInformationalVersion("1.6.0")]
[assembly: AssemblyProduct("NewTrix")]
[assembly: AssemblyTitle("NewTrix")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.6.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace newtrickx
{
	[BepInPlugin("ConfigTrixSlidesAndManuals", "New Trix Slides", "1.6.0")]
	[BepInProcess("Bomb Rush Cyberfunk.exe")]
	internal class SlideAbilityPatches : BaseUnityPlugin
	{
		public static Dictionary<string, bool> IdleOverrides = new Dictionary<string, bool>();

		private Dictionary<string, ConfigEntry<string>> configEntriesSlide;

		public static SlideAbilityPatches Instance { get; private set; }

		private void Awake()
		{
			Instance = this;
			configEntriesSlide = new Dictionary<string, ConfigEntry<string>>();
			configEntriesSlide["slideSkateboardCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideSkateboardCfg", "roll", "Skateboard Manual");
			configEntriesSlide["slideSkateboardNameCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideSkateboardCfgName", "Manual", "Skateboard Manual Name");
			configEntriesSlide["slideFootCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideFootCfg", "softBounce17", "On-foot Roll/Slide");
			configEntriesSlide["slideFootNameCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideFootCfgName", "Check your configs >:3c", "On-foot Roll/Slide Name");
			configEntriesSlide["slideInlineCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideInlineCfg", "roll", "Inline Slide");
			configEntriesSlide["slideInlineNameCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideInlineCfgName", "Cess Slide", "Inline Slide Name");
			configEntriesSlide["slideBmxCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideBmxCfg", "roll", "BMX Manual");
			configEntriesSlide["slideBmxNameCfg"] = ((BaseUnityPlugin)this).Config.Bind<string>("Manual/Slide/Roll", "slideBmxCfgName", "Manual", "BMX Manual Name");
			IdleOverrides["skateboardSlidecfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Manual/Slide/Roll", "Skateboard Slide Override Anim", false, "Set to on-foot animator for Skateboard Slide").Value;
			IdleOverrides["inlineSlidecfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Manual/Slide/Roll", "Inline Slide Override Anim", false, "Set to on-foot animator for Inline Slide").Value;
			IdleOverrides["bmxSlidecfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Manual/Slide/Roll", "Bmx Slide Override Anim", false, "Set to on-foot animator for Bmx Slide").Value;
		}

		public string GetConfigValueSlide(string key)
		{
			if (configEntriesSlide.TryGetValue(key, out var value))
			{
				return value.Value;
			}
			((BaseUnityPlugin)this).Logger.LogError((object)("Config key '" + key + "' not found."));
			return null;
		}

		[HarmonyPatch(typeof(SlideAbility), "OnStartAbility")]
		[HarmonyPrefix]
		public static bool OnStartAbility_Prefix(SlideAbility __instance)
		{
			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Invalid comparison between Unknown and I4
			//IL_015a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Invalid comparison between Unknown and I4
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Invalid comparison between Unknown and I4
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Invalid comparison between Unknown and I4
			string configValueSlide = Instance.GetConfigValueSlide("slideSkateboardCfg");
			string configValueSlide2 = Instance.GetConfigValueSlide("slideSkateboardNameCfg");
			string configValueSlide3 = Instance.GetConfigValueSlide("slideFootCfg");
			string configValueSlide4 = Instance.GetConfigValueSlide("slideFootNameCfg");
			string configValueSlide5 = Instance.GetConfigValueSlide("slideInlineCfg");
			string configValueSlide6 = Instance.GetConfigValueSlide("slideInlineNameCfg");
			string configValueSlide7 = Instance.GetConfigValueSlide("slideBmxCfg");
			string configValueSlide8 = Instance.GetConfigValueSlide("slideBmxNameCfg");
			Console.WriteLine(((Ability)__instance).p.currentTrickName);
			((Ability)__instance).setSpeedOnHittingBreakable = (__instance.baseSpeed = ((Ability)__instance).p.maxMoveSpeed);
			__instance.singleBoostCooldown = 0f;
			__instance.normalCapsuleHeight = ((Ability)__instance).p.motor.GetCapsule().height;
			__instance.normalCapsuleCenter = ((Ability)__instance).p.motor.GetCapsule().center.y;
			((Ability)__instance).autoAirTrickFromLauncher = false;
			__instance.wantToStop = (__instance.stopDecided = false);
			if ((int)((Ability)__instance).p.moveStyle == 0)
			{
				__instance.trickName = configValueSlide4;
				__instance.rollHash = AnimationUtility.GetAnimationByName(configValueSlide3);
				__instance.Crouch(true);
			}
			else
			{
				if ((int)((Ability)__instance).p.moveStyle == 2)
				{
					ATAPatchTC.CheckAnimOverride(IdleOverrides["skateboardSlidecfgAnim"]);
					__instance.trickName = configValueSlide2;
					__instance.rollHash = AnimationUtility.GetAnimationByName(configValueSlide);
				}
				else if ((int)((Ability)__instance).p.moveStyle == 3)
				{
					ATAPatchTC.CheckAnimOverride(IdleOverrides["inlineSlidecfgAnim"]);
					__instance.trickName = configValueSlide6;
					__instance.rollHash = AnimationUtility.GetAnimationByName(configValueSlide5);
				}
				else if ((int)((Ability)__instance).p.moveStyle == 1)
				{
					ATAPatchTC.CheckAnimOverride(IdleOverrides["bmxSlidecfgAnim"]);
					__instance.trickName = configValueSlide8;
					__instance.rollHash = AnimationUtility.GetAnimationByName(configValueSlide7);
				}
				if (VertAbilityPatches.nonVanillaMovestyle)
				{
					__instance.rollHash = Animator.StringToHash("roll");
				}
			}
			__instance.SetSlideState((SlideState)0);
			if (((Ability)__instance).p.lastElevationForSlideBoost > ((Ability)__instance).p.tf.position.y + 0.5f)
			{
				__instance.SingleBoost(((Ability)__instance).p.boostSpeed - 1f);
			}
			return false;
		}
	}
	[HarmonyPatch(typeof(VertAbility))]
	internal class VertAbilityPatches2
	{
		[HarmonyPatch("StartTrick")]
		[HarmonyPrefix]
		public static bool StartTrick_Prefix(VertAbility __instance)
		{
			//IL_06d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06dc: Invalid comparison between Unknown and I4
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Invalid comparison between Unknown and I4
			//IL_06e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ea: Invalid comparison between Unknown and I4
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Invalid comparison between Unknown and I4
			//IL_03ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f0: Invalid comparison between Unknown and I4
			//IL_0712: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Invalid comparison between Unknown and I4
			//IL_073d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0743: Invalid comparison between Unknown and I4
			//IL_05b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b4: Invalid comparison between Unknown and I4
			//IL_090b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0911: Invalid comparison between Unknown and I4
			//IL_0ff7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a68: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6e: Invalid comparison between Unknown and I4
			string configValueAir = ATAPatchTC.Instance.GetConfigValueAir("skateboardAirBoostTrick0cfg");
			string configValueAir2 = ATAPatchTC.Instance.GetConfigValueAir("skateboardAirBoostTrick1cfg");
			string configValueAir3 = ATAPatchTC.Instance.GetConfigValueAir("skateboardAirBoostTrick2cfg");
			string configValueAir4 = ATAPatchTC.Instance.GetConfigValueAir("inlineAirBoostTrick0cfg");
			string configValueAir5 = ATAPatchTC.Instance.GetConfigValueAir("inlineAirBoostTrick1cfg");
			string configValueAir6 = ATAPatchTC.Instance.GetConfigValueAir("inlineAirBoostTrick2cfg");
			string configValueAir7 = ATAPatchTC.Instance.GetConfigValueAir("bmxAirBoostTrick0cfg");
			string configValueAir8 = ATAPatchTC.Instance.GetConfigValueAir("bmxAirBoostTrick1cfg");
			string configValueAir9 = ATAPatchTC.Instance.GetConfigValueAir("bmxAirBoostTrick2cfg");
			string configValueAir10 = ATAPatchTC.Instance.GetConfigValueAir("footAirBoostTrick0cfg");
			string configValueAir11 = ATAPatchTC.Instance.GetConfigValueAir("footAirBoostTrick1cfg");
			string configValueAir12 = ATAPatchTC.Instance.GetConfigValueAir("footAirBoostTrick2cfg");
			AirTrickAbility airTrickAbility = ((Ability)__instance).p.airTrickAbility;
			airTrickAbility.curTrick = ((Ability)__instance).p.InputToTrickNumber();
			Console.WriteLine("incheckboosttrick with value " + ((object)(MoveStyle)(ref ((Ability)__instance).p.moveStyle)).ToString());
			bool tonyCfg = ATAPatchTC.GetTonyCfg();
			if (((Ability)__instance).p.CheckBoostTrick())
			{
				if ((int)((Ability)__instance).p.moveStyle == 2)
				{
					if (airTrickAbility.curTrick == 0)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirBoostTrick0cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["skateboardAirBoostTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 1)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirBoostTrick1cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir2), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["skateboardAirBoostTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 2)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirBoostTrick2cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir3), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["skateboardAirBoostTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 3)
				{
					if (airTrickAbility.curTrick == 0)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["inlineAirBoostTrick0cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir4), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["inlineAirBoostTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 1)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["inlineAirBoostTrick1cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir5), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["inlineAirBoostTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 2)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["inlineAirBoostTrick2cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir6), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["inlineAirBoostTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 1)
				{
					if (airTrickAbility.curTrick == 0)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["bmxAirBoostTrick0cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir7), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["bmxAirBoostTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 1)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["bmxAirBoostTrick1cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir8), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["bmxAirBoostTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 2)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["bmxAirBoostTrick2cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir9), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["bmxAirBoostTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				if (VertAbilityPatches.nonVanillaMovestyle)
				{
					((Ability)__instance).p.PlayAnim(airTrickAbility.airBoostTrickHashes[airTrickAbility.curTrick], true, false, 0f);
				}
				((Ability)__instance).p.PlayVoice((AudioClipID)498, (VoicePriority)2, true);
				__instance.trickScoreBuffered = true;
				__instance.trickTimer = __instance.trickDuration * 1.5f;
				((Ability)__instance).p.AddBoostCharge(0f - ((Ability)__instance).p.boostTrickCost);
				__instance.trickType = (TrickType)2;
				return false;
			}
			((Ability)__instance).p.PlayAnim(airTrickAbility.airTrickHashes[airTrickAbility.curTrick], false, false, -1f);
			string configValueAir13 = ATAPatchTC.Instance.GetConfigValueAir("skateboardAirTrick0cfg");
			string configValueAir14 = ATAPatchTC.Instance.GetConfigValueAir("skateboardAirTrick1cfg");
			string configValueAir15 = ATAPatchTC.Instance.GetConfigValueAir("skateboardAirTrick2cfg");
			string configValueAir16 = ATAPatchTC.Instance.GetConfigValueAir("inlineAirTrick0cfg");
			string configValueAir17 = ATAPatchTC.Instance.GetConfigValueAir("inlineAirTrick1cfg");
			string configValueAir18 = ATAPatchTC.Instance.GetConfigValueAir("inlineAirTrick2cfg");
			string configValueAir19 = ATAPatchTC.Instance.GetConfigValueAir("bmxAirTrick0cfg");
			string configValueAir20 = ATAPatchTC.Instance.GetConfigValueAir("bmxAirTrick1cfg");
			string configValueAir21 = ATAPatchTC.Instance.GetConfigValueAir("bmxAirTrick2cfg");
			string configValueAir22 = ATAPatchTC.Instance.GetConfigValueAir("footAirTrick0cfg");
			string configValueAir23 = ATAPatchTC.Instance.GetConfigValueAir("footAirTrick1cfg");
			string configValueAir24 = ATAPatchTC.Instance.GetConfigValueAir("footAirTrick2cfg");
			((Ability)__instance).p.PlayAnim(airTrickAbility.airTrickHashes[airTrickAbility.curTrick], true, false, 0f);
			if ((int)((Ability)__instance).p.moveStyle == 2 || (int)((Ability)__instance).p.moveStyle == 4)
			{
				airTrickAbility.duration = airTrickAbility.skateboardTrickDuration;
			}
			else if ((int)((Ability)__instance).p.moveStyle == 1)
			{
				airTrickAbility.duration = airTrickAbility.bmxTrickDuration;
			}
			else if ((int)((Ability)__instance).p.moveStyle == 3)
			{
				airTrickAbility.duration = airTrickAbility.inlineTrickDuration;
			}
			if (((Ability)__instance).p.CheckBoostTrick())
			{
				airTrickAbility.SetupBoostTrick();
			}
			else
			{
				((Ability)__instance).p.PlayAnim(airTrickAbility.airTrickHashes[airTrickAbility.curTrick], true, false, 0f);
				if ((int)((Ability)__instance).p.moveStyle == 1)
				{
					if (airTrickAbility.curTrick == 0)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["bmxAirTrick0cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir19), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["bmxAirTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 1)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["bmxAirTrick1cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir20), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["bmxAirTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 2)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["bmxAirTrick2cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir21), true, false, 0f);
						if (ATAPatchTC.IdleOverrides["bmxAirTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 3)
				{
					if (airTrickAbility.curTrick == 0)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["inlineAirTrick0cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir16), true, false, -1f);
						if (ATAPatchTC.IdleOverrides["inlineAirTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 1)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["inlineAirTrick1cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir17), true, false, -1f);
						if (ATAPatchTC.IdleOverrides["inlineAirTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (airTrickAbility.curTrick == 2)
					{
						ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["inlineAirTrick2cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir18), true, false, -1f);
						if (ATAPatchTC.IdleOverrides["inlineAirTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 2)
				{
					bool value = ATAPatchTC.enableTonyCfg.Value;
					if (airTrickAbility.curTrick == 0)
					{
						float moveAxisX = ((Ability)__instance).p.moveAxisX;
						float moveAxisY = ((Ability)__instance).p.moveAxisY;
						if (value)
						{
							if (moveAxisX <= -0.25f)
							{
								if (moveAxisY <= -0.25f || moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir13), true, false, -1f);
									if (ATAPatchTC.IdleOverrides["skateboardAirTrick0cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundTrick0"), true, false, -1f);
								}
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisX >= 0.25f)
							{
								if (moveAxisY <= -0.25f || moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir13), true, false, -1f);
									if (ATAPatchTC.IdleOverrides["skateboardAirTrick0cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundTrick2"), true, false, -1f);
								}
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisY <= -0.25f)
							{
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("grindTrick0"), true, false, -1f);
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisY >= 0.25f)
							{
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundTrick3"), true, false, -1f);
								VertAbilityPatches.overridingIdle = false;
							}
							else
							{
								ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirTrick0cfgAnim"]);
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir13), true, false, -1f);
								if (ATAPatchTC.IdleOverrides["skateboardAirTrick0cfg"])
								{
									VertAbilityPatches.overridingIdle = true;
								}
								else
								{
									VertAbilityPatches.overridingIdle = false;
								}
							}
						}
						else
						{
							ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirTrick0cfgAnim"]);
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir13), true, false, -1f);
							if (ATAPatchTC.IdleOverrides["skateboardAirTrick0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
					else if (airTrickAbility.curTrick == 1)
					{
						if (value && ((Ability)__instance).p.slideButtonHeld)
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundBoostTrick0"), false, false, -1f);
							VertAbilityPatches.overridingIdle = false;
						}
						else
						{
							ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirTrick1cfgAnim"]);
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir14), false, false, -1f);
							if (ATAPatchTC.IdleOverrides["skateboardAirTrick1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
					else if (airTrickAbility.curTrick == 2)
					{
						if (value)
						{
							if (((Ability)__instance).p.moveAxisX >= 0.25f)
							{
								if (((Ability)__instance).p.moveAxisY <= -0.25f && BunchOfEmotesSupport.Installed)
								{
									ATAPatchTC.CheckAnimOverride(overrideAnim: true);
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("christ air"), false, false, -1f);
									VertAbilityPatches.overridingIdle = false;
								}
								else if (((Ability)__instance).p.moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir15), false, false, -1f);
									if (ATAPatchTC.IdleOverrides["skateboardAirTrick1cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("airTrick1"), false, false, -1f);
									VertAbilityPatches.overridingIdle = false;
								}
							}
							else
							{
								ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirTrick2cfgAnim"]);
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir15), false, false, -1f);
								if (ATAPatchTC.IdleOverrides["skateboardAirTrick1cfg"])
								{
									VertAbilityPatches.overridingIdle = true;
								}
								else
								{
									VertAbilityPatches.overridingIdle = false;
								}
							}
						}
						else
						{
							ATAPatchTC.CheckAnimOverride(ATAPatchTC.IdleOverrides["skateboardAirTrick2cfgAnim"]);
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir15), false, false, -1f);
							if (ATAPatchTC.IdleOverrides["skateboardAirTrick1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
				}
				else if (VertAbilityPatches.nonVanillaMovestyle)
				{
					((Ability)__instance).p.PlayAnim(airTrickAbility.airTrickHashes[airTrickAbility.curTrick], true, false, 0f);
				}
			}
			__instance.trickScoreBuffered = true;
			__instance.trickTimer = __instance.trickDuration;
			__instance.trickType = (TrickType)1;
			return false;
		}
	}
}
namespace trickyclown
{
	[BepInPlugin("ConfigTrixAirTricks", "New Trix Air", "1.6.0")]
	[BepInProcess("Bomb Rush Cyberfunk.exe")]
	public class ATAPatchTC : BaseUnityPlugin
	{
		public static Dictionary<string, bool> IdleOverrides = new Dictionary<string, bool>();

		public static ConfigEntry<bool> enableTonyCfg;

		private Dictionary<string, ConfigEntry<string>> configEntriesAir;

		public static ATAPatchTC Instance { get; private set; }

		public static void CheckAnimOverride(bool overrideAnim)
		{
			if (overrideAnim)
			{
				VertAbilityPatches.UseFootController();
			}
		}

		private void Awake()
		{
			IdleOverrides["skateboardAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 0 Override Fall", false, "Override fall for Button 1 trick (OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["skateboardAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 1 Override Fall", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["skateboardAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 2 Override Fall", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["skateboardAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 0 Override Fall", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["skateboardAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 1 Override Fall", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["skateboardAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 2 Override Fall", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["inlineAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 0 Override Fall", false, "Override fall for Button 1 trick (OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["inlineAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 1 Override Fall", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["inlineAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 2 Override Fall", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["inlineAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 0 Override Fall", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["inlineAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 1 Override Fall", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["inlineAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 2 Override Fall", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["bmxAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 0 Override Fall", false, "Override fall for Button 1 trick (OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["bmxAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 1 Override Fall", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["bmxAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 2 Override Fall", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["bmxAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 0 Override Fall", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["bmxAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 1 Override Fall", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["bmxAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 2 Override Fall", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["footAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Trick 0 Override Fall", false, "Override fall for Button 1 trick (OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["footAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Trick 1 Override Fall", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["footAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Trick 2 Override Fall", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["footAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Boost Trick 0 Override Fall", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["footAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Boost Trick 1 Override Fall", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["footAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Boost Trick 2 Override Fall", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["footAirTrickLeft0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot TrickLeft 0 Override Fall", false, "Override fall for Button 1 TrickLeft").Value;
			IdleOverrides["footAirTrickLeft1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot TrickLeft 1 Override Fall", false, "Override fall for Button 2 TrickLeft").Value;
			IdleOverrides["footAirTrickLeft2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot TrickLeft 2 Override Fall", false, "Override fall for Button 3 TrickLeft").Value;
			IdleOverrides["footAirBoostTrickLeft0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot Boost TrickLeft 0 Override Fall", false, "Override fall for Button 1 boost TrickLeft").Value;
			IdleOverrides["footAirBoostTrickLeft1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot Boost TrickLeft 1 Override Fall", false, "Override fall for Button 2 boost TrickLeft").Value;
			IdleOverrides["footAirBoostTrickLeft2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot Boost TrickLeft 2 Override Fall", false, "Override fall for Button 3 boost TrickLeft").Value;
			IdleOverrides["footAirTrickRight0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot TrickRight 0 Override Fall", false, "Override fall for Button 1 TrickRight").Value;
			IdleOverrides["footAirTrickRight1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot TrickRight 1 Override Fall", false, "Override fall for Button 2 TrickRight").Value;
			IdleOverrides["footAirTrickRight2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot TrickRight 2 Override Fall", false, "Override fall for Button 3 TrickRight").Value;
			IdleOverrides["footAirBoostTrickRight0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot Boost TrickRight 0 Override Fall", false, "Override fall for Button 1 boost TrickRight").Value;
			IdleOverrides["footAirBoostTrickRight1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot Boost TrickRight 1 Override Fall", false, "Override fall for Button 2 boost TrickRight").Value;
			IdleOverrides["footAirBoostTrickRight2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot Boost TrickRight 2 Override Fall", false, "Override fall for Button 3 boost TrickRight").Value;
			IdleOverrides["footAirTrickUp0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot TrickUp 0 Override Fall", false, "Override fall for Button 1 TrickUp").Value;
			IdleOverrides["footAirTrickUp1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot TrickUp 1 Override Fall", false, "Override fall for Button 2 TrickUp").Value;
			IdleOverrides["footAirTrickUp2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot TrickUp 2 Override Fall", false, "Override fall for Button 3 TrickUp").Value;
			IdleOverrides["footAirBoostTrickUp0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot Boost TrickUp 0 Override Fall", false, "Override fall for Button 1 boost TrickUp").Value;
			IdleOverrides["footAirBoostTrickUp1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot Boost TrickUp 1 Override Fall", false, "Override fall for Button 2 boost TrickUp").Value;
			IdleOverrides["footAirBoostTrickUp2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot Boost TrickUp 2 Override Fall", false, "Override fall for Button 3 boost TrickUp").Value;
			IdleOverrides["footAirTrickDown0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot TrickDown 0 Override Fall", false, "Override fall for Button 1 TrickDown").Value;
			IdleOverrides["footAirTrickDown1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot TrickDown 1 Override Fall", false, "Override fall for Button 2 TrickDown").Value;
			IdleOverrides["footAirTrickDown2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot TrickDown 2 Override Fall", false, "Override fall for Button 3 TrickDown").Value;
			IdleOverrides["footAirBoostTrickDown0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot Boost TrickDown 0 Override Fall", false, "Override fall for Button 1 boost TrickDown").Value;
			IdleOverrides["footAirBoostTrickDown1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot Boost TrickDown 1 Override Fall", false, "Override fall for Button 2 boost TrickDown").Value;
			IdleOverrides["footAirBoostTrickDown2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot Boost TrickDown 2 Override Fall", false, "Override fall for Button 3 boost TrickDown").Value;
			IdleOverrides["skateboardAirTrick0cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 0 Override Anim", false, "Set to on-foot animator for Button 1 trick").Value;
			IdleOverrides["skateboardAirTrick1cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 1 Override Anim", false, "Set to on-foot animator for Button 2 trick").Value;
			IdleOverrides["skateboardAirTrick2cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 2 Override Anim", false, "Set to on-foot animator for Button 3 trick").Value;
			IdleOverrides["skateboardAirBoostTrick0cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 0 Override Anim", false, "Set to on-foot animator for Button 1 boost trick").Value;
			IdleOverrides["skateboardAirBoostTrick1cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 1 Override Anim", false, "Set to on-foot animator for Button 2 boost trick").Value;
			IdleOverrides["skateboardAirBoostTrick2cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 2 Override Anim", false, "Set to on-foot animator for Button 3 boost trick").Value;
			IdleOverrides["inlineAirTrick0cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 0 Override Anim", false, "Set to on-foot animator for Button 1 trick").Value;
			IdleOverrides["inlineAirTrick1cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 1 Override Anim", false, "Set to on-foot animator for Button 2 trick").Value;
			IdleOverrides["inlineAirTrick2cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 2 Override Anim", false, "Set to on-foot animator for Button 3 trick").Value;
			IdleOverrides["inlineAirBoostTrick0cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 0 Override Anim", false, "Set to on-foot animator for Button 1 boost trick").Value;
			IdleOverrides["inlineAirBoostTrick1cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 1 Override Anim", false, "Set to on-foot animator for Button 2 boost trick").Value;
			IdleOverrides["inlineAirBoostTrick2cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 2 Override Anim", false, "Set to on-foot animator for Button 3 boost trick").Value;
			IdleOverrides["bmxAirTrick0cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 0 Override Anim", false, "Set to on-foot animator for Button 1 trick").Value;
			IdleOverrides["bmxAirTrick1cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 1 Override Anim", false, "Set to on-foot animator for Button 2 trick").Value;
			IdleOverrides["bmxAirTrick2cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 2 Override Anim", false, "Set to on-foot animator for Button 3 trick").Value;
			IdleOverrides["bmxAirBoostTrick0cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 0 Override Anim", false, "Set to on-foot animator for Button 1 boost trick").Value;
			IdleOverrides["bmxAirBoostTrick1cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 1 Override Anim", false, "Set to on-foot animator for Button 2 boost trick").Value;
			IdleOverrides["bmxAirBoostTrick2cfgAnim"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 2 Override Anim", false, "Set to on-foot animator for Button 3 boost trick").Value;
			enableTonyCfg = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "enableTonyCfg", false, "Enable Beta Skateboard Directional Tricks");
			Instance = this;
			configEntriesAir = new Dictionary<string, ConfigEntry<string>>
			{
				{
					"skateboardAirTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Trick 0", "airTrick0", "Button 1 trick")
				},
				{
					"skateboardAirTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Trick 0 Name", "Backside 360 Varial", "Button 1 trick name")
				},
				{
					"skateboardAirTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Trick 1", "airTrick1", "Button 2 trick")
				},
				{
					"skateboardAirTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Trick 1 Name", "Backflip Indy", "Button 2 trick name")
				},
				{
					"skateboardAirTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Trick 2", "jumpTrick1", "Button 3 trick (vanilla is \"airTrick2\")")
				},
				{
					"skateboardAirTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Trick 2 Name", "McTwist", "Button 3 trick name (vanilla is \"Method Grab\")")
				},
				{
					"skateboardAirBoostTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Boost Trick 0", "airBoostTrick0", "Button 1 boost trick")
				},
				{
					"skateboardAirBoostTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Boost Trick 0 Name", "1080", "Button 1 boost trick name")
				},
				{
					"skateboardAirBoostTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Boost Trick 1", "airBoostTrick1", "Button 2 boost trick")
				},
				{
					"skateboardAirBoostTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Boost Trick 1 Name", "1080", "Button 2 boost trick name")
				},
				{
					"skateboardAirBoostTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Boost Trick 2", "airBoostTrick2", "Button 3 boost trick")
				},
				{
					"skateboardAirBoostTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Skateboard Air Tricks", "Skateboard Boost Trick 2 Name", "1080", "Button 3 boost trick name")
				},
				{
					"inlineAirTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Trick 0", "airTrick0", "Button 1 trick")
				},
				{
					"inlineAirTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Trick 0 Name", "Cork 720", "Button 1 trick name")
				},
				{
					"inlineAirTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Trick 1", "airTrick1", "Button 2 trick")
				},
				{
					"inlineAirTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Trick 1 Name", "Method Grab", "Button 2 trick name")
				},
				{
					"inlineAirTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Trick 2", "airTrick2", "Button 3 trick")
				},
				{
					"inlineAirTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Trick 2 Name", "Abstract 360", "Button 3 trick name")
				},
				{
					"inlineAirBoostTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Boost Trick 0", "airBoostTrick0", "Button 1 boost trick")
				},
				{
					"inlineAirBoostTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Boost Trick 0 Name", "1080 California Roll", "Button 1 boost trick name")
				},
				{
					"inlineAirBoostTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Boost Trick 1", "airBoostTrick1", "Button 2 boost trick")
				},
				{
					"inlineAirBoostTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Boost Trick 1 Name", "1080 California Roll", "Button 2 boost trick name")
				},
				{
					"inlineAirBoostTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Boost Trick 2", "airBoostTrick2", "Button 3 boost trick")
				},
				{
					"inlineAirBoostTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Inline Air Tricks", "Inline Boost Trick 2 Name", "1080 California Roll", "Button 3 boost trick name")
				},
				{
					"bmxAirTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Trick 0", "airTrick0", "Button 1 trick")
				},
				{
					"bmxAirTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Trick 0 Name", "Tailwhip 360", "Button 1 trick name")
				},
				{
					"bmxAirTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Trick 1", "airTrick1", "Button 2 trick")
				},
				{
					"bmxAirTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Trick 1 Name", "No Hand Backflip", "Button 2 trick name")
				},
				{
					"bmxAirTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Trick 2", "airTrick2", "Button 3 trick")
				},
				{
					"bmxAirTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Trick 2 Name", "Superman Seat Grab Indian", "Button 3 trick name")
				},
				{
					"bmxAirBoostTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Boost Trick 0", "airBoostTrick0", "Button 1 boost trick")
				},
				{
					"bmxAirBoostTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Boost Trick 0 Name", "720 Double Backflip", "Button 1 boost trick name")
				},
				{
					"bmxAirBoostTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Boost Trick 1", "airBoostTrick1", "Button 2 boost trick")
				},
				{
					"bmxAirBoostTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Boost Trick 1 Name", "720 Double Backflip", "Button 2 boost trick name")
				},
				{
					"bmxAirBoostTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Boost Trick 2", "airBoostTrick2", "Button 3 boost trick")
				},
				{
					"bmxAirBoostTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("BMX Air Tricks", "Bmx Boost Trick 2 Name", "720 Double Backflip", "Button 3 boost trick name")
				},
				{
					"footAirTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Trick 0", "airTrick0", "Button 1 trick")
				},
				{
					"footAirTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Trick 0 Name", "Bullet Spin", "Button 1 trick name")
				},
				{
					"footAirTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Trick 1", "airTrick1", "Button 2 trick")
				},
				{
					"footAirTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Trick 1 Name", "Backflip Grab", "Button 2 trick name")
				},
				{
					"footAirTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Trick 2", "airTrick2", "Button 3 trick")
				},
				{
					"footAirTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Trick 2 Name", "Cheat 720", "Button 3 trick name")
				},
				{
					"footAirBoostTrick0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Boost Trick 0", "airBoostTrick0", "Button 1 boost trick")
				},
				{
					"footAirBoostTrick0Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Boost Trick 0 Name", "Shuriken", "Button 1 boost trick name")
				},
				{
					"footAirBoostTrick1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Boost Trick 1", "airBoostTrick1", "Button 2 boost trick")
				},
				{
					"footAirBoostTrick1Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Boost Trick 1 Name", "Shuriken", "Button 2 boost trick name")
				},
				{
					"footAirBoostTrick2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Boost Trick 2", "airBoostTrick2", "Button 3 boost trick")
				},
				{
					"footAirBoostTrick2Namecfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Air Tricks", "Foot Boost Trick 2 Name", "Shuriken", "Button 3 boost trick name")
				},
				{
					"footAirTrickLeft0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Left Air Tricks", "Foot TrickLeft 0", "", "Button 1 TrickLeft")
				},
				{
					"footAirTrickLeft1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Left Air Tricks", "Foot TrickLeft 1", "", "Button 2 TrickLeft")
				},
				{
					"footAirTrickLeft2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Left Air Tricks", "Foot TrickLeft 2", "", "Button 3 TrickLeft")
				},
				{
					"footAirBoostTrickLeft0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Left Air Tricks", "Foot Boost TrickLeft 0", "", "Button 1 boost TrickLeft")
				},
				{
					"footAirBoostTrickLeft1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Left Air Tricks", "Foot Boost TrickLeft 1", "", "Button 2 boost TrickLeft")
				},
				{
					"footAirBoostTrickLeft2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Left Air Tricks", "Foot Boost TrickLeft 2", "", "Button 3 boost TrickLeft")
				},
				{
					"footAirTrickRight0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Right Air Tricks", "Foot TrickRight 0", "", "Button 1 TrickRight")
				},
				{
					"footAirTrickRight1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Right Air Tricks", "Foot TrickRight 1", "", "Button 2 TrickRight")
				},
				{
					"footAirTrickRight2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Right Air Tricks", "Foot TrickRight 2", "", "Button 3 TrickRight")
				},
				{
					"footAirBoostTrickRight0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Right Air Tricks", "Foot Boost TrickRight 0", "", "Button 1 boost TrickRight")
				},
				{
					"footAirBoostTrickRight1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Right Air Tricks", "Foot Boost TrickRight 1", "", "Button 2 boost TrickRight")
				},
				{
					"footAirBoostTrickRight2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Right Air Tricks", "Foot Boost TrickRight 2", "", "Button 3 boost TrickRight")
				},
				{
					"footAirTrickUp0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Up Air Tricks", "Foot TrickUp 0", "", "Button 1 TrickUp")
				},
				{
					"footAirTrickUp1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Up Air Tricks", "Foot TrickUp 1", "", "Button 2 TrickUp")
				},
				{
					"footAirTrickUp2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Up Air Tricks", "Foot TrickUp 2", "", "Button 3 TrickUp")
				},
				{
					"footAirBoostTrickUp0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Up Air Tricks", "Foot Boost TrickUp 0", "", "Button 1 boost TrickUp")
				},
				{
					"footAirBoostTrickUp1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Up Air Tricks", "Foot Boost TrickUp 1", "", "Button 2 boost TrickUp")
				},
				{
					"footAirBoostTrickUp2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Up Air Tricks", "Foot Boost TrickUp 2", "", "Button 3 boost TrickUp")
				},
				{
					"footAirTrickDown0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Down Air Tricks", "Foot TrickDown 0", "", "Button 1 TrickDown")
				},
				{
					"footAirTrickDown1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Down Air Tricks", "Foot TrickDown 1", "", "Button 2 TrickDown")
				},
				{
					"footAirTrickDown2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Down Air Tricks", "Foot TrickDown 2", "", "Button 3 TrickDown")
				},
				{
					"footAirBoostTrickDown0cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Down Air Tricks", "Foot Boost TrickDown 0", "", "Button 1 boost TrickDown")
				},
				{
					"footAirBoostTrickDown1cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Down Air Tricks", "Foot Boost TrickDown 1", "", "Button 2 boost TrickDown")
				},
				{
					"footAirBoostTrickDown2cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("On-foot Down Air Tricks", "Foot Boost TrickDown 2", "", "Button 3 boost TrickDown")
				}
			};
		}

		public string GetConfigValueAir(string key)
		{
			if (configEntriesAir.TryGetValue(key, out var value))
			{
				return value.Value;
			}
			((BaseUnityPlugin)this).Logger.LogWarning((object)("Configuration key '" + key + "' not found."));
			return null;
		}

		public static bool GetTonyCfg()
		{
			return enableTonyCfg.Value;
		}

		[HarmonyPatch(typeof(AirTrickAbility), "Init")]
		[HarmonyPrefix]
		private static bool Init_Prefix(AirTrickAbility __instance)
		{
			if ((Object)(object)Instance == (Object)null)
			{
				return true;
			}
			string configValueAir = Instance.GetConfigValueAir("skateboardAirTrick0Namecfg");
			string configValueAir2 = Instance.GetConfigValueAir("skateboardAirTrick1Namecfg");
			string configValueAir3 = Instance.GetConfigValueAir("skateboardAirTrick2Namecfg");
			string configValueAir4 = Instance.GetConfigValueAir("skateboardAirBoostTrick0Namecfg");
			string configValueAir5 = Instance.GetConfigValueAir("skateboardAirBoostTrick1Namecfg");
			string configValueAir6 = Instance.GetConfigValueAir("skateboardAirBoostTrick2Namecfg");
			string configValueAir7 = Instance.GetConfigValueAir("inlineAirTrick0Namecfg");
			string configValueAir8 = Instance.GetConfigValueAir("inlineAirTrick1Namecfg");
			string configValueAir9 = Instance.GetConfigValueAir("inlineAirTrick2Namecfg");
			string configValueAir10 = Instance.GetConfigValueAir("inlineAirBoostTrick0Namecfg");
			string configValueAir11 = Instance.GetConfigValueAir("inlineAirBoostTrick1Namecfg");
			string configValueAir12 = Instance.GetConfigValueAir("inlineAirBoostTrick2Namecfg");
			string configValueAir13 = Instance.GetConfigValueAir("bmxAirTrick0Namecfg");
			string configValueAir14 = Instance.GetConfigValueAir("bmxAirTrick1Namecfg");
			string configValueAir15 = Instance.GetConfigValueAir("bmxAirTrick2Namecfg");
			string configValueAir16 = Instance.GetConfigValueAir("bmxAirBoostTrick0Namecfg");
			string configValueAir17 = Instance.GetConfigValueAir("bmxAirBoostTrick1Namecfg");
			string configValueAir18 = Instance.GetConfigValueAir("bmxAirBoostTrick2Namecfg");
			string configValueAir19 = Instance.GetConfigValueAir("footAirTrick0Namecfg");
			string configValueAir20 = Instance.GetConfigValueAir("footAirTrick1Namecfg");
			string configValueAir21 = Instance.GetConfigValueAir("footAirTrick2Namecfg");
			string configValueAir22 = Instance.GetConfigValueAir("footAirBoostTrick0Namecfg");
			string configValueAir23 = Instance.GetConfigValueAir("footAirBoostTrick1Namecfg");
			string configValueAir24 = Instance.GetConfigValueAir("footAirBoostTrick2Namecfg");
			__instance.skateboardTrickNames = new string[6] { configValueAir, configValueAir2, configValueAir3, configValueAir4, configValueAir5, configValueAir6 };
			__instance.inlineTrickNames = new string[6] { configValueAir7, configValueAir8, configValueAir9, configValueAir10, configValueAir11, configValueAir12 };
			__instance.bmxTrickNames = new string[6] { configValueAir13, configValueAir14, configValueAir15, configValueAir16, configValueAir17, configValueAir18 };
			__instance.trickingTrickNames = new string[6] { configValueAir19, configValueAir20, configValueAir21, configValueAir22, configValueAir23, configValueAir24 };
			return true;
		}

		[HarmonyPatch(typeof(AirTrickAbility), "OnStartAbility")]
		[HarmonyPrefix]
		private static bool OnStartAbilityPrefix(AirTrickAbility __instance)
		{
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021b: Invalid comparison between Unknown and I4
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_0229: Invalid comparison between Unknown and I4
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Invalid comparison between Unknown and I4
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0274: Invalid comparison between Unknown and I4
			//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d6: Invalid comparison between Unknown and I4
			//IL_091e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0924: Invalid comparison between Unknown and I4
			//IL_0a78: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7e: Invalid comparison between Unknown and I4
			//IL_0bd1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd7: Invalid comparison between Unknown and I4
			if ((Object)(object)Instance == (Object)null)
			{
				return true;
			}
			string configValueAir = Instance.GetConfigValueAir("skateboardAirTrick0cfg");
			string configValueAir2 = Instance.GetConfigValueAir("skateboardAirTrick1cfg");
			string configValueAir3 = Instance.GetConfigValueAir("skateboardAirTrick2cfg");
			string configValueAir4 = Instance.GetConfigValueAir("inlineAirTrick0cfg");
			string configValueAir5 = Instance.GetConfigValueAir("inlineAirTrick1cfg");
			string configValueAir6 = Instance.GetConfigValueAir("inlineAirTrick2cfg");
			string configValueAir7 = Instance.GetConfigValueAir("bmxAirTrick0cfg");
			string configValueAir8 = Instance.GetConfigValueAir("bmxAirTrick1cfg");
			string configValueAir9 = Instance.GetConfigValueAir("bmxAirTrick2cfg");
			string configValueAir10 = Instance.GetConfigValueAir("footAirTrick0cfg");
			string configValueAir11 = Instance.GetConfigValueAir("footAirTrick1cfg");
			string configValueAir12 = Instance.GetConfigValueAir("footAirTrick2cfg");
			string configValueAir13 = Instance.GetConfigValueAir("footAirTrickLeft0cfg");
			string configValueAir14 = Instance.GetConfigValueAir("footAirTrickLeft1cfg");
			string configValueAir15 = Instance.GetConfigValueAir("footAirTrickLeft2cfg");
			string configValueAir16 = Instance.GetConfigValueAir("footAirTrickRight0cfg");
			string configValueAir17 = Instance.GetConfigValueAir("footAirTrickRight1cfg");
			string configValueAir18 = Instance.GetConfigValueAir("footAirTrickRight2cfg");
			string configValueAir19 = Instance.GetConfigValueAir("footAirTrickUp0cfg");
			string configValueAir20 = Instance.GetConfigValueAir("footAirTrickUp1cfg");
			string configValueAir21 = Instance.GetConfigValueAir("footAirTrickUp2cfg");
			string configValueAir22 = Instance.GetConfigValueAir("footAirTrickDown0cfg");
			string configValueAir23 = Instance.GetConfigValueAir("footAirTrickDown1cfg");
			string configValueAir24 = Instance.GetConfigValueAir("footAirTrickDown2cfg");
			__instance.hitEnemy = false;
			((Ability)__instance).p.SetDustEmission(0);
			__instance.curTrick = ((Ability)__instance).p.InputToTrickNumber();
			__instance.bufferSwitchStyle = false;
			((Ability)__instance).targetSpeed = -1f;
			((Ability)__instance).rotateSpeed = -1f;
			((Ability)__instance).decc = -1f;
			__instance.trickType = (TrickType)0;
			__instance.duration = __instance.trickingTrickDuration;
			if ((int)((Ability)__instance).p.moveStyle == 2 || (int)((Ability)__instance).p.moveStyle == 4)
			{
				__instance.duration = __instance.skateboardTrickDuration;
			}
			else if ((int)((Ability)__instance).p.moveStyle == 1)
			{
				__instance.duration = __instance.bmxTrickDuration;
			}
			else if ((int)((Ability)__instance).p.moveStyle == 3)
			{
				__instance.duration = __instance.inlineTrickDuration;
			}
			if (((Ability)__instance).p.CheckBoostTrick())
			{
				__instance.SetupBoostTrick();
			}
			else
			{
				((Ability)__instance).p.PlayAnim(__instance.airTrickHashes[__instance.curTrick], true, false, 0f);
				if ((int)((Ability)__instance).p.moveStyle == 0)
				{
					if (__instance.curTrick == 0)
					{
						if (((Ability)__instance).p.moveAxisX <= -0.75f && configValueAir13 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir13), true, false, 0f);
							if (IdleOverrides["footAirTrickLeft0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisX >= 0.75f && configValueAir16 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir16), true, false, 0f);
							if (IdleOverrides["footAirTrickRight0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisY >= 0.75f && configValueAir19 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir19), true, false, 0f);
							if (IdleOverrides["footAirTrickUp0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisY <= -0.75f && configValueAir22 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir22), true, false, 0f);
							if (IdleOverrides["footAirTrickDown0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir10), true, false, 0f);
							if (IdleOverrides["footAirTrick0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
					if (__instance.curTrick == 1)
					{
						if (((Ability)__instance).p.moveAxisX <= -0.75f && configValueAir14 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir14), true, false, 0f);
							if (IdleOverrides["footAirTrickLeft1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisX >= 0.75f && configValueAir17 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir17), true, false, 0f);
							if (IdleOverrides["footAirTrickRight1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisY >= 0.75f && configValueAir20 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir20), true, false, 0f);
							if (IdleOverrides["footAirTrickUp1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisY <= -0.75f && configValueAir23 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir23), true, false, 0f);
							if (IdleOverrides["footAirTrickDown1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir11), true, false, 0f);
							if (IdleOverrides["footAirTrick1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
					if (__instance.curTrick == 2)
					{
						if (((Ability)__instance).p.moveAxisX <= -0.75f && configValueAir15 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir15), true, false, 0f);
							if (IdleOverrides["footAirTrickLeft2cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisX >= 0.75f && configValueAir18 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir18), true, false, 0f);
							if (IdleOverrides["footAirTrickRight2cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisY >= 0.75f && configValueAir21 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir21), true, false, 0f);
							if (IdleOverrides["footAirTrickUp2cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else if (((Ability)__instance).p.moveAxisY <= -0.75f && configValueAir24 != "")
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir24), true, false, 0f);
							if (IdleOverrides["footAirTrickDown2cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir12), true, false, 0f);
							if (IdleOverrides["footAirTrick2cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 1)
				{
					if (__instance.curTrick == 0)
					{
						CheckAnimOverride(IdleOverrides["bmxAirTrick0cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir7), true, false, 0f);
						if (IdleOverrides["bmxAirTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 1)
					{
						CheckAnimOverride(IdleOverrides["bmxAirTrick1cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir8), true, false, 0f);
						if (IdleOverrides["bmxAirTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 2)
					{
						CheckAnimOverride(IdleOverrides["bmxAirTrick2cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir9), true, false, 0f);
						if (IdleOverrides["bmxAirTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 3)
				{
					if (__instance.curTrick == 0)
					{
						CheckAnimOverride(IdleOverrides["inlineAirTrick0cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir4), true, false, -1f);
						if (IdleOverrides["inlineAirTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 1)
					{
						CheckAnimOverride(IdleOverrides["inlineAirTrick1cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir5), true, false, -1f);
						if (IdleOverrides["inlineAirTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 2)
					{
						CheckAnimOverride(IdleOverrides["inlineAirTrick2cfgAnim"]);
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir6), true, false, -1f);
						if (IdleOverrides["inlineAirTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 2)
				{
					bool value = enableTonyCfg.Value;
					if (__instance.curTrick == 0)
					{
						float moveAxisX = ((Ability)__instance).p.moveAxisX;
						float moveAxisY = ((Ability)__instance).p.moveAxisY;
						if (value)
						{
							if (moveAxisX <= -0.25f)
							{
								if (moveAxisY <= -0.25f || moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir), true, false, -1f);
									if (IdleOverrides["skateboardAirTrick0cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundTrick0"), true, false, -1f);
								}
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisX >= 0.25f)
							{
								if (moveAxisY <= -0.25f || moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir), true, false, -1f);
									if (IdleOverrides["skateboardAirTrick0cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundTrick2"), true, false, -1f);
								}
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisY <= -0.25f)
							{
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("grindTrick0"), true, false, -1f);
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisY >= 0.25f)
							{
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundTrick3"), true, false, -1f);
								VertAbilityPatches.overridingIdle = false;
							}
							else
							{
								CheckAnimOverride(IdleOverrides["skateboardAirTrick0cfgAnim"]);
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir), true, false, -1f);
								if (IdleOverrides["skateboardAirTrick0cfg"])
								{
									VertAbilityPatches.overridingIdle = true;
								}
								else
								{
									VertAbilityPatches.overridingIdle = false;
								}
							}
						}
						else
						{
							CheckAnimOverride(IdleOverrides["skateboardAirTrick0cfgAnim"]);
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir), true, false, -1f);
							if (IdleOverrides["skateboardAirTrick0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
					else if (__instance.curTrick == 1)
					{
						if (value && ((Ability)__instance).p.slideButtonHeld)
						{
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("groundBoostTrick0"), false, false, -1f);
							VertAbilityPatches.overridingIdle = false;
						}
						else
						{
							CheckAnimOverride(IdleOverrides["skateboardAirTrick1cfgAnim"]);
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir2), false, false, -1f);
							if (IdleOverrides["skateboardAirTrick1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
					else if (__instance.curTrick == 2)
					{
						if (value)
						{
							if (((Ability)__instance).p.moveAxisX >= 0.25f)
							{
								if (((Ability)__instance).p.moveAxisY <= -0.25f && BunchOfEmotesSupport.Installed)
								{
									CheckAnimOverride(overrideAnim: true);
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("christ air"), false, false, -1f);
									VertAbilityPatches.overridingIdle = false;
								}
								else if (((Ability)__instance).p.moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir3), false, false, -1f);
									if (IdleOverrides["skateboardAirTrick1cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName("airTrick1"), false, false, -1f);
									VertAbilityPatches.overridingIdle = false;
								}
							}
							else
							{
								CheckAnimOverride(IdleOverrides["skateboardAirTrick2cfgAnim"]);
								((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir3), false, false, -1f);
								if (IdleOverrides["skateboardAirTrick1cfg"])
								{
									VertAbilityPatches.overridingIdle = true;
								}
								else
								{
									VertAbilityPatches.overridingIdle = false;
								}
							}
						}
						else
						{
							CheckAnimOverride(IdleOverrides["skateboardAirTrick2cfgAnim"]);
							((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir3), false, false, -1f);
							if (IdleOverrides["skateboardAirTrick1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
				}
				else if (VertAbilityPatches.nonVanillaMovestyle)
				{
					((Ability)__instance).p.PlayAnim(__instance.airTrickHashes[__instance.curTrick], true, false, 0f);
				}
				((Ability)__instance).p.hitboxLeftLeg.SetActive(false);
				((Ability)__instance).p.hitboxRightLeg.SetActive(false);
				((Ability)__instance).p.hitboxUpperBody.SetActive(false);
			}
			return false;
		}

		[HarmonyPatch(typeof(AirTrickAbility), "SetupBoostTrick")]
		[HarmonyPrefix]
		private static bool SetupBoostTrick_Prefix(AirTrickAbility __instance)
		{
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Invalid comparison between Unknown and I4
			//IL_02f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f8: Invalid comparison between Unknown and I4
			//IL_044b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0451: Invalid comparison between Unknown and I4
			//IL_05a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ab: Invalid comparison between Unknown and I4
			//IL_0c3e: Unknown result type (might be due to invalid IL or missing references)
			string configValueAir = Instance.GetConfigValueAir("skateboardAirBoostTrick0cfg");
			string configValueAir2 = Instance.GetConfigValueAir("skateboardAirBoostTrick1cfg");
			string configValueAir3 = Instance.GetConfigValueAir("skateboardAirBoostTrick2cfg");
			string configValueAir4 = Instance.GetConfigValueAir("inlineAirBoostTrick0cfg");
			string configValueAir5 = Instance.GetConfigValueAir("inlineAirBoostTrick1cfg");
			string configValueAir6 = Instance.GetConfigValueAir("inlineAirBoostTrick2cfg");
			string configValueAir7 = Instance.GetConfigValueAir("bmxAirBoostTrick0cfg");
			string configValueAir8 = Instance.GetConfigValueAir("bmxAirBoostTrick1cfg");
			string configValueAir9 = Instance.GetConfigValueAir("bmxAirBoostTrick2cfg");
			string configValueAir10 = Instance.GetConfigValueAir("footAirBoostTrick0cfg");
			string configValueAir11 = Instance.GetConfigValueAir("footAirBoostTrick1cfg");
			string configValueAir12 = Instance.GetConfigValueAir("footAirBoostTrick2cfg");
			string configValueAir13 = Instance.GetConfigValueAir("footAirBoostTrickLeft0cfg");
			string configValueAir14 = Instance.GetConfigValueAir("footAirBoostTrickLeft1cfg");
			string configValueAir15 = Instance.GetConfigValueAir("footAirBoostTrickLeft2cfg");
			string configValueAir16 = Instance.GetConfigValueAir("footAirBoostTrickRight0cfg");
			string configValueAir17 = Instance.GetConfigValueAir("footAirBoostTrickRight1cfg");
			string configValueAir18 = Instance.GetConfigValueAir("footAirBoostTrickRight2cfg");
			string configValueAir19 = Instance.GetConfigValueAir("footAirBoostTrickUp0cfg");
			string configValueAir20 = Instance.GetConfigValueAir("footAirBoostTrickUp1cfg");
			string configValueAir21 = Instance.GetConfigValueAir("footAirBoostTrickUp2cfg");
			string configValueAir22 = Instance.GetConfigValueAir("footAirBoostTrickDown0cfg");
			string configValueAir23 = Instance.GetConfigValueAir("footAirBoostTrickDown1cfg");
			string configValueAir24 = Instance.GetConfigValueAir("footAirBoostTrickDown2cfg");
			if ((int)((Ability)__instance).p.moveStyle == 2)
			{
				if (__instance.curTrick == 0)
				{
					CheckAnimOverride(IdleOverrides["skateboardAirBoostTrick0cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir), true, false, 0f);
					if (IdleOverrides["skateboardAirBoostTrick0cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 1)
				{
					CheckAnimOverride(IdleOverrides["skateboardAirBoostTrick1cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir2), true, false, 0f);
					if (IdleOverrides["skateboardAirBoostTrick1cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 2)
				{
					CheckAnimOverride(IdleOverrides["skateboardAirBoostTrick2cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir3), true, false, 0f);
					if (IdleOverrides["skateboardAirBoostTrick2cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
			}
			else if ((int)((Ability)__instance).p.moveStyle == 3)
			{
				if (__instance.curTrick == 0)
				{
					CheckAnimOverride(IdleOverrides["inlineAirBoostTrick0cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir4), true, false, 0f);
					if (IdleOverrides["inlineAirBoostTrick0cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 1)
				{
					CheckAnimOverride(IdleOverrides["inlineAirBoostTrick1cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir5), true, false, 0f);
					if (IdleOverrides["inlineAirBoostTrick1cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 2)
				{
					CheckAnimOverride(IdleOverrides["inlineAirBoostTrick2cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir6), true, false, 0f);
					if (IdleOverrides["inlineAirBoostTrick2cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
			}
			else if ((int)((Ability)__instance).p.moveStyle == 1)
			{
				if (__instance.curTrick == 0)
				{
					CheckAnimOverride(IdleOverrides["bmxAirBoostTrick0cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir7), true, false, 0f);
					if (IdleOverrides["bmxAirBoostTrick0cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 1)
				{
					CheckAnimOverride(IdleOverrides["bmxAirBoostTrick1cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir8), true, false, 0f);
					if (IdleOverrides["bmxAirBoostTrick1cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 2)
				{
					CheckAnimOverride(IdleOverrides["bmxAirBoostTrick2cfgAnim"]);
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir9), true, false, 0f);
					if (IdleOverrides["bmxAirBoostTrick2cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
			}
			else if ((int)((Ability)__instance).p.moveStyle == 0)
			{
				if (__instance.curTrick == 0)
				{
					if (((Ability)__instance).p.moveAxisX <= -0.75f && configValueAir13 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir13), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickLeft0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisX >= 0.75f && configValueAir16 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir16), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickRight0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisY >= 0.75f && configValueAir19 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir19), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickUp0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisY <= -0.75f && configValueAir22 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir22), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickDown0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir10), true, false, 0f);
						if (IdleOverrides["footAirBoostTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				if (__instance.curTrick == 1)
				{
					if (((Ability)__instance).p.moveAxisX <= -0.75f && configValueAir14 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir14), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickLeft1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisX >= 0.75f && configValueAir17 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir17), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickRight1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisY >= 0.75f && configValueAir20 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir20), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickUp1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisY <= -0.75f && configValueAir23 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir23), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickDown1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir11), true, false, 0f);
						if (IdleOverrides["footAirBoostTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
				if (__instance.curTrick == 2)
				{
					if (((Ability)__instance).p.moveAxisX <= -0.75f && configValueAir15 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir15), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickLeft2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisX >= 0.75f && configValueAir18 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir18), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickRight2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisY >= 0.75f && configValueAir21 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir21), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickUp2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisY <= -0.75f && configValueAir24 != "")
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir24), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickDown2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(configValueAir12), true, false, 0f);
						if (IdleOverrides["footAirBoostTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
			}
			else if (VertAbilityPatches.nonVanillaMovestyle)
			{
				((Ability)__instance).p.PlayAnim(__instance.airBoostTrickHashes[__instance.curTrick], true, false, 0f);
			}
			((Ability)__instance).p.PlayVoice((AudioClipID)498, (VoicePriority)2, true);
			((Ability)__instance).p.ringParticles.Emit(1);
			__instance.trickType = (TrickType)2;
			__instance.duration *= 1.5f;
			if (!((Ability)__instance).p.isAI)
			{
				((Ability)__instance).p.SetForwardSpeed(((Ability)__instance).p.boostSpeed);
			}
			((Ability)__instance).p.AddBoostCharge(0f - ((Ability)__instance).p.boostTrickCost);
			return false;
		}
	}
	public static class AnimationUtility
	{
		public static int GetAnimationByName(string name)
		{
			if (BunchOfEmotesSupport.Installed && BunchOfEmotesSupport.TryGetGameAnimationForCustomAnimation(name, out var gameAnim))
			{
				return gameAnim;
			}
			return Animator.StringToHash(name);
		}
	}
	[HarmonyPatch(typeof(AirTrickAbility))]
	[HarmonyPatch("OnStopAbility")]
	public class ATAonStopAbilityPatch
	{
		public static void Postfix()
		{
			if (VertAbilityPatches.forcingFootController)
			{
				VertAbilityPatches.forcingFootController = false;
				VertAbilityPatches.RestoreAnimController();
			}
		}
	}
	[HarmonyPatch(typeof(SlideAbility))]
	[HarmonyPatch("OnStopAbility")]
	public class SAonStopAbilityPatch
	{
		public static void Postfix()
		{
			if (VertAbilityPatches.forcingFootController)
			{
				VertAbilityPatches.forcingFootController = false;
				VertAbilityPatches.RestoreAnimController();
			}
		}
	}
	[HarmonyPatch(typeof(GrindAbility))]
	[HarmonyPatch("OnStopAbility")]
	public class GRIonStopAbilityPatch
	{
		public static void Postfix()
		{
			if (VertAbilityPatches.forcingFootController)
			{
				VertAbilityPatches.forcingFootController = false;
				VertAbilityPatches.RestoreAnimController();
			}
		}
	}
	[HarmonyPatch(typeof(GroundTrickAbility))]
	[HarmonyPatch("OnStopAbility")]
	public class GROonStopAbilityPatch
	{
		public static void Postfix()
		{
			if (VertAbilityPatches.forcingFootController)
			{
				VertAbilityPatches.forcingFootController = false;
				VertAbilityPatches.RestoreAnimController();
			}
		}
	}
	[HarmonyPatch(typeof(WallrunLineAbility))]
	public static class WallrunLineAbilityPatches
	{
		public static float wallrunDuration;

		public static float postWallrunTimer;

		private const float wallrunThreshold = 0.1f;

		public static bool hasWallRan;

		[HarmonyPatch("OnStartAbility")]
		[HarmonyPostfix]
		public static void Postfix_OnStartAbility(WallrunLineAbility __instance)
		{
			if (__instance != null)
			{
				wallrunDuration = 0f;
				VertAbilityPatches.overridingIdle = false;
			}
		}

		[HarmonyPatch("FixedUpdateAbility")]
		[HarmonyPostfix]
		public static void Postfix_FixedUpdateAbility(WallrunLineAbility __instance)
		{
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Invalid comparison between Unknown and I4
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Invalid comparison between Unknown and I4
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c2: Invalid comparison between Unknown and I4
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Invalid comparison between Unknown and I4
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Invalid comparison between Unknown and I4
			//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ed: Invalid comparison between Unknown and I4
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Invalid comparison between Unknown and I4
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Invalid comparison between Unknown and I4
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Invalid comparison between Unknown and I4
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Invalid comparison between Unknown and I4
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Unknown result type (might be due to invalid IL or missing references)
			//IL_036e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0374: Invalid comparison between Unknown and I4
			//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fe: Invalid comparison between Unknown and I4
			//IL_027d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: Invalid comparison between Unknown and I4
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_020d: Invalid comparison between Unknown and I4
			//IL_0499: Unknown result type (might be due to invalid IL or missing references)
			//IL_049f: Invalid comparison between Unknown and I4
			//IL_0423: Unknown result type (might be due to invalid IL or missing references)
			//IL_0429: Invalid comparison between Unknown and I4
			//IL_03a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ae: Invalid comparison between Unknown and I4
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_0338: Invalid comparison between Unknown and I4
			//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d9: Invalid comparison between Unknown and I4
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0463: Invalid comparison between Unknown and I4
			if (((Ability)__instance).p.ability == ((Ability)__instance).p.wallrunAbility)
			{
				wallrunDuration += Time.deltaTime;
				postWallrunTimer = 0f;
				hasWallRan = false;
			}
			Vector3 velocity;
			if ((int)((Ability)__instance).p.moveStyle == 0)
			{
				velocity = ((Ability)__instance).p.GetVelocity();
				if (((Vector3)(ref velocity)).magnitude >= BPatchTC.wallslideSpeed.Value)
				{
					string configValueMisc = BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideRightCfg");
					string configValueMisc2 = BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideLeftCfg");
					if ((int)__instance.animSide == 2)
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideRightCfg")), false, false, -1f);
					}
					else if ((int)__instance.animSide == 6)
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideLeftCfg")), false, false, -1f);
					}
				}
				else if ((int)__instance.animSide == 2)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideRightCfg")), false, false, -1f);
				}
				else if ((int)__instance.animSide == 6)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideLeftCfg")), false, false, -1f);
				}
			}
			if ((int)((Ability)__instance).p.moveStyle == 3)
			{
				velocity = ((Ability)__instance).p.GetVelocity();
				if (((Vector3)(ref velocity)).magnitude >= BPatchTC.wallslideSpeed.Value)
				{
					if ((int)__instance.animSide == 2)
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideRightInlineCfg")), false, false, -1f);
					}
					else if ((int)__instance.animSide == 6)
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideLeftInlineCfg")), false, false, -1f);
					}
				}
				else if ((int)__instance.animSide == 2)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideRightInlineCfg")), false, false, -1f);
				}
				else if ((int)__instance.animSide == 6)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideLeftInlineCfg")), false, false, -1f);
				}
			}
			if ((int)((Ability)__instance).p.moveStyle == 1)
			{
				velocity = ((Ability)__instance).p.GetVelocity();
				if (((Vector3)(ref velocity)).magnitude >= BPatchTC.wallslideSpeed.Value)
				{
					if ((int)__instance.animSide == 2)
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideRightBMXCfg")), false, false, -1f);
					}
					else if ((int)__instance.animSide == 6)
					{
						((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideLeftBMXCfg")), false, false, -1f);
					}
				}
				else if ((int)__instance.animSide == 2)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideRightBMXCfg")), false, false, -1f);
				}
				else if ((int)__instance.animSide == 6)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideLeftBMXCfg")), false, false, -1f);
				}
			}
			if ((int)((Ability)__instance).p.moveStyle != 2)
			{
				return;
			}
			velocity = ((Ability)__instance).p.GetVelocity();
			if (((Vector3)(ref velocity)).magnitude >= BPatchTC.wallslideSpeed.Value)
			{
				if ((int)__instance.animSide == 2)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideRightSkateboardCfg")), false, false, -1f);
				}
				else if ((int)__instance.animSide == 6)
				{
					((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("highSpeedWallrideLeftSkateboardCfg")), false, false, -1f);
				}
			}
			else if ((int)__instance.animSide == 2)
			{
				((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideRightSkateboardCfg")), false, false, -1f);
			}
			else if ((int)__instance.animSide == 6)
			{
				((Ability)__instance).p.PlayAnim(AnimationUtility.GetAnimationByName(BPatchTC.Instance.GetConfigValueMisc("wallrideLeftSkateboardCfg")), false, false, -1f);
			}
		}

		[HarmonyPatch("OnStopAbility")]
		[HarmonyPostfix]
		public static void Postfix_OnStopAbility(WallrunLineAbility __instance)
		{
			if (__instance != null && wallrunDuration <= Time.deltaTime)
			{
				StartPostWallrunTimer();
				hasWallRan = true;
			}
		}

		public static void StartPostWallrunTimer()
		{
			postWallrunTimer = 0f;
		}
	}
	[BepInPlugin("ConfigTrixMisc", "New Trix Misc", "1.6.0")]
	[BepInProcess("Bomb Rush Cyberfunk.exe")]
	public class BPatchTC : BaseUnityPlugin
	{
		public static bool forcingFootController;

		public static ConfigEntry<bool> enableSwitchCfg;

		public static ConfigEntry<bool> enableFramerideCfg;

		public static ConfigEntry<bool> enableFramerideSoundCfg;

		public static ConfigEntry<bool> enableAnimationBlending;

		public static ConfigEntry<float> defaultAnimationBlendingIn;

		public static ConfigEntry<float> defaultAnimationBlendingOut;

		public static ConfigEntry<string> customAnimationBlending;

		private Dictionary<string, ConfigEntry<string>> configEntries;

		public static ConfigEntry<float> wallslideSpeed;

		public static BPatchTC Instance { get; private set; }

		private void Awake()
		{
			enableSwitchCfg = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "enableSwitchCfg", false, "Disable Boost Switching to On-foot. Set to true when using MoveStyler to fix boost and boost trick animations not working. Leave this false if you're doing vanilla score attack or your run will be considered invalid.");
			enableFramerideCfg = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "enableFramerideCfg", false, "Enables frameride trick name/score (Leave this false if you're doing vanilla score attack or your run will be considered invalid.)");
			enableFramerideSoundCfg = ((BaseUnityPlugin)this).Config.Bind<bool>("Gener