コード例 #1
0
        internal static void PatchAll()
        {
            string mainDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            // Create a new crafting tree tab for batteries and power cells
            string assetsFolder = Path.Combine(mainDirectory, "Assets");
            string pathToIcon   = Path.Combine(assetsFolder, @"CraftingTabIcon.png");

            Atlas.Sprite tabIcon = ImageUtils.LoadSpriteFromFile(pathToIcon);
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, BatteryPowerCraftingTab, "Batteries and Power Cells", tabIcon, ResourcesCraftingTab, ElectronicsCraftingTab);

            // Remove the original batteries from the Electronics tab
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.Battery.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.PowerCell.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.PrecursorIonBattery.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.PrecursorIonPowerCell.ToString());

            // And add them back in on the new Batteries and PowerCells tab
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.Battery, PathToNewTab);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PowerCell, PathToNewTab);

            var config = new DeepConfig();

            config.ReadConfigFile(mainDirectory);

            QuickLogger.Info($"Selected PowerStyle in config: {config.SelectedPowerStyle} - (Battery Capacity:{Mathf.RoundToInt(config.BatteryCapacity)})");

            QuickLogger.Info("Patching DeepBattery");
            var lithiumBattery = new DeepBattery(config.BatteryCapacity);

            lithiumBattery.Patch();

            QuickLogger.Info("Patching DeepPowerCell");
            var lithiumPowerCell = new DeepPowerCell(lithiumBattery);

            lithiumPowerCell.Patch();

            // Add the Ion Batteries after the Deep Batteries
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonBattery, PathToNewTab);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonPowerCell, PathToNewTab);
        }
コード例 #2
0
        public override void patch()
        {
            TechType = register();
            useTextFrom(TechType.Builder, TechType.Builder);

            addToGroup(TechGroup.Personal, TechCategory.Tools, TechType.Flare);
            addCraftingNodeTo(CraftTree.Type.Fabricator, "Personal/Tools", TechType.Flare);

            if (Main.config.removeVanillaBuilder)
            {
                CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, "Personal", "Tools", "Builder");
                CraftDataHandler.RemoveFromGroup(TechGroup.Personal, TechCategory.Tools, TechType.Builder);
            }

            setEquipmentType(EquipmentType.Hand);
            setCraftingTime(7f);

            if (Main.config.bigInInventory)
            {
                setItemSize(2, 2);
            }

            unlockOnStart();
        }
コード例 #3
0
        // This mod is intended to be replaced by the VModFabricator
        // But since some people still want it, it's kept up and maintained.
        public static void Patch()
        {
            QuickLogger.Info("Started patching " + QuickLogger.GetAssemblyVersion());

            // Remove all original Cyclops fabricator nodes
            foreach (string origNodeID in NodeCollections.OriginalCyclopsModuleCraftingNodes)
            {
                CraftTreeHandler.RemoveNode(CraftTree.Type.CyclopsFabricator, origNodeID);
            }

            // Recreates all the tabs from the Vehicle Upgrade Console

            foreach (ModulesTab tab in NodeCollections.UpgradeModuleTabs)
            {
                CraftTreeHandler.AddTabNode(CraftTree.Type.CyclopsFabricator, tab.TabID, tab.TabName, tab.TabSprite);

                foreach (TechType craftTypeID in tab.CraftNodes)
                {
                    CraftTreeHandler.AddCraftingNode(CraftTree.Type.CyclopsFabricator, craftTypeID, tab.TabID);
                }
            }

            QuickLogger.Info("Patching complete");
        }
