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 ShakyCollisions v2.2.2
Mods/ShakyCollisions.dll
Decompiled 3 weeks agousing System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using Il2CppRUMBLE.MoveSystem; using Il2CppRUMBLE.Utilities; using MelonLoader; using MelonLoader.Preferences; using ShakyCollisions; using UIFramework; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: MelonInfo(typeof(main), "Shaky Collisions", "2.2.2", "UlvakSkillz", null)] [assembly: MelonGame("Buckethead Entertainment", "RUMBLE")] [assembly: MelonColor(255, 195, 0, 255)] [assembly: MelonAuthorColor(255, 195, 0, 255)] [assembly: VerifyLoaderVersion(0, 7, 2, true)] [assembly: MelonAdditionalDependencies(new string[] { "UIFramework" })] [assembly: AssemblyTitle("ShakyCollisions")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ShakyCollisions")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("cc94f205-27d2-4bb4-bbb4-05905d12e30a")] [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 ShakyCollisions; public class main : MelonMod { public static class BuildInfo { public const string ModName = "Shaky Collisions"; public const string ModVersion = "2.2.2"; public const string Author = "UlvakSkillz"; } public override void OnInitializeMelon() { Preferences.InitPrefs(); ((ModelModItem)UI.Register((MelonBase)(object)this, (MelonPreferences_Category[])(object)new MelonPreferences_Category[1] { Preferences.ShakyCollisionsCategory })).OnModSaved += Save; } private void Save() { if (Preferences.AnyPrefsChanged()) { if (Preferences.PrefEnabled.Value) { SceneSingleton<CombatManager>.instance.structureImpactShakeStrength = Preferences.PrefShakeStrength.Value; } else { SceneSingleton<CombatManager>.instance.structureImpactShakeStrength = 0.375f; } if (Preferences.PrefEnabled.Value) { SceneSingleton<CombatManager>.instance.structureImpactShakeFrequency = Preferences.PrefShakeFrequency.Value; } else { SceneSingleton<CombatManager>.instance.structureImpactShakeFrequency = 75f; } } } } public class Preferences { private const string CONFIG_FILE = "config.cfg"; private const string USER_DATA = "UserData/ShakyCollisions/"; internal static Dictionary<MelonPreferences_Entry, object> LastSavedValues = new Dictionary<MelonPreferences_Entry, object>(); internal static MelonPreferences_Category ShakyCollisionsCategory; internal static MelonPreferences_Entry<bool> PrefEnabled; internal static MelonPreferences_Entry<float> PrefShakeStrength; internal static MelonPreferences_Entry<float> PrefShakeFrequency; internal static void InitPrefs() { if (!Directory.Exists("UserData/ShakyCollisions/")) { Directory.CreateDirectory("UserData/ShakyCollisions/"); } ShakyCollisionsCategory = MelonPreferences.CreateCategory("ShakyCollisions", "Settings"); ShakyCollisionsCategory.SetFilePath(Path.Combine("UserData/ShakyCollisions/", "config.cfg")); PrefEnabled = ShakyCollisionsCategory.CreateEntry<bool>("Enabled", true, "Enabled", "Toggles the Mod On/Off", false, false, (ValueValidator)null, (string)null); PrefShakeStrength = ShakyCollisionsCategory.CreateEntry<float>("ShakeStrength", 1.875f, "Shake Strength", "Controls how Shaky the Structures are. 0.375 is the Game's Default", false, false, (ValueValidator)(object)new ValueRange<float>(0f, float.MaxValue), (string)null); PrefShakeFrequency = ShakyCollisionsCategory.CreateEntry<float>("ShakeFrequency", 150f, "Shake Frequency", "Controls how often it Shakes the Structures. 75 is the Game's Default", false, false, (ValueValidator)(object)new ValueRange<float>(0f, float.MaxValue), (string)null); StoreLastSavedPrefs(); } internal static void StoreLastSavedPrefs() { List<MelonPreferences_Entry> list = new List<MelonPreferences_Entry>(); list.AddRange(ShakyCollisionsCategory.Entries); foreach (MelonPreferences_Entry item in list) { LastSavedValues[item] = item.BoxedValue; } } public static bool AnyPrefsChanged() { foreach (KeyValuePair<MelonPreferences_Entry, object> lastSavedValue in LastSavedValues) { if (!lastSavedValue.Key.BoxedValue.Equals(lastSavedValue.Value)) { return true; } } return false; } }