Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }