public static void Patch()
        {
            bundle = AssetBundle.LoadFromFile("QMods/AlienRifle2/alienrifle");

            rifleTech = TechTypeHandler.AddTechType("AlienRifleWeapon", "Alien Rifle", "An ancient weapon found in an alien facility", ImageUtils.LoadSpriteFromFile("QMods/AlienRifle2/Assets/alienrifle.png"), false);

            PrefabHandler.RegisterPrefab(new RiflePrefab("AlienRifleWeapon", "WorldEntities/Tools/AlienRifle", rifleTech));

            CraftDataHandler.SetEquipmentType(rifleTech, EquipmentType.Hand);
            TechData data = new TechData();

            data.Ingredients = new List <Ingredient>()
            {
                new Ingredient(TechType.StasisRifle, 1),
                new Ingredient(TechType.Magnetite, 3),
                new Ingredient(TechType.PlasteelIngot, 2),
                new Ingredient(TechType.PrecursorIonCrystal, 1)
            };
            data.craftAmount = 1;

            CraftDataHandler.SetTechData(rifleTech, data);
            CraftDataHandler.SetItemSize(rifleTech, 2, 2);
            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "StasisRifleMods", "Stasis Rifle Upgrades", ImageUtils.LoadSpriteFromFile("QMods/AlienRifle2/Assets/stasisrifleupgrades.png"));
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Workbench, rifleTech, "StasisRifleMods", "Alien Rifle");

            HarmonyInstance inst = HarmonyInstance.Create("Kylinator25.AlienRifle.V2");

            inst.PatchAll(typeof(MainPatch).Assembly);
        }
Exemple #2
0
        internal static void PatchCraftingTabs()
        {
            if (CraftingTabsPatched)
            {
                return; // Just a safety
            }
            QuickLogger.Info("Separating batteries and power cells into their own fabricator crafting tabs");

            // Remove original crafting nodes
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.Battery.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.PrecursorIonBattery.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.PowerCell.ToString());
            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.PrecursorIonPowerCell.ToString());

            // Add a new set of tab nodes for batteries and power cells
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, BatteryCraftTab, "Batteries", SpriteManager.Get(TechType.Battery), ResCraftTab, ElecCraftTab);
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, PowCellCraftTab, "Power Cells", SpriteManager.Get(TechType.PowerCell), ResCraftTab, ElecCraftTab);

            // Move the original batteries and power cells into these new tabs
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.Battery, BatteryCraftPath);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonBattery, BatteryCraftPath);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PowerCell, PowCellCraftPath);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonPowerCell, PowCellCraftPath);

            CraftingTabsPatched = true;
        }
 public new void OnStartedPatching()
 {
     if (!QModServices.Main.ModPresent("MoreModifiedItems"))
     {
         CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "BodyMenu", "Suit Upgrades", SpriteManager.Get(TechType.Stillsuit));
     }
 }
        internal static void PatchBatteries()
        {
            if (!TechTypeHandler.ModdedTechTypeExists("DeepPowerCell"))
            {
                var tabIcon = ImageUtils.LoadSpriteFromFile(@"./Qmods/" + Assets + @"/TabIcon.png");
                CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, BatCraftTab, "Batteries and Power Cells", tabIcon, ResCraftTab, ElecCraftTab);
                SeraLogger.Message(Main.modName, "MidGameBatteries not installed, creating new crafting tab");

                CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.Battery.ToString());
                CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.PrecursorIonBattery.ToString());
                CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.PowerCell.ToString());
                CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, ResCraftTab, ElecCraftTab, TechType.PrecursorIonPowerCell.ToString());

                CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.Battery, CraftPath);
                CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PowerCell, CraftPath);
                CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonBattery, CraftPath);
                CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonPowerCell, CraftPath);
            }
            else
            {
                SeraLogger.Message(Main.modName, "MidGameBatteries installed, adding to crafting tab");
            }
            var enzBatt = new EnzymeBattery(1000f);

            enzBatt.Patch();
            var enzPowerCell = new EnzymePowerCell(enzBatt);

            enzPowerCell.Patch();
        }
        public static void Patch()
        {
            QuickLogger.Info("Started patching " + QuickLogger.GetAssemblyVersion());

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

            QuickLogger.Info("Removed original crafting nodes from root of Cyclops Fabricator");
            // Recreates all the tabs from the Vehicle Upgrade Console

            foreach (ModulesTab tab in 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($"Added new tab '{tab.TabID}' to Cyclops Fabricator with '{tab.CraftNodes.Count}' crafting nodes");
            }

            QuickLogger.Info("Patching complete");
        }
        // 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);
            }

            NodeCollections.CheckForCrossModAdditions();

            // Includes a new Cyclops Upgrades Tab (This will keep things more organized and prevent the icons from being rendered off screen when there's too many)
            // 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");
        }
 public SeamothHullModule4() : base(
         classId: "SeamothHullModule4",
         friendlyName: "Seamoth depth module MK4",
         description: "Enhances diving depth. Does not stack.")
 {
     OnStartedPatching += () => CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "EDM", "Enhanced Depth Modules", SpriteManager.Get(TechType.VehicleHullModule1));
 }
        public static void PostPatch()
        {
#if BELOWZERO
            Sprite hoverbike = SpriteManager.Get(SpriteManager.Group.Pings, "Hoverbike");
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "HoverbikeUpgrades", "Snowfox Upgrades", hoverbike, new string[] { "Upgrades" });
            foreach (Spawnable s in new List <Spawnable>()
            {
                new HoverbikeWaterTravelModule(),
                new HoverbikeSolarChargerModule(),
                new HoverbikeStructuralIntegrityModule(),
                new HoverbikeEngineEfficiencyModule(),
                new HoverbikeSelfRepairModule(),
                new HoverbikeDurabilitySystem(),
                new HoverbikeSpeedModule(),
            })
            {
                s.Patch();
            }


            //Batteries.PostPatch();
            LanguageHandler.SetLanguageLine("SeamothWelcomeAboard", "Welcome aboard captain.");
