RUMBLE does not support other mod managers. If you want to use a manager, you must use the RUMBLE Mod Manager, a manager specifically designed for this game.
Decompiled source of ArmSlider v1.1.1
Mods/ArmSlider.dll
Decompiled 3 weeks 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 System.Security; using System.Security.Permissions; using ArmSlider; using HarmonyLib; using Il2CppRUMBLE.Interactions.InteractionBase; using Il2CppRUMBLE.Managers; using Il2CppRUMBLE.Utilities; using MelonLoader; using RumbleModUI; using RumbleModdingAPI; using UnityEngine; using UnityEngine.Events; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: MelonInfo(typeof(Slider), "ArmSlider", "1.1.1", "MasterMischief", null)] [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")] [assembly: VerifyLoaderVersion(0, 6, 2, true)] [assembly: AssemblyTitle("ArmSlider")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ArmSlider")] [assembly: AssemblyCopyright("© 2025 MasterMischief")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("21d6496e-1beb-4179-9061-082d7591b23e")] [assembly: AssemblyFileVersion("1.1.1")] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.1.0")] [module: UnverifiableCode] namespace ArmSlider; public class Slider : MelonMod { public class ValueChangedEventArgs : EventArgs { public float Value { get; private set; } public ValueChangedEventArgs(float value) { Value = value; } } public class ActiveChangedEventArgs : EventArgs { public bool Active { get; private set; } public ActiveChangedEventArgs(bool active) { Active = active; } } public class Setting { private float value; private bool active; public float Min { get; private set; } public float Max { get; private set; } public int DecimalPlaces { get; private set; } public float Value { get { return value; } set { this.value = value; if (activeOption == settingsReversed[this]) { MelonCoroutines.Start(LateUpdateSlider(value)); } this.ValueChanged?.Invoke(this, new ValueChangedEventArgs(value)); } } public bool Active { get { return active; } set { active = value; ModSetting val = settingsReversed[this]; val.SavedValueChanged -= SliderChanged; val.Value = value; val.SavedValue = value; if (sliderOptions.GetUIStatus()) { UI.instance.ForceRefresh(); } val.SavedValueChanged += SliderChanged; if (value) { activeOption = val; slider.SetActive(true); MelonCoroutines.Start(LateUpdateSlider(this.value)); } else if (activeOption == val) { activeOption = null; if ((Object)(object)slider != (Object)null) { slider.SetActive(false); } } this.ActiveChanged?.Invoke(this, new ActiveChangedEventArgs(value)); } } public event EventHandler<ValueChangedEventArgs> ValueChanged; public event EventHandler<ActiveChangedEventArgs> ActiveChanged; public Setting(float min, float max, int decimalPlaces, float value, bool active) { Min = min; Max = max; DecimalPlaces = decimalPlaces; this.value = value; this.active = active; } } [HarmonyPatch(typeof(InteractionHand), "StartPreInteraction")] private static class InteractionHand_StartPreInteraction_Patch { private static bool Prefix(InteractionHand __instance, InteractionBase interaction) { if ((Object)(object)((Component)__instance).gameObject == (Object)(object)((Component)((Component)Singleton<PlayerManager>.instance.localPlayer.Controller).gameObject.transform.GetChild(2).GetChild(1)).gameObject && ((Object)((Component)interaction).transform.parent).name == "ArmSlider") { return false; } return true; } } private static GameObject templateSlider; private static GameObject slider; private static Mod sliderOptions = new Mod(); private static ModSetting activeOption = null; private static Dictionary<ModSetting, Setting> settings = new Dictionary<ModSetting, Setting>(); private static Dictionary<Setting, ModSetting> settingsReversed = new Dictionary<Setting, ModSetting>(); public override void OnLateInitializeMelon() { UI.instance.UI_Initialized += OnUIInit; } public override void OnSceneWasLoaded(int buildIndex, string sceneName) { sliderOptions.ModName = "ArmSlider"; sliderOptions.ModVersion = "1.1.1"; sliderOptions.SetFolder("ArmSlider"); sliderOptions.SetLinkGroup(1, ""); } public override void OnFixedUpdate() { //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) if (Scene.GetSceneName() == "Gym" && (Object)(object)templateSlider == (Object)null) { templateSlider = Object.Instantiate<GameObject>(MasterSlider.GetGameObject()); ((Object)templateSlider).name = "TemplateSlider"; templateSlider.SetActive(false); Object.DontDestroyOnLoad((Object)(object)templateSlider); } if (!((Object)(object)slider == (Object)null) || !((Object)(object)templateSlider != (Object)null) || !((Object)(object)Singleton<PlayerManager>.instance != (Object)null) || Singleton<PlayerManager>.instance.localPlayer == null || !((Object)(object)Singleton<PlayerManager>.instance.localPlayer.Controller != (Object)null)) { return; } slider = Object.Instantiate<GameObject>(templateSlider, ((Component)Players.GetLocalPlayer().Controller).transform.GetChild(1).GetChild(1).GetChild(0) .GetChild(4) .GetChild(0) .GetChild(1) .GetChild(0) .GetChild(0)); ((Object)slider).name = "ArmSlider"; sliderOptions.GetFromFile(); for (int i = 0; i < sliderOptions.Settings.Count; i++) { try { if ((bool)sliderOptions.Settings[i].SavedValue) { activeOption = sliderOptions.Settings[i]; break; } } catch { } } slider.SetActive(activeOption != null); slider.transform.localPosition = new Vector3(-0.0298f, 0.102f, -0.0312f); slider.transform.localRotation = Quaternion.Euler(356f, 140.8539f, 277.8255f); slider.transform.localScale = new Vector3(0.45f, 0.45f, 0.45f); MelonCoroutines.Start(LateUpdateSlider((activeOption == null) ? 0f : settings[activeOption].Value)); InteractionSlider componentInChildren = slider.GetComponentInChildren<InteractionSlider>(); ((UnityEvent<float>)(object)((InteractionNumericalBase)componentInChildren).OnNormalizedValueChanged).AddListener(UnityAction<float>.op_Implicit((Action<float>)delegate(float value) { if (activeOption != null) { Setting setting = settings[activeOption]; setting.Value = (float)Math.Round(setting.Min + value * (setting.Max - setting.Min), setting.DecimalPlaces); } })); ((InteractionBase)componentInChildren).interactionDistancePercentage = 0.6f; ((InteractionBase)componentInChildren).usePreInteractionLerps = false; } private static void OnUIInit() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown if (sliderOptions.Settings.Count == 0) { sliderOptions.AddDescription("No slider options found", "", "No slider-compatible settings were found. Make sure you installed a mod that uses the slider, such as SettingsUI.", new Tags { IsSummary = true }); } UI.instance.AddMod(sliderOptions); } private static void SliderChanged(object sender, EventArgs args) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown settings[(ModSetting)sender].Active = ((ValueChange<bool>)(object)args).Value; } private static IEnumerator LateUpdateSlider(float value) { yield return null; UpdateSlider(value); } private static void UpdateSlider(float value) { if ((Object)(object)slider != (Object)null && activeOption != null) { Setting setting = settings[activeOption]; InteractionSlider componentInChildren = slider.GetComponentInChildren<InteractionSlider>(); ((InteractionNumericalBase)componentInChildren).MoveToValue(((InteractionNumericalBase)componentInChildren).ConvertToValue(Math.Min(Math.Max((value - setting.Min) / (setting.Max - setting.Min), 0f), 1f))); } } public static Setting AddSetting(string name, string description, float minValue, float maxValue, float defaultValue, int decimalPlaces = 0) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown ModSetting<bool> val = sliderOptions.AddToList(name, false, 1, description, new Tags()); ((ModSetting)val).SavedValueChanged += SliderChanged; float num = Math.Min(minValue, maxValue); float num2 = Math.Max(minValue, maxValue); decimalPlaces = Math.Max(decimalPlaces, 0); float value = Math.Min(Math.Max(defaultValue, num), num2); bool active = false; Setting setting = new Setting(num, num2, decimalPlaces, value, active); settings.Add((ModSetting)(object)val, setting); settingsReversed.Add(setting, (ModSetting)(object)val); if (sliderOptions.GetUIStatus()) { UI.instance.ForceRefresh(); } return setting; } }