Bonelab mods are targeting MelonLoader version 0.5.7. Newer versions will not work!, so double-check your MelonLoader version if you're having issues.
Decompiled source of AnyMagazine v1.0.0
Mods/AnyMagazine.dll
Decompiled 2 months agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AnyMagazine; using BoneLib.BoneMenu; using BoneLib.BoneMenu.Elements; using HarmonyLib; using Il2CppSystem.Collections.Generic; using MelonLoader; using MelonLoader.Preferences; using SLZ.Interaction; using SLZ.Props.Weapons; using UnhollowerBaseLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Insert any magazines into many guns!")] [assembly: AssemblyDescription("Insert any magazines into many guns!")] [assembly: AssemblyCompany(null)] [assembly: AssemblyProduct("AnyMagazine")] [assembly: AssemblyCopyright("Created by Rexmeck")] [assembly: AssemblyTrademark(null)] [assembly: AssemblyFileVersion("1.0.0")] [assembly: MelonInfo(typeof(global::AnyMagazine.AnyMagazine), "AnyMagazine", "1.0.0", "Rexmeck", null)] [assembly: MelonColor] [assembly: MelonGame("Stress Level Zero", "BONELAB")] [assembly: MelonOptionalDependencies(new string[] { "BoneLib" })] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace AnyMagazine; [HarmonyPatch(typeof(AmmoPlug), "OnPlugInsertComplete")] public static class AmmoPlugOnPlugInsertCompletePatch { private static Hand FindLocalHand(InteractableHost host) { Enumerator<Hand> enumerator = host._hands.GetEnumerator(); while (enumerator.MoveNext()) { Hand current = enumerator.Current; if (((Object)current.manager).name == "[RigManager (Blank)]") { return current; } } return null; } private static void Prefix(AmmoPlug __instance) { if (!Prefs.Enabled || (!Prefs.ApplyMagazine && !Prefs.ApplyCartridge)) { return; } Hand lastHand = ((Plug)__instance).host.GetLastHand(); if (!((Object)(object)lastHand != (Object)null) || (!lastHand.Controller.GetThumbStick() && Prefs.HoldThumbstick)) { return; } AmmoSocket val = ((Il2CppObjectBase)((AlignPlug)__instance)._lastSocket).TryCast<AmmoSocket>(); if ((Object)(object)val != (Object)null && (Object)(object)__instance.magazine != (Object)null && __instance.magazine.magazineState != null && (Object)(object)val.gun != (Object)null && (Object)(object)((Socket)val).host != (Object)null) { Hand val2 = FindLocalHand(((Socket)val).host); Gun gun = val.gun; InventoryAmmoReceiver ammoReceiver = gun._AmmoInventory.ammoReceiver; if ((Object)(object)val2 != (Object)null && (Object)(object)val2.slot != (Object)null) { ammoReceiver.OnHandItemSlotRemoved(val2.slot); } if (Prefs.ApplyMagazine) { gun.defaultMagazine = __instance.magazine.magazineState.magazineData; } if (Prefs.ApplyCartridge) { gun.defaultCartridge = __instance.magazine.magazineState.cartridgeData; } if ((Object)(object)val2 != (Object)null && (Object)(object)val2.slot != (Object)null) { ammoReceiver.OnHandItemSlot(val2.slot); } } } } [HarmonyPatch(typeof(AmmoPlug), "Awake")] public static class AmmoPlugProxyGripFix { private static void Prefix(AmmoPlug __instance) { if ((Object)(object)((AlignPlug)__instance).proxyGrip == (Object)null && (Object)(object)__instance.magazine.grip != (Object)null) { ((AlignPlug)__instance).proxyGrip = __instance.magazine.grip; } } } [HarmonyPatch(typeof(AmmoSocket), "OnPlugEnter")] public static class AmmoSocketOnPlugEnterPatch { private static string _prevplatform = ""; private static void Prefix(AmmoSocket __instance, Plug plug) { if (Prefs.Enabled) { AmmoPlug val = ((Il2CppObjectBase)plug).TryCast<AmmoPlug>(); if ((Object)(object)val != (Object)null && (Object)(object)val.magazine != (Object)null && val.magazine.magazineState != null) { _prevplatform = __instance.platform; __instance.platform = val.magazine.magazineState.magazineData.platform; } } } private static void Postfix(AmmoSocket __instance, Plug plug) { if (Prefs.Enabled) { __instance.platform = _prevplatform; } } } public static class BuildInfo { public const string Name = "AnyMagazine"; public const string Description = "Insert any magazines into many guns!"; public const string Author = "Rexmeck"; public const string Company = null; public const string Version = "1.0.0"; public const string DownloadLink = null; } public static class Prefs { public static MelonPreferences_Category instance; private static MelonPreferences_Entry<bool> _Enabled; private static MelonPreferences_Entry<bool> _HoldThumbstick; private static MelonPreferences_Entry<bool> _ApplyMagazine; private static MelonPreferences_Entry<bool> _ApplyCartridge; public static bool Enabled { get { return _Enabled.Value; } set { _Enabled.Value = value; instance.SaveToFile(false); } } public static bool HoldThumbstick { get { return _HoldThumbstick.Value; } set { _HoldThumbstick.Value = value; instance.SaveToFile(false); } } public static bool ApplyMagazine { get { return _ApplyMagazine.Value; } set { _ApplyMagazine.Value = value; instance.SaveToFile(false); } } public static bool ApplyCartridge { get { return _ApplyCartridge.Value; } set { _ApplyCartridge.Value = value; instance.SaveToFile(false); } } public static void Initialize() { instance = MelonPreferences.CreateCategory("AnyMagazine"); _Enabled = instance.CreateEntry<bool>("Enabled", true, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); _HoldThumbstick = instance.CreateEntry<bool>("HoldThumbstick", true, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); _ApplyMagazine = instance.CreateEntry<bool>("ApplyMagazine", true, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); _ApplyCartridge = instance.CreateEntry<bool>("ApplyCartridge", true, (string)null, (string)null, false, false, (ValueValidator)null, (string)null); instance.SaveToFile(false); try { CreateBoneMenu(); } catch (Exception) { MelonLogger.Msg("BoneMenu Not Detected!"); } } public static void CreateBoneMenu() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) MenuCategory obj = MenuManager.CreateCategory("AnyMagazine", Color.white); obj.CreateBoolElement("Mod Enabled", Color.white, Enabled, (Action<bool>)delegate(bool v) { Enabled = v; }); obj.CreateBoolElement("Hold Thumbstick To Apply", Color.white, HoldThumbstick, (Action<bool>)delegate(bool v) { HoldThumbstick = v; }); obj.CreateBoolElement("Apply Magazine", Color.white, ApplyMagazine, (Action<bool>)delegate(bool v) { ApplyMagazine = v; }); obj.CreateBoolElement("Apply Cartridge", Color.white, ApplyCartridge, (Action<bool>)delegate(bool v) { ApplyCartridge = v; }); } } public class AnyMagazine : MelonMod { public override void OnInitializeMelon() { Prefs.Initialize(); } }