diff options
Diffstat (limited to 'Recipe.lua')
-rw-r--r-- | Recipe.lua | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/Recipe.lua b/Recipe.lua new file mode 100644 index 0000000..ca62f62 --- /dev/null +++ b/Recipe.lua @@ -0,0 +1,173 @@ +local Material = require "Material" +local Quantity = require "Quantity" + + +local +function inputs (amount, opt, ...) + local acc + local function _in (head, ...) + if head ~= nil then + table.insert(acc, Quantity{amount, head}) + return _in(...) + end + return acc + end + if type(amount) == "table" then + acc = amount + amount = opt + return _in(...) + end + acc = {} + return _in(opt, ...) +end + + +local metatable = { + __tostring = function (self) + return ("Recipe[%q]"):format(self.output.material) + end +} + + +local +function recipe (input, output, duration) + return setmetatable({input=input, output=output, duration=duration}, metatable) +end + + +local +function p1 (basic, resource) + return recipe( + {Quantity{3000, resource}}, + Quantity{20, basic}, + 1800) +end + + +local +function p2 (refined, first, second) + return recipe( + {Quantity{40, first}, Quantity{40, second}}, + Quantity{5, refined}, + 3600) +end + + +local +function p3 (specialized, ...) + return recipe( + inputs(10, ...), + Quantity{3, specialized}, + 3600) +end + + +local +function p4_a (advanced, ...) + return recipe( + inputs(6, ...), + Quantity{1, advanced}, + 3600) +end + + +local +function p4_b (advanced, first, ...) + return recipe( + inputs({Quantity{40, first}}, 6, ...), + Quantity{1, advanced}, + 3600) +end + + +local recipes = { + -- P1 + p1(Material.Water, Material.AqueousLiquids), + p1(Material.IndustrialFibers, Material.Autotrophs), + p1(Material.ReactiveMetals, Material.BaseMetals), + p1(Material.Biofuels, Material.CarbonCompounds), + p1(Material.Proteins, Material.ComplexOrganisms), + p1(Material.Silicon, Material.FelsicMagma), + p1(Material.ToxicMetals, Material.HeavyMetals), + p1(Material.Electrolytes, Material.IonicSolutions), + p1(Material.Bacteria, Material.MicroOrganisms), + p1(Material.Oxygen, Material.NobleGas), + p1(Material.PreciousMetals, Material.NobleMetals), + p1(Material.ChiralStructures, Material.NonCSCrystals), + p1(Material.Biomass, Material.PlankticColonies), + p1(Material.OxidizingCompound, Material.ReactiveGas), + p1(Material.Plasmoids, Material.SuspendedPlasma), + -- P2 + p2(Material.Biocells, Material.Biofuels, Material.PreciousMetals), + p2(Material.ConstructionBlocks, Material.ReactiveMetals, Material.ToxicMetals), + p2(Material.ConsumerElectronics, Material.ToxicMetals, Material.ChiralStructures), + p2(Material.Coolant, Material.Water, Material.Electrolytes), + p2(Material.EnrichedUranium, Material.ToxicMetals, Material.PreciousMetals), + p2(Material.Fertilizer, Material.Proteins, Material.Bacteria), + p2(Material.GenEnhancedLivestock, Material.Proteins, Material.Biomass), + p2(Material.Livestock, Material.Biofuels, Material.Proteins), + p2(Material.MechanicalParts, Material.ReactiveMetals, Material.PreciousMetals), + p2(Material.MicrofiberShielding, Material.IndustrialFibers, Material.Silicon), + p2(Material.MiniatureElectronics, Material.Silicon, Material.ChiralStructures), + p2(Material.Nanites, Material.ReactiveMetals, Material.Bacteria), + p2(Material.Oxides, Material.Oxygen, Material.OxidizingCompound), + p2(Material.Polyaramids, Material.IndustrialFibers, Material.OxidizingCompound), + p2(Material.Polytextiles, Material.IndustrialFibers, Material.Biofuels), + p2(Material.RocketFuel, Material.Electrolytes, Material.Plasmoids), + p2(Material.SilicateGlass, Material.Silicon, Material.OxidizingCompound), + p2(Material.Superconductors, Material.Water, Material.Plasmoids), + p2(Material.SupertensilePlastics, Material.Oxygen, Material.Biomass), + p2(Material.SyntheticOil, Material.Electrolytes, Material.Oxygen), + p2(Material.TestCultures, Material.Water, Material.Bacteria), + p2(Material.Transmitter, Material.ChiralStructures, Material.Plasmoids), + p2(Material.ViralAgent, Material.Bacteria, Material.Biomass), + p2(Material.WaterCooledCPU, Material.Water, Material.ReactiveMetals), + -- P3 + p3(Material.BiotechResearchReports, Material.ConstructionBlocks, Material.Livestock, Material.Nanites), + p3(Material.CameraDrones, Material.RocketFuel, Material.SilicateGlass), + p3(Material.Condensates, Material.Coolant, Material.Oxides), + p3(Material.CryoprotectantSolution, Material.Fertilizer, Material.SyntheticOil, Material.TestCultures), + p3(Material.DataChips, Material.MicrofiberShielding, Material.SupertensilePlastics), + p3(Material.GelMatrixBiopaste, Material.Biocells, Material.Oxides, Material.Superconductors), + p3(Material.GuidanceSystems, Material.Transmitter, Material.WaterCooledCPU), + p3(Material.HazmatDetectionSystems, Material.Polytextiles, Material.Transmitter, Material.ViralAgent), + p3(Material.HermeticMembranes, Material.GenEnhancedLivestock, Material.Polyaramids), + p3(Material.HighTechTransmitters, Material.Polyaramids, Material.Transmitter), + p3(Material.IndustrialExplosives, Material.Fertilizer, Material.Polytextiles), + p3(Material.Neocoms, Material.Biocells, Material.SilicateGlass), + p3(Material.NuclearReactors, Material.EnrichedUranium, Material.MicrofiberShielding), + p3( + Material.PlanetaryVehicles, + Material.MechanicalParts, Material.MiniatureElectronics, Material.SupertensilePlastics), + p3(Material.Robotics, Material.ConsumerElectronics, Material.MechanicalParts), + p3(Material.SmartfabUnits, Material.ConstructionBlocks, Material.MiniatureElectronics), + p3(Material.Supercomputers, Material.ConsumerElectronics, Material.Coolant, Material.WaterCooledCPU), + p3(Material.SyntheticSynapses, Material.SupertensilePlastics, Material.TestCultures), + p3(Material.TranscranialMicrocontrollers, Material.Biocells, Material.Nanites), + p3(Material.UkomiSuperConductors, Material.Superconductors, Material.SyntheticOil), + p3(Material.Vaccines, Material.Livestock, Material.ViralAgent), + -- P4 + p4_a(Material.BroadcastNode, Material.DataChips, Material.HighTechTransmitters, Material.Neocoms), + p4_a( + Material.IntegrityResponseDrones, + Material.GelMatrixBiopaste, Material.HazmatDetectionSystems, Material.PlanetaryVehicles), + p4_a( + Material.RecursiveComputingModule, + Material.GuidanceSystems, Material.SyntheticSynapses, Material.TranscranialMicrocontrollers), + p4_a( + Material.SelfHarmonizingPowerCore, + Material.CameraDrones, Material.HermeticMembranes, Material.NuclearReactors), + p4_a( + Material.WetwareMainframe, + Material.BiotechResearchReports, Material.CryoprotectantSolution, Material.Supercomputers), + p4_b(Material.NanoFactory, Material.ReactiveMetals, Material.IndustrialExplosives, Material.UkomiSuperConductors), + p4_b(Material.OrganicMortarApplicators, Material.Bacteria, Material.Condensates, Material.Robotics), + p4_b(Material.SterileConduits, Material.Water, Material.SmartfabUnits, Material.Vaccines), +} + + +local lookup = {} +for _, recipe in pairs(recipes) do + lookup[recipe.output.material] = recipe +end +return lookup |