#endif
            CoroutineHost.StartCoroutine(PostPatchCoroutine());
        }
Exemple #9
0
        internal static void PatchAll()
        {
            // Create a new crafting tree tab for batteries and power cells
            var tabIcon = ImageUtils.LoadSpriteFromFile(@"./Qmods/" + MgBatteryAssets + @"/CraftingTabIcon.png");

            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();

            var lithiumBattery = new DeepBattery(config.BatteryCapacity);

            lithiumBattery.Patch();

            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);
        }
        internal static void PatchIt()
        {
            // Nothing for Defensive Upgrades at the moment. May update at later date
            var tabIcon = ImageUtils.LoadSpriteFromFile(@"./Qmods/" + Assets + @"/TabIcon.png");

            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, craftTab, "Cyclops Defensive Upgrades", tabIcon);
            UnityEngine.Debug.Log("[] Crafting tab Cyclops Defensive Upgrades created.");
        }
Exemple #11
0
 public SeamothStealthModule1() : base(
         classId: "SeamothStealthModule1",
         friendlyName: "Seamoth Stealth Module MK1",
         description: "Presence Masking. Does not stack.")
 {
     // wat is this
     string[] stepsToTab = { "SeamothMenu" };
     OnStartedPatching += () => CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "Stealth", "Stealth Modules", SpriteManager.Get(TechType.VehicleHullModule1), stepsToTab);
 }
        static void initNodes()
        {
            if (nodesInited || !(nodesInited = true))
            {
                return;
            }

            CraftTreeHandler.RemoveNode(CraftTree.Type.Fabricator, "Resources", "BasicMaterials", "Titanium");
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Titanium", "Titanium", SpriteManager.Get(TechType.Titanium), "Resources");
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.Titanium, "Resources", "Titanium");
        }
Exemple #13
0
        internal static void PatchCompasses()
        {
            var tabIcon = ImageUtils.LoadSpriteFromFile(@"./Qmods/" + Assets + @"/TabIcon.png");

            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, craftTab, "HUD Chip Upgrades", tabIcon);
            SeraLogger.Message(Main.modName, "Creating new crafting tab");

            var BiomeChip = new BiomeHUDIndicator();

            BiomeChip.Patch();
        }
Exemple #14
0
        // ----------------------

        private static void HandleCraftingTab(ICraftingTab craftingTab)
        {
            if (craftingTab.StepsToTab == null)
            {
                CraftTreeHandler.AddTabNode(craftingTab.FabricatorType, craftingTab.TabID, craftingTab.DisplayName, SpriteManager.Get(craftingTab.SpriteItemID));
            }
            else
            {
                CraftTreeHandler.AddTabNode(craftingTab.FabricatorType, craftingTab.TabID, craftingTab.DisplayName, SpriteManager.Get(craftingTab.SpriteItemID), craftingTab.StepsToTab);
            }
        }
