145 lines
4.8 KiB
Lua
145 lines
4.8 KiB
Lua
require "recipe"
|
|
require "color"
|
|
require "arrays"
|
|
require "tech"
|
|
|
|
local function addRecipe(name, amt, ingredients, byproducts, time)
|
|
local input = {}
|
|
local output = {{type = "fluid", name = name, amount = amt}}
|
|
|
|
for _,item in pairs(ingredients) do
|
|
local add = tryLoadItem(item[1], item[2])
|
|
if add then
|
|
table.insert(input, add)
|
|
end
|
|
end
|
|
|
|
log("Adding fluid " .. name .. " with recipe " .. serpent.block(input))
|
|
|
|
if byproducts then
|
|
for _,by in pairs(byproducts) do
|
|
local add = tryLoadItem(by[1], by[2])
|
|
if add then
|
|
table.insert(output, add)
|
|
end
|
|
end
|
|
end
|
|
|
|
local color = data.raw.fluid[name].base_color
|
|
|
|
local recipe = {
|
|
type = "recipe",
|
|
name = name .. "-" .. getTableSize(data.raw.recipe),
|
|
energy_required = time,
|
|
category = "chemistry",
|
|
icon = data.raw.fluid[name].icon,
|
|
icon_size = data.raw.fluid[name].icon_size,
|
|
subgroup = "fluid-recipes",
|
|
ingredients = input,
|
|
results = output,
|
|
localised_name = {"fluid-name." .. name},
|
|
crafting_machine_tint =
|
|
{
|
|
primary = color,
|
|
secondary = color,
|
|
tertiary = color,
|
|
quaternary = color,
|
|
}
|
|
}
|
|
data:extend({recipe})
|
|
return recipe
|
|
end
|
|
|
|
local function addFluid(name, color, amt, ingredients, byproducts, time, tech)
|
|
if data.raw.fluid[name] and type(data.raw.fluid[name]) == "table" then
|
|
return
|
|
end
|
|
color = convertColor(color, true)
|
|
local proto = {
|
|
type = "fluid",
|
|
name = name,
|
|
icon = "__DragonIndustries__/graphics/icons/chemicals/" .. name .. ".png",
|
|
icon_size = 32,
|
|
default_temperature = 25,
|
|
max_temperature = 25,
|
|
order = "a[fluid]-a[water]",
|
|
pressure_to_speed_ratio = 0.3,
|
|
flow_to_energy_ratio = 0.59,
|
|
heat_capacity = "500J",
|
|
base_color = color,
|
|
auto_barrel = true,
|
|
flow_color = {r=math.sqrt(color.r), g = math.sqrt(color.g), b=math.sqrt(color.b)}
|
|
}
|
|
data:extend({proto})
|
|
if ingredients then
|
|
local recipe = addRecipe(name, amt, ingredients, byproducts, time)
|
|
markForProductivityAllowed(recipe);
|
|
if tech then
|
|
if type(tech) == "string" then tech = data.raw.technology[tech] end
|
|
addTechUnlock(tech.name, recipe.name)
|
|
recipe.enabled = false
|
|
else
|
|
local techs = {}
|
|
local packs = {}
|
|
for _,ing in pairs(recipe.ingredients) do
|
|
local techFor = tryFindTechUnlocking(ing)
|
|
if techFor then
|
|
log("Found technology " .. techFor.name .. " to unlock fluid " .. ing.name)
|
|
log(serpent.block(techFor))
|
|
if not listHasValue(techs, techFor.name) then
|
|
table.insert(techs, techFor.name)
|
|
end
|
|
for _,pack in pairs(techFor.unit.ingredients) do
|
|
local packType = pack[1]
|
|
if not listHasValue(packs, packType) then
|
|
table.insert(packs, packType)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if #techs > 0 then
|
|
for i,pack in ipairs(packs) do
|
|
packs[i] = {pack, 1}
|
|
end
|
|
tech = {
|
|
type = "technology",
|
|
name = name,
|
|
icon_size = 32,
|
|
icon = proto.icon,
|
|
localised_name = proto.localised_name,
|
|
effects = { { type = "unlock-recipe", recipe = recipe.name } },
|
|
prerequisites = techs,
|
|
unit =
|
|
{
|
|
count = 50,
|
|
ingredients = packs,
|
|
time = 10
|
|
},
|
|
order = "k-a"
|
|
}
|
|
data:extend({tech})
|
|
log("Created technology to unlock fluid " .. name .. ": " .. serpent.block(techs) .. " / " .. serpent.block(packs))
|
|
recipe.enabled = false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if data.raw.fluid["hydrogen"] and data.raw.fluid["oxygen"] and data.raw.item["carbon"] then --name, amt, ingredients, byproducts, time
|
|
addFluid("carbon-dioxide", 0xD8ADAD)
|
|
addFluid("isopropanol", 0xB5E5FF, 20, {{"sulfuric-acid", 2}, {"water", 20}, {"petroleum-gas", 30}}, {{"sulfuric-acid", 2}}, 1, "sulfur-processing")
|
|
addRecipe("isopropanol", 50, {{"sulfuric-acid", 5}, {"water-barrel", 1}, {"petroleum-gas", 75}}, {{"sulfuric-acid", 5}}, 2.5)
|
|
addFluid("acetone", 0xFFB5B5, 20, {{"isopropanol", 20}, {"oxygen", 10}}, {{"water", 20}}, 2)
|
|
addFluid("benzene", 0xB6AFDB9)
|
|
if data.raw.fluid["hydrogen-peroxide"] then
|
|
addRecipe("benzene", 60, {{"petroleum-gas", 20}, {"crude-oil", 30}, {"hydrogen-peroxide", 10}, {"carbon", 1}}, {{"ethanol", 50}}, 4)
|
|
addRecipe("benzene", 300, {{"petroleum-gas", 100}, {"crude-oil-barrel", 3}, {"hydrogen-peroxide", 50}, {"carbon", 5}}, {{"ethanol", 250}}, 20)
|
|
end
|
|
addRecipe("benzene", 60, {{"petroleum-gas", 20}, {"crude-oil", 40}, {"water", 10}, {"carbon", 2}}, {{"ethanol", 80}}, 4)
|
|
addRecipe("benzene", 75, {{"petroleum-gas", 25}, {"crude-oil-barrel", 1}, {"water", 15}, {"carbon", 2}}, {{"ethanol", 90}}, 5)
|
|
--data.raw.fluid["acetic-acid"] = "temp"
|
|
addFluid("ethanol", 0x93FF93, 10, {{"acetic-acid", 1}, {"petroleum-gas", 10}, {"water", 10}}, nil, 1, "oil-processing")
|
|
addRecipe("ethanol", 50, {{"acetic-acid", 5}, {"petroleum-gas", 50}, {"water-barrel", 1}}, nil, 5)
|
|
addRecipe("ethanol", 20, {{"wood", 4}, {"water", 10}}, {{"carbon-dioxide", 20}}, 60)
|
|
addFluid("acetic-acid", 0xF6FF93, 10, {{"ethanol", 10}, {"oxygen", 10}}, {{"water", 10}}, 1)
|
|
end |