using System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BoneLib; using BoneLib.BoneMenu; using Flip; using Il2CppSLZ.Marrow; using MelonLoader; using MelonLoader.Preferences; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: MelonInfo(typeof(FlipMod), "Flip", "1.0.0", "Spoon1606", null)] [assembly: MelonGame("Stress Level Zero", "BONELAB")] [assembly: MelonOptionalDependencies(new string[] { "RagdollPlayer" })] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyVersion("0.0.0.0")] namespace Flip; public class FlipMod : MelonMod { private static MelonPreferences_Category _prefCategory; private static MelonPreferences_Entry _prefEnabled; private static MelonPreferences_Entry _prefStrength; private static bool _enabled = true; private static int _strength = 6; private static Page _mainPage; private static BoolElement _enabledElement; private static IntElement _strengthElement; private const float Deadzone = 0.3f; private const float StrengthMultiplier = 100f; public override void OnInitializeMelon() { SetupPreferences(); SetupBoneMenu(); MelonLogger.Msg("Flip by Spoon1606 loaded! Only works when Ragdoll Player mod is active. Move left thumbstick forward/back while ragdolled."); } private void SetupPreferences() { _prefCategory = MelonPreferences.CreateCategory("Flip"); _prefEnabled = _prefCategory.CreateEntry("IsEnabled", true, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); _prefStrength = _prefCategory.CreateEntry("Strength", 6, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); _enabled = _prefEnabled.Value; _strength = _prefStrength.Value; } private void SetupBoneMenu() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0035: 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) _mainPage = Page.Root.CreatePage("Flip", new Color(0f, 0.8f, 1f), 0, true); _enabledElement = _mainPage.CreateBool("Enabled", Color.yellow, _enabled, (Action)OnSetEnabled); _strengthElement = _mainPage.CreateInt("Strength", Color.white, _strength, 1, 1, 50, (Action)OnSetStrength); } private void OnSetEnabled(bool value) { _enabled = value; _prefEnabled.Value = value; _prefCategory.SaveToFile(false); } private void OnSetStrength(int value) { _strength = value; _prefStrength.Value = value; _prefCategory.SaveToFile(false); } private bool IsRagdollActive() { PhysicsRig physicsRig = Player.PhysicsRig; if ((Object)(object)physicsRig == (Object)null) { return false; } bool flag = (Object)(object)physicsRig.torso != (Object)null && physicsRig.torso.shutdown; bool flag2 = !physicsRig.ballLocoEnabled; return flag || flag2; } public override void OnUpdate() { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) if (!_enabled || (Object)(object)Player.RigManager == (Object)null || (Object)(object)Player.PhysicsRig == (Object)null || !IsRagdollActive()) { return; } BaseController leftController = Player.LeftController; if (!((Object)(object)leftController == (Object)null)) { Vector2 thumbStickAxis = leftController.GetThumbStickAxis(); float y = thumbStickAxis.y; if (!(Mathf.Abs(y) < 0.3f)) { PerformFlip(y); } } } private void PerformFlip(float direction) { //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) PhysicsRig physicsRig = Player.PhysicsRig; if ((Object)(object)physicsRig == (Object)null) { return; } Transform pelvis = ((Rig)physicsRig).m_pelvis; if (!((Object)(object)pelvis == (Object)null)) { Rigidbody component = ((Component)pelvis).GetComponent(); if (!((Object)(object)component == (Object)null)) { float num = direction * (float)_strength * 100f; component.angularVelocity = ((Component)pelvis).transform.right * num; } } } public override void OnPreferencesLoaded() { _enabled = _prefEnabled.Value; _strength = _prefStrength.Value; if (_enabledElement != null) { _enabledElement.Value = _enabled; } if (_strengthElement != null) { _strengthElement.Value = _strength; } } }