Exemple #15
0
        public static void PatchSMLHelper()
        {
            if (!Singleton.GetPrefabs())
            {
                throw new FileNotFoundException($"Failed to retrieve the {Singleton.FriendlyName} prefab from the asset bundle");
            }
            Singleton.Patch();
            CraftDataHandler.SetCraftingTime(Singleton.TechType, 5);
            CraftTreeHandler.AddTabNode(CraftTree.Type.Constructor, "FCStudios", "FCStudios Mods", ImageUtils.LoadSpriteFromFile($"./QMods/AIMarineTurbine/Assets/Default.png"));

            //CraftTreePatcher.customTabs.Add(new CustomCraftTab("FCStudios", "FCStudios Mods", CraftScheme.Constructor, new Atlas.Sprite(ImageUtils.LoadTextureFromFile($"./QMods/AIMarineTurbine/Assets/Default.png"))));

            //CraftTreePatcher.customNodes.Add(new CustomCraftNode(Singleton.TechType, CraftScheme.Constructor, "FCStudios/WindSurferTurbine"));
        }
Exemple #16
0
        public static void Patch()
        {
            CraftTreeHandler.AddTabNode(
                CraftTree.Type.Workbench,
                WorkBenchTab,
                "Storage Modules",
                SpriteManager.Get(TechType.VehicleStorageModule));

            StorageModuleMgr.RegisterModules();

            CraftDataHandler.SetQuickSlotType(TechType.VehicleStorageModule, QuickSlotType.Instant);

            var harmony = HarmonyInstance.Create("Yamitatsu.BetterVehicleStorage");

            harmony.PatchAll(Assembly.GetExecutingAssembly());
        }
Exemple #17
0
        public static void Load()
        {
            var assembly = Assembly.GetExecutingAssembly();

            HarmonyInstance.Create($"MrPurple6411_{assembly.GetName().Name}").PatchAll(assembly);

            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Posters", "Posters", SpriteManager.Get(TechType.PosterKitty));
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Landscape", "Landscape", SpriteManager.Get(TechType.PosterAurora), "Posters");
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Portrait", "Portrait", SpriteManager.Get(TechType.PosterExoSuit1), "Posters");
            foreach (string directory in Directory.GetDirectories(PosterFolder.FullName))
            {
                string info    = Path.Combine(directory, "info.json");
                string icon    = Path.Combine(directory, "icon.png");
                string texture = Path.Combine(directory, "texture.png");
                if (File.Exists(info) && File.Exists(icon) && File.Exists(texture))
                {
                    try
                    {
                        PosterInfo poster;
                        using (var reader = new StreamReader(info))
                        {
                            var serializer = new JsonSerializer();
                            poster = serializer.Deserialize(reader, typeof(PosterInfo)) as PosterInfo;
                        }

                        Texture2D icontexture   = ImageUtils.LoadTextureFromFile(icon);
                        Texture2D posterTexture = ImageUtils.LoadTextureFromFile(texture);

                        if (poster != null && icontexture != null && posterTexture != null)
                        {
                            var prefab = new BasicPostersPrefab(poster.InternalName, poster.DisplayName, poster.Description, poster.Orientation, icontexture, posterTexture);
                            prefab.Patch();
                            CraftDataHandler.SetQuickSlotType(prefab.TechType, QuickSlotType.Selectable);
                        }
                        else
                        {
                            Console.WriteLine($"[{ModName}] Unable to load Custom Poster from {Path.GetDirectoryName(directory)}!");
                        }
                    }
                    catch (Exception)
                    {
                        Console.WriteLine($"[{ModName}] Unable to load Custom Poster from {Path.GetDirectoryName(directory)}!");
                    }
                }
            }
        }
        public static void Patch()
        {
#if DEBUG
            QuickLogger.DebugLogsEnabled = true;
#endif

            try
            {
                QuickLogger.Info("Started patching - " + QuickLogger.GetAssemblyVersion());

                CrossModUpdates();

                CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, WorkBenchTab, "Armor Modules", SpriteManager.Get(TechType.VehicleArmorPlating));

                //Handle SpeedBooster
                var speedModule = new SpeedBooster();
                speedModule.Patch();

                //Handle HullArmorUpgrades
                var hullArmorMk2Module = new HullArmorMk2();
                hullArmorMk2Module.Patch();

                var hullArmorMk3Module = new HullArmorMk3(hullArmorMk2Module.TechType);
                hullArmorMk3Module.Patch();

                var hullArmorMk4Module = new HullArmorMk4(hullArmorMk3Module.TechType);
                hullArmorMk4Module.Patch();

                //Handle Config Options
                var configOptions = new UpgradeOptions();
                configOptions.Initialize();

                VehicleUpgrader.SetBonusSpeedMultipliers(configOptions.SeamothBonusSpeedMultiplier, configOptions.ExosuitBonusSpeedMultiplier);

                var harmony = HarmonyInstance.Create("com.upgradedvehicles.psmod");
                harmony.PatchAll(Assembly.GetExecutingAssembly());

                QuickLogger.Info("Finished patching");
            }
            catch (Exception ex)
            {
                QuickLogger.Error(ex);
            }
        }
        internal static void PatchSuits()
        {
            var tabIcon = ImageUtils.LoadSpriteFromFile(@"./Qmods/" + Assets + @"/SuitTabIcon.png");

            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, craftTab, "Dive Suit Upgrades", tabIcon);
            CattleLogger.Message("Creating new dive suit crafting tab");

            var DiveSuitMk2  = new ReinforcedSuitMark2();
            var DiveSuitMk3  = new ReinforcedSuitMark3();
            var StillSuitMk2 = new ReinforcedStillSuit();

            DiveSuitMk2.Patch();
            DiveSuitMk3.Patch();
            StillSuitMk2.Patch();

            CraftDataHandler.SetItemSize(ReinforcedSuit2ID, new Vector2int(2, 2));
            CraftDataHandler.SetItemSize(ReinforcedSuit3ID, new Vector2int(2, 2));
            CraftDataHandler.SetItemSize(ReinforcedStillSuit, new Vector2int(2, 2));
        }
