public static ModifiedRecipeList GetOriginals(CraftTree.Type treeType) { CraftTree tree = CraftTree.GetTree(treeType); IEnumerator <CraftNode> mover = tree.nodes.Traverse(true); var originals = new ModifiedRecipeList($"{treeType}Originals"); while (mover.MoveNext()) { if (mover.Current.action == TreeAction.Craft && mover.Current.techType0 < TechType.Databox) { originals.Collections.Add(new ModifiedRecipe(mover.Current.techType0)); } } ; return(originals); }
public void InitializeMod() { var craftData = typeof(CraftData); var techDataField = craftData.GetField("techData", BindingFlags.NonPublic | BindingFlags.Static); var techData = techDataField.GetValue(null) as IDictionary; var TechDataClass = craftData.GetNestedType("TechData", BindingFlags.NonPublic); var ingredientsField = TechDataClass.GetField("_ingredients", BindingFlags.Public | BindingFlags.Instance); var craftAmountField = TechDataClass.GetField("_craftAmount", BindingFlags.Public | BindingFlags.Instance); var IngredientClass = craftData.GetNestedType("Ingredient", BindingFlags.NonPublic); var IngredientsClass = craftData.GetNestedType("Ingredients", BindingFlags.NonPublic); // Adjust Scrap Metal -> Titanium (+1) var titaniumTech = techData[TechType.Titanium]; craftAmountField.SetValue(titaniumTech, 5); // Add Scrap Metal to the crafting tree var ingredient = Activator.CreateInstance(IngredientClass, new object[] { TechType.TitaniumIngot, 1 }); var ingredients = Activator.CreateInstance(IngredientsClass) as IList; ingredients.Add(ingredient); var scrapTechData = Activator.CreateInstance(TechDataClass); ingredientsField.SetValue(scrapTechData, ingredients); craftAmountField.SetValue(scrapTechData, 2); techData.Add(TechType.ScrapMetal, scrapTechData); // Add the Scrap to the crafting menu var craftTree = typeof(CraftTree); var fabricatorTree = CraftTree.GetTree(CraftTree.Type.Fabricator); var basicMaterials = fabricatorTree.nodes["Resources"]["BasicMaterials"] as CraftNode; basicMaterials.AddNode(new CraftNode("ScrapMetal", TreeAction.Craft, TechType.ScrapMetal)); }
public override GameObject GetGameObject() { // Get the ElectricalDefense module prefab and instantiate it var path = "WorldEntities/Tools/Seaglide"; //var path = $"./QMods/BetterSeaglide/Assets/PowerGlide"; var prefab = Resources.Load <GameObject>(path); var obj = GameObject.Instantiate(prefab); ErrorMessage.AddWarning($"Tree is {CraftTree.GetTree(CraftTree.Type.Fabricator)}"); // Get the TechTags and PrefabIdentifiers var techTag = obj.GetComponent <TechTag>(); var prefabIdentifier = obj.GetComponent <PrefabIdentifier>(); // Change them so they fit to our requirements. techTag.type = TechType; prefabIdentifier.ClassId = ClassID; return(obj); }