Decompiled source of NewTrix v1.3.3

NewTrix.dll

Decompiled a week ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
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.2.0.0")]
[assembly: AssemblyInformationalVersion("1.2.0")]
[assembly: AssemblyProduct("NewTrix")]
[assembly: AssemblyTitle("NewTrix")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace newtrickx
{
	[BepInPlugin("ConfigTrixSlidesAndManuals", "New Trix Slides", "1.2.0")]
	[BepInProcess("Bomb Rush Cyberfunk.exe")]
	internal class SlideAbilityPatches : BaseUnityPlugin
	{
		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");
		}

		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_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Invalid comparison between Unknown and I4
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: 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 = Animator.StringToHash(configValueSlide3);
				__instance.Crouch(true);
			}
			else if ((int)((Ability)__instance).p.moveStyle == 2)
			{
				__instance.trickName = configValueSlide2;
				__instance.rollHash = Animator.StringToHash(configValueSlide);
			}
			else if ((int)((Ability)__instance).p.moveStyle == 3)
			{
				__instance.trickName = configValueSlide6;
				__instance.rollHash = Animator.StringToHash(configValueSlide5);
			}
			else if ((int)((Ability)__instance).p.moveStyle == 1)
			{
				__instance.trickName = configValueSlide8;
				__instance.rollHash = Animator.StringToHash(configValueSlide7);
			}
			__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 VertAbilityPatches
	{
		[HarmonyPatch("StartTrick")]
		[HarmonyPrefix]
		public static bool StartTrick_Prefix(VertAbility __instance)
		{
			//IL_0579: Unknown result type (might be due to invalid IL or missing references)
			//IL_057f: Invalid comparison between Unknown and I4
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Invalid comparison between Unknown and I4
			//IL_0587: Unknown result type (might be due to invalid IL or missing references)
			//IL_058d: Invalid comparison between Unknown and I4
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_020c: Invalid comparison between Unknown and I4
			//IL_05b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bb: Invalid comparison between Unknown and I4
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Invalid comparison between Unknown and I4
			//IL_05e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e6: Invalid comparison between Unknown and I4
			//IL_0366: Unknown result type (might be due to invalid IL or missing references)
			//IL_036c: Invalid comparison between Unknown and I4
			//IL_0651: Unknown result type (might be due to invalid IL or missing references)
			//IL_0657: Invalid comparison between Unknown and I4
			//IL_06fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0704: Invalid comparison between Unknown and I4
			//IL_0c48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0454: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b1: Invalid comparison between Unknown and I4
			//IL_0858: Unknown result type (might be due to invalid IL or missing references)
			//IL_085e: 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())
			{
				((Ability)__instance).p.PlayAnim(airTrickAbility.airBoostTrickHashes[airTrickAbility.curTrick], false, false, -1f);
				if ((int)((Ability)__instance).p.moveStyle == 2)
				{
					if (airTrickAbility.curTrick == 0)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir2), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir3), true, false, 0f);
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 3)
				{
					if (airTrickAbility.curTrick == 0)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir4), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir5), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir6), true, false, 0f);
					}
				}
				if ((int)((Ability)__instance).p.moveStyle == 1)
				{
					if (airTrickAbility.curTrick == 0)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir7), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir8), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir9), true, false, 0f);
					}
				}
				else if ((int)((Ability)__instance).p.moveStyle == 0)
				{
					if (airTrickAbility.curTrick == 0)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir10), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir11), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir12), 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 == 0)
				{
					if (airTrickAbility.curTrick == 0)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir22), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir23), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir24), true, false, 0f);
					}
				}
				if ((int)((Ability)__instance).p.moveStyle == 1)
				{
					if (airTrickAbility.curTrick == 0)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir19), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir20), true, false, 0f);
					}
					if (airTrickAbility.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir21), true, false, 0f);
					}
				}
				if ((int)((Ability)__instance).p.moveStyle == 3)
				{
					if (airTrickAbility.curTrick == 0)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir16), true, false, -1f);
					}
					if (airTrickAbility.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir17), true, false, -1f);
					}
					if (airTrickAbility.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir18), true, false, -1f);
					}
				}
				if ((int)((Ability)__instance).p.moveStyle == 2)
				{
					bool flag = airTrickAbility.curTrick == 0;
					bool flag2 = airTrickAbility.curTrick == 1;
					bool flag3 = airTrickAbility.curTrick == 2;
					if (flag)
					{
						float moveAxisX = ((Ability)__instance).p.moveAxisX;
						float moveAxisY = ((Ability)__instance).p.moveAxisY;
						if (tonyCfg)
						{
							if (moveAxisX <= -0.25f)
							{
								if (moveAxisY <= -0.25f)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir13), true, false, -1f);
								}
								else if (moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir13), true, false, -1f);
								}
								else
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("groundTrick0"), true, false, -1f);
								}
							}
							else if (moveAxisX >= 0.25f)
							{
								if (moveAxisY <= -0.25f)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir13), true, false, -1f);
								}
								else if (moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir13), true, false, -1f);
								}
								else
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("groundTrick2"), true, false, -1f);
								}
							}
							else if (moveAxisY <= -0.25f)
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash("grindTrick0"), true, false, -1f);
							}
							else if (moveAxisY >= 0.25f)
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash("groundTrick3"), true, false, -1f);
							}
							else
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir13), true, false, -1f);
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir13), true, false, -1f);
						}
					}
					if (flag2)
					{
						if (tonyCfg)
						{
							if (((Ability)__instance).p.slideButtonHeld)
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash("groundBoostTrick0"), false, false, -1f);
							}
							else
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir14), false, false, -1f);
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir14), false, false, -1f);
						}
					}
					if (flag3)
					{
						if (tonyCfg)
						{
							if (((Ability)__instance).p.moveAxisX >= 0.25f)
							{
								if (((Ability)__instance).p.moveAxisY <= -0.25f)
								{
									Console.WriteLine("EVEN FLOOOOOW");
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("airBoostTrick2"), false, false, -1f);
								}
								else if (((Ability)__instance).p.moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir15), false, false, -1f);
								}
								else
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("airTrick1"), false, false, -1f);
								}
							}
							else
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir15), false, false, -1f);
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir15), false, false, -1f);
						}
					}
				}
			}
			__instance.trickScoreBuffered = true;
			__instance.trickTimer = __instance.trickDuration;
			__instance.trickType = (TrickType)1;
			return false;
		}
	}
}
namespace trickyclown
{
	[BepInPlugin("ConfigTrixAirTricks", "New Trix Air", "1.2.0")]
	[BepInProcess("Bomb Rush Cyberfunk.exe")]
	public class ATAPatchTC : BaseUnityPlugin
	{
		public static Dictionary<string, bool> IdleOverrides = new Dictionary<string, bool>();

