private static void Postfix(SeaMoth __instance)
            {
                if (__instance.GetPilotingMode() && !Player.main.GetPDA().isInUse)
                {
                    string button2 = LanguageCache.GetButtonFormat("Change Torpedo (<color=#ADF8FFFF>{0}</color>)", GameInput.Button.Deconstruct);

                    string button3      = "";
                    var    toggledSlots = (bool[])Vehicle_quickSlotToggled.GetValue(__instance);
                    for (var i = 0; i < toggledSlots.Length; ++i)
                    {
                        if (toggledSlots[i] && __instance.GetSlotItem(i) != null && __instance.GetSlotItem(i).item.GetTechType() == TechType.SeamothTorpedoModule)
                        {
                            button3 = LanguageCache.GetButtonFormat("\nAccess Torpedo Storage (<color=#ADF8FFFF>{0}</color>)", GameInput.Button.AltTool);
                            break;
                        }
                    }

                    string buttonFormat = LanguageCache.GetButtonFormat("PressToExit", GameInput.Button.Exit);
                    HandReticle.main.SetUseTextRaw(buttonFormat, button2 + button3);
                }
            }
        internal static void OnUpgradeModuleUse(SeaMoth seaMoth, TechType techType, int slotId)
        {
            if (!IsStorageModule(techType))
            {
                return;
            }
            var slotItem       = seaMoth.GetSlotItem(slotId);
            var itemsContainer = GetItemsContainerFromIventoryItem(slotItem, techType);
            PDA pda            = Player.main.GetPDA();

            Inventory.main.SetUsedStorage(itemsContainer);
            pda.Open(PDATab.Inventory);
        }
        static bool Prefix(Equipment __instance, string slot, Pickupable pickupable, bool verbose, ref bool __result)
        {
            TechType techType = pickupable.GetTechType();

            if (techType != TechType.VehicleStorageModule || !slot.StartsWith("SeamothModule"))
            {
                return(true);
            }

            SeaMoth seamoth = __instance.owner.GetComponent <SeaMoth>();

            if (seamoth == null)
            {
                return(true);
            }

            int slotID = int.Parse(slot.Substring(13)) - 1;

            if (slotID > 3 && (slotID < Main.config.slotsOffset || slotID > Main.config.slotsOffset + 3))
            {
                return(true);
            }

            // HACK: trying to swap one storage to another while drag, silently refusing because of ui problems
            if (seamoth.GetSlotItem(slotID)?.item.GetTechType() == TechType.VehicleStorageModule)
            {
                __result = false;
                return(false);
            }

            __result = !seamoth.storageInputs[slotID % Main.config.slotsOffset].state;             //already active

            if (!__result && verbose)
            {
                $"Storage module is already in slot {(slotID < 4? slotID + Main.config.slotsOffset: slotID - Main.config.slotsOffset) + 1}".onScreen();
            }

            return(false);
        }