Latest versions of MelonLoader are known to have issues with some games. Use version 0.5.4 until the issue has been fixed!
Decompiled source of Upper Arm Collision v1.0.1
Mods/upperarmscollision.dll
Decompiled a month agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using MelonLoader; using ModThatIsNotMod; using UnityEngine; using UpperArmCollision; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: MelonInfo(typeof(Main), "uppercollision", "1.0.0", "ffba", null)] [assembly: MelonGame("Stress Level Zero", "BONEWORKS")] [assembly: AssemblyTitle("upperarmscollision")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("HP")] [assembly: AssemblyProduct("upperarmscollision")] [assembly: AssemblyCopyright("Copyright © HP 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("250b7369-899e-43b5-856f-89a43d9767b0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace UpperArmCollision; public class Main : MelonMod { [CompilerGenerated] private sealed class <SetupCollidersCoroutine>d__4 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Main <>4__this; private GameObject <rigManager>5__2; private int <attempts>5__3; private int <i>5__4; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <SetupCollidersCoroutine>d__4(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <rigManager>5__2 = null; <>1__state = -2; } private bool MoveNext() { int num = <>1__state; Main main = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; MelonLogger.Msg("Starting collider setup..."); <i>5__4 = 0; goto IL_0069; case 1: <>1__state = -1; <i>5__4++; goto IL_0069; case 2: <>1__state = -1; goto IL_00b7; case 3: { <>1__state = -1; <i>5__4++; break; } IL_0069: if (<i>5__4 < 10) { <>2__current = null; <>1__state = 1; return true; } <rigManager>5__2 = null; <attempts>5__3 = 0; goto IL_00b7; IL_00b7: if ((Object)(object)<rigManager>5__2 == (Object)null && <attempts>5__3 < 300) { <rigManager>5__2 = Player.GetRigManager(); <attempts>5__3++; <>2__current = null; <>1__state = 2; return true; } if ((Object)(object)<rigManager>5__2 == (Object)null) { MelonLogger.Error("Failed to find RigManager!"); return false; } MelonLogger.Msg("Found RigManager: " + ((Object)<rigManager>5__2).name); <i>5__4 = 0; break; } if (<i>5__4 < 5) { <>2__current = null; <>1__state = 3; return true; } Transform val = main.FindChildRecursive(<rigManager>5__2.transform, "r_Arm_ShoulderSHJnt"); if ((Object)(object)val != (Object)null) { MelonLogger.Msg("Found right shoulder: " + ((Object)val).name); main.AddArmCollider(val, isLeft: false); } else { MelonLogger.Error("Right shoulder bone not found!"); } Transform val2 = main.FindChildRecursive(<rigManager>5__2.transform, "l_Arm_ShoulderSHJnt"); if ((Object)(object)val2 != (Object)null) { MelonLogger.Msg("Found left shoulder: " + ((Object)val2).name); main.AddArmCollider(val2, isLeft: true); } else { MelonLogger.Error("Left shoulder bone not found!"); } Transform val3 = main.FindChildRecursive(<rigManager>5__2.transform, "r_Arm_Elbow_CurveSHJnt"); if ((Object)(object)val3 != (Object)null) { MelonLogger.Msg("Found right elbow: " + ((Object)val3).name); main.AddElbowCollider(val3, isLeft: false); } else { MelonLogger.Error("Right elbow bone not found!"); } Transform val4 = main.FindChildRecursive(<rigManager>5__2.transform, "l_Arm_Elbow_CurveSHJnt"); if ((Object)(object)val4 != (Object)null) { MelonLogger.Msg("Found left elbow: " + ((Object)val4).name); main.AddElbowCollider(val4, isLeft: true); } else { MelonLogger.Error("Left elbow bone not found!"); } GameObject val5 = main.FindGameObjectRecursive(<rigManager>5__2.transform, "r_foreArm_col"); if ((Object)(object)val5 != (Object)null) { CapsuleCollider component = val5.GetComponent<CapsuleCollider>(); if ((Object)(object)component != (Object)null) { if (main.prefRedoneElbows != null && main.prefRedoneElbows.Value) { ((Collider)component).enabled = false; MelonLogger.Msg("Disabled r_foreArm_col (Redone Elbows enabled)"); } else { ((Collider)component).enabled = true; MelonLogger.Msg("Enabled r_foreArm_col"); } } } GameObject val6 = main.FindGameObjectRecursive(<rigManager>5__2.transform, "l_foreArm_col"); if ((Object)(object)val6 != (Object)null) { CapsuleCollider component2 = val6.GetComponent<CapsuleCollider>(); if ((Object)(object)component2 != (Object)null) { if (main.prefRedoneElbows != null && main.prefRedoneElbows.Value) { ((Collider)component2).enabled = false; MelonLogger.Msg("Disabled l_foreArm_col (Redone Elbows enabled)"); } else { ((Collider)component2).enabled = true; MelonLogger.Msg("Enabled l_foreArm_col"); } } } MelonLogger.Msg("Collider setup complete!"); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private MelonPreferences_Category prefCategory; public MelonPreferences_Entry<bool> prefRedoneElbows; public override void OnUpdate() { } public override void OnSceneWasLoaded(int buildIndex, string sceneName) { MelonLogger.Msg("Scene loaded: " + sceneName); MelonCoroutines.Start(SetupCollidersCoroutine()); } [IteratorStateMachine(typeof(<SetupCollidersCoroutine>d__4))] private IEnumerator SetupCollidersCoroutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <SetupCollidersCoroutine>d__4(0) { <>4__this = this }; } private void AddArmCollider(Transform bone, bool isLeft) { //IL_0058: 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) CapsuleCollider val = ((Component)bone).gameObject.AddComponent<CapsuleCollider>(); val.direction = 0; val.radius = 0.036f; val.height = 0.3f; if (isLeft) { val.center = new Vector3(-0.175f, 0f, 0f); } else { val.center = new Vector3(0.175f, 0f, 0f); } ((Component)bone).gameObject.layer = 16; } private void AddElbowCollider(Transform bone, bool isLeft) { //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) CapsuleCollider val = ((Component)bone).gameObject.AddComponent<CapsuleCollider>(); val.direction = 0; if (prefRedoneElbows != null && prefRedoneElbows.Value) { val.radius = 0.0355f; val.height = 0.295f; val.center = (isLeft ? new Vector3(-0.1f, 0f, 0f) : new Vector3(0.1f, 0f, 0f)); } else { val.radius = 0.035f; val.height = 0.16f; val.center = new Vector3(0f, 0f, 0f); } ((Component)bone).gameObject.layer = 16; } private Transform FindChildRecursive(Transform parent, string childName) { if (((Object)parent).name == childName) { return parent; } for (int i = 0; i < parent.childCount; i++) { Transform val = FindChildRecursive(parent.GetChild(i), childName); if ((Object)(object)val != (Object)null) { return val; } } return null; } private GameObject FindGameObjectRecursive(Transform parent, string objectName) { if (((Object)((Component)parent).gameObject).name == objectName) { return ((Component)parent).gameObject; } for (int i = 0; i < parent.childCount; i++) { GameObject val = FindGameObjectRecursive(parent.GetChild(i), objectName); if ((Object)(object)val != (Object)null) { return val; } } return null; } }