		public static ConfigEntry<bool> enableTonyCfg;

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

		public static ATAPatchTC Instance { get; private set; }

		private void Awake()
		{
			IdleOverrides["skateboardAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 0 Fall Override", false, "Override fall for Button 1 trick (FALL OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["skateboardAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 1 Fall Override", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["skateboardAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Trick 2 Fall Override", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["skateboardAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 0 Fall Override", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["skateboardAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 1 Fall Override", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["skateboardAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Skateboard Air Tricks", "Skateboard Boost Trick 2 Fall Override", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["inlineAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 0 Fall Override", false, "Override fall for Button 1 trick (FALL OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["inlineAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 1 Fall Override", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["inlineAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Trick 2 Fall Override", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["inlineAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 0 Fall Override", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["inlineAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 1 Fall Override", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["inlineAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("Inline Air Tricks", "Inline Boost Trick 2 Fall Override", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["bmxAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 0 Fall Override", false, "Override fall for Button 1 trick (FALL OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["bmxAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 1 Fall Override", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["bmxAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Trick 2 Fall Override", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["bmxAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 0 Fall Override", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["bmxAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 1 Fall Override", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["bmxAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("BMX Air Tricks", "Bmx Boost Trick 2 Fall Override", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["footAirTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Trick 0 Fall Override", false, "Override fall for Button 1 trick (FALL OVERRIDES REQUIRE GAME RESTART TO TAKE EFFECT)").Value;
			IdleOverrides["footAirTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Trick 1 Fall Override", false, "Override fall for Button 2 trick").Value;
			IdleOverrides["footAirTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Trick 2 Fall Override", false, "Override fall for Button 3 trick").Value;
			IdleOverrides["footAirBoostTrick0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Boost Trick 0 Fall Override", false, "Override fall for Button 1 boost trick").Value;
			IdleOverrides["footAirBoostTrick1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Boost Trick 1 Fall Override", false, "Override fall for Button 2 boost trick").Value;
			IdleOverrides["footAirBoostTrick2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Air Tricks", "Foot Boost Trick 2 Fall Override", false, "Override fall for Button 3 boost trick").Value;
			IdleOverrides["footAirTrickLeft0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot TrickLeft 0 Fall Override", false, "Override fall for Button 1 TrickLeft").Value;
			IdleOverrides["footAirTrickLeft1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot TrickLeft 1 Fall Override", false, "Override fall for Button 2 TrickLeft").Value;
			IdleOverrides["footAirTrickLeft2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot TrickLeft 2 Fall Override", false, "Override fall for Button 3 TrickLeft").Value;
			IdleOverrides["footAirBoostTrickLeft0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Left Air Tricks", "Foot Boost TrickLeft 0 Fall Override", 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 Fall Override", 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 Fall Override", false, "Override fall for Button 3 boost TrickLeft").Value;
			IdleOverrides["footAirTrickRight0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot TrickRight 0 Fall Override", false, "Override fall for Button 1 TrickRight").Value;
			IdleOverrides["footAirTrickRight1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot TrickRight 1 Fall Override", false, "Override fall for Button 2 TrickRight").Value;
			IdleOverrides["footAirTrickRight2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot TrickRight 2 Fall Override", false, "Override fall for Button 3 TrickRight").Value;
			IdleOverrides["footAirBoostTrickRight0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Right Air Tricks", "Foot Boost TrickRight 0 Fall Override", 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 Fall Override", 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 Fall Override", false, "Override fall for Button 3 boost TrickRight").Value;
			IdleOverrides["footAirTrickUp0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot TrickUp 0 Fall Override", false, "Override fall for Button 1 TrickUp").Value;
			IdleOverrides["footAirTrickUp1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot TrickUp 1 Fall Override", false, "Override fall for Button 2 TrickUp").Value;
			IdleOverrides["footAirTrickUp2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot TrickUp 2 Fall Override", false, "Override fall for Button 3 TrickUp").Value;
			IdleOverrides["footAirBoostTrickUp0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Up Air Tricks", "Foot Boost TrickUp 0 Fall Override", 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 Fall Override", 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 Fall Override", false, "Override fall for Button 3 boost TrickUp").Value;
			IdleOverrides["footAirTrickDown0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot TrickDown 0 Fall Override", false, "Override fall for Button 1 TrickDown").Value;
			IdleOverrides["footAirTrickDown1cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot TrickDown 1 Fall Override", false, "Override fall for Button 2 TrickDown").Value;
			IdleOverrides["footAirTrickDown2cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot TrickDown 2 Fall Override", false, "Override fall for Button 3 TrickDown").Value;
			IdleOverrides["footAirBoostTrickDown0cfg"] = ((BaseUnityPlugin)this).Config.Bind<bool>("On-foot Down Air Tricks", "Foot Boost TrickDown 0 Fall Override", 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 Fall Override", 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 Fall Override", false, "Override fall for Button 3 boost TrickDown").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)
			{
				Console.WriteLine("ATAPatchTC.Instance is null in Init_Prefix.");
				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_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_0220: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Invalid comparison between Unknown and I4
			//IL_022e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0234: Invalid comparison between Unknown and I4
			//IL_0255: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Invalid comparison between Unknown and I4
			//IL_0279: Unknown result type (might be due to invalid IL or missing references)
			//IL_027f: Invalid comparison between Unknown and I4
			//IL_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e1: Invalid comparison between Unknown and I4
			//IL_0929: Unknown result type (might be due to invalid IL or missing references)
			//IL_092f: Invalid comparison between Unknown and I4
			//IL_0a44: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a4a: Invalid comparison between Unknown and I4
			//IL_0b5e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b64: Invalid comparison between Unknown and I4
			if ((Object)(object)Instance == (Object)null)
			{
				Console.WriteLine("ATAPatchTC.Instance is null in Init_Prefix.");
				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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(configValueAir22), true, false, 0f);
							if (IdleOverrides["footAirTrickDown0cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(configValueAir23), true, false, 0f);
							if (IdleOverrides["footAirTrickDown1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(configValueAir24), true, false, 0f);
							if (IdleOverrides["footAirTrickDown2cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(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)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir7), true, false, 0f);
						if (IdleOverrides["bmxAirTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir8), true, false, 0f);
						if (IdleOverrides["bmxAirTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(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)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir4), true, false, -1f);
						if (IdleOverrides["inlineAirTrick0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 1)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir5), true, false, -1f);
						if (IdleOverrides["inlineAirTrick1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (__instance.curTrick == 2)
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash(configValueAir), true, false, -1f);
									if (IdleOverrides["skateboardAirTrick0cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("groundTrick0"), true, false, -1f);
								}
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisX >= 0.25f)
							{
								if (moveAxisY <= -0.25f || moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir), true, false, -1f);
									if (IdleOverrides["skateboardAirTrick0cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("groundTrick2"), true, false, -1f);
								}
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisY <= -0.25f)
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash("grindTrick0"), true, false, -1f);
								VertAbilityPatches.overridingIdle = false;
							}
							else if (moveAxisY >= 0.25f)
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash("groundTrick3"), true, false, -1f);
								VertAbilityPatches.overridingIdle = false;
							}
							else
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir), true, false, -1f);
								if (IdleOverrides["skateboardAirTrick0cfg"])
								{
									VertAbilityPatches.overridingIdle = true;
								}
								else
								{
									VertAbilityPatches.overridingIdle = false;
								}
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash("groundBoostTrick0"), false, false, -1f);
							VertAbilityPatches.overridingIdle = false;
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(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)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("airBoostTrick2"), false, false, -1f);
									VertAbilityPatches.overridingIdle = false;
								}
								else if (((Ability)__instance).p.moveAxisY >= 0.25f)
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir3), false, false, -1f);
									if (IdleOverrides["skateboardAirTrick1cfg"])
									{
										VertAbilityPatches.overridingIdle = true;
									}
									else
									{
										VertAbilityPatches.overridingIdle = false;
									}
								}
								else
								{
									((Ability)__instance).p.PlayAnim(Animator.StringToHash("airTrick1"), false, false, -1f);
									VertAbilityPatches.overridingIdle = false;
								}
							}
							else
							{
								((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir3), false, false, -1f);
								if (IdleOverrides["skateboardAirTrick1cfg"])
								{
									VertAbilityPatches.overridingIdle = true;
								}
								else
								{
									VertAbilityPatches.overridingIdle = false;
								}
							}
						}
						else
						{
							((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir3), false, false, -1f);
							if (IdleOverrides["skateboardAirTrick1cfg"])
							{
								VertAbilityPatches.overridingIdle = true;
							}
							else
							{
								VertAbilityPatches.overridingIdle = false;
							}
						}
					}
				}
				((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_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Invalid comparison between Unknown and I4
			//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d3: Invalid comparison between Unknown and I4
			//IL_04e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Invalid comparison between Unknown and I4
			//IL_0b68: 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)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir), true, false, 0f);
					if (IdleOverrides["skateboardAirBoostTrick0cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 1)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir2), true, false, 0f);
					if (IdleOverrides["skateboardAirBoostTrick1cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 2)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(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)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir4), true, false, 0f);
					if (IdleOverrides["inlineAirBoostTrick0cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 1)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir5), true, false, 0f);
					if (IdleOverrides["inlineAirBoostTrick1cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 2)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(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)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir7), true, false, 0f);
					if (IdleOverrides["bmxAirBoostTrick0cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 1)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir8), true, false, 0f);
					if (IdleOverrides["bmxAirBoostTrick1cfg"])
					{
						VertAbilityPatches.overridingIdle = true;
					}
					else
					{
						VertAbilityPatches.overridingIdle = false;
					}
				}
				else if (__instance.curTrick == 2)
				{
					((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash(configValueAir13), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickLeft0cfg"])
						{
							Console.WriteLine("trick overridingIdle = true");
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							Console.WriteLine("trick overridingIdle = false");
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else if (((Ability)__instance).p.moveAxisX >= 0.75f && configValueAir16 != "")
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(configValueAir22), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickDown0cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(configValueAir23), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickDown1cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(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(Animator.StringToHash(configValueAir24), true, false, 0f);
						if (IdleOverrides["footAirBoostTrickDown2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
					else
					{
						((Ability)__instance).p.PlayAnim(Animator.StringToHash(configValueAir12), true, false, 0f);
						if (IdleOverrides["footAirBoostTrick2cfg"])
						{
							VertAbilityPatches.overridingIdle = true;
						}
						else
						{
							VertAbilityPatches.overridingIdle = false;
						}
					}
				}
			}
			((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;
		}
	}
	[HarmonyPatch(typeof(Player))]
	[HarmonyPatch("DoTrick")]
	public class DoTrickPatch
	{
		[HarmonyPostfix]
		public static void Postfix(Player __instance, TrickType type, string trickName, int trickNum)
		{
			if (trickName == "Frameride")
			{
				__instance.currentTrickPoints = 0;
			}
		}
	}
	[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;
				Console.WriteLine("overridingIdle = false");
			}
		}

		[HarmonyPatch("FixedUpdateAbility")]
		[HarmonyPostfix]
		public static void Postfix_FixedUpdateAbility(WallrunLineAbility __instance)
		{
			if (__instance != null && !((Object)(object)((Ability)__instance).p == (Object)null) && ((Ability)__instance).p.ability == ((Ability)__instance).p.wallrunAbility)
			{
				wallrunDuration += Time.deltaTime;
				postWallrunTimer = 0f;
				hasWallRan = false;
			}
		}

		[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 ConfigEntry<bool> enableSwitchCfg;

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

		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.)");
			Instance = this;
			configEntries = new Dictionary<string, ConfigEntry<string>>
			{
				{
					"airBoostCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Midair Boost", "boostRun", "Midair Boost")
				},
				{
					"groundBoostCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Ground Boost", "boostRun", "Ground Boost")
				},
				{
					"airBoostInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Midair Boost (Inline)", "boostRun", "Midair Boost (Inline)")
				},
				{
					"groundBoostInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Ground Boost (Inline)", "boostRun", "Ground Boost (Inline)")
				},
				{
					"airBoostSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Midair Boost (Skateboard)", "boostRun", "Midair Boost (Skateboard)")
				},
				{
					"groundBoostSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Ground Boost (Skateboard)", "boostRun", "Ground Boost (Skateboard)")
				},
				{
					"airBoostBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Midair Boost (BMX)", "boostRun", "Midair Boost (BMX)")
				},
				{
					"groundBoostBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Ground Boost (BMX)", "boostRun", "Ground Boost (BMX)")
				},
				{
					"airdashCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Airdash", "airDash", "Airdash")
				},
				{
					"airdashInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Inline Airdash", "airDash", "Inline Airdash")
				},
				{
					"airdashSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Skateboard Airdash", "airDash", "Skateboard Airdash")
				},
				{
					"airdashBmxCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "BMX Airdash", "airDash", "BMX Airdash")
				},
				{
					"landRunCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Land into Run", "landRun", "Land from Run")
				},
				{
					"startRunCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Start Run", "startRun", "Start Run")
				},
				{
					"stopRunCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Stop Run", "stopRun", "Stop Run")
				},
				{
					"walkCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Walk", "walk", "Walk")
				},
				{
					"runCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Run", "run", "Run")
				},
				{
					"fallCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Fall", "fall", "Fall")
				},
				{
					"idleCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Idle", "idle", "Idle")
				},
				{
					"idleFidget1Cfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2", "Idle Fidget", "idleFidget1", "Idle Fidget. Leave blank for no idle fidget.")
				},
				{
					"landRunCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Land into Run", "landRun", "Land from Run")
				},
				{
					"startRunCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Start Run", "startRun", "Start Run")
				},
				{
					"stopRunCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Stop Run", "stopRun", "Stop Run")
				},
				{
					"walkCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Walk", "walk", "Walk")
				},
				{
					"runCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Run", "run", "Run")
				},
				{
					"fallCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Fall", "fall", "Fall")
				},
				{
					"idleCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Idle", "idle", "Idle")
				},
				{
					"idleFidget1CfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Inline", "Idle Fidget", "idleFidget1", "Idle Fidget. Leave blank for no idle fidget.")
				},
				{
					"landRunCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Land into Run", "landRun", "Land from Run")
				},
				{
					"startRunCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Start Run", "startRun", "Start Run")
				},
				{
					"stopRunCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Stop Run", "stopRun", "Stop Run")
				},
				{
					"walkCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Walk", "walk", "Walk")
				},
				{
					"runCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Run", "run", "Run")
				},
				{
					"fallCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Fall", "fall", "Fall")
				},
				{
					"idleCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Idle", "idle", "Idle")
				},
				{
					"idleFidget1CfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 Skateboard", "Idle Fidget", "idleFidget1", "Idle Fidget. Leave blank for no idle fidget.")
				},
				{
					"landRunCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Land into Run", "landRun", "Land from Run")
				},
				{
					"startRunCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Start Run", "startRun", "Start Run")
				},
				{
					"stopRunCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Stop Run", "stopRun", "Stop Run")
				},
				{
					"walkCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Walk", "walk", "Walk")
				},
				{
					"runCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Run", "run", "Run")
				},
				{
					"fallCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Fall", "fall", "Fall")
				},
				{
					"idleCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Idle", "idle", "Idle")
				},
				{
					"idleFidget1CfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc 2 BMX", "Idle Fidget", "idleFidget1", "Idle Fidget. Leave blank for no idle fidget.")
				},
				{
					"jumpCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Jump", "jump", "Jump")
				},
				{
					"jumpCfgInline",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Jump Inline", "jump", "Jump Inline")
				},
				{
					"jumpCfgSkateboard",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Jump Skateboard", "jump", "Jump Skateboard")
				},
				{
					"jumpCfgBMX",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Jump BMX", "jump", "Jump BMX")
				},
				{
					"boostBrakeCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Brake", "boostBrake", "Boost Brake")
				},
				{
					"boostBrakeInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Brake Inline", "boostBrake", "Boost Brake Inline")
				},
				{
					"boostBrakeSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Brake Skateboard", "boostBrake", "Boost Brake Skateboard")
				},
				{
					"boostBrakeBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Brake BMX", "boostBrake", "Boost Brake BMX")
				},
				{
					"boostStartCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Start", "startBoost", "Boost Start. If you want this to be the same as your ground boost, leave it blank, otherwise it won't work.")
				},
				{
					"boostStartInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Start Inline", "startBoost", "Boost Start Inline. If you want this to be the same as your ground boost, leave it blank, otherwise it won't work.")
				},
				{
					"boostStartSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Start Skateboard", "startBoost", "Boost Start Skateboard. If you want this to be the same as your ground boost, leave it blank, otherwise it won't work.")
				},
				{
					"boostStartBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Boost Start BMX", "startBoost", "Boost Start BMX. If you want this to be the same as your ground boost, leave it blank, otherwise it won't work.")
				},
				{
					"poleFreezeCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Handplant/Pole Freeze", "poleFreeze", "Handplant/Pole Freeze")
				},
				{
					"poleFreezeInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Handplant/Pole Freeze Inline", "poleFreeze", "Handplant/Pole Freeze Inline")
				},
				{
					"poleFreezeSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Handplant/Pole Freeze Skateboard", "poleFreeze", "Handplant/Pole Freeze Skateboard")
				},
				{
					"poleFreezeBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Handplant/Pole Freeze BMX", "poleFreeze", "Handplant/Pole Freeze BMX")
				},
				{
					"poleFlipCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Pole Flip", "poleFlip", "Pole Flip")
				},
				{
					"poleFlipInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Pole Flip Inline", "poleFlip", "Pole Flip Inline")
				},
				{
					"poleFlipSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Pole Flip Skateboard", "poleFlip", "Pole Flip Skateboard")
				},
				{
					"poleFlipBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Pole Flip BMX", "poleFlip", "Pole Flip BMX")
				},
				{
					"jumpTrickCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Trick Jump/Corkscrew", "jumpTrick1", "Trick Jump/Corkscrew")
				},
				{
					"jumpTrickInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Trick Jump Inline/Corkscrew", "jumpTrick1", "Trick Jump Inline/Corkscrew")
				},
				{
					"jumpTrickSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Trick Jump Skateboard/McTwist", "jumpTrick1", "Trick Jump Skateboard/McTwist")
				},
				{
					"jumpTrickBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Trick Jump BMX/360 Backflip", "jumpTrick1", "Trick Jump BMX/360 Backflip")
				},
				{
					"goonCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Frameride", "protectArmsWideIdle", "Frameride")
				},
				{
					"goonInlineCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Frameride Inline", "grafSlashFinisher", "Frameride Inline")
				},
				{
					"goonSkateboardCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Frameride Skateboard", "knockBackBig", "Frameride Skateboard")
				},
				{
					"goonBMXCfg",
					((BaseUnityPlugin)this).Config.Bind<string>("Misc", "Frameride BMX", "surrender", "Frameride BMX")
				}
			};
		}

		public static bool GetSwitchCfg()
		{
			return enableSwitchCfg.Value;
		}

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

		[HarmonyPatch(typeof(BoostAbility), "OnStartAbility")]
		[HarmonyPrefix]
		private static bool OnStartAbilityPrefix(BoostAbility __instance)
		{
			VertAbilityPatches.overridingIdle = false;
			if (__instance == null)
			{
				return true;
			}
			if (!enableSwitchCfg.Value)
			{
				return true;
			}
			__instance.haveAirStartBoost = false;
			__instance.equippedMovestyleWasUsed = (Object)(object)((Ability)__instance).p != (Object)null && ((Ability)__instance).p.usingEquippedMovestyle;
			__instance.SetState((State)0);
			return false;
		}

		[HarmonyPatch(typeof(Player), "FixedUpdatePlayer")]
		[HarmonyPostfix]
		private static void FixedUpdatePlayerPostfix(Player __instance)
		{
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0224: Invalid comparison between Unknown and I4
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Invalid comparison between Unknown and I4
			//IL_035e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Invalid comparison between Unknown and I4
			//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Invalid comparison between Unknown and I4
			string configValueMisc = Instance.GetConfigValueMisc("landRunCfg");
			string configValueMisc2 = Instance.GetConfigValueMisc("startRunCfg");
			string configValueMisc3 = Instance.GetConfigValueMisc("stopRunCfg");
			string configValueMisc4 = Instance.GetConfigValueMisc("walkCfg");
			string configValueMisc5 = Instance.GetConfigValueMisc("runCfg");
			string configValueMisc6 = Instance.GetConfigValueMisc("fallCfg");
			string configValueMisc7 = Instance.GetConfigValueMisc("idleCfg");
			string configValueMisc8 = Instance.GetConfigValueMisc("idleFidget1Cfg");
			string configValueMisc9 = Instance.GetConfigValueMisc("landRunCfgInline");
			string configValueMisc10 = Instance.GetConfigValueMisc("startRunCfgInline");
			string configValueMisc11 = Instance.GetConfigValueMisc("stopRunCfgInline");
			string configValueMisc12 = Instance.GetConfigValueMisc("walkCfgInline");
			string configValueMisc13 = Instance.GetConfigValueMisc("runCfgInline");
			string configValueMisc14 = Instance.GetConfigValueMisc("fallCfgInline");
			string configValueMisc15 = Instance.GetConfigValueMisc("idleCfgInline");
			string configValueMisc16 = Instance.GetConfigValueMisc("idleFidget1CfgInline");
			string configValueMisc17 = Instance.GetConfigValueMisc("landRunCfgSkateboard");
			string configValueMisc18 = Instance.GetConfigValueMisc("startRunCfgSkateboard");
			string configValueMisc19 = Instance.GetConfigValueMisc("stopRunCfgSkateboard");
			string configValueMisc20 = Instance.GetConfigValueMisc("walkCfgSkateboard");
			string configValueMisc21 = Instance.GetConfigValueMisc("runCfgSkateboard");
			string configValueMisc22 = Instance.GetConfigValueMisc("fallCfgSkateboard");
			string configValueMisc23 = Instance.GetConfigValueMisc("idleCfgSkateboard");
			string configValueMisc24 = Instance.GetConfigValueMisc("idleFidget1CfgSkateboard");
			string configValueMisc25 = Instance.GetConfigValueMisc("landRunCfgBMX");
			string configValueMisc26 = Instance.GetConfigValueMisc("startRunCfgBMX");
			string configValueMisc27 = Instance.GetConfigValueMisc("stopRunCfgBMX");
			string configValueMisc28 = Instance.GetConfigValueMisc("walkCfgBMX");
			string configValueMisc29 = Instance.GetConfigValueMisc("runCfgBMX");
			string configValueMisc30 = Instance.GetConfigValueMisc("fallCfgBMX");
			string configValueMisc31 = Instance.GetConfigValueMisc("idleCfgBMX");
			string configValueMisc32 = Instance.GetConfigValueMisc("idleFidget1CfgBMX");
			if ((int)__instance.moveStyle == 3)
			{
				__instance.landRunHash = Animator.StringToHash(configValueMisc9);
				__instance.startRunHash = Animator.StringToHash(configValueMisc10);
				__instance.stopRunHash = Animator.StringToHash(configValueMisc11);
				__instance.walkHash = Animator.StringToHash(configValueMisc12);
				__instance.runHash = Animator.StringToHash(configValueMisc13);
				__instance.idleHash = Animator.StringToHash(configValueMisc15);
				__instance.idleFidget1Hash = Animator.StringToHash(configValueMisc16);
				if (VertAbilityPatches.overridingIdle)
				{
					__instance.fallHash = Animator.StringToHash("");
				}
				else
				{
					__instance.fallHash = Animator.StringToHash(configValueMisc14);
				}
			}
			else if ((int)__instance.moveStyle == 2)
			{
				__instance.landRunHash = Animator.StringToHash(configValueMisc17);
				__instance.startRunHash = Animator.StringToHash(configValueMisc18);
				__instance.stopRunHash = Animator.StringToHash(configValueMisc19);
				__instance.walkHash = Animator.StringToHash(configValueMisc20);
				__instance.runHash = Animator.StringToHash(configValueMisc21);
				__instance.idleHash = Animator.StringToHash(configValueMisc23);
				__instance.idleFidget1Hash = Animator.StringToHash(configValueMisc24);
				if (VertAbilityPatches.overridingIdle)
				{
					__instance.fallHash = Animator.StringToHash("");
				}
				else
				{
					__instance.fallHash = Animator.StringToHash(configValueMisc22);
				}
			}
			else if ((int)__instance.moveStyle == 1)
			{
				__instance.landRunHash = Animator.StringToHash(configValueMisc25);
				__instance.startRunHash = Animator.StringToHash(configValueMisc26);
				__instance.stopRunHash = Animator.StringToHash(configValueMisc27);
				__instance.walkHash = Animator.StringToHash(configValueMisc28);
				__instance.runHash = Animator.StringToHash(configValueMisc29);
				__instance.idleHash = Animator.StringToHash(configValueMisc31);
				__instance.idleFidget1Hash = Animator.StringToHash(configValueMisc32);
				if (VertAbilityPatches.overridingIdle)
				{
					__instance.fallHash = Animator.StringToHash("");
				}
				else
				{
					__instance.fallHash = Animator.StringToHash(configValueMisc30);
				}
			}
			else if ((int)__instance.moveStyle == 0)
			{
				__instance.landRunHash = Animator.StringToHash(configValueMisc);
				__instance.startRunHash = Animator.StringToHash(configValueMisc2);
				__instance.stopRunHash = Animator.StringToHash(configValueMisc3);
				__instance.walkHash = Animator.StringToHash(configValueMisc4);
				__instance.runHash = Animator.StringToHash(configValueMisc5);
				__instance.idleHash = Animator.StringToHash(configValueMisc7);
				__instance.idleFidget1Hash = Animator.StringToHash(configValueMisc8);
				if (VertAbilityPatches.overridingIdle)
				{
					__instance.fallHash = Animator.StringToHash("");
				}
				else
				{
					__instance.fallHash = Animator.StringToHash(configValueMisc6);
				}
			}
		}

		[HarmonyPatch(typeof(Player), "Jump")]
		[HarmonyPostfix]
		private static void JumpPostfix(Player __instance)
		{
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Invalid comparison between Unknown and I4
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Invalid comparison between Unknown and I4
			string configValueMisc = Instance.GetConfigValueMisc("jumpCfg");
			string configValueMisc2 = Instance.GetConfigValueMisc("jumpCfgInline");
			string configValueMisc3 = Instance.GetConfigValueMisc("jumpCfgSkateboard");
			string configValueMisc4 = Instance.GetConfigValueMisc("jumpCfgBMX");
			if ((int)__instance.moveStyle == 3)
			{
				__instance.PlayAnim(Animator.StringToHash(configValueMisc2), false, false, -1f);
			}
			else if ((int)__instance.moveStyle == 2)
			{
				__instance.PlayAnim(Animator.StringToHash(configValueMisc3), false, false, -1f);
			}
			else if ((int)__instance.moveStyle == 1)
			{
				__instance.PlayAnim(Animator.StringToHash(configValueMisc4), false, false, -1f);
			}
			else if ((int)__instance.moveStyle == 0)
			{
				__instance.PlayAnim(Animator.StringToHash(configValueMisc), false, false, -1f);
			}
		}

		[HarmonyPatch(typeof(HandplantAbility), "FixedUpdateAbility")]
		[HarmonyPostfix]
		private static void FixedUpdateAbilityPostfix(HandplantAbility __instance)
		{
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Invalid comparison between Unknown and I4
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Invalid comparison between Unknown and I4
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Invalid comparison between Unknown and I4
			string configValueMisc = Instance.GetConfigValueMisc("poleFreezeCfg");
			string configValueMisc2 = Instance.GetConfigValueMisc("poleFreezeInlineCfg");
			string configValueMisc3 = Instance.GetConfigValueMisc("poleFreezeSkateboardCfg");
			string configValueMisc4 = Instance.GetConfigValueMisc("poleFreezeBMXCfg");
			if ((int)((Ability)__instance).p.moveStyle == 0)
			{
				__instance.poleFreezeHash = Animator.StringToHash(configValueMisc);
			}
			if ((int)((Ability)__instance).p.moveStyle == 3)
			{
				__instance.poleFreezeHash = Animator.StringToHash(configValueMisc2);
			}
			if ((int)((Ability)__instance).p.moveStyle == 2)
			{
				__instance.poleFreezeHash = Animator.StringToHash(configValueMisc3);
			}
			if ((int)((Ability)__instance).p.moveStyle == 1)
			{
				__instance.poleFreezeHash = Animator.StringToHash(configValueMisc4);
			}
		}

		[HarmonyPatch(typeof(SpecialAirAbility), "FixedUpdateAbility")]
		[HarmonyPostfix]
		private static void FixedUpdateAbilityPostfix(SpecialAirAbility __instance)
		{
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Invalid comparison between Unknown and I4
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Invalid comparison between Unknown and I4
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Invalid comparison between Unknown and I4
			string configValueMisc = Instance.GetConfigValueMisc("jumpTrickCfg");
			string configValueMisc2 = Instance.GetConfigValueMisc("jumpTrickInlineCfg");
			string configValueMisc3 = Instance.GetConfigValueMisc("jumpTrickSkateboardCfg");
			string configValueMisc4 = Instance.GetConfigValueMisc("jumpTrickBMXCfg");
			if ((int)((Ability)__instance).p.moveStyle == 0)
			{
				__instance.jumpTrick1Hash = Animator.StringToHash(configValueMisc);
			}
			if ((int)((Ability)__instance).p.moveStyle == 3)
			{
				__instance.jumpTrick1Hash = Animator.StringToHash(configValueMisc2);
			}
			if ((int)((Ability)__instance).p.moveStyle == 2)
			{
				__instance.jumpTrick1Hash = Animator.StringToHash(configValueMisc3);
			}
			if ((int)((Ability)__instance).p.moveStyle == 1)
			{
				__instance.jumpTrick1Hash = Animator.StringToHash(configValueMisc4);
			}
		}

		[HarmonyPatch(typeof(FlipOutJumpAbility), "FixedUpdateAbility")]
		[HarmonyPostfix]
		private static void FixedUpdateAbilityPostfix(FlipOutJumpAbility __instance)
		{
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Invalid comparison between Unknown and I4
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Invalid comparison between Unknown and I4
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Invalid comparison between Unknown and I4
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Invalid comparison between Unknown and I4
			string configValueMisc = Instance.GetConf