using System;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyCompany("StrafingRework")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("0.0.0.0")]
[assembly: AssemblyInformationalVersion("0.0.0-alpha.0.1+16c0a0f761ec283b3a08cd7326b81d03d1f0859d")]
[assembly: AssemblyProduct("StrafingRework")]
[assembly: AssemblyTitle("StrafingRework")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.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;
}
}
}
[BepInPlugin("sparroh.strafingrework", "StrafingRework", "1.0.0")]
public class SparrohPlugin : BaseUnityPlugin
{
public const string PluginGUID = "sparroh.strafingrework";
public const string PluginName = "StrafingRework";
public const string PluginVersion = "1.0.0";
internal static ManualLogSource Logger;
private void Awake()
{
//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)
Logger = ((BaseUnityPlugin)this).Logger;
Harmony val = new Harmony("sparroh.strafingrework");
val.PatchAll(typeof(StrafingSpeedPatch));
val.PatchAll(typeof(WingsuitStrafingPatch));
Logger.LogInfo((object)"StrafingRework loaded successfully.");
}
}
[HarmonyPatch]
public static class WingsuitStrafingPatch
{
[HarmonyPatch(typeof(Wingsuit), "OnJumpPressed")]
[HarmonyPostfix]
public static void OnJumpPressedPostfix(Wingsuit __instance)
{
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: 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_00cf: 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_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0144: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: 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_01a1: Unknown result type (might be due to invalid IL or missing references)
FieldInfo field = ((object)__instance).GetType().GetField("wingsuitData", BindingFlags.Instance | BindingFlags.NonPublic);
if (field == null)
{
return;
}
object value = field.GetValue(__instance);
if (value == null)
{
return;
}
FieldInfo field2 = value.GetType().GetField("lockFlyDirection", BindingFlags.Instance | BindingFlags.Public);
if (field2 == null || !(bool)field2.GetValue(value))
{
return;
}
FieldInfo field3 = ((object)__instance).GetType().GetField("player", BindingFlags.Instance | BindingFlags.NonPublic);
if (field3 == null)
{
return;
}
object value2 = field3.GetValue(__instance);
if (value2 == null)
{
return;
}
Vector2 val = PlayerInput.MoveInput();
if (((Vector2)(ref val)).magnitude < 0.1f)
{
return;
}
FieldInfo field4 = ((object)__instance).GetType().GetField("isFlying", BindingFlags.Instance | BindingFlags.NonPublic);
if (!(field4 != null) || !(bool)field4.GetValue(__instance))
{
return;
}
Vector3 val2 = new Vector3(val.x, val.y, 0f);
Vector3 normalized = ((Vector3)(ref val2)).normalized;
FieldInfo field5 = value.GetType().GetField("flySpeed", BindingFlags.Instance | BindingFlags.Public);
if (field5 == null)
{
return;
}
float num = (float)field5.GetValue(value);
float num2 = Mathf.Abs(normalized.x) * num * 0.5f;
if (num2 > 0f)
{
Vector3 val3 = ((Component)__instance).transform.right * (float)((normalized.x > 0f) ? 1 : (-1)) * num2;
MethodInfo method = value2.GetType().GetMethod("AddForce", new Type[1] { typeof(Vector3) });
if (method != null)
{
method.Invoke(value2, new object[1] { val3 });
}
}
}
[HarmonyPatch(typeof(Wingsuit), "FixedUpdate")]
[HarmonyPostfix]
public static void FixedUpdatePostfix(Wingsuit __instance)
{
//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_0042: 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_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: 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_01b1: 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_01e1: 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_01ed: 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)
FieldInfo field = ((object)__instance).GetType().GetField("isFlying", BindingFlags.Instance | BindingFlags.NonPublic);
if (field == null || !(bool)field.GetValue(__instance))
{
return;
}
Vector2 val = PlayerInput.MoveInput();
if (((Vector2)(ref val)).magnitude < 0.01f)
{
return;
}
Vector3 val2 = default(Vector3);
((Vector3)(ref val2))..ctor(val.x, val.y, 0f);
float magnitude = ((Vector3)(ref val2)).magnitude;
if (magnitude > 0f)
{
val2 /= magnitude;
}
FieldInfo field2 = ((object)__instance).GetType().GetField("wingsuitData", BindingFlags.Instance | BindingFlags.NonPublic);
if (field2 == null)
{
return;
}
object value = field2.GetValue(__instance);
if (value == null)
{
return;
}
FieldInfo field3 = value.GetType().GetField("flySpeed", BindingFlags.Instance | BindingFlags.Public);
FieldInfo field4 = value.GetType().GetField("flySpeedCurve", BindingFlags.Instance | BindingFlags.Public);
FieldInfo field5 = value.GetType().GetField("flySpeedCurveDuration", BindingFlags.Instance | BindingFlags.Public);
if (field3 == null || field4 == null)
{
return;
}
float num = (float)field3.GetValue(value);
object? value2 = field4.GetValue(value);
AnimationCurve val3 = (AnimationCurve)((value2 is AnimationCurve) ? value2 : null);
float num2 = ((field5 != null) ? ((float)field5.GetValue(value)) : 1f);
FieldInfo field6 = ((object)__instance).GetType().GetField("flyStartTime", BindingFlags.Instance | BindingFlags.NonPublic);
if (field6 == null)
{
return;
}
float num3 = (float)field6.GetValue(__instance);
float num4 = Mathf.Min((Time.time - num3) / num2, 1f);
float num5 = val3.Evaluate(num4);
FieldInfo field7 = ((object)__instance).GetType().GetField("player", BindingFlags.Instance | BindingFlags.NonPublic);
if (field7 == null)
{
return;
}
object value3 = field7.GetValue(__instance);
if (value3 == null)
{
return;
}
float x = val2.x;
if (Mathf.Abs(x) > 0.1f)
{
float num6 = num * num5 * 2f;
Vector3 val4 = ((Component)__instance).transform.right * x * num6;
MethodInfo method = value3.GetType().GetMethod("AddForce", new Type[1] { typeof(Vector3) });
if (method != null)
{
method.Invoke(value3, new object[1] { val4 });
}
}
}
}
[HarmonyPatch]
public static class StrafingSpeedPatch
{
[HarmonyTargetMethod]
public static MethodBase TargetMethod()
{
Type type = Type.GetType("Pigeon.Movement.Player, Assembly-CSharp");
if (type == null)
{
return null;
}
MethodInfo method = type.GetMethod("Awake", BindingFlags.Instance | BindingFlags.NonPublic);
if (method != null)
{
return method;
}
MethodInfo method2 = type.GetMethod("Start", BindingFlags.Instance | BindingFlags.NonPublic);
if (method2 != null)
{
return method2;
}
return null;
}
[HarmonyPostfix]
public static void Postfix(object __instance)
{
Type type = __instance.GetType();
FieldInfo field = type.GetField("strafeSpeedMultiplier", BindingFlags.Instance | BindingFlags.NonPublic);
FieldInfo field2 = type.GetField("strafeSpeedMultiplierWhileMoving", BindingFlags.Instance | BindingFlags.NonPublic);
if (field != null)
{
field.SetValue(__instance, 1f);
}
if (field2 != null)
{
field2.SetValue(__instance, 1f);
}
}
}
[CompilerGenerated]
[ExcludeFromCodeCoverage]
internal static class GitVersionInformation
{
public const string AssemblySemFileVer = "0.0.1.0";
public const string AssemblySemVer = "0.0.1.0";
public const string BranchName = "master";
public const string BuildMetaData = "";
public const string CommitDate = "2025-10-17";
public const string CommitsSinceVersionSource = "2";
public const string EscapedBranchName = "master";
public const string FullBuildMetaData = "Branch.master.Sha.16c0a0f761ec283b3a08cd7326b81d03d1f0859d";
public const string FullSemVer = "0.0.1-2";
public const string InformationalVersion = "0.0.1-2+Branch.master.Sha.16c0a0f761ec283b3a08cd7326b81d03d1f0859d";
public const string Major = "0";
public const string MajorMinorPatch = "0.0.1";
public const string Minor = "0";
public const string Patch = "1";
public const string PreReleaseLabel = "";
public const string PreReleaseLabelWithDash = "";
public const string PreReleaseNumber = "2";
public const string PreReleaseTag = "2";
public const string PreReleaseTagWithDash = "-2";
public const string SemVer = "0.0.1-2";
public const string Sha = "16c0a0f761ec283b3a08cd7326b81d03d1f0859d";
public const string ShortSha = "16c0a0f";
public const string UncommittedChanges = "16";
public const string VersionSourceSha = "";
public const string WeightedPreReleaseNumber = "55002";
}
namespace StrafingRework
{
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "StrafingRework";
public const string PLUGIN_NAME = "StrafingRework";
public const string PLUGIN_VERSION = "0.0.0";
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}