コード例 #4
0
        internal static void PatchAll()
        {
            if (Config.NORMAL.Equals(DeathRun.config.batteryCosts))
            {
                // If we're leaving normal batteries alone, don't patch in our alternates.
                return;
            }

            string mainDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            // Create a new crafting tree tab for batteries and power cells
            string assetsFolder = Path.Combine(mainDirectory, "Assets");
            string pathToIcon   = Path.Combine(assetsFolder, @"CraftingTabIcon.png");

            Atlas.Sprite tabIcon = ImageUtils.LoadSpriteFromFile(pathToIcon);
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, BatteryPowerCraftingTab, "Batteries and Power Cells", tabIcon, ResourcesCraftingTab, ElectronicsCraftingTab);

            // Remove the original batteries from the Electronics tab
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.Battery.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.PowerCell.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.PrecursorIonBattery.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResourcesCraftingTab, ElectronicsCraftingTab, TechType.PrecursorIonPowerCell.ToString());

            //var config = new DeepConfig();
            //config.ReadConfigFile(mainDirectory);
            //QuickLogger.Info($"Selected PowerStyle in config: {config.SelectedPowerStyle} - (Battery Capacity:{Mathf.RoundToInt(config.BatteryCapacity)})");

            CattleLogger.Message("Patching AcidBattery");

            int battSize;
            int powerSize;

            if (Config.EXORBITANT.Equals(DeathRun.config.batteryCosts))
            {
                battSize  = 25;
                powerSize = 75;
            }
            else if (Config.DEATHRUN.Equals(DeathRun.config.batteryCosts))
            {
                battSize  = 50;
                powerSize = 125;
            }
            else if (Config.HARD.Equals(DeathRun.config.batteryCosts))
            {
                battSize  = 75;
                powerSize = 150;
            }
            else
            {
                battSize  = 100;
                powerSize = 200;
            }

            var acidBattery = new AcidBattery(battSize);

            acidBattery.Patch();

            CattleLogger.Message("Patching AcidPowerCell");
            var lithiumPowerCell = new AcidPowerCell(acidBattery, powerSize);

            lithiumPowerCell.Patch();

            // And "regular" batteries (now Lithium) back in on the new Batteries and PowerCells tab
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.Battery, PathToNewTab);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PowerCell, PathToNewTab);

            // Add the Ion Batteries after the Lithium Batteries
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonBattery, PathToNewTab);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonPowerCell, PathToNewTab);

            CattleLogger.Message("Patching Copper Recycling");
            // Add recycling of batteries for copper
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.Copper, PathToBasicTab);
            CattleLogger.Message("Patching Copper Recycling Done");
        }
