Decompiled source of OmniGravity v3.0.0

OmniGravity.dll

Decompiled a day 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 System.Threading.Tasks;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using BoplFixedMath;
using CessilCellsCeaChells.CeaChore;
using HarmonyLib;
using HarmonyLib.Tools;
using Microsoft.CodeAnalysis;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RequiresField(typeof(PlayerBody), "grav_dir", typeof(Vector2), false)]
[assembly: RequiresField(typeof(BoplBody), "grav_dir", typeof(Vector2), false)]
[assembly: RequiresField(typeof(BoplBody), "grav_scale", typeof(float), false)]
[assembly: RequiresField(typeof(BoplBody), "grav_enabled", typeof(bool), false)]
[assembly: RequiresField(typeof(RopeBody), "grav_dir", typeof(Vector2), false)]
[assembly: RequiresMethod(typeof(RopeBody), "Awake", typeof(void), new Type[] { })]
[assembly: RequiresField(typeof(PlayerPhysics), "currentInputVector", typeof(Vector2), false)]
[assembly: RequiresField(typeof(SpeedContainer), "grav_dir", typeof(Vector2), false)]
[assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("OmniGravity")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Omni Gravity allows for gravity in any direction")]
[assembly: AssemblyFileVersion("3.0.0.0")]
[assembly: AssemblyInformationalVersion("3.0.0")]
[assembly: AssemblyProduct("OmniGravity")]
[assembly: AssemblyTitle("OmniGravity")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("3.0.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 OmniGravity
{
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "OmniGravity";

		public const string PLUGIN_NAME = "OmniGravity";

		public const string PLUGIN_VERSION = "3.0.0";
	}
}
namespace NewPlugin
{
	[BepInPlugin("com.Starbox614.OmniGravity", "OmniGravity", "3.0.0")]
	public class OmniGravityPlugin : BaseUnityPlugin
	{
		[HarmonyPatch(typeof(PlayerPhysics), "AddGravityFactor")]
		private class PlayerPhysicsAddGravityFactorPatch
		{
			private static bool Prefix(ref Fix ___gravity_accel, ref Fix ___gravity_modifier, ref Fix ___gravity_maxFallSpeed, ref PlayerBody ___body)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_0018: Unknown result type (might be due to invalid IL or missing references)
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				//IL_0047: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0053: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_0069: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_0061: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0080: Unknown result type (might be due to invalid IL or missing references)
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_0092: Unknown result type (might be due to invalid IL or missing references)
				//IL_0097: Unknown result type (might be due to invalid IL or missing references)
				//IL_009c: Unknown result type (might be due to invalid IL or missing references)
				//IL_009e: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00db: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				Vec2 orig = floatVecToFix((Vector2)reflectGet(___body, "grav_dir"));
				float num = Vector2.SignedAngle(fixVecToFloat(orig), Vector2.down);
				Vector3 val = Vector2.op_Implicit(fixVecToFloat(___body.selfImposedVelocity));
				val = Quaternion.AngleAxis(num, Vector3.forward) * val;
				Vec2 val2 = floatVecToFix(Vector2.op_Implicit(val));
				Fix val3 = (Constants.isSpaceLevel ? (___gravity_modifier * (Fix)0.5f) : ___gravity_modifier);
				val2 += Vec2.down * ___gravity_accel * val3;
				Fix val4 = ___gravity_accel * val3 / ___gravity_maxFallSpeed;
				val2 += Vec2.down * val4 * val2.y;
				val = Vector2.op_Implicit(fixVecToFloat(val2));
				val = Quaternion.AngleAxis(0f - num, Vector3.forward) * val;
				val2 = floatVecToFix(Vector2.op_Implicit(val));
				___body.selfImposedVelocity = val2;
				return false;
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(PlayerPhysics), "Jump")]
		private class PlayerPhysicsJumpPatch
		{
			private static bool Prefix(ref PlayerPhysics __instance, ref bool ___jumpedThisFrame, ref bool ___isGrounded, ref StickyRoundedRectangle ___attachedGround, ref PlayerBody ___body, ref Fix ___jumpNormalScaleFactor, ref Fix ___jumpExtraXStrength, ref Fix ___jumpStrength, ref Fix ___extraJumpTeleportMultiplier, ref Fix ___jumpKeptMomentum)
			{
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				//IL_0015: Unknown result type (might be due to invalid IL or missing references)
				//IL_001a: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0042: Unknown result type (might be due to invalid IL or missing references)
				//IL_0047: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_004f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: Unknown result type (might be due to invalid IL or missing references)
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_0069: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				//IL_0072: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				//IL_0088: Unknown result type (might be due to invalid IL or missing references)
				//IL_0089: Unknown result type (might be due to invalid IL or missing references)
				//IL_008e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0093: Unknown result type (might be due to invalid IL or missing references)
				//IL_009a: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0101: Unknown result type (might be due to invalid IL or missing references)
				//IL_0106: Unknown result type (might be due to invalid IL or missing references)
				//IL_0108: Unknown result type (might be due to invalid IL or missing references)
				//IL_010a: Unknown result type (might be due to invalid IL or missing references)
				//IL_010f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0114: Unknown result type (might be due to invalid IL or missing references)
				//IL_0118: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_0124: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				//IL_012b: Unknown result type (might be due to invalid IL or missing references)
				//IL_012d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0132: Unknown result type (might be due to invalid IL or missing references)
				//IL_0137: Unknown result type (might be due to invalid IL or missing references)
				//IL_0139: Unknown result type (might be due to invalid IL or missing references)
				//IL_013b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0140: Unknown result type (might be due to invalid IL or missing references)
				//IL_0145: Unknown result type (might be due to invalid IL or missing references)
				//IL_0149: Unknown result type (might be due to invalid IL or missing references)
				//IL_014e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0153: Unknown result type (might be due to invalid IL or missing references)
				//IL_0155: Unknown result type (might be due to invalid IL or missing references)
				//IL_015a: Unknown result type (might be due to invalid IL or missing references)
				//IL_015c: Unknown result type (might be due to invalid IL or missing references)
				//IL_015e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0163: Unknown result type (might be due to invalid IL or missing references)
				//IL_0168: Unknown result type (might be due to invalid IL or missing references)
				//IL_016d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0171: Unknown result type (might be due to invalid IL or missing references)
				//IL_0176: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_017f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0184: Unknown result type (might be due to invalid IL or missing references)
				//IL_0189: Unknown result type (might be due to invalid IL or missing references)
				//IL_018e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0197: Unknown result type (might be due to invalid IL or missing references)
				//IL_019f: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
				Vector2 val = (Vector2)reflectGet(___body, "grav_dir");
				Vector2 val2 = -val;
				float num = Vector2.SignedAngle(val2, Vector2.up);
				___jumpedThisFrame = true;
				Vec2 orig = ((!___isGrounded) ? floatVecToFix(val2) : ___attachedGround.currentNormal(___body));
				Vector3 val3 = Vector2.op_Implicit(fixVecToFloat(orig));
				val3 = Quaternion.AngleAxis(num, Vector3.forward) * val3;
				orig = floatVecToFix(Vector2.op_Implicit(val3));
				Vec2 val4 = default(Vec2);
				((Vec2)(ref val4))..ctor(orig.x, Fix.Zero);
				Vec2 up = Vec2.up;
				Fix val5 = (orig.y + Fix.One) / ___jumpNormalScaleFactor;
				val5 = Fix.Min(Fix.One, val5);
				val5 = Fix.Max(Fix.Zero, val5);
				up *= val5;
				up += val4 * ___jumpExtraXStrength;
				Vec2 orig2 = new Vec2(orig.y, -orig.x) * __instance.groundedSpeed;
				Vector3 val6 = Vector2.op_Implicit(fixVecToFloat(orig2));
				val6 = Quaternion.AngleAxis(0f - num, Vector3.forward) * val6;
				orig2 = floatVecToFix(Vector2.op_Implicit(val6));
				Vector3 val7 = Vector2.op_Implicit(fixVecToFloat(up));
				val7 = Quaternion.AngleAxis(0f - num, Vector3.forward) * val7;
				up = floatVecToFix(Vector2.op_Implicit(val7));
				___body.selfImposedVelocity = orig2 * ___jumpKeptMomentum + up * ___jumpStrength;
				PlayerBody obj = ___body;
				obj.position += ___body.selfImposedVelocity * ___extraJumpTeleportMultiplier;
				((Component)__instance).transform.position = (Vector3)___body.position;
				__instance.UnGround(true, true);
				return false;
			}
		}

		[HarmonyPatch(typeof(PlayerPhysics), "Move")]
		private class PlayerPhysicsMovePatch
		{
			private static void Prefix(ref Vec2 inputVector, ref Vector2 ___currentInputVector)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				___currentInputVector = fixVecToFloat(inputVector);
			}
		}

		[HarmonyPatch(typeof(PlayerPhysics), "MachoMove")]
		private class PlayerPhysicsMachoMovePatch
		{
			private static void Prefix(ref Vec2 inputVector, ref Vector2 ___currentInputVector)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				___currentInputVector = fixVecToFloat(inputVector);
			}
		}

		[HarmonyPatch(typeof(PlayerPhysics), "AirealMovement")]
		private class PlayerPhysicsAirealMovementPatch
		{
			private static bool Prefix(ref Vector2 ___currentInputVector, ref PlayerBody ___body, ref Fix ___airAccel, ref Fix ___maxSpeed)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_001f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0024: Unknown result type (might be due to invalid IL or missing references)
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				//IL_0038: Unknown result type (might be due to invalid IL or missing references)
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Unknown result type (might be due to invalid IL or missing references)
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_004a: Unknown result type (might be due to invalid IL or missing references)
				//IL_004f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0056: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_0068: Unknown result type (might be due to invalid IL or missing references)
				//IL_009a: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00af: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00db: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0104: Unknown result type (might be due to invalid IL or missing references)
				//IL_0109: Unknown result type (might be due to invalid IL or missing references)
				//IL_010e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0113: Unknown result type (might be due to invalid IL or missing references)
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_011c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_0127: Unknown result type (might be due to invalid IL or missing references)
				//IL_012c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0131: Unknown result type (might be due to invalid IL or missing references)
				//IL_0133: Unknown result type (might be due to invalid IL or missing references)
				//IL_0135: Unknown result type (might be due to invalid IL or missing references)
				//IL_013a: Unknown result type (might be due to invalid IL or missing references)
				//IL_013c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0141: Unknown result type (might be due to invalid IL or missing references)
				//IL_0143: Unknown result type (might be due to invalid IL or missing references)
				//IL_0148: Unknown result type (might be due to invalid IL or missing references)
				//IL_014d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0152: Unknown result type (might be due to invalid IL or missing references)
				//IL_0158: Unknown result type (might be due to invalid IL or missing references)
				//IL_015d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0162: Unknown result type (might be due to invalid IL or missing references)
				//IL_0164: Unknown result type (might be due to invalid IL or missing references)
				//IL_0169: Unknown result type (might be due to invalid IL or missing references)
				//IL_016e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0173: Unknown result type (might be due to invalid IL or missing references)
				//IL_0178: Unknown result type (might be due to invalid IL or missing references)
				//IL_017d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0183: Unknown result type (might be due to invalid IL or missing references)
				//IL_0188: Unknown result type (might be due to invalid IL or missing references)
				float num = Vector2.SignedAngle((Vector2)reflectGet(___body, "grav_dir"), Vector2.down);
				Vector2 val = Vector2.op_Implicit(Quaternion.AngleAxis(0f - num, Vector3.forward) * Vector3.left);
				Vector2 val2 = Vector2.op_Implicit(Quaternion.AngleAxis(0f - num, Vector3.forward) * Vector3.right);
				float num2 = Vector2.Angle(___currentInputVector, val);
				float num3 = Vector2.Angle(___currentInputVector, val2);
				if (num2 > 45f && num3 > 45f)
				{
					___currentInputVector = Vector2.zeroVector;
				}
				else
				{
					___currentInputVector = Vector2.op_Implicit(Quaternion.AngleAxis(num, Vector3.forward) * Vector2.op_Implicit(___currentInputVector));
				}
				Vec2 val3 = floatVecToFix(Vector2.op_Implicit(Quaternion.AngleAxis(num, Vector3.forward) * Vector2.op_Implicit(fixVecToFloat(___body.selfImposedVelocity))));
				val3 += new Vec2((Fix)___currentInputVector.x * ___airAccel, Fix.Zero);
				Fix val4 = ___airAccel / (___maxSpeed + ___airAccel);
				val3 += Vec2.left * val4 * val3.x;
				___body.selfImposedVelocity = floatVecToFix(Vector2.op_Implicit(Quaternion.AngleAxis(0f - num, Vector3.forward) * Vector2.op_Implicit(fixVecToFloat(val3))));
				___currentInputVector = Vector2.zeroVector;
				return false;
			}
		}

		[HarmonyPatch(typeof(PlayerBody), "UpdateSim")]
		private class PlayerBodyUpdateSimPatch
		{
			private static void Prefix(ref Vec2 ___prevPlayerVel, ref Vec2 __state)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				__state = ___prevPlayerVel;
			}

			private static void Postfix(ref Vec2 __state, ref Vector2 ___grav_dir, ref RopeBody ___ropeBody, ref PlayerPhysics ___physics, ref Vec2 ___externalVelocity, ref Vec2 ___selfImposedVelocity, ref bool ___topAttachment, ref bool ___ignoreGravityWhenRoped)
			{
				//IL_0043: Unknown result type (might be due to invalid IL or missing references)
				//IL_0048: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0072: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_0095: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
				if (___ropeBody != null && ___ropeBody.enabled && !___ropeBody.hasBeenDettached && ___ropeBody.hookHasArrived && (!((Object)(object)___physics != (Object)null) || !___physics.IsGrounded()))
				{
					float num = Vector2.SignedAngle(___grav_dir, Vector2.down);
					Vec2 val = floatVecToFix(Vector2.op_Implicit(Quaternion.AngleAxis(num, Vector3.forward) * Vector2.op_Implicit(fixVecToFloat(___externalVelocity + ___selfImposedVelocity - __state))));
					Vec2 val2 = default(Vec2);
					((Vec2)(ref val2))..ctor(val.x * (Fix)5L, ___ignoreGravityWhenRoped ? Fix.Zero : (-DetPhysics.Get().playerGravity));
					val2 = floatVecToFix(Vector2.op_Implicit(Quaternion.AngleAxis(0f - num, Vector3.forward) * Vector2.op_Implicit(fixVecToFloat(val2))));
					___ropeBody.SetForce(val2, ___topAttachment);
				}
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(PlayerBody), "AttachRope")]
		private class PlayerBodyAttachRopePatch
		{
			private static bool Prefix(ref RopeBody rope, ref Vector2 ___grav_dir, ref PlayerBody __instance, ref RopeBody ___ropeBody, ref bool ___ignoreGravityWhenRoped, ref bool ___topAttachment, ref Vec2 ___prevPlayerVel, ref Vec2 ___externalVelocity, ref Vec2 ___selfImposedVelocity, ref Fix ___RopePlayerMass01)
			{
				//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				//IL_002a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0044: Unknown result type (might be due to invalid IL or missing references)
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				//IL_0092: Unknown result type (might be due to invalid IL or missing references)
				//IL_0082: Unknown result type (might be due to invalid IL or missing references)
				//IL_009a: Unknown result type (might be due to invalid IL or missing references)
				if (___ropeBody != null)
				{
					___ropeBody.SetForce(___ignoreGravityWhenRoped ? Vec2.zero : (floatVecToFix(___grav_dir) * DetPhysics.Get().ropeGravity), ___topAttachment);
					___ropeBody.SetTimeInAir((Fix)100L, ___topAttachment);
					if (rope == null)
					{
						___ropeBody.Dettach(___topAttachment);
					}
					else
					{
						___ropeBody.SetMass01((___RopePlayerMass01 == Fix.Zero) ? ((Fix)0.5) : ___RopePlayerMass01, ___topAttachment, Fix.One);
					}
				}
				___prevPlayerVel = ___externalVelocity + ___selfImposedVelocity;
				___ropeBody = rope;
				if (___ropeBody != null)
				{
					reflectSet(___ropeBody, "grav_dir", ___grav_dir);
				}
				__instance.topAttachment = ___topAttachment;
				return false;
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(PlayerBody), "Awake")]
		private class PlayerBodyAwakePatch
		{
			private static void Postfix(ref Vector2 ___grav_dir, ref PlayerBody __instance)
			{
				//IL_000b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				__instance.fixtrans.rotation = (Fix)90L;
				___grav_dir = default_grav;
			}
		}

		[HarmonyPatch(typeof(Drill), "UpdateSim")]
		private class DrillUpdateSimPatch
		{
			private static void Postfix(ref Fix SimDeltaTime, ref bool ___isUnderground, ref PlayerBody ___body, ref Fix ___timePassed, ref Fix ___keepStrongGravitySeconds, ref Fix ___maxEarlyFallSpeed, ref Fix ___strongGravity, ref Fix ___gravityStr)
			{
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0068: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Unknown result type (might be due to invalid IL or missing references)
				//IL_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0082: Unknown result type (might be due to invalid IL or missing references)
				//IL_0087: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_009d: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00da: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_0107: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_011a: Unknown result type (might be due to invalid IL or missing references)
				//IL_011f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0120: Unknown result type (might be due to invalid IL or missing references)
				//IL_0125: Unknown result type (might be due to invalid IL or missing references)
				//IL_0127: Unknown result type (might be due to invalid IL or missing references)
				//IL_012d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0132: Unknown result type (might be due to invalid IL or missing references)
				//IL_0137: Unknown result type (might be due to invalid IL or missing references)
				//IL_013c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0110: Unknown result type (might be due to invalid IL or missing references)
				if (!___isUnderground & (___body.ropeBody == null || !___body.ropeBody.enabled))
				{
					Fix val = ((___timePassed < ___keepStrongGravitySeconds && ___body.selfImposedVelocity.y < ___maxEarlyFallSpeed) ? ___strongGravity : ___gravityStr);
					PlayerBody obj = ___body;
					obj.selfImposedVelocity -= Vec2.down * val * SimDeltaTime;
					Vector2 val2 = (Vector2)reflectGet(___body, "grav_dir");
					float num = Vector2.SignedAngle(val2, Vector2.down);
					Vec2 val3 = floatVecToFix(Vector2.op_Implicit(Quaternion.AngleAxis(num, Vector3.forward) * Vector2.op_Implicit(fixVecToFloat(___body.selfImposedVelocity))));
					Fix val4 = ((___timePassed < ___keepStrongGravitySeconds && val3.y < ___maxEarlyFallSpeed) ? ___strongGravity : ___gravityStr);
					PlayerBody obj2 = ___body;
					obj2.selfImposedVelocity += floatVecToFix(val2) * val4 * SimDeltaTime;
				}
			}
		}

		[HarmonyPatch(typeof(MeteorSmash), "Jump")]
		private class MeteorSmashJumpPatch
		{
			private static bool Prefix(ref MeteorSmash __instance, ref PlayerBody ___body, ref PlayerInfo ___playerInfo, ref PlayerPhysics ___physics, ref FixTransform ___fixTrans, ref AnimationData ___animData, ref Fix ___trueMinHoldTime, ref Fix ___minHoldTime, ref State ___state, ref Fix ___timePassed, ref Fix ___jumpSpeed, ref SpriteAnimator ___animator, ref AnimationCurveFixed ___speedCurve)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0104: Unknown result type (might be due to invalid IL or missing references)
				//IL_0112: Unknown result type (might be due to invalid IL or missing references)
				//IL_0143: Unknown result type (might be due to invalid IL or missing references)
				//IL_0148: Unknown result type (might be due to invalid IL or missing references)
				//IL_0149: Unknown result type (might be due to invalid IL or missing references)
				//IL_0150: Unknown result type (might be due to invalid IL or missing references)
				//IL_0155: Unknown result type (might be due to invalid IL or missing references)
				//IL_015a: Unknown result type (might be due to invalid IL or missing references)
				//IL_015f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0166: Unknown result type (might be due to invalid IL or missing references)
				//IL_0167: Unknown result type (might be due to invalid IL or missing references)
				//IL_0171: Unknown result type (might be due to invalid IL or missing references)
				//IL_0176: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0182: Unknown result type (might be due to invalid IL or missing references)
				//IL_0187: Unknown result type (might be due to invalid IL or missing references)
				//IL_018c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0125: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				Vec2 val = floatVecToFix((Vector2)reflectGet(___body, "grav_dir"));
				float num = (float)Math.PI / 180f * Vector2.SignedAngle(fixVecToFloat(val), Vector2.down);
				if (!___playerInfo.isGrounded)
				{
					___trueMinHoldTime = ___minHoldTime;
					__instance.Vibrate_fromAirStart();
					___body.rotation = (Fix)(0f - num);
					return false;
				}
				___trueMinHoldTime = Fix.Zero;
				AudioManager.Get().Play("meteor_jump");
				bool flag = ___physics.IsGrounded();
				___physics.UnGround(true, false);
				if (flag)
				{
					PlayerBody obj = ___body;
					obj.position += -val * ___physics.extraJumpTeleportMultiplier;
				}
				else
				{
					PlayerBody obj2 = ___body;
					obj2.position += -val * (Fix)1.75;
				}
				((Component)__instance).transform.position = (Vector3)___body.position;
				if (___physics.VelocityBasedRaycasts(true, Updater.standardFixedDeltaTime))
				{
					___body.selfImposedVelocity = Vec2.zero;
					MeteorSmashExitAbilityGrounded(__instance);
					return false;
				}
				FixTransform obj3 = ___fixTrans;
				obj3.position += -val * ___physics.extraJumpTeleportMultiplier;
				___body.selfImposedVelocity = -val * ___speedCurve.Evaluate(___timePassed) * ___jumpSpeed;
				___animator.beginAnimThenDoAction(___animData.GetAnimation("air"), (Action)__instance.Vibrate);
				___state = (State)1;
				___body.rotation = (Fix)(0f - num);
				return false;
			}

			[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
			[HarmonyPatch(typeof(MeteorSmash), "ExitAbilityGrounded")]
			public static void MeteorSmashExitAbilityGrounded(object instance)
			{
				throw new NotImplementedException("It's a stub");
			}
		}

		[HarmonyPatch(typeof(MeteorSmash), "UpdateSim")]
		private class MeteorSmashUpdateSimPatch
		{
			private static void Postfix(ref State ___state, ref PlayerBody ___body, ref AnimationCurveFixed ___speedCurve, ref Fix ___timePassed, ref Fix ___jumpSpeed)
			{
				//IL_0019: Unknown result type (might be due to invalid IL or missing references)
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0030: Unknown result type (might be due to invalid IL or missing references)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				if ((int)___state == 1)
				{
					___body.selfImposedVelocity = -floatVecToFix((Vector2)reflectGet(___body, "grav_dir")) * ___speedCurve.Evaluate(___timePassed) * ___jumpSpeed;
				}
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(MeteorSmash), "Dash")]
		private class MeteorSmashDashPatch
		{
			private static bool Prefix(ref MeteorSmash __instance, ref PlayerBody ___body, ref Ability ___ability, ref Fix ___timePassed, ref Fix ___maxHoldTime, ref State ___state, ref int ___updatesPassedInDash, ref SpriteRenderer ___spriteRen, ref List<RaycastInformation> ___raycastHits, ref FixTransform ___fixTrans, ref PlayerPhysics ___physics, ref LayerMask ___raycastMask, ref DPhysicsBox ___hitbox, ref ParticleSystem ___smokeParticle, ref Fix ___HitGroundLocalPosition, ref Fix ___groundForce, ref Fix ___timeBeforeDrop, ref PlayerInfo ___playerInfo, ref Fix ___playerPushForce, ref Fix ___shakeDuration, ref Fix ___shakeStr, ref AnimationCurveFixed ___spinCurve, ref Shockwave ___ShockwavePrefab, ref bool ___hasEnteredAbility)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0032: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0047: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0053: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_0097: Unknown result type (might be due to invalid IL or missing references)
				//IL_009e: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_066b: Unknown result type (might be due to invalid IL or missing references)
				//IL_066c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0671: Unknown result type (might be due to invalid IL or missing references)
				//IL_0675: Unknown result type (might be due to invalid IL or missing references)
				//IL_067a: Unknown result type (might be due to invalid IL or missing references)
				//IL_067f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0681: Unknown result type (might be due to invalid IL or missing references)
				//IL_068f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00da: Unknown result type (might be due to invalid IL or missing references)
				//IL_00df: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0720: Unknown result type (might be due to invalid IL or missing references)
				//IL_06aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_06b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_06c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_06cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_06d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_06e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_06f1: Unknown result type (might be due to invalid IL or missing references)
				//IL_06f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0703: Unknown result type (might be due to invalid IL or missing references)
				//IL_070b: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_0110: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Unknown result type (might be due to invalid IL or missing references)
				//IL_0128: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0143: Unknown result type (might be due to invalid IL or missing references)
				//IL_0145: Unknown result type (might be due to invalid IL or missing references)
				//IL_015b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0167: Unknown result type (might be due to invalid IL or missing references)
				//IL_016c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0171: Unknown result type (might be due to invalid IL or missing references)
				//IL_0176: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_017c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				//IL_018b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0190: Unknown result type (might be due to invalid IL or missing references)
				//IL_0195: Unknown result type (might be due to invalid IL or missing references)
				//IL_0197: Unknown result type (might be due to invalid IL or missing references)
				//IL_0199: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_072e: Unknown result type (might be due to invalid IL or missing references)
				//IL_08d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_08d5: Unknown result type (might be due to invalid IL or missing references)
				//IL_08e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_08e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_08f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_08f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_08fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0903: Unknown result type (might be due to invalid IL or missing references)
				//IL_0480: Unknown result type (might be due to invalid IL or missing references)
				//IL_048b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0490: Unknown result type (might be due to invalid IL or missing references)
				//IL_0494: Unknown result type (might be due to invalid IL or missing references)
				//IL_0496: Unknown result type (might be due to invalid IL or missing references)
				//IL_049d: Unknown result type (might be due to invalid IL or missing references)
				//IL_04a5: Unknown result type (might be due to invalid IL or missing references)
				//IL_04b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_04bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_04c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_04c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_04cf: Unknown result type (might be due to invalid IL or missing references)
				//IL_04d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_04db: Unknown result type (might be due to invalid IL or missing references)
				//IL_04dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_04f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0508: Unknown result type (might be due to invalid IL or missing references)
				//IL_050d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0519: Unknown result type (might be due to invalid IL or missing references)
				//IL_051e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0523: Unknown result type (might be due to invalid IL or missing references)
				//IL_0528: Unknown result type (might be due to invalid IL or missing references)
				//IL_052a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0531: Unknown result type (might be due to invalid IL or missing references)
				//IL_0536: Unknown result type (might be due to invalid IL or missing references)
				//IL_0540: Unknown result type (might be due to invalid IL or missing references)
				//IL_054a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0557: Unknown result type (might be due to invalid IL or missing references)
				//IL_055c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0561: Unknown result type (might be due to invalid IL or missing references)
				//IL_056d: Unknown result type (might be due to invalid IL or missing references)
				//IL_057e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0583: Unknown result type (might be due to invalid IL or missing references)
				//IL_0588: Unknown result type (might be due to invalid IL or missing references)
				//IL_058a: Unknown result type (might be due to invalid IL or missing references)
				//IL_058e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0596: Unknown result type (might be due to invalid IL or missing references)
				//IL_05a4: Unknown result type (might be due to invalid IL or missing references)
				//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_05b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_05ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_05bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_05c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_05c8: Unknown result type (might be due to invalid IL or missing references)
				//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_05ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_05f6: Unknown result type (might be due to invalid IL or missing references)
				//IL_05fb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0605: Unknown result type (might be due to invalid IL or missing references)
				//IL_060a: Unknown result type (might be due to invalid IL or missing references)
				//IL_060f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0611: Unknown result type (might be due to invalid IL or missing references)
				//IL_0616: Unknown result type (might be due to invalid IL or missing references)
				//IL_03da: Unknown result type (might be due to invalid IL or missing references)
				//IL_03df: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e2: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_03f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_03f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0400: Unknown result type (might be due to invalid IL or missing references)
				//IL_0405: Unknown result type (might be due to invalid IL or missing references)
				//IL_040c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0411: Unknown result type (might be due to invalid IL or missing references)
				//IL_0416: Unknown result type (might be due to invalid IL or missing references)
				//IL_041b: Unknown result type (might be due to invalid IL or missing references)
				//IL_041f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0421: Unknown result type (might be due to invalid IL or missing references)
				//IL_0428: Unknown result type (might be due to invalid IL or missing references)
				//IL_042d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0432: Unknown result type (might be due to invalid IL or missing references)
				//IL_0446: Unknown result type (might be due to invalid IL or missing references)
				//IL_044b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0458: Unknown result type (might be due to invalid IL or missing references)
				//IL_0459: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_01be: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_063d: Unknown result type (might be due to invalid IL or missing references)
				//IL_063e: Unknown result type (might be due to invalid IL or missing references)
				//IL_01db: Unknown result type (might be due to invalid IL or missing references)
				//IL_01de: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_0206: Unknown result type (might be due to invalid IL or missing references)
				//IL_0217: Unknown result type (might be due to invalid IL or missing references)
				//IL_0240: Unknown result type (might be due to invalid IL or missing references)
				//IL_0262: Unknown result type (might be due to invalid IL or missing references)
				//IL_026e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0275: Unknown result type (might be due to invalid IL or missing references)
				//IL_07bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_0749: Unknown result type (might be due to invalid IL or missing references)
				//IL_0756: Unknown result type (might be due to invalid IL or missing references)
				//IL_0765: Unknown result type (might be due to invalid IL or missing references)
				//IL_076c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0777: Unknown result type (might be due to invalid IL or missing references)
				//IL_077f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0790: Unknown result type (might be due to invalid IL or missing references)
				//IL_0797: Unknown result type (might be due to invalid IL or missing references)
				//IL_07a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_07aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_0291: Unknown result type (might be due to invalid IL or missing references)
				//IL_0297: Unknown result type (might be due to invalid IL or missing references)
				//IL_029c: Unknown result type (might be due to invalid IL or missing references)
				//IL_07cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
				//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_0859: Unknown result type (might be due to invalid IL or missing references)
				//IL_0866: Unknown result type (might be due to invalid IL or missing references)
				//IL_0875: Unknown result type (might be due to invalid IL or missing references)
				//IL_087c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0887: Unknown result type (might be due to invalid IL or missing references)
				//IL_088f: Unknown result type (might be due to invalid IL or missing references)
				//IL_08a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_08a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_08b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_08ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_07e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_07f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0801: Unknown result type (might be due to invalid IL or missing references)
				//IL_0808: Unknown result type (might be due to invalid IL or missing references)
				//IL_0813: Unknown result type (might be due to invalid IL or missing references)
				//IL_081b: Unknown result type (might be due to invalid IL or missing references)
				//IL_082c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0833: Unknown result type (might be due to invalid IL or missing references)
				//IL_083e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0846: Unknown result type (might be due to invalid IL or missing references)
				//IL_0308: Unknown result type (might be due to invalid IL or missing references)
				//IL_0337: Unknown result type (might be due to invalid IL or missing references)
				//IL_033c: Unknown result type (might be due to invalid IL or missing references)
				//IL_033e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0343: Unknown result type (might be due to invalid IL or missing references)
				//IL_034b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0350: Unknown result type (might be due to invalid IL or missing references)
				//IL_0352: Unknown result type (might be due to invalid IL or missing references)
				//IL_0357: Unknown result type (might be due to invalid IL or missing references)
				//IL_035e: Unknown result type (might be due to invalid IL or missing references)
				//IL_035f: Unknown result type (might be due to invalid IL or missing references)
				//IL_036d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0375: Unknown result type (might be due to invalid IL or missing references)
				//IL_037a: Unknown result type (might be due to invalid IL or missing references)
				//IL_038d: Unknown result type (might be due to invalid IL or missing references)
				Vec2 val = floatVecToFix((Vector2)reflectGet(___body, "grav_dir"));
				___ability.KillPlayersOnContact = true;
				Fix val2 = Fix.Min(___timePassed / ___maxHoldTime, Fix.One);
				___state = (State)3;
				___updatesPassedInDash = 0;
				___body.selfImposedVelocity = Vec2.zero;
				___body.externalVelocity = Vec2.zero;
				((Renderer)___spriteRen).enabled = false;
				___raycastHits.Clear();
				bool flag = DetPhysics.Get().RaycastAll(___fixTrans.position + val * ___physics.radius, val, (Fix)1000000L, ___raycastMask, ___raycastHits, ___hitbox.GetPhysicsParent().instanceId);
				Vec2 position = ___body.position;
				if (flag)
				{
					for (int i = 0; i < ___raycastHits.Count; i++)
					{
						Vec2 nearPos = ___raycastHits[i].nearPos;
						if (___raycastHits[i].layer == LayerMask.NameToLayer("wall"))
						{
							StickyRoundedRectangle component = ((Component)___raycastHits[i].pp.fixTrans).GetComponent<StickyRoundedRectangle>();
							Vec2 closestPoint = component.GetClosestPoint(nearPos);
							((Component)((Component)___smokeParticle).transform.parent).transform.position = (Vector3)closestPoint;
							___smokeParticle.Play();
							___body.position = nearPos;
							___HitGroundLocalPosition = component.LocalPlayerPosFromPos(closestPoint, ___physics.radius);
							Fix val3 = (val2 + Fix.One) * (Fix)0.5f;
							if (!(closestPoint.x < component.GetGroundBody().position.x))
							{
								_ = -Fix.One;
							}
							else
							{
								_ = Fix.One;
							}
							component.GetGroundBody().AddForceAtPosition(val * ___groundForce * val3, nearPos, (ForceMode2D)0);
							StickyRoundedRectangle component2 = ((Component)component).GetComponent<StickyRoundedRectangle>();
							float num = (1f + (float)val2 * 0.4f) * Mathf.Min((float)___fixTrans.Scale, 1.5f);
							((Component)___smokeParticle).transform.localScale = new Vector3(num, num, 1f);
							((Component)___smokeParticle).transform.GetChild(0).localScale = new Vector3(num, num, 1f);
							if (___timePassed > ___timeBeforeDrop)
							{
								component2.DropAllAttachedPlayers(___playerInfo.playerId, ___playerPushForce * ___timePassed);
								ShakablePlatform component3 = ((Component)component).GetComponent<ShakablePlatform>();
								if (component3 != null)
								{
									component3.AddShake(___shakeDuration, ___shakeStr, 100, (Material)null, ___spinCurve);
								}
							}
							else
							{
								ShakablePlatform component4 = ((Component)component).GetComponent<ShakablePlatform>();
								if (component4 != null)
								{
									component4.AddShake(___shakeDuration, ___shakeStr / (Fix)3L, 0, (Material)null, ___spinCurve);
								}
							}
							Shockwave val4 = FixTransform.InstantiateFixed<Shockwave>(___ShockwavePrefab, nearPos);
							val4.SetPlayerId(___playerInfo.playerId);
							val4.AddObjectToIgnore(((Object)((Component)component).gameObject).GetInstanceID());
							val4.platformForce *= val3;
							val4.defaultForce *= val3;
							MeteorSmashSpawnSmearEffect(__instance, position, nearPos);
							___body.position = component.PositionFromLocalPlayerPos(___HitGroundLocalPosition, ___physics.radius);
							___physics.AttachToGround(component, ___fixTrans.position);
							AudioManager.Get().Play("meteor_dash");
							MeteorSmashExitAbilityGrounded(__instance);
							break;
						}
						if (___raycastHits[i].layer == LayerMask.NameToLayer("Water"))
						{
							Fix waterHeight = SceneBounds.WaterHeight;
							Fix val5 = val.x / val.y * waterHeight + ___body.position.x + ___body.position.y;
							___body.position = new Vec2(val5, waterHeight - (Fix)20f);
							((Component)__instance).transform.position = (Vector3)___body.position;
							MeteorSmashSpawnSmearEffect(__instance, position, nearPos);
							AudioManager.Get().Play("dash");
							MeteorSmashExitAbilityNoGround(__instance);
							break;
						}
						___body.position = nearPos;
						Box physicsBox = ___hitbox.physicsBox;
						physicsBox.center = nearPos;
						CollisionInformation val6 = default(CollisionInformation);
						val6.collider = (IShape)(object)physicsBox;
						val6.colliderImpactVelocity = Vec2.down * (Fix)50L;
						val6.colliderPP = ___hitbox.pp;
						val6.contactPoint = nearPos;
						val6.layer = ((Component)__instance).gameObject.layer;
						val6.normal = Vec2.up;
						val6.penetration = (Fix)0.1f;
						val6.pp = ___raycastHits[i].pp;
						CollisionInformation val7 = val6;
						___raycastHits[i].pp.collisionCallback.OnCollide(val7);
						Circle val8 = default(Circle);
						val8.center = ___raycastHits[i].nearPos;
						val8.layer = ___raycastHits[i].layer;
						val8.radius = Fix.One;
						Circle val9 = val8;
						val6 = default(CollisionInformation);
						val6.collider = (IShape)(object)val9;
						val6.colliderImpactVelocity = Vec2.zero;
						val6.colliderPP = ___raycastHits[i].pp;
						val6.contactPoint = nearPos;
						val6.layer = ___raycastHits[i].layer;
						val6.normal = Vec2.up;
						val6.penetration = (Fix)0.1f;
						val6.pp = ___hitbox.pp;
						val7 = val6;
						___hitbox.OnCollide(val7);
						if (!___hasEnteredAbility)
						{
							AudioManager.Get().Play("dash");
							MeteorSmashSpawnSmearEffect(__instance, position, nearPos);
							break;
						}
					}
				}
				else
				{
					Vector2 val10 = fixVecToFloat(val);
					Vector2 val11 = fixVecToFloat(___body.position);
					float num4;
					float num5;
					if (val10.x > 0f && val10.y >= 0f)
					{
						float num2 = (float)SceneBounds.BlastZone_XMax;
						float num3 = (float)SceneBounds.BlastZone_YMax;
						num4 = Mathf.Min(num2, val10.x / val10.y * num3 + val11.x + val11.y);
						num5 = Mathf.Min(num3, val10.y / val10.x * num2 + val11.x + val11.y);
					}
					else if (val10.x < 0f && val10.y >= 0f)
					{
						float num2 = (float)SceneBounds.BlastZone_XMin;
						float num3 = (float)SceneBounds.BlastZone_YMax;
						num4 = Mathf.Max(num2, val10.x / val10.y * num3 + val11.x + val11.y);
						num5 = Mathf.Min(num3, val10.y / val10.x * num2 + val11.x + val11.y);
					}
					else if (val10.x >= 0f && val10.y < 0f)
					{
						float num2 = (float)SceneBounds.BlastZone_XMax;
						float num3 = (float)SceneBounds.WaterHeight;
						num4 = Mathf.Min(num2, val10.x / val10.y * num3 + val11.x + val11.y);
						num5 = Mathf.Max(num3, val10.y / val10.x * num2 + val11.x + val11.y);
					}
					else
					{
						float num2 = (float)SceneBounds.BlastZone_XMin;
						float num3 = (float)SceneBounds.WaterHeight;
						num4 = Mathf.Max(num2, val10.x / val10.y * num3 + val11.x + val11.y);
						num5 = Mathf.Max(num3, val10.y / val10.x * num2 + val11.x + val11.y);
					}
					___body.position = floatVecToFix(new Vector2(num4, num5));
					MeteorSmashSpawnSmearEffect(__instance, position, ___body.position);
					___body.selfImposedVelocity = Vec2.zero;
					___body.externalVelocity = Vec2.zero;
					AudioManager.Get().Play("dash");
					MeteorSmashExitAbilityNoGround(__instance);
				}
				return false;
			}

			public static void MeteorSmashSpawnSmearEffect(object instance, Vec2 from, Vec2 to)
			{
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				MethodInfo method = instance.GetType().GetMethod("SpawnSmearEffect", BindingFlags.Instance | BindingFlags.NonPublic);
				method.Invoke(instance, new object[2] { from, to });
			}

			[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
			[HarmonyPatch(typeof(MeteorSmash), "ExitAbilityNoGround")]
			public static void MeteorSmashExitAbilityNoGround(object instance)
			{
				throw new NotImplementedException("It's a stub");
			}

			[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
			[HarmonyPatch(typeof(MeteorSmash), "ExitAbilityGrounded")]
			public static void MeteorSmashExitAbilityGrounded(object instance)
			{
				throw new NotImplementedException("It's a stub");
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(MeteorSmash), "SpawnSmearEffect")]
		private class MeteorSmashSpawnSmearEffectPatch
		{
			private static bool Prefix(ref PlayerBody ___body, ref Vec2 to, ref Vec2 from, ref FixTransform ___fixTrans, ref Ability ___ability, ref SpriteRenderer ___spriteRen, ref Fix ___smearScaling, ref PlayerInfo ___playerInfo, ref GameObject ___SmearFramePrefab)
			{
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_006f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_007a: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0082: Unknown result type (might be due to invalid IL or missing references)
				//IL_0087: Unknown result type (might be due to invalid IL or missing references)
				//IL_0089: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_0092: Unknown result type (might be due to invalid IL or missing references)
				//IL_0094: Unknown result type (might be due to invalid IL or missing references)
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_009d: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				//IL_0108: Unknown result type (might be due to invalid IL or missing references)
				//IL_010f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0111: Unknown result type (might be due to invalid IL or missing references)
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_0118: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0126: Unknown result type (might be due to invalid IL or missing references)
				//IL_0139: Unknown result type (might be due to invalid IL or missing references)
				//IL_014b: Unknown result type (might be due to invalid IL or missing references)
				//IL_015f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0180: Unknown result type (might be due to invalid IL or missing references)
				//IL_018c: Unknown result type (might be due to invalid IL or missing references)
				//IL_019d: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_0206: Unknown result type (might be due to invalid IL or missing references)
				float num = Vector2.SignedAngle((Vector2)reflectGet(___body, "grav_dir"), Vector2.down);
				GameObject val = FixTransform.InstantiateFixed(___SmearFramePrefab, to);
				SpriteRenderer component = val.GetComponent<SpriteRenderer>();
				DPhysicsBox component2 = val.GetComponent<DPhysicsBox>();
				FixTransform component3 = val.GetComponent<FixTransform>();
				component2.ManualInit();
				((AbilityMonoBehaviour)___ability).GetSlimeController().GetPlayerCollision().ignoredCollider[0] = (IPhysicsCollider)(object)component2;
				((AbilityMonoBehaviour)___ability).GetPlayerCollision().ignoredCollider[0] = (IPhysicsCollider)(object)component2;
				Vec2 val2 = to - from;
				Vec2 val3 = component2.CalcExtents();
				Fix y = val3.y;
				Fix x = val3.x;
				val3.y = Vec2.Magnitude(val2) * (Fix)0.5f;
				ref Fix x2 = ref val3.x;
				x2 *= ___fixTrans.Scale;
				component2.SetExtents(val3);
				Vec2 offset = component3.offset;
				ref Fix y2 = ref offset.y;
				y2 *= val3.y / y;
				component3.offset = offset;
				Vector2 val4 = (Vector2)val2;
				float num2 = ((Vector2)(ref val4)).magnitude / (float)y;
				val.transform.localScale = new Vector3((float)___fixTrans.Scale, num2, 1f);
				component2.rotation = (Fix)((float)Math.PI / 180f * (0f - num));
				((Renderer)component).material.SetVector("_Scale", new Vector4(1f, val.transform.localScale.y * (float)___smearScaling, 1f));
				((Renderer)component).material.SetColor("_ShadowColor", ((Renderer)___spriteRen).material.GetColor("_ShadowColor"));
				((Renderer)component).material.SetColor("_MainColor", ((Renderer)___spriteRen).material.GetColor("_MainColor"));
				((Renderer)component).material.SetColor("_ReflectionColour", ((Renderer)___spriteRen).material.GetColor("_ReflectionColour"));
				val.GetComponent<Explosion>().PlayerOwnerId = ___playerInfo.playerId;
				return false;
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(BowTransform), "Shoot")]
		private class BowTransformShootPatch
		{
			private static bool Prefix(Vec2 dir, ref PlayerBody ___body, ref RingBuffer<BoplBody> ___Arrows, ref Vec2 ___FirepointOffset, ref BoplBody ___Arrow, ref PlayerInfo ___playerInfo, ref Fix ___ArrowSpeed, ref Fix ___TimeBeforeArrowsHurtOwner, ref bool ___hasFired, ref int ___loadingFrame)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_0009: Unknown result type (might be due to invalid IL or missing references)
				//IL_0010: Unknown result type (might be due to invalid IL or missing references)
				//IL_0015: Unknown result type (might be due to invalid IL or missing references)
				//IL_001a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0020: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_002c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Unknown result type (might be due to invalid IL or missing references)
				//IL_0036: Unknown result type (might be due to invalid IL or missing references)
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_003d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0050: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0082: Unknown result type (might be due to invalid IL or missing references)
				//IL_0087: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00de: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0101: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: Unknown result type (might be due to invalid IL or missing references)
				//IL_0108: Unknown result type (might be due to invalid IL or missing references)
				//IL_010d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0112: Unknown result type (might be due to invalid IL or missing references)
				//IL_0120: Unknown result type (might be due to invalid IL or missing references)
				Vec2 val = ___body.position + ___FirepointOffset.x * ___body.right + ___FirepointOffset.y * ___body.up;
				BoplBody val2 = FixTransform.InstantiateFixed<BoplBody>(___Arrow, val, ___body.rotation);
				val2.Scale = ___body.fixtrans.Scale;
				Fix val3 = Fix.One + (___body.fixtrans.Scale - Fix.One) / (Fix)2L;
				___Arrows.Add(val2);
				((Component)val2).GetComponent<IPlayerIdHolder>().SetPlayerId(___playerInfo.playerId);
				((Renderer)((Component)val2).GetComponent<SpriteRenderer>()).material = ___playerInfo.playerMaterial;
				val2.StartVelocity = dir * ((Fix)(long)___loadingFrame + Fix.One) * ___ArrowSpeed * val3 + ___body.selfImposedVelocity;
				((Component)val2).GetComponent<Projectile>().DelayedEnableHurtOwner(___TimeBeforeArrowsHurtOwner * val3 / Vec2.Magnitude(val2.StartVelocity));
				val2.rotation = ___body.rotation;
				reflectSet(val2, "grav_dir", reflectGet(___body, "grav_dir"));
				___hasFired = true;
				return false;
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(ThrowItem2), "Fire")]
		private class ThrowItem2FirePatch
		{
			private static void Prefix(ref Grenade ___grenade, ref bool __state)
			{
				__state = (Object)(object)___grenade != (Object)null && !___grenade.hasBeenThrown;
			}

			private static void Postfix(ref Grenade ___grenade, ref BoplBody ___grenadeBody, ref PlayerBody ___body, ref bool __state)
			{
				if (__state)
				{
					reflectSet(___grenadeBody, "grav_dir", reflectGet(___body, "grav_dir"));
				}
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(MachoThrow2), "Fire")]
		private class MachoThrow2FirePatch
		{
			private static bool Prefix(ref MachoThrow2 __instance, ref bool quickThrow, ref Boulder ___boulderPrefab, ref PlayerBody ___body, ref Player ___player, ref RingBufferSimple<Boulder> ___ringBuffer, ref PlatformType ___boulderType, ref SpriteRenderer ___boulderDummy, ref Boulder ___heldBoulder, ref Vec2 ___minThrowVector, ref bool ___facingRight, ref Fix ___quickThrowStr, ref SpriteAnimator ___animator, ref Fix ___quickThrowChargeScaling, ref Fix ___throwSpeed, ref DPhysicsBox ___hurtbox, ref Fix ___proportionOfExtraStrFromScale, ref Fix ___rotationVelOnThrow)
			{
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				//IL_0096: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_012e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0132: Unknown result type (might be due to invalid IL or missing references)
				//IL_0137: Unknown result type (might be due to invalid IL or missing references)
				//IL_0138: Unknown result type (might be due to invalid IL or missing references)
				//IL_0139: Unknown result type (might be due to invalid IL or missing references)
				//IL_0170: Unknown result type (might be due to invalid IL or missing references)
				//IL_0175: Unknown result type (might be due to invalid IL or missing references)
				//IL_0176: Unknown result type (might be due to invalid IL or missing references)
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_017c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				//IL_014c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0194: Unknown result type (might be due to invalid IL or missing references)
				//IL_0199: Unknown result type (might be due to invalid IL or missing references)
				//IL_019a: Unknown result type (might be due to invalid IL or missing references)
				//IL_019f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0162: Unknown result type (might be due to invalid IL or missing references)
				//IL_0156: Unknown result type (might be due to invalid IL or missing references)
				//IL_015b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0202: Unknown result type (might be due to invalid IL or missing references)
				//IL_0210: Unknown result type (might be due to invalid IL or missing references)
				//IL_0217: Unknown result type (might be due to invalid IL or missing references)
				//IL_021c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0221: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c7: 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_01d1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01de: Unknown result type (might be due to invalid IL or missing references)
				//IL_0167: Unknown result type (might be due to invalid IL or missing references)
				//IL_016c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0226: Unknown result type (might be due to invalid IL or missing references)
				//IL_022b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0232: Unknown result type (might be due to invalid IL or missing references)
				//IL_0237: Unknown result type (might be due to invalid IL or missing references)
				//IL_023c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0241: Unknown result type (might be due to invalid IL or missing references)
				//IL_0248: Unknown result type (might be due to invalid IL or missing references)
				//IL_024d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0252: Unknown result type (might be due to invalid IL or missing references)
				//IL_0255: Unknown result type (might be due to invalid IL or missing references)
				//IL_0256: Unknown result type (might be due to invalid IL or missing references)
				//IL_0258: Unknown result type (might be due to invalid IL or missing references)
				//IL_025d: Unknown result type (might be due to invalid IL or missing references)
				//IL_025f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0265: Unknown result type (might be due to invalid IL or missing references)
				//IL_026a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0286: Unknown result type (might be due to invalid IL or missing references)
				//IL_028b: Unknown result type (might be due to invalid IL or missing references)
				//IL_027d: Unknown result type (might be due to invalid IL or missing references)
				Boulder val2;
				DPhysicsRoundedRect val3;
				if (quickThrow)
				{
					Vec2 val = (quickThrow ? MachoThrow2quickThrowFirePos(__instance) : MachoThrow2firePos(__instance));
					val2 = FixTransform.InstantiateFixed<Boulder>(___boulderPrefab, val);
					val3 = val2.hitbox;
					val3.Scale = ___body.fixtrans.Scale;
					___ringBuffer.Add(val2);
					val3.ManualInit();
					val3.Scale = ___body.fixtrans.Scale;
					((Component)val3).GetComponent<StickyRoundedRectangle>().platformType = ___boulderType;
					SpriteRenderer component = ((Component)val3).GetComponent<SpriteRenderer>();
					component.sprite = ___boulderDummy.sprite;
					component.color = ___boulderDummy.color;
				}
				else
				{
					val2 = ___heldBoulder;
					val3 = ___heldBoulder?.hitbox;
				}
				if ((Object)(object)val2 == (Object)null || !((Behaviour)val2).isActiveAndEnabled)
				{
					return false;
				}
				reflectSet(reflectGet(val3, "body"), "grav_dir", reflectGet(___body, "grav_dir"));
				val2.Drop();
				AudioManager.Get().Play("throwBoulder");
				Vec2 val4 = (quickThrow ? Vec2.right : Vec2.NormalizedSafe(___minThrowVector));
				Vec2 val5 = ___player.AimVector();
				if (val5 == Vec2.zero)
				{
					val5 = ___body.right * (___facingRight ? Fix.One : (-Fix.One));
				}
				if (Vec2.Dot(___body.up, val5) < Vec2.Dot(val4, Vec2.up))
				{
					if (Vec2.Dot(___body.right, val5) < Fix.Zero)
					{
						ref Fix x = ref val4.x;
						x *= -Fix.One;
						val5 = Vec2.ComplexMul(val4, ___body.right);
					}
					else
					{
						val5 = Vec2.ComplexMul(val4, ___body.right);
					}
				}
				Fix val6 = (quickThrow ? (___quickThrowStr + (Fix)(long)___animator.getNumberOfPassedSprites() * ___quickThrowChargeScaling) : ___throwSpeed);
				Fix val7 = (___hurtbox.Scale + (___proportionOfExtraStrFromScale - Fix.One)) / ___proportionOfExtraStrFromScale;
				val3.velocity = val5 * val6 * val7 * val3.inverseMass;
				val3.angularVelocity = (___facingRight ? (-___rotationVelOnThrow) : ___rotationVelOnThrow);
				((Component)___boulderDummy).gameObject.SetActive(false);
				___heldBoulder = null;
				return false;
			}

			[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
			[HarmonyPatch(typeof(MachoThrow2), "quickThrowFirePos")]
			public static Vec2 MachoThrow2quickThrowFirePos(object instance)
			{
				throw new NotImplementedException("It's a stub");
			}

			[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
			[HarmonyPatch(typeof(MachoThrow2), "firePos")]
			public static Vec2 MachoThrow2firePos(object instance)
			{
				throw new NotImplementedException("It's a stub");
			}
		}

		[HarmonyPatch(typeof(Boulder), "Drop")]
		private class BoulderDropPatch
		{
			private static void Postfix(ref DPhysicsRoundedRect ___hitbox)
			{
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0064: Invalid comparison between Unknown and I4
				if (!((Object)(object)___hitbox == (Object)null) && !((MonoUpdatable)___hitbox).IsDestroyed && ___hitbox.initHasBeenCalled)
				{
					___hitbox.SetGravityScale(Fix.Zero);
					reflectSet(reflectGet(___hitbox, "body"), "grav_enabled", true);
					reflectSet(reflectGet(___hitbox, "body"), "grav_scale", ((int)Constants.leveltype == 2) ? 0.5f : 1f);
				}
			}
		}

		[HarmonyPatch(typeof(BounceBall), "OnEnterAbility")]
		private class BounceBallOnEnterAbilityPatch
		{
			private static void Postfix(ref BoplBody ___body, ref PlayerInfo ___playerInfo, ref Ability ___ability)
			{
				reflectSet(___body, "grav_dir", reflectGet(___playerInfo.slimeController.body, "grav_dir"));
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(BowTransform), "OnEnterAbility")]
		private class BowTransformOnEnterAbilityPatch
		{
			private static void Postfix(ref Ability ___ability, ref PlayerBody ___body, ref PlayerInfo ___playerInfo)
			{
				reflectSet(___body, "grav_dir", reflectGet(___playerInfo.slimeController.body, "grav_dir"));
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(ThrowItem2), "OnEnterAbility")]
		private class ThrowItem2OnEnterAbilityPatch
		{
			private static void Postfix(ref Ability ___ability, ref PlayerBody ___body, ref PlayerInfo ___playerInfo)
			{
				reflectSet(___body, "grav_dir", reflectGet(___playerInfo.slimeController.body, "grav_dir"));
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(GunTransform), "OnEnterAbility")]
		private class GunTransformOnEnterAbilityPatch
		{
			private static void Postfix(ref Ability ___ability, ref PlayerBody ___body, ref PlayerInfo ___playerInfo)
			{
				reflectSet(___body, "grav_dir", reflectGet(___playerInfo.slimeController.body, "grav_dir"));
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(MachoThrow2), "OnEnterAbility")]
		private class MachoThrow2OnEnterAbilityPatch
		{
			private static void Postfix(ref Ability ___ability, ref PlayerBody ___body, ref PlayerInfo ___playerInfo)
			{
				reflectSet(___body, "grav_dir", reflectGet(___playerInfo.slimeController.body, "grav_dir"));
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(PhysicsBody))]
		private class PhysicsBodyPhysicsBodyPatch
		{
			private static void PostFix(ref PhysicsBody __instance, ref Vector2 ___grav_dir, ref float ___true_gravity_scale)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				___grav_dir = default_grav;
				___true_gravity_scale = 0f;
				reflectSet(__instance, "grav_dir", default_grav);
			}
		}

		[HarmonyReversePatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPatch(typeof(ShootDuplicator), "duplicateBoplBody")]
		private class ShootDuplicatorDupicateBoplBodyPatch
		{
			private static void Postfix(ref BoplBody __result, ref GameObject original)
			{
				//IL_