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); }
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()); }
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."); }
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"); }
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(); }
// ---------------------- 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); } }
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")); }
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()); }
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)); }
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); }
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)); }
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); }
/// <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()); }
// 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); }
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); }
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"); }