コード例 #5
0
        public static void Load()
        {
            // Knives
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "KnifeUpgrades", "Knife Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "workbench_knifemenu"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "HeatBlade" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.HeatBlade, new string[] { "KnifeUpgrades" });

            // Tanks
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "HighCapacityTank" });
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "ModTanks", "Tank Upgrades", SpriteManager.Get(TechType.HighCapacityTank));
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.HighCapacityTank, new string[] { "ModTanks" });

            // Fins menu
            CraftDataHandler.SetTechData(TechType.UltraGlideFins, new SMLHelper.V2.Crafting.RecipeData()
            {
                craftAmount = 1,
                Ingredients = new List <Ingredient>()
                {
                    new Ingredient(TechType.Fins, 1),
                    new Ingredient(TechType.Silicone, 2),
                    new Ingredient(TechType.Titanium, 1),
                    new Ingredient(TechType.Lithium, 1)
                }
            });
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "FinUpgrades", "Fin Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "workbench_finsmenu"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "SwimChargeFins" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.SwimChargeFins, new string[] { "FinUpgrades" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.UltraGlideFins, new string[] { "FinUpgrades " });
            // Test purposes, may be changed to a databox before release
            KnownTechHandler.SetAnalysisTechEntry(TechType.SwimChargeFins, new TechType[] { TechType.UltraGlideFins });

            // Seatruck Upgrades
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "SeaTruckWBUpgrades", "Seatruck Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "fabricator_seatruckupgrades"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "SeaTruckUpgradeHull2" });
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "SeaTruckUpgradeHull3" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.SeaTruckUpgradeHull2, new string[] { "SeaTruckWBUpgrades" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.SeaTruckUpgradeHull3, new string[] { "SeaTruckWBUpgrades" });

            // Exosuit Upgrades
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "ExoUpgrades", "Exosuit Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "workbench_exosuitmenu"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "ExoHullModule2" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.ExoHullModule2, new string[] { "ExoUpgrades" });

            // Now our custom stuff
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "SuitUpgrades", "Suit Upgrades", SpriteManager.Get(TechType.Stillsuit));
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "ChipEquipment", "Chips", SpriteManager.Get(TechType.MapRoomHUDChip), new string[] { "Personal" });
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "ChipRecharge", "Chip Recharges", SpriteManager.Get(TechType.MapRoomHUDChip), new string[] { "Personal" });
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "DPDTier1", "Diver Perimeter Defence Chip", SpriteManager.Get(TechType.MapRoomHUDChip), new string[] { "Personal", "ChipRecharge" });
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "DPDTier2", "Diver Perimeter Defence Chip Mk2", SpriteManager.Get(TechType.MapRoomHUDChip), new string[] { "Personal", "ChipRecharge" });
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "DPDTier3", "Diver Perimeter Defence Chip Mk3", SpriteManager.Get(TechType.MapRoomHUDChip), new string[] { "Personal", "ChipRecharge" });

            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, new string[] { "Machines", "HoverbikeSilentModule" });
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, new string[] { "Machines", "HoverbikeJumpModule" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.HoverbikeIceWormReductionModule, new string[] { "Upgrades", "HoverbikeUpgrades" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.HoverbikeJumpModule, new string[] { "Upgrades", "HoverbikeUpgrades" });

            foreach (Spawnable s in new List <Spawnable>()
            {
                new ExosuitLightningClawPrefab(),
                //new ExosuitSprintModule(),
                //new ExosuitLightningClawGeneratorModule(),
                new PowerglideFragmentPrefab(),
                new SurvivalSuit(),
#if BELOWZERO
                new InsulatedRebreather(),
                new ReinforcedColdSuit(),
                new ReinforcedColdGloves(),
                new HighCapacityBooster(),
                new SurvivalColdSuit(),
                new SurvivalSuitBlueprint_FromReinforcedCold(),
                new SurvivalSuitBlueprint_FromSurvivalCold(),
                new HoverbikeMobilityUpgrade(),
                new SeatruckSolarModule(),
                new SeatruckThermalModule(),
                new SeaTruckSonarModule(),
#endif
                new ReinforcedSurvivalSuit(),
                new PowerglideEquipable(),
                new SuperSurvivalSuit(),
                //new SurvivalSuitBlueprint_BaseSuits(),
                new SurvivalSuitBlueprint_FromReinforcedSurvival(),
                new ShadowLeviathanSample(),
                new DiverPerimeterDefenceChip_Broken(),
                new DiverPerimeterDefenceChipItem(),
                new DiverDefenceSystemMk2(),
                new DiverDefenceMk2_FromBrokenChip(),
                new DiverDefenceSystemMk3(),
            })
            {
                s.Patch();
            }

            Databox powerglideDatabox = new Databox()
            {
                DataboxID            = "PowerglideDatabox",
                PrimaryDescription   = PowerglideEquipable.friendlyName + " Databox",
                SecondaryDescription = PowerglideEquipable.description,
                TechTypeToUnlock     = GetModTechType("PowerglideEquipable"),
                CoordinatedSpawns    = new Dictionary <Vector3, Vector3>()
                {
                    { new Vector3(285f, -242.07f, -1299f), new Vector3(344f, 3.77f, 14f) }
                }
            };
            powerglideDatabox.Patch();

            var harmony = new Harmony($"DaWrecka_{myAssembly.GetName().Name}");
            harmony.PatchAll(myAssembly);
        }
