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 GorillaMovement v1.0.0
Mods/Monkey.dll
Decompiled 14 hours 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 GorillaMovement; using MelonLoader; using MelonLoader.Preferences; using ModThatIsNotMod; using ModThatIsNotMod.BoneMenu; using StressLevelZero.Interaction; using StressLevelZero.Rig; using StressLevelZero.VRMK; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: MelonInfo(typeof(Main), "Gorilla Movement", "1.0.0", "ffba", null)] [assembly: MelonGame("Stress Level Zero", "BONEWORKS")] [assembly: AssemblyTitle("bwmodtest")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("HP")] [assembly: AssemblyProduct("bwmodtest")] [assembly: AssemblyCopyright("Copyright © HP 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ccd630c4-aea7-4b16-8b51-00e3cc2e217e")] [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 GorillaMovement; public class Main : MelonMod { [CompilerGenerated] private sealed class <LegDisableTimer>d__7 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Main <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LegDisableTimer>d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown int num = <>1__state; Main main = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; main.isWaitingToDisable = true; main.UpdateLegColliders(state: true); <>2__current = (object)new WaitForSeconds(1f); <>1__state = 1; return true; case 1: <>1__state = -1; main.isWaitingToDisable = false; 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<float> prefStrengthMulti; public MelonPreferences_Entry<bool> prefLegsEnabledDebug; private bool rigModified; private bool isWaitingToDisable; public override void OnApplicationStart() { //IL_0053: 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_0099: Unknown result type (might be due to invalid IL or missing references) prefCategory = MelonPreferences.CreateCategory("GorillaMovement"); prefStrengthMulti = prefCategory.CreateEntry<float>("StrengthMulti", 5f, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); prefLegsEnabledDebug = prefCategory.CreateEntry<bool>("LegsEnabledDebug", false, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); MenuCategory obj = MenuManager.CreateCategory("Gorilla Movement", Color.red); obj.CreateFloatElement("Strength Multiplier", Color.cyan, prefStrengthMulti.Value, (Action<float>)delegate(float v) { prefStrengthMulti.Value = v; prefCategory.SaveToFile(true); }, 1f, 0.1f, 50f, false); obj.CreateBoolElement("Leg Colliders", Color.white, prefLegsEnabledDebug.Value, (Action<bool>)delegate(bool v) { prefLegsEnabledDebug.Value = v; prefCategory.SaveToFile(true); UpdateLegColliders(v); }); } public override void OnSceneWasLoaded(int buildIndex, string sceneName) { rigModified = false; MelonCoroutines.Start(LegDisableTimer()); } [IteratorStateMachine(typeof(<LegDisableTimer>d__7))] private IEnumerator LegDisableTimer() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LegDisableTimer>d__7(0) { <>4__this = this }; } public override void OnUpdate() { if (!((Object)(object)Player.GetRigManager() == (Object)null)) { if (!rigModified) { ModifyRig(); } if (!isWaitingToDisable && !prefLegsEnabledDebug.Value) { UpdateLegColliders(state: false); } ApplyStrength(); } } private void ModifyRig() { GameObject rigManager = Player.GetRigManager(); RigManager component = rigManager.GetComponent<RigManager>(); Transform val = rigManager.transform.Find("[PhysicsRig]"); if (!((Object)(object)val != (Object)null) || !((Object)(object)component != (Object)null)) { return; } component.ControllerRig.maxAcceleration = 0f; component.ControllerRig.maxVelocity = 0f; Rigidbody rbPelvis = component.physicsRig.physBody.rbPelvis; if ((Object)(object)rbPelvis != (Object)null) { rbPelvis.mass = 1f; } Transform obj = val.Find("Feet"); object obj2; if (obj == null) { obj2 = null; } else { Collider component2 = ((Component)obj).GetComponent<Collider>(); obj2 = ((component2 != null) ? component2.material : null); } PhysicMaterial val2 = (PhysicMaterial)obj2; Transform val3 = val.Find("Pelvis"); if ((Object)(object)val3 != (Object)null && (Object)(object)val2 != (Object)null) { Transform val4 = val3.Find("Chest"); if ((Object)(object)val4 != (Object)null) { foreach (Collider component4 in ((Component)val4).GetComponents<Collider>()) { component4.material = val2; } } Transform val5 = val3.Find("pelvisCol"); if ((Object)(object)val5 != (Object)null) { Collider component3 = ((Component)val5).GetComponent<Collider>(); if ((Object)(object)component3 != (Object)null) { component3.material = val2; } } } rigModified = true; } private void UpdateLegColliders(bool state) { GameObject rigManager = Player.GetRigManager(); if ((Object)(object)rigManager == (Object)null) { return; } Transform val = rigManager.transform.Find("[PhysicsRig]"); if ((Object)(object)val == (Object)null) { return; } Transform val2 = val.Find("Knee"); if ((Object)(object)val2 != (Object)null) { SphereCollider component = ((Component)val2).GetComponent<SphereCollider>(); if ((Object)(object)component != (Object)null) { ((Collider)component).enabled = state; } Transform val3 = val2.Find("KneetoPelvis"); if ((Object)(object)val3 != (Object)null) { CapsuleCollider component2 = ((Component)val3).GetComponent<CapsuleCollider>(); if ((Object)(object)component2 != (Object)null) { ((Collider)component2).enabled = state; } } } Transform val4 = val.Find("Feet"); if ((Object)(object)val4 != (Object)null) { SphereCollider component3 = ((Component)val4).GetComponent<SphereCollider>(); if ((Object)(object)component3 != (Object)null) { ((Collider)component3).enabled = state; } } } private void ApplyStrength() { float value = prefStrengthMulti.Value; Hand leftHand = Player.leftHand; if ((Object)(object)((leftHand != null) ? leftHand.physHand : null) != (Object)null) { UpdatePhysHand(Player.leftHand.physHand, value); } Hand rightHand = Player.rightHand; if ((Object)(object)((rightHand != null) ? rightHand.physHand : null) != (Object)null) { UpdatePhysHand(Player.rightHand.physHand, value); } } private void UpdatePhysHand(PhysHand hand, float m) { hand.zPosForce = 340f * m; hand.zNegForce = 360f * m; hand.yPosForce = 90f * m; hand.yNegForce = 200f * m; hand.xPosForce = 90f * m; hand.xNegForce = 90f * m; hand.maxTorque = 30f * m; hand.newtonDamp = 80f * m; } }