Decompiled source of NewTrix v1.5.2

NewTrix.dll

Decompiled 2 weeks 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.4.1.0")]
[assembly: AssemblyInformationalVersion("1.4.1")]
[assembly: AssemblyProduct("NewTrix")]
[assembly: AssemblyTitle("NewTrix")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.4.1.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.4.1")]
	[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.4.1")]
	[BepInProcess("Bomb Rush Cyberfunk.exe")]
	public class ATAPatchTC : BaseUnityPlugin
	{
		public static Dictionary<string, bool> IdleOverrides = new Dictionary<string, bool>();

		public static ConfigEntry<bool> enableTonyCfg;

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

		public static ATAPatchTC Instance { get; private set; }

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

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

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

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

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

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

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

		public static float postWallrunTimer;

		private const float wallrunThreshold = 0.1f;

		public static bool hasWallRan;

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

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

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

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

		public static ConfigEntry<bool> enableSwitchCfg;

		public static ConfigEntry<bool> enableFramerideCfg;

		public static ConfigEntry<bool> enableFramerideSoundCfg;

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

		public static ConfigEntry<float> wallslideSpeed;

		public static BPatchTC Instance { get; private set; }

		private void Awake()
		{
			enableSwitchCfg = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "enableSwitchCfg", false, "Disable Boost Switching to On-foot (Leave this false if you're doing vanilla score attack or your run will be considered invalid.)");
			enableFramerideCfg = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "enableFramerideCfg", false, "Enables frameride trick name/score (Leave this false if you're doing vanilla score attack or your run will be considered invalid.)");
			enableFramerideSoundCfg = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "enableFramerideSoundCfg", false, "Enables frameride sound.");
			Instance = this;
			wallslideSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Misc", "Wallride (High-Speed) Min Speed", 60f, "High-speed wallride speed. This is in meters per second, so take the number from the dragsun speedometer and move the decimal over by one