コード例 #6
0
        public static void Load()
        {
            if (QModServices.Main.ModPresent("CombinedItems") || QModServices.Main.ModPresent("AcidProofSuit"))
            {
                throw new Exception("Equipment Bonanza is a replacement for Combined Items and Brine Suit. Remove those mods and try again.");
            }

#if SUBNAUTICA_STABLE
            Log.LogDebug("Checking for Nitrogen mod");
            bool bHasN2 = QModServices.Main.ModPresent("NitrogenMod");
            //string sStatus = "Nitrogen mod " + (bHasN2 ? "" : "not ") + "present";
            Log.LogDebug("Nitrogen mod " + (bHasN2 ? "" : "not ") + "present");
#elif BELOWZERO
            // We're going to try and remove crafting nodes from the root of the workbench menu and move them into tabs.
            // Knives
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, DWConstants.KnifeMenuPath, "Knife Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "workbench_knifemenu"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "HeatBlade" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.HeatBlade, new string[] { DWConstants.KnifeMenuPath });

            // Tanks
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "HighCapacityTank" });
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, DWConstants.TankMenuPath, "Tank Upgrades", SpriteManager.Get(TechType.HighCapacityTank));
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.PlasteelTank, new string[] { DWConstants.TankMenuPath });
            CraftDataHandler.SetTechData(TechType.PlasteelTank, new SMLHelper.V2.Crafting.RecipeData()
            {
                craftAmount = 1,
                Ingredients = new List <Ingredient>()
                {
                    new Ingredient(TechType.DoubleTank, 1),
                    new Ingredient(TechType.Silicone, 2),
                    new Ingredient(TechType.Titanium, 1),
                    new Ingredient(TechType.Lithium, 1)
                }
            }
                                         );
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.HighCapacityTank, new string[] { DWConstants.TankMenuPath });
            KnownTechHandler.SetAnalysisTechEntry(TechType.HighCapacityTank, new TechType[] { TechType.PlasteelTank });

            // Fins menu
            CraftDataHandler.SetTechData(TechType.UltraGlideFins, new SMLHelper.V2.Crafting.RecipeData()
            {
                craftAmount = 1,
                Ingredients = new List <Ingredient>()
                {
                    new Ingredient(TechType.Fins, 1),
                    new Ingredient(TechType.Silicone, 2),
                    new Ingredient(TechType.Titanium, 1),
                    new Ingredient(TechType.Lithium, 1)
                }
            }
                                         );
            KnownTechHandler.SetAnalysisTechEntry(TechType.SwimChargeFins, new TechType[] { TechType.UltraGlideFins });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.UltraGlideFins, new string[] { DWConstants.FinsMenuPath });

            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, DWConstants.FinsMenuPath, "Fin Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "workbench_finsmenu"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "SwimChargeFins" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.SwimChargeFins, new string[] { DWConstants.FinsMenuPath });

            // Seatruck Upgrades
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, DWConstants.SeatruckMenuPath, "Seatruck Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "fabricator_seatruckupgrades"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "SeaTruckUpgradeHull2" });
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "SeaTruckUpgradeHull3" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.SeaTruckUpgradeHull2, new string[] { DWConstants.SeatruckMenuPath });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.SeaTruckUpgradeHull3, new string[] { DWConstants.SeatruckMenuPath });

            // Exosuit Upgrades
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "ExosuitMenu", "Exosuit Upgrades", SpriteManager.Get(SpriteManager.Group.Category, "workbench_exosuitmenu"));
            CraftTreeHandler.RemoveNode(CraftTree.Type.Workbench, new string[] { "ExoHullModule2" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, TechType.ExoHullModule2, new string[] { "ExosuitMenu" });

            // Now our custom stuff
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, new string[] { "Machines", "HoverbikeSilentModule" });
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, new string[] { "Machines", "HoverbikeJumpModule" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.HoverbikeIceWormReductionModule, new string[] { "Upgrades", "HoverbikeUpgrades" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.HoverbikeJumpModule, new string[] { "Upgrades", "HoverbikeUpgrades" });
#endif

            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, DWConstants.BodyMenuPath, "Suit Upgrades", SpriteManager.Get(Main.StillSuitType));
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, DWConstants.ChipsMenuPath, "Chips", SpriteManager.Get(TechType.MapRoomHUDChip), new string[] { "Personal" });
            //CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "ChipRecharge", "Chip Recharges", SpriteManager.Get(TechType.MapRoomHUDChip), new string[] { "Personal" });

            var prefabs = new List <Spawnable>()
            {
                //new ExosuitLightningClawPrefab(),
#if SUBNAUTICA_STABLE
                new AcidGloves(),
                new AcidHelmet(),
                new AcidSuit(),
                //new Blueprint_Suits(),
#elif BELOWZERO
                new InsulatedRebreather(),
                new ReinforcedColdSuit(),
                new ReinforcedColdGloves(),
                new HighCapacityBooster(),
                new SurvivalColdSuit(),
                new SurvivalSuitBlueprint_FromReinforcedCold(),
                new SurvivalSuitBlueprint_FromSurvivalCold(),
                new HoverbikeMobilityUpgrade(),
                new SeatruckSolarModule(),
                new SeatruckThermalModule(),
                new SeaTruckSonarModule(),
                new ShadowLeviathanSample(),
                new SurvivalSuitBlueprint_FromReinforcedSurvival(),
                //new SeatruckSolarModuleMk2(),
                new IonBoosterTank(),
                new SeatruckRepairModule(),
#endif
                new DiverPerimeterDefenceChip_Broken(),
                new DiverPerimeterDefenceChipItem(),
                new DiverDefenceSystemMk2(),
                new DiverDefenceMk2_FromBrokenChip(),
                new DiverDefenceSystemMk3(),
                new PowerglideFragmentPrefab(),
                new SurvivalSuit(),
                new PowerglideEquipable(),
                new ReinforcedSurvivalSuit(),
                new ExosuitLightningClawGeneratorModule(),
                new Vibroblade(),
                new DWUltraGlideSwimChargeFins(),
                new PlasteelHighCapTank(),
            };