Exemple #20
0
        private static void AdjustCraftingTree()
        {
            // Create a new crafting tree tab for batteries and power cells
            var tabIcon = ImageUtils.LoadSpriteFromFile(@"./Qmods/" + MgBatteryAssets + @"/CraftingTabIcon.png");

            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);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonBattery, PathToNewTab);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.Fabricator, TechType.PrecursorIonPowerCell, PathToNewTab);
        }
Exemple #21
0
        internal static void PatchTanks()
        {
            var tabIcon = ImageUtils.LoadSpriteFromFile(@"./Qmods/" + Assets + @"/TankTabIcon.png");

            CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, craftTab, "Specialty O2 Tanks", tabIcon);
            SeraLogger.Message(Main.modName, "Creating new O2 tank crafting tab");

            var smallPhotoTank = new PhotosynthesisSmallTank();
            var photoTank      = new PhotosynthesisTank();
            var chemoTank      = new ChemosynthesisTank();

            smallPhotoTank.Patch();
            photoTank.Patch();
            chemoTank.Patch();

            CraftDataHandler.SetItemSize(PhotosynthesisSmallID, new Vector2int(2, 3));
            CraftDataHandler.SetItemSize(PhotosynthesisTankID, new Vector2int(2, 3));
            CraftDataHandler.SetItemSize(ChemosynthesisTankID, new Vector2int(2, 3));
        }
Exemple #22
0
        private static void CreateTabsAndLoadFiles()
        {
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Posters", "Posters", SpriteManager.Get(TechType.PosterKitty));
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Landscape", "Landscape", SpriteManager.Get(TechType.PosterAurora), "Posters");
            CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Portrait", "Portrait", SpriteManager.Get(TechType.PosterExoSuit1), "Posters");

            foreach (var directory in Directory.GetDirectories(PosterFolder.FullName))
            {
                var info    = Path.Combine(directory, "info.json");
                var icon    = Path.Combine(directory, "icon.png");
                var texture = Path.Combine(directory, "texture.png");
                if (File.Exists(info) && File.Exists(icon) && File.Exists(texture))
                {
                    try
                    {
                        PosterInfo poster;
                        using (var reader = new StreamReader(info))
                        {
                            var serializer = new JsonSerializer();
                            poster = serializer.Deserialize(reader, typeof(PosterInfo)) as PosterInfo;
                        }

                        var iconTexture   = ImageUtils.LoadTextureFromFile(icon);
                        var posterTexture = ImageUtils.LoadTextureFromFile(texture);

                        if (poster != null && iconTexture != null && posterTexture != null)
                        {
                            var prefab = new BasicPostersPrefab(poster.InternalName, poster.DisplayName, poster.Description, poster.Orientation, iconTexture, posterTexture);
                            prefab.Patch();
                        }
                        else
                        {
                            Console.WriteLine($"[{ModName}] Unable to load Custom Poster from {Path.GetDirectoryName(directory)}!");
                        }
                    }
                    catch (Exception)
                    {
                        Console.WriteLine($"[{ModName}] Unable to load Custom Poster from {Path.GetDirectoryName(directory)}!");
                    }
                }
            }
        }
        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);
        }
