Decompiled source of ConfigAll v4.3.3

ConfigAll.dll

Decompiled 2 days 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 AGoodNameLib;
using BepInEx;
using BepInEx.Configuration;
using BoplFixedMath;
using HarmonyLib;
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: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("ConfigAll")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("The Greatest mod you'll need.")]
[assembly: AssemblyFileVersion("4.2.2.0")]
[assembly: AssemblyInformationalVersion("4.2.2")]
[assembly: AssemblyProduct("ConfigAll")]
[assembly: AssemblyTitle("ConfigAll")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("4.2.2.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 configall
{
	public static class Patches
	{
		[HarmonyPatch(typeof(ShootDuplicator), "Shoot")]
		[HarmonyPrefix]
		public static bool Shoot(ShootDuplicator __instance, ref Vec2 firepointFIX, ref Vec2 directionFIX, ref bool hasFired, ref int playerId, bool alreadyHitWater = false)
		{
			//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_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_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: 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_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_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_009e: 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_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_00cf: 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_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_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: 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_114c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1151: Unknown result type (might be due to invalid IL or missing references)
			//IL_1156: Unknown result type (might be due to invalid IL or missing references)
			//IL_1157: Unknown result type (might be due to invalid IL or missing references)
			//IL_115d: 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_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0230: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_023a: Unknown result type (might be due to invalid IL or missing references)
			//IL_023b: 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_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_025c: 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_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: 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_026f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0274: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Unknown result type (might be due to invalid IL or missing references)
			//IL_0277: Unknown result type (might be due to invalid IL or missing references)
			//IL_0288: Unknown result type (might be due to invalid IL or missing references)
			//IL_0289: 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_010b: 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_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: 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_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: 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_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_015e: 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_0164: 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_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_0180: 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_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: 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_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_020c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02de: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0403: Unknown result type (might be due to invalid IL or missing references)
			//IL_0408: Unknown result type (might be due to invalid IL or missing references)
			//IL_040d: Unknown result type (might be due to invalid IL or missing references)
			//IL_040f: 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_0324: Unknown result type (might be due to invalid IL or missing references)
			//IL_0325: Unknown result type (might be due to invalid IL or missing references)
			//IL_0327: Unknown result type (might be due to invalid IL or missing references)
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: 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_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_0347: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: 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_034d: 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_0359: Unknown result type (might be due to invalid IL or missing references)
			//IL_0361: Unknown result type (might be due to invalid IL or missing references)
			//IL_0366: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0373: Unknown result type (might be due to invalid IL or missing references)
			//IL_0377: Unknown result type (might be due to invalid IL or missing references)
			//IL_037d: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_043e: Invalid comparison between Unknown and I4
			//IL_08d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a7: Invalid comparison between Unknown and I4
			//IL_0447: Unknown result type (might be due to invalid IL or missing references)
			//IL_044c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0451: Unknown result type (might be due to invalid IL or missing references)
			//IL_0456: Unknown result type (might be due to invalid IL or missing references)
			//IL_045b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0460: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0806: Unknown result type (might be due to invalid IL or missing references)
			//IL_080b: 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_0818: Unknown result type (might be due to invalid IL or missing references)
			//IL_081d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0822: Unknown result type (might be due to invalid IL or missing references)
			//IL_0825: Unknown result type (might be due to invalid IL or missing references)
			//IL_0829: Unknown result type (might be due to invalid IL or missing references)
			//IL_082d: Unknown result type (might be due to invalid IL or missing references)
			//IL_082e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0838: Unknown result type (might be due to invalid IL or missing references)
			//IL_0709: 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_0713: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Unknown result type (might be due to invalid IL or missing references)
			//IL_071f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0724: Unknown result type (might be due to invalid IL or missing references)
			//IL_0729: 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_0731: Unknown result type (might be due to invalid IL or missing references)
			//IL_073d: Unknown result type (might be due to invalid IL or missing references)
			//IL_074b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0750: Unknown result type (might be due to invalid IL or missing references)
			//IL_076a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0779: Unknown result type (might be due to invalid IL or missing references)
			//IL_077e: 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_0786: Unknown result type (might be due to invalid IL or missing references)
			//IL_078b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0509: Unknown result type (might be due to invalid IL or missing references)
			//IL_050f: Invalid comparison between Unknown and I4
			//IL_04b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04da: Unknown result type (might be due to invalid IL or missing references)
			//IL_04dc: 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_04e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0486: Unknown result type (might be due to invalid IL or missing references)
			//IL_0488: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_048c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: 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_0470: Unknown result type (might be due to invalid IL or missing references)
			//IL_0472: Unknown result type (might be due to invalid IL or missing references)
			//IL_0474: Unknown result type (might be due to invalid IL or missing references)
			//IL_0476: Unknown result type (might be due to invalid IL or missing references)
			//IL_047b: 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_0544: Unknown result type (might be due to invalid IL or missing references)
			//IL_054a: Invalid comparison between Unknown and I4
			//IL_0518: Unknown result type (might be due to invalid IL or missing references)
			//IL_051d: Unknown result type (might be due to invalid IL or missing references)
			//IL_051f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0520: 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_052f: 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_0533: Unknown result type (might be due to invalid IL or missing references)
			//IL_0538: Unknown result type (might be due to invalid IL or missing references)
			//IL_053d: Unknown result type (might be due to invalid IL or missing references)
			//IL_059b: Unknown result type (might be due to invalid IL or missing references)
			//IL_059f: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a5: 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_0ca6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0caa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cd8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cdd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cdf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ce4: Unknown result type (might be due to invalid IL or missing references)
			//IL_055b: 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_055e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0562: Unknown result type (might be due to invalid IL or missing references)
			//IL_0569: Unknown result type (might be due to invalid IL or missing references)
			//IL_056e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0570: Unknown result type (might be due to invalid IL or missing references)
			//IL_0572: Unknown result type (might be due to invalid IL or missing references)
			//IL_0574: Unknown result type (might be due to invalid IL or missing references)
			//IL_0579: 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_0580: 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_058d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Unknown result type (might be due to invalid IL or missing references)
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0614: Unknown result type (might be due to invalid IL or missing references)
			//IL_061e: Unknown result type (might be due to invalid IL or missing references)
			//IL_062c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0631: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Unknown result type (might be due to invalid IL or missing references)
			//IL_063b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d7c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d9a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d9b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0da5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0daa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0db5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dba: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dbb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dc6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dcb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dcf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dd4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dd8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dd9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0de8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ded: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0df8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dfd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0dff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e04: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e06: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e08: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e15: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e24: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e29: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e34: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e39: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e41: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e43: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e67: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e6c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d00: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d0c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d11: Unknown result type (might be due to invalid IL or missing references)
			//IL_0af6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b11: Expected I4, but got Unknown
			//IL_0b1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b27: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b29: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b50: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b5f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b64: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b6c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b79: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b7e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b81: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b86: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b9e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ba0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0943: Unknown result type (might be due to invalid IL or missing references)
			//IL_0949: Unknown result type (might be due to invalid IL or missing references)
			//IL_0958: Unknown result type (might be due to invalid IL or missing references)
			//IL_095a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0967: Unknown result type (might be due to invalid IL or missing references)
			//IL_096c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0970: Unknown result type (might be due to invalid IL or missing references)
			//IL_0975: Unknown result type (might be due to invalid IL or missing references)
			//IL_0979: Unknown result type (might be due to invalid IL or missing references)
			//IL_097e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0980: Unknown result type (might be due to invalid IL or missing references)
			//IL_0982: Unknown result type (might be due to invalid IL or missing references)
			//IL_0990: Unknown result type (might be due to invalid IL or missing references)
			//IL_0659: Unknown result type (might be due to invalid IL or missing references)
			//IL_065b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e86: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e8f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e91: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e95: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d32: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d34: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d39: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bd6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bf4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c1f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c2e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c33: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c58: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bb8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bbd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bc8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bcd: Unknown result type (might be due to invalid IL or missing references)
			//IL_099c: Unknown result type (might be due to invalid IL or missing references)
			//IL_099e: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_0eb9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ebe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ec8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f28: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f30: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f48: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f4c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f58: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f5d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0eef: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ef4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0efc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0efe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f02: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_09db: Unknown result type (might be due to invalid IL or missing references)
			//IL_09dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a57: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a64: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a68: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a71: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a76: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a7d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a89: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a8b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a90: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a97: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aab: Unknown result type (might be due to invalid IL or missing references)
			//IL_09fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a13: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a17: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a1c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a21: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a23: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a31: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a36: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a3d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a42: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a47: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a4c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a51: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ab0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ac6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0acf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad1: Unknown result type (might be due to invalid IL or missing references)
			//IL_10b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_1037: Unknown result type (might be due to invalid IL or missing references)
			//IL_10ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_1101: Unknown result type (might be due to invalid IL or missing references)
			//IL_1106: Unknown result type (might be due to invalid IL or missing references)
			//IL_110a: Unknown result type (might be due to invalid IL or missing references)
			//IL_110b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1116: Unknown result type (might be due to invalid IL or missing references)
			//IL_111b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1064: Unknown result type (might be due to invalid IL or missing references)
			//IL_1076: Unknown result type (might be due to invalid IL or missing references)
			//IL_107b: Unknown result type (might be due to invalid IL or missing references)
			//IL_107f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1080: Unknown result type (might be due to invalid IL or missing references)
			//IL_108b: Unknown result type (might be due to invalid IL or missing references)
			//IL_1090: Unknown result type (might be due to invalid IL or missing references)
			Vec2 val = directionFIX;
			AudioManager.Get().PlayWithRandomPitchVariation("fireRaygun", 0.2f);
			AudioManager.Get().PlayRandomWithPrefix("beamSparks", 0f);
			Debug.DrawRay(Vector2.op_Implicit((Vector2)firepointFIX), Vector2.op_Implicit((float)__instance.maxDistance * (Vector2)val), new Color(255f, 255f, 0f));
			LayerMask val2 = __instance.collisionMask;
			if (alreadyHitWater)
			{
				val2 = __instance.collisionMaskNoWater;
			}
			RaycastInformation val3 = DetPhysics.Get().PointCheckAllRoundedRects(firepointFIX);
			if (!RaycastInformation.op_Implicit(val3))
			{
				val3 = DetPhysics.Get().RaycastToClosestTriple(firepointFIX, val, __instance.maxDistance, val2, __instance.tripleRaycastRadius);
			}
			if (RaycastInformation.op_Implicit(val3))
			{
				PlayerHandler.Get().GetPlayer(playerId);
				if (val3.layer == LayerMask.NameToLayer("Water"))
				{
					__instance.spawnRayCastEffect(Vector2.op_Implicit((Vector3)firepointFIX), Vector2.op_Implicit((Vector3)val), (float)val3.nearDist, false, true);
					__instance.rayParticle.Stop();
					((Vec2)(ref val))..ctor(val.x, -val.y);
					__instance.Shoot(val3.nearPos, val, ref hasFired, playerId, true);
					Debug.DrawRay(Vector2.op_Implicit((Vector2)val3.nearPos), Vector2.op_Implicit((Vector2)(val * __instance.maxDistance)), Color.magenta);
					GameObject val4 = Object.Instantiate<GameObject>(__instance.WaterRing);
					AudioManager.Get().Play("waterExplosion");
					val4.transform.position = new Vector3(__instance.WaterRing.transform.position.x + (float)val3.nearPos.x, __instance.WaterRing.transform.position.y, __instance.WaterRing.transform.position.z);
					return false;
				}
				__instance.spawnRayCastEffect(Vector2.op_Implicit((Vector3)firepointFIX), Vector2.op_Implicit((Vector3)val), (float)val3.nearDist, true, false);
				hasFired = true;
				Vec2 position = val3.pp.fixTrans.position;
				Vec2 nearPos = val3.nearPos;
				GameObject gameObject = ((Component)val3.pp.fixTrans).gameObject;
				Vec2 val5 = val;
				int layer = val3.layer;
				if (layer == LayerMask.NameToLayer("Projectile"))
				{
					BoplBody component = gameObject.GetComponent<BoplBody>();
					if (!((Object)(object)component != (Object)null))
					{
						Vec2.MulByI(val5);
					}
					else
					{
						Vec2.MulByI(Vec2.NormalizedSafe(component.velocity));
					}
					Fix val6 = (Fix)7L * component.Scale;
					Vec2 val7 = nearPos;
					ForceArrow forceArrowPrefab = component.ForceArrowPrefab;
					component.ForceArrowPrefab = null;
					int value = Plugin.dupe_projectile_count.Value;
					for (int i = 0; i < value; i++)
					{
						val7 = __instance.FanOut(value, val, position, val6, (Fix)0.32, i);
						Vec2 velocity = component.velocity;
						velocity = Vec2.NormalizedSafe(val7 - position) * (Vec2.Magnitude(velocity) + (Fix)10L);
						__instance.duplicateBoplBody(val7, gameObject, velocity, i, component.Scale);
					}
					component.ForceArrowPrefab = forceArrowPrefab;
					return false;
				}
				if (layer == LayerMask.NameToLayer("item") || layer == LayerMask.NameToLayer("Smoke"))
				{
					BoplBody component2 = gameObject.GetComponent<BoplBody>();
					Item component3 = gameObject.GetComponent<Item>();
					Vec2 val8 = Vec2.MulByI(Vec2.NormalizedSafe(component2.velocity));
					Fix val9 = component3.duplicate_spacing * component2.Scale;
					Vec2 val10 = nearPos;
					ForceArrow forceArrowPrefab2 = component2.ForceArrowPrefab;
					component2.ForceArrowPrefab = null;
					for (int j = 0; j < Plugin.dupe_item_n_smoke.Value; j++)
					{
						Vec2 val11 = component2.velocity;
						if ((int)component3.duplicatePattern == 0)
						{
							Fix val12 = val9 * ((Fix)(long)j + Fix.One);
							val10 = ((j % 2 != 0) ? (val10 - val8 * val12) : (val10 + val8 * val12));
						}
						else if ((int)component3.duplicatePattern == 1)
						{
							Fix val13 = (Fix)(long)(j + 1) / (Fix)(long)component3.nrOfClonesWhenDuplicated;
							Fix val14 = Fix.PiTimes2 * val13;
							val10 = val3.pp.fixTrans.position + new Vec2(val14) * val9;
						}
						else if ((int)component3.duplicatePattern == 2)
						{
							Vec2 val15 = Updater.RandomUnitVector();
							val10 = val3.pp.fixTrans.position + val15 * val9;
						}
						else if ((int)component3.duplicatePattern == 3)
						{
							val10 = __instance.FanOut(component3.nrOfClonesWhenDuplicated, val, position, val9, component3.duplicate_angle, j);
							val11 = Vec2.NormalizedSafe(val10 - position) * (Vec2.Magnitude(val11) + (Fix)10L);
						}
						BoplBody val16 = __instance.duplicateBoplBody(val10, gameObject, val11, j, component2.Scale);
						val16.up = component2.up;
						Item component4 = ((Component)val16).GetComponent<Item>();
						Grenade component5 = ((Component)val16).GetComponent<Grenade>();
						if ((Object)(object)component5 != (Object)null)
						{
							component5.Initialize((ThrowItem2)null);
							component5.DelayedEnableHurtOwner(Fix.Zero);
							component5.hasBeenThrown = false;
							component5.DetonatesOnOwner = true;
							component5.timedExplosion = false;
							component5.selfDestructDelay = component5.detonationTime - (Fix)(long)(j + 1) * (Fix)0.1;
						}
						else if ((Object)(object)((Component)val16).GetComponent<Missile>() != (Object)null)
						{
							val16.up = Vec2.NormalizedSafe(val11);
						}
						if ((Object)(object)component4 != (Object)null)
						{
							component4.OwnerId = component3.OwnerId;
						}
					}
					component2.ForceArrowPrefab = forceArrowPrefab2;
					return false;
				}
				if (layer == LayerMask.NameToLayer("RigidBodyAffector"))
				{
					BlackHole component6 = gameObject.GetComponent<BlackHole>();
					if ((Object)(object)component6 == (Object)null || ((MonoUpdatable)component6).IsDestroyed)
					{
						return false;
					}
					AudioManager.Get().Play("blackholeNoClap");
					Vec2 val17 = position + val * component6.dCircle.radius * (Fix)2L;
					BlackHole component7 = __instance.duplicateObjectWithEffect(val17, gameObject, 0, component6.dCircle.radius * (Fix)0.75, 480).GetComponent<BlackHole>();
					component7.SetMass(component6.GetMass());
					component7.AddForce(component6.GetMass() * val * (Fix)6L);
				}
				else if (layer == LayerMask.NameToLayer("weapon"))
				{
					for (int k = 0; k < Plugin.dupe_weapon_count.Value; k++)
					{
						BoplBody component8 = gameObject.GetComponent<BoplBody>();
						Fix val18 = (Fix)2L * component8.Scale;
						Fix val19 = (Fix)1L;
						Vec2 val20 = __instance.FanOut(3, val, position, val18, val19, k);
						Vec2 val21 = Vec2.NormalizedSafe(val20 - position) * (Vec2.Magnitude(component8.velocity) + (Fix)15L);
						DynamicAbilityPickup component9 = ((Component)__instance.duplicateBoplBody(val20, gameObject, val21, k, val3.pp.fixTrans.Scale)).GetComponent<DynamicAbilityPickup>();
						if ((Object)(object)component9 != (Object)null && !((MonoUpdatable)component9).IsDestroyed && !component9.initSelf)
						{
							component9.initSelf = true;
						}
					}
				}
				else if (layer == LayerMask.NameToLayer("wall"))
				{
					AudioManager.Get().PlayWithRandomPitchVariation("fireDuplicatorOnPlatform", 0.2f);
					StickyRoundedRectangle component10 = gameObject.GetComponent<StickyRoundedRectangle>();
					__instance.SpawnWallEffect((Vector3)nearPos, component10);
					if ((Object)(object)component10.currentDuplicatePlatformEffect != (Object)null && !((MonoUpdatable)component10.currentDuplicatePlatformEffect).IsDestroyed && Plugin.dupe_remember_platforms.Value)
					{
						component10.currentDuplicatePlatformEffect.SelfDestruct();
					}
					if (__instance.useOldPlatformBehaviour)
					{
						((Component)component10).GetComponent<ShakablePlatform>().AddShake(__instance.PlatformShakeDuration, __instance.platformShake, 30, (Material)null, (AnimationCurveFixed)null);
						Vec2 val22 = nearPos;
						DPhysicsRoundedRect rr = component10.rr;
						Vec2 val23 = rr.CalcExtents();
						Vec2 right = rr.right;
						Vec2 up = rr.up;
						if (val23.x < (Fix)0.05 && val23.y < (Fix)0.05)
						{
							right = Vec2.right;
							up = Vec2.up;
						}
						Fix val24 = Vec2.Dot(up, val);
						Fix val25 = Vec2.Dot(right, val);
						if (Fix.Abs(val24) > Fix.Abs(val25))
						{
							Fix val26 = (Fix)(long)Fix.Sign(val24);
							val22 = rr.position + val26 * (Fix)2L * up * (rr.radius + val23.y + rr.Scale);
						}
						else
						{
							Fix val27 = (Fix)(long)Fix.Sign(val25);
							val22 = rr.position + val27 * (Fix)2L * right * (rr.radius + val23.x + rr.Scale);
						}
						Tools.Debug_DrawPos(val22, Color.red, 10f);
						FixTransform.InstantiateFixed<DuplicatePlatformEffect>(__instance.platformEffect, val22).Initialize(component10, val, __instance.PlatformShakeDuration, ((MonoUpdatable)((Component)__instance).GetComponent<GunTransform>()).HierarchyNumber);
					}
					else
					{
						Sprite sprite = __instance.boulderSprites.GetSprite(component10.platformType % __instance.boulderSprites.sprites.Count);
						Color color = ((Component)component10).GetComponent<SpriteRenderer>().color;
						Vec2 val28 = nearPos;
						Vec2 val29 = component10.currentNormal(val28);
						RoundedRect val30 = DetPhysics.Get().roundedRects.colliders[DetPhysics.Get().roundedRects.ColliderIndex(component10.rr.pp.instanceId)];
						Fix val31 = (Fix)1000000L;
						Fix val32 = (Fix)2000000L;
						Vec2 val33 = firepointFIX - val5 * (Fix)100L;
						if (Raycast.RayCastRoundedRect(val33, val5, val30, ref val31, ref val32))
						{
							val28 = val33 + val5 * val31;
							val29 = component10.currentNormal(val28);
						}
						Boulder val34 = FixTransform.InstantiateFixed<Boulder>(__instance.boulderPrefab, val28);
						SpriteRenderer component11 = ((Component)val34).GetComponent<SpriteRenderer>();
						component11.sprite = sprite;
						component11.color = color;
						FixTransform component12 = ((Component)val34).GetComponent<FixTransform>();
						StickyRoundedRectangle component13 = ((Component)val34).GetComponent<StickyRoundedRectangle>();
						component13.pickupPlayerFrames = 3;
						component13.platformType = component10.platformType;
						((Component)val34).GetComponent<BoplBody>().velocity = val29 * __instance.boulderSpeed;
						val34.hitbox.ManualInit();
						val34.hitbox.Scale = __instance.fixTrans.Scale;
						DetPhysics.Get().AddObjectToDeleteList(component12, 1800);
					}
				}
				else if (layer == LayerMask.NameToLayer("LethalTerrain") || layer == LayerMask.NameToLayer("NonLethalTerrain"))
				{
					BoplBody val35 = __instance.duplicateBoplBody(nearPos, gameObject, Vec2.zero, -1, val3.pp.fixTrans.Scale);
					RocketEngine component14 = ((Component)val35).GetComponent<RocketEngine>();
					SpikeAttack val36 = null;
					SimpleSparkNode val37 = null;
					Fix val38 = (Fix)7L;
					Fix val39 = Fix.One;
					if ((Object)(object)component14 == (Object)null)
					{
						val36 = ((Component)val35).GetComponent<SpikeAttack>();
						val38 = (Fix)7L;
						val39 = -Fix.One;
						if ((Object)(object)val36 == (Object)null)
						{
							val37 = ((Component)val35).GetComponent<SimpleSparkNode>();
							val38 = (Fix)5L;
							val39 = Fix.One;
							if ((Object)(object)val37 == (Object)null)
							{
								hasFired = true;
								return false;
							}
						}
					}
					StickyRoundedRectangle component15 = ((Component)gameObject.transform.parent).GetComponent<StickyRoundedRectangle>();
					FixTransform component16 = gameObject.GetComponent<FixTransform>();
					val35.GetFixTransform().startScale = component16.startScale;
					val35.GetFixTransform().offset = component16.offset;
					Fix scale = val3.pp.fixTrans.Scale;
					Fix val40 = (Fix)(long)Fix.Sign2(Vec2.Dot(Vec2.MulByNegI(component15.currentNormal(position)), val));
					Fix val41 = component15.Circumference();
					Fix val42 = component15.LocalPlayerPosFromPos(val3.pp.fixTrans.position, Fix.Zero);
					Fix val43 = val38 * val40 / val41;
					val42 = (val42 + val43 + (Fix)1000L) % Fix.One;
					Vec2 val44 = component15.PositionFromLocalPlayerPos(val42, Fix.Zero);
					val35.up = val39 * component15.currentNormal(val44);
					((Component)val35).transform.parent = ((Component)component15).transform;
					Fix val45 = Fix.Zero;
					if ((Object)(object)val36 != (Object)null)
					{
						val45 = (Fix)0.75;
						val36.Initialize(val44, val45, component15, scale, false);
					}
					else if ((Object)(object)component14 != (Object)null)
					{
						val45 = (Fix)0.3;
						component14.RocketEngineInit(component15, val45, val44, scale, playerId, false);
					}
					else if ((Object)(object)val37 != (Object)null)
					{
						val45 = (Fix)2.2;
						val37.Initialize(playerId, (SimpleSparkNode)null, val45, val42, component15, scale);
					}
					((Component)__instance.onSpawnParticle[0]).transform.localScale = ((Component)__instance.onSpawnParticlePrefab).transform.localScale * (float)scale;
					((Component)__instance.onSpawnParticle[0]).transform.position = (Vector3)(val44 + val35.up * val45);
					__instance.onSpawnParticle[0].Play();
				}
				else if (layer == LayerMask.NameToLayer("Player"))
				{
					for (int l = 0; l < Plugin.dupe_players.Value; l++)
					{
						SlimeController val46 = gameObject.GetComponent<SlimeController>();
						AbilityMonoBehaviour component17 = gameObject.GetComponent<AbilityMonoBehaviour>();
						int playerId2 = gameObject.GetComponent<IPlayerIdHolder>().GetPlayerId();
						if ((Object)(object)component17 != (Object)null)
						{
							val46 = component17.GetSlimeController();
						}
						if ((Object)(object)val46 == (Object)null)
						{
							hasFired = true;
							return false;
						}
						PlayerCollision val47 = val46.GetActivePlayerCollision();
						if ((Object)(object)val47 == (Object)null)
						{
							val47 = val46.GetPlayerCollision();
						}
						if (Plugin.dupe_keep_abilities.Value)
						{
							Player player = PlayerHandler.Get().GetPlayer(playerId2);
							SlimeController val48 = val47.SpawnClone(player, val46, position);
							if ((Object)(object)val48 == (Object)null)
							{
								hasFired = true;
								return false;
							}
							val48.isAbilitylessClone = false;
							val48.ReSpawn(position);
							val48.Spawn();
							Vec2 val49 = val46.CurrentNormal();
							val48.PopIntoAir(Vec2.Slerp(val, val49, (Fix)0.3));
						}
						else
						{
							Player player2 = PlayerHandler.Get().GetPlayer(playerId2);
							SlimeController val50 = val47.SpawnAbilityLessClone(player2, val46, position);
							if ((Object)(object)val50 == (Object)null)
							{
								hasFired = true;
								return false;
							}
							val50.isAbilitylessClone = !Plugin.dupe_keep_abilities.Value;
							val50.ReSpawn(position);
							val50.Spawn();
							Vec2 val51 = val46.CurrentNormal();
							val50.PopIntoAir(Vec2.Slerp(val, val51, (Fix)0.3));
						}
					}
				}
			}
			else
			{
				__instance.spawnRayCastEffect((Vector2)firepointFIX, (Vector2)val, (float)__instance.maxDistance, false, false);
			}
			hasFired = true;
			return false;
		}

		[HarmonyPatch(typeof(BowTransform), "OnEnterAbility")]
		[HarmonyPostfix]
		public static void patch_tap(BowTransform __instance)
		{
			if (Plugin.tapbow.Value)
			{
				__instance.loadingFrame = 4;
			}
		}

		[HarmonyPatch(typeof(ThrowItem2), "Awake")]
		[HarmonyPostfix]
		public static void patch_tap_grenade(ThrowItem2 __instance)
		{
			//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)
			__instance.ThrowForceGainSpeed = (Fix)900L;
		}

		[HarmonyPatch(typeof(Shockwave), "Awake")]
		[HarmonyPrefix]
		public static void DuplicateObjectPatch(Shockwave __instance)
		{
			//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_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: 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)
			if (Object.op_Implicit((Object)(object)__instance) == __instance.isGustAbility)
			{
				__instance.radius = (Fix)Plugin.gust_radius.Value;
				__instance.defaultForce = (Fix)Plugin.gust_strength.Value;
				__instance.platformForce = (Fix)Plugin.gust_strength.Value;
			}
		}

		[HarmonyPatch(typeof(ShootDuplicator), "DuplicateObject")]
		[HarmonyPrefix]
		public static void DuplicateObjectPatch(ShootDuplicator __instance, ref int lifespan)
		{
			lifespan = Plugin.dupe_lifespan.Value;
		}

		[HarmonyPatch(typeof(Beam), "UpdateBeam")]
		[HarmonyPrefix]
		public static void UpdateBeam(Beam __instance, Fix simDeltaTime)
		{
			//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_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)
			//IL_001f: 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_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: 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_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_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Invalid comparison between Unknown and I4
			//IL_0058: 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_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_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: 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_0085: 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_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_009a: 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_00a4: 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_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Invalid comparison between Unknown and I4
			//IL_00da: 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_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_00f4: 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_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_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_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: 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_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: 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_0174: 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_0193: 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_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			Vec2 val = __instance.FirePos();
			Fix val2 = Fix.One;
			Fix val3 = (__instance.inAir ? __instance.maxTimeAir : __instance.maxTime);
			Fix val4 = (Fix)Plugin.BeamSize.Value;
			if (__instance.timeSinceBeamStart + __instance.exitScaleTime > val3 && (int)__instance.state == 1 && __instance.timeSinceBeamStart + __instance.exitScaleTime > val3)
			{
				Fix val5 = (__instance.exitScaleTime - (val3 - __instance.timeSinceBeamStart)) / __instance.exitScaleTime;
				val2 = __instance.exitScaleAnim.Evaluate(val5);
			}
			if (val.y >= Constants.WATER_HEIGHT || (int)Constants.leveltype == 2)
			{
				__instance.beamIndex = DetPhysics.Get().AddBeamBody(new BeamBody
				{
					position = val + __instance.staffDir * __instance.beamOffset,
					direction = __instance.staffDir,
					scale = __instance.body.fixtrans.Scale * val2 * val4,
					colors = __instance.playerBeamColor,
					timePassed = __instance.timeSinceBeamStart,
					id = ((MonoUpdatable)__instance).HierarchyNumber,
					ownerId = __instance.player.Id,
					ground = __instance.currentGround
				});
			}
			else
			{
				__instance.beamIndex = -1;
			}
			__instance.timeSinceBeamStart += simDeltaTime / (val4 + (Fix)Plugin.BeamMax_Time.Value);
		}

		[HarmonyPatch(typeof(Ability), "Awake")]
		[HarmonyPostfix]
		public static void AbiltiyPatch(Ability __instance)
		{
			//IL_008f: 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)
			string text = ((Object)__instance).name;
			string text2 = "(Clone)";
			if (text.EndsWith(text2))
			{
				text = text.Substring(0, text.Length - text2.Length).Trim();
			}
			ConfigEntry<float> value;
			if (Plugin.configEntries == null)
			{
				Debug.LogError((object)"Plugin.configEntries is null.");
			}
			else if (Plugin.configEntries.TryGetValue(text, out value))
			{
				if (value == null)
				{
					Debug.LogError((object)("Config entry for '" + text + "' is null."));
				}
				else
				{
					__instance.Cooldown = (Fix)value.Value;
				}
			}
			else
			{
				Debug.LogWarning((object)("No config entry found for ability '" + text + "'."));
			}
		}
	}
	[BepInPlugin("com.erwer.configall", "configall", "4.3.3")]
	public class Plugin : BaseUnityPlugin
	{
		public const string PLUGIN_GUID = "com.erwer.configall";

		public const string PLUGIN_NAME = "configall";

		public const string PLUGIN_VERSION = "4.3.3";

		internal static ConfigFile config;

		internal static ConfigEntry<float> gust_strength;

		internal static ConfigEntry<float> gust_radius;

		internal static ConfigEntry<float> BeamSize;

		internal static ConfigEntry<float> BeamMax_Time;

		internal static ConfigEntry<int> dupe_weapon_count;

		internal static ConfigEntry<int> dupe_projectile_count;

		internal static ConfigEntry<int> dupe_item_n_smoke;

		internal static ConfigEntry<int> dupe_players;

		internal static ConfigEntry<int> dupe_lifespan;

		internal static ConfigEntry<bool> dupe_keep_abilities;

		internal static ConfigEntry<bool> dupe_remember_platforms;

		internal static ConfigEntry<bool> tapbow;

		internal static ConfigEntry<bool> tapnade;

		public static Dictionary<string, float> allAbilities = new Dictionary<string, float>
		{
			{ "Dash", 4f },
			{ "Bow", 2.5f },
			{ "Grenade", 2.25f },
			{ "Engine", 3.5f },
			{ "Gust", 5f },
			{ "Blink gun", 2.5f },
			{ "Growth ray", 2.5f },
			{ "Missile", 4f },
			{ "Rock", 2f },
			{ "Spike", 3f },
			{ "Smoke", 3f },
			{ "Time stop", 3f },
			{ "Platform", 6f },
			{ "Roll", 3.5f },
			{ "Revival", 10f },
			{ "Shrink ray", 2.5f },
			{ "Black hole", 4.5f },
			{ "Meteor", 4f },
			{ "Push", 1f },
			{ "Throw", 1f },
			{ "Tesla coil", 1f },
			{ "Mine", 4.5f },
			{ "Beam", 5.5f },
			{ "Drill", 4f },
			{ "Duplicator", 4f }
		};

		public static Dictionary<string, ConfigEntry<float>> configEntries = new Dictionary<string, ConfigEntry<float>>();

		private Dictionary<string, string> config_set = new Dictionary<string, string>
		{
			{ "beam", "Beam" },
			{ "revive", "Revival" },
			{ "dupe", "Duplicator Ray" },
			{ "gust", "Gust" },
			{ "tap", "tap items" }
		};

		private void Awake()
		{
			//IL_020c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Expected O, but got Unknown
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Expected O, but got Unknown
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin com.erwer.configall is loaded!");
			config = ((BaseUnityPlugin)this).Config;
			auto_config.Slider<float>(ref BeamSize, config, config_set["beam"], "Changes beams base size", 1f, 1f, 100f);
			auto_config.Slider<float>(ref BeamMax_Time, config, config_set["beam"], "Changes beams max time", 1f, 1f, 100f);
			auto_config.Slider<int>(ref dupe_weapon_count, config, config_set["dupe"], "Changes Amount of duplicated objects that are WEAPONS..", 3, 3, 10);
			auto_config.Slider<int>(ref dupe_projectile_count, config, config_set["dupe"], "Changes Amount of duplicated objects that are PROJECTILES.", 4, 4, 10);
			auto_config.Slider<int>(ref dupe_item_n_smoke, config, config_set["dupe"], "Changes Amount of duplicated objects that are ITEMS/SMOKE.", 1, 1, 10);
			auto_config.Slider<int>(ref dupe_lifespan, config, config_set["dupe"], "Changes Lifetime of duplicated objects", 1800, 0, 10000);
			auto_config.Slider<int>(ref dupe_players, config, config_set["dupe"], "Changes Amount of duplicated objects that are PLAYERS.", 1, 1, 16);
			auto_config.Slider<float>(ref gust_radius, config, config_set["gust"], "Changes the radius of gust.", 5f, 1f, 100f);
			auto_config.Slider<float>(ref gust_strength, config, config_set["gust"], "Changes the strength (multiplier) of gust.", 1f, 1f, 100f);
			foreach (KeyValuePair<string, float> allAbility in allAbilities)
			{
				ConfigEntry<float> value = config.Bind<float>("Cooldowns", allAbility.Key, allAbility.Value, new ConfigDescription("Cooldown for " + allAbility.Key + " ability", (AcceptableValueBase)null, Array.Empty<object>()));
				configEntries[allAbility.Key] = value;
			}
			util.CheckBox(ref dupe_keep_abilities, config, config_set["dupe"], "Keep your abilities after getting duped?", defaultValue: false);
			util.CheckBox(ref dupe_remember_platforms, config, config_set["dupe"], "Remembered platforms are deleted after re-using dupe.", defaultValue: true);
			util.CheckBox(ref tapbow, config, config_set["tap"], "Instantly Charge Bows", defaultValue: false);
			util.CheckBox(ref tapnade, config, config_set["tap"], "Instantly Charge Grenades", defaultValue: false);
			Harmony val = new Harmony("com.erwer.configall");
			val.PatchAll(typeof(Patches));
		}
	}
	public static class util
	{
		public static void CheckBox(ref ConfigEntry<bool> configVar, ConfigFile config, string sectionName, string description, bool defaultValue)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			configVar = config.Bind<bool>(sectionName, description, defaultValue, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()));
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "ConfigAll";

		public const string PLUGIN_NAME = "ConfigAll";

		public const string PLUGIN_VERSION = "4.2.2";
	}
}