#if SUBNAUTICA_STABLE
            if (bHasN2)
            {
                Log.LogDebug($"Main.Load(): Found NitrogenMod, adding Nitrogen prefabs");
                foreach (string sTechType in new List <string> {
                    "reinforcedsuit2", "reinforcedsuit3", "rivereelscale", "lavalizardscale"
                })
                {
                    if (SMLHelper.V2.Handlers.TechTypeHandler.TryGetModdedTechType(sTechType, out TechType tt))
                    {
                        NitrogenTechtypes.Add(sTechType, tt);
                        bHasN2 = true;
                    }
                    else
                    {
                        Log.LogDebug($"Load(): Could not find TechType for Nitrogen class ID {sTechType}");
                    }
                }
                prefabs.Add(new NitrogenBrineSuit2());
                prefabs.Add(new NitrogenBrineSuit3());
                prefabs.Add(new Blueprint_ReinforcedMk2toBrineMk2());
                prefabs.Add(new Blueprint_ReinforcedMk3toBrineMk3());
            }
#endif

            // These may depend on Nitrogen
            prefabs.Add(new SuperSurvivalSuit());


            foreach (Spawnable s in prefabs)
            {
                s.Patch();
            }

            Databox powerglideDatabox = new Databox()
            {
                DataboxID            = "PowerglideDatabox",
                PrimaryDescription   = PowerglideEquipable.friendlyName + " Databox",
                SecondaryDescription = PowerglideEquipable.description,
                TechTypeToUnlock     = GetModTechType("PowerglideEquipable"),
#if SUBNAUTICA_STABLE
                CoordinatedSpawns = new List <Spawnable.SpawnLocation>()
                {
                    new Spawnable.SpawnLocation(new Vector3(-1407.51f, -332.47f, 740.66f), new Vector3(6.93f, 275.67f, 0.00f)),
                    //new Spawnable.SpawnLocation(new Vector3(-1384.79f, -330.18f, 718.84f), new Vector3(1.22f, 194.60f, 357.64f))
                }
#elif BELOWZERO
                CoordinatedSpawns = new List <Spawnable.SpawnLocation>()
                {
                    new Spawnable.SpawnLocation(new Vector3(285f, -242.07f, -1299f), new Vector3(344f, 3.77f, 14f))
                }
#endif
            };
            powerglideDatabox.Patch();

            var harmony = new Harmony($"DaWrecka_{myAssembly.GetName().Name}");
            harmony.PatchAll(myAssembly);
        }