Exemple #24
0
 /// <summary>
 /// Loads the fabricator tabs
 /// </summary>
 public static void FabricatorTabs()
 {
     try
     {
         Log.Debug("Loading fabricator tabs... (0/2)");
         ingotsplus = ingotDict["yenzen-ingotsplus"];
         var spritetabcraft2  = ingotsplus.LoadAsset <Sprite>("IPFabTabCraft");
         var spritetabunpack2 = ingotsplus.LoadAsset <Sprite>("IPFabTabUnpack");
         CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Craft", "Craft MoreIngots", spritetabcraft2, "Resources");
         Log.Debug("Loading fabricator tabs... (1/2)");
         CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, "Unpack", "Unpack MoreIngots", spritetabunpack2, "Resources");
         Log.Debug("Loading fabricator tabs... (2/2)");
         Log.Debug("Fabricator tabs loaded");
         KnownTechHandler.UnlockOnStart(TechType.ScrapMetal);
         KnownTechHandler.UnlockOnStart(TechType.PrecursorIonCrystal);
     }
     catch (Exception e)
     {
         Log.e(e);
     }
 }
        public static void Patch()
        {
            var harmony = HarmonyInstance.Create("com.mimes.subnautica.seamothenhancementsystem");   // Name to match mod.

            // Create Seamoth addon modules (for crafting in Moonpool)
            var electricalEnhancement = new ElectricalEnhancement();

            electricalEnhancement.Patch();
            var electronicEnhancement = new ElectronicEnhancement();

            electronicEnhancement.Patch();
            var mechanicalEnhancement = new MechanicalEnhancement();

            mechanicalEnhancement.Patch();
            var seamothLink = new SeamothLink();

            seamothLink.Patch();

            // Create Seamoth addon modules (for crafting Vehicle Modification Station)
            var seamothEnhancementSystem = new SeamothEnhancementSystemModule();

            seamothEnhancementSystem.Patch();

            // Load icon for extra "Vehicle piloting enhancements" entry
            GameObject thisGameObject = new GameObject("VehicleEnhancements");
            Sprite     thisSprite     = MainPatcher.assetBundle.LoadAsset <Sprite>("piloting_128x128");

            thisGameObject.gameObject.AddComponent <Image>().sprite = thisSprite;

            // Create extra node
            CraftTreeHandler.AddTabNode(CraftTree.Type.SeamothUpgrades, "vehicleEnhancements", "Vehicle piloting enhancements", thisSprite);
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.SeamothUpgrades, electricalEnhancement.TechType, new string[] { "vehicleEnhancements" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.SeamothUpgrades, electronicEnhancement.TechType, new string[] { "vehicleEnhancements" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.SeamothUpgrades, mechanicalEnhancement.TechType, new string[] { "vehicleEnhancements" });
            CraftTreeHandler.AddCraftingNode(CraftTree.Type.SeamothUpgrades, seamothLink.TechType, new string[] { "vehicleEnhancements" });

            harmony.PatchAll(Assembly.GetExecutingAssembly());
            Config.Load();
            OptionsPanelHandler.RegisterModOptions(new Options.Options());
        }
Exemple #26
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");
        }
        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);
        }
Exemple #28
0
 internal static void PatchFabricatorTabs()
 {
     CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, Names.FabricatorCategoryId, Names.FabricatorCategoryName, SpriteManager.Get(TechType.TitaniumIngot));
     CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, $"Pack{CompactType.Ingot}", $"Pack {CompactType.Ingot}s", SpriteManager.Get(TechType.TitaniumIngot), Names.FabricatorCategoryId);
     CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, $"Unpack{CompactType.Ingot}", $"Unpack {CompactType.Ingot}s", SpriteManager.Get(TechType.Titanium), Names.FabricatorCategoryId);
 }
Exemple #29
0
 public new void OnStartedPatching()
 {
     CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, "BodyMenu", "Suit Upgrades", SpriteManager.Get(TechType.Stillsuit));
 }
        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");
        }