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