Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of REPO Source Movement v0.0.200
REPOSourceMovement.dll
Decompiled a year agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using REPOSourceMovement.Patches; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("REPOSourceMovement")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("REPOSourceMovement")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("532311b0-a104-4feb-b2f2-323e5d61f312")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace REPOSourceMovement { [BepInPlugin("BREADFPV.REPOSourceMovement", "REPOSourceMovement", "0.0.1")] public class SourceMovement : BaseUnityPlugin { private const string modGUID = "BREADFPV.REPOSourceMovement"; private const string modName = "REPOSourceMovement"; private const string modVersion = "0.0.1"; private readonly Harmony harmony = new Harmony("BREADFPV.REPOSourceMovement"); private static SourceMovement instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)instance == (Object)null) { instance = this; } mls = Logger.CreateLogSource("BREADFPV.REPOSourceMovement"); mls.LogInfo((object)"REPOSourceMovement loaded!"); harmony.PatchAll(typeof(SourceMovement)); harmony.PatchAll(typeof(PlayerControllerPatch)); } } } namespace REPOSourceMovement.Patches { [HarmonyPatch(typeof(PlayerAvatar))] internal class PlayerAvatarPatch { private static Light fullbrightLight; private static KeyCode toggleKey = (KeyCode)45; private static bool fullbrightOn = false; [HarmonyPatch("Awake")] [HarmonyPostfix] private static void Fullbright(PlayerAvatar __instance) { } [HarmonyPatch("Update")] [HarmonyPostfix] private static void FullbrightToggle() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (Input.GetKeyDown(toggleKey)) { fullbrightOn = !fullbrightOn; } if (fullbrightOn) { ((Behaviour)fullbrightLight).enabled = true; } else { ((Behaviour)fullbrightLight).enabled = false; } } } [HarmonyPatch(typeof(PlayerController))] internal class PlayerControllerPatch { private const float BASE_SPEED = 7f; private const float SPRINT_MULTIPLIER = 1.7f; private const float AIR_ACCELERATION = 2000f; private const float MAX_AIR_VELOCITY = 3f; private const float GROUND_FRICTION = 4f; private const float BHOP_BONUS = 0.3f; private const float MAX_VELOCITY = 40f; private const float JUMP_FORCE = 4f; private const float INITIAL_PUSH = 3f; private static bool wasGrounded = true; private static bool autoBhop = true; private static float lastJumpTime = 0f; private static bool useSourceMovement = false; private static KeyCode toggleKey = (KeyCode)61; private static readonly FieldInfo isTumblingField = AccessTools.Field(typeof(PlayerAvatar), "isTumbling"); [HarmonyPatch("FixedUpdate")] [HarmonyPrefix] private static bool SourceMovementFixedUpdate(PlayerController __instance) { //IL_00a7: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_010c: 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_0117: 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_0121: 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) //IL_0147: 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_0152: 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_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: 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_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0253: 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_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0271: 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) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_0372: 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_037c: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: 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_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_041c: 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_03e7: 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_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_03f7: 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) if (!useSourceMovement) { return true; } bool flag = false; try { if ((Object)(object)__instance.playerAvatarScript != (Object)null) { flag = (bool)isTumblingField.GetValue(__instance.playerAvatarScript); } } catch { } if (flag) { return true; } float axis = Input.GetAxis("Horizontal"); float axis2 = Input.GetAxis("Vertical"); bool key = Input.GetKey((KeyCode)32); bool key2 = Input.GetKey((KeyCode)304); Rigidbody rb = __instance.rb; bool grounded = __instance.CollisionController.Grounded; Vector3 forward = __instance.cameraGameObject.transform.forward; Vector3 right = __instance.cameraGameObject.transform.right; forward.y = 0f; right.y = 0f; ((Vector3)(ref forward)).Normalize(); ((Vector3)(ref right)).Normalize(); Vector3 val = Vector3.zero; Vector3 val2; if (axis != 0f || axis2 != 0f) { val2 = forward * axis2 + right * axis; val = ((Vector3)(ref val2)).normalized; } bool flag2 = wasGrounded && !grounded; wasGrounded = grounded; Vector3 val3 = rb.velocity; int num; if (grounded) { val2 = new Vector3(val3.x, 0f, val3.z); num = ((((Vector3)(ref val2)).magnitude < 0.5f) ? 1 : 0); } else { num = 0; } bool flag3 = (byte)num != 0; if (grounded) { if (flag3 && ((Vector3)(ref val)).magnitude > 0.1f) { val3 += val * 3f; } Vector3 val4 = default(Vector3); ((Vector3)(ref val4))..ctor(val3.x, 0f, val3.z); float magnitude = ((Vector3)(ref val4)).magnitude; float num2 = Mathf.Max(0f, 1f - 4f * Time.fixedDeltaTime); val3.x *= num2; val3.z *= num2; float num3 = 7f; if (key2) { num3 *= 1.7f; } if (((Vector3)(ref val)).magnitude > 0.1f) { float num4 = 10f; Vector3 val5 = val * num4 * Time.fixedDeltaTime; val3 += val5; ((Vector3)(ref val4))..ctor(val3.x, 0f, val3.z); magnitude = ((Vector3)(ref val4)).magnitude; float num5 = Vector3.Dot(((Vector3)(ref val4)).normalized, val); if (magnitude > num3 && num5 > 0f) { float num6 = (magnitude - num3) * num5 * 0.1f; Vector3 val6 = ((Vector3)(ref val4)).normalized * num6; val3 -= val6; } } } if (grounded && autoBhop && key && Time.time - lastJumpTime > 0.1f) { val3.y = 4f; lastJumpTime = Time.time; } if (flag2 && ((Vector3)(ref val3)).magnitude > 0.1f) { float num7 = Mathf.Min(((Vector3)(ref val3)).magnitude * 0.3f, 40f - ((Vector3)(ref val3)).magnitude); val3 += val * num7; } if (!grounded && ((Vector3)(ref val)).magnitude > 0.1f) { float num8 = Vector3.Dot(val3, val); float num9 = Mathf.Clamp(3f - num8, 0f, 3f); if (num9 > 0f) { float num10 = 2000f * Time.fixedDeltaTime; num10 = Mathf.Min(num10, num9); val3 += val * num10; } } if (((Vector3)(ref val3)).magnitude > 40f) { val3 = ((Vector3)(ref val3)).normalized * 40f; } rb.velocity = val3; if (Input.GetKeyDown((KeyCode)282)) { val2 = rb.velocity; Debug.Log((object)$"Velocity: {((Vector3)(ref val2)).magnitude}, Grounded: {grounded}, Stationary: {flag3}"); } return false; } [HarmonyPatch("Update")] [HarmonyPostfix] private static void HandleInputs(PlayerController __instance) { //IL_0001: 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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: 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_007e: 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) if (Input.GetKeyDown(toggleKey)) { useSourceMovement = !useSourceMovement; Debug.Log((object)("Movement System: " + (useSourceMovement ? "Source Engine" : "Original R.E.P.O."))); if ((Object)(object)__instance.rb != (Object)null) { Vector3 velocity = __instance.rb.velocity; __instance.rb.velocity = new Vector3(velocity.x * 0.5f, velocity.y * 0.5f, velocity.z * 0.5f); } } } } }