Decompiled source of NewTrix v1.6.1

NewTrix.dll

Decompiled a month 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(Player))]
	[HarmonyPatch("DoTrick")]
	public class DoTrickPatch
	{
		[HarmonyPrefix]
		public static bool Prefix(Player __instance, TrickType type, string trickName, int trickNum)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Invalid comparison between Unknown and I4
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Invalid comparison between Unknown and I4
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Invalid comparison between Unknown and I4
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f5: Invalid comparison between Unknown and I4
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Invalid comparison between Unknown and I4
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Invalid comparison between Unknown and I4
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fa: Invalid comparison between Unknown and I4
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Invalid comparison between Unknown and I4
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0406: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Invalid comparison between Unknown and I4
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Invalid comparison between Unknown and I4
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013c: Invalid comparison between Unknown and I4
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Invalid comparison between Unknown and I4
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b0: Invalid comparison between Unknown and I4
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Invalid comparison between Unknown and I4
			//IL_0186: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b5: Invalid comparison between Unknown and I4
			//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Invalid comparison between Unknown and I4
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Invalid comparison between Unknown and I4
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d5: Invalid comparison between Unknown and I4
			//IL_04c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c3: Invalid comparison between Unknown and I4
			//IL_021b: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Invalid comparison between Unknown and I4
			//IL_020e: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d9: Invalid comparison between Unknown and I4
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Invalid comparison between Unknown and I4
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_0532: Unknown result type (might be due to invalid IL or missing references)
			//IL_0533: Unknown result type (might be due to invalid IL or missing references)
			//IL_04db: Unknown result type (might be due to invalid IL or missing references)
			//IL_04dd: Invalid comparison between Unknown and I4
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: Invalid comparison between Unknown and I4
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e2: Invalid comparison between Unknown and I4
			//IL_0296: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Invalid comparison between Unknown and I4
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Invalid comparison between Unknown and I4
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0395: Unknown result type (might be due to invalid IL or missing references)
			//IL_0398: Invalid comparison between Unknown and I4
			//IL_02ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ed: Invalid comparison between Unknown and I4
			//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b9: Invalid comparison between Unknown and I4
			//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d0: Invalid comparison between Unknown and I4
			//IL_032d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0330: Invalid comparison between Unknown and I4
			//IL_034c: Unknown result type (might be due to invalid IL or missing references)
			//IL_034f: Invalid comparison between Unknown and I4
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_036e: Invalid comparison between Unknown and I4
			if (!BPatchTC.disableBoostTrickSoundCfg.Value)
			{
				return true;
			}
			if ((int)type == 6)
			{
				__instance.airTricks[trickNum].Use(__instance);
			}
			else if ((int)type == 7)
			{
				__instance.airVertTricks[trickNum].Use(__instance);
				__instance.ResetComboTimeOut();
				__instance.RefreshDegrade(type);
			}
			else if ((int)type == 8)
			{
				__instance.airBoostTricks[trickNum].Use(__instance);
				__instance.ResetComboTimeOut();
				__instance.RefreshDegrade(type);
			}
			else if ((int)type == 1)
			{
				__instance.grindStartTricks[trickNum].Use(__instance);
				__instance.RefreshDegrade(type);
				__instance.ResetComboTimeOut();
			}
			else if ((int)type == 2)
			{
				__instance.grindTricks[trickNum].Use(__instance);
				__instance.RefreshDegrade(type);
				__instance.ResetComboTimeOut();
			}
			else if ((int)type == 3)
			{
				__instance.grindBoostTricks[trickNum].Use(__instance);
				__instance.RefreshDegrade(type);
				__instance.ResetComboTimeOut();
			}
			else if ((int)type == 4)
			{
				__instance.groundTricks[trickNum].Use(__instance);
				__instance.RefreshDegrade(type);
			}
			else if ((int)type == 11)
			{
				__instance.grindStartTricks[0].Use(__instance);
				__instance.RefreshDegrade(type);
				__instance.ResetComboTimeOut();
			}
			else if ((int)type == 5)
			{
				__instance.groundBoostTricks[trickNum].Use(__instance);
				__instance.ResetComboTimeOut();
				__instance.RefreshDegrade(type);
			}
			else if ((int)type == 12)
			{
				__instance.slideTrick.Use(__instance);
				__instance.RefreshDegrade(type);
			}
			else if ((int)type == 9)
			{
				__instance.specialAirTrick.Use(__instance);
				__instance.RefreshDegrade(type);
			}
			else if ((int)type == 15)
			{
				__instance.hitbounceTrick.Use(__instance);
				__instance.RefreshDegrade(type);
				__instance.ResetComboTimeOut();
			}
			else if ((int)type == 13)
			{
				__instance.handplantTrick.Use(__instance);
			}
			else if ((int)type == 10)
			{
				__instance.wallrunTrick.Use(__instance);
				__instance.RefreshDegrade(type);
				__instance.ResetComboTimeOut();
			}
			else if ((int)type == 14)
			{
				__instance.poleFlipTrick.Use(__instance);
			}
			else if ((int)type == 16)
			{
				__instance.currentTrickPoints = 500;
				__instance.ResetComboTimeOut();
			}
			else if (__instance.IsGraffitiTypeTrick(type))
			{
				if ((int)type == 16)
				{
					__instance.currentTrickPoints = 500;
				}
				else
				{
					__instance.newGraffitiBonusMulti = (__instance.graffitiTitlesDone.Contains(trickName) ? 1 : 2);
					__instance.graffitiTitlesDone.Add(trickName);
					if ((int)type == 17)
					{
						__instance.currentTrickPoints = 1000 * __instance.newGraffitiBonusMulti;
					}
					if ((int)type == 18)
					{
						__instance.currentTrickPoints = 1600 * __instance.newGraffitiBonusMulti;
					}
					if ((int)type == 19)
					{
						__instance.currentTrickPoints = 2000 * __instance.newGraffitiBonusMulti;
					}
				}
				__instance.ResetComboTimeOut();
			}
			else if ((int)type == 20)
			{
				__instance.currentTrickPoints = 150;
				__instance.AddScoreMultiplier();
			}
			else if ((int)type == 21)
			{
				__instance.currentTrickPoints = 40;
			}
			else if ((int)type == 22)
			{
				__instance.currentTrickPoints = 25;
			}
			__instance.moveInScoreTimer = 1f;
			if (((int)__instance.currentTrickType == 12 && (int)type == 12) || ((int)__instance.currentTrickType == 22 && (int)type == 22))
			{
				__instance.moveInScoreTimer = 0f;
			}
			else
			{
				if (__instance.tricksInCombo == 0 && (Object)(object)__instance.ui != (Object)null)
				{
					__instance.ui.SetTrickingChargeBarActive(true);
				}
				__instance.tricksInCombo++;
				if (__instance.tricksInCombo >= 5)
				{
					__instance.AddBoostCharge(__instance.showAddCharge = __instance.gainBoostChargeCurve.Evaluate(Mathf.Min((float)__instance.tricksInCombo, 50f) / 50f));
				}
			}
			if ((int)type != 1 && (int)type != 12 && !__instance.IsGraffitiTypeTrick(type) && (int)type != 22)
			{
				__instance.TryToRemoveCuff(((int)type != 8 && (int)type != 3 && (int)type != 5 && (int)type != 9) ? 1 : 5);
			}
			if (__instance.scoreMultiplier == 0f)
			{
				__instance.scoreMultiplier = 1f;
			}
			if (trickName == "")
			{
				trickName = ((object)(TrickType