local util = require("data-util"); local graphite_category = "advanced-crafting" if mods["space-exploration"] then graphite_category = "pulverising" end if mods["space-age"] then graphite_category = "basic-crushing" end if mods.Krastorio2 then graphite_category = "crushing" end data:extend({ { type = "recipe-category", name = "diamond-synthesis"}, }) data:extend({ { type = "item", name = "graphite", icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size = 128, pictures = { {filename="__bzcarbon__/graphics/icons/graphite.png", size=128, scale=0.25}, {filename="__bzcarbon__/graphics/icons/graphite-1.png", size=128, scale=0.25}, {filename="__bzcarbon__/graphics/icons/graphite-2.png", size=128, scale=0.25}, }, subgroup = "raw-material", order = "g[graphite]", weight = 1*kg, stack_size = util.get_stack_size(100) }, { type = "recipe", name = "graphite", category = graphite_category, order = "d[graphite]", icons = (mods["Krastorio2"] and { { icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size = 128}, { icon = "__bzcarbon__/graphics/icons/flake-graphite.png", icon_size = 128, icon_mipmaps = 3, scale=0.25, shift= {-8, -8}}, } or nil), -- normal = (mods["Krastorio2"] and -- { -- enabled = false, -- energy_required = 5, -- ingredients = {util.item("flake-graphite", 10)}, -- results = {{type="item", name= "graphite", amount=10}}, -- } or enabled = false, allow_productivity=true, energy_required = 0.5, ingredients = {util.item("flake-graphite", 1)}, results = {util.item("graphite")}, -- expensive = -- { -- enabled = false, -- energy_required = 1, -- ingredients = {util.item("flake-graphite", 2)}, -- result = "graphite" -- } }, { type = "technology", name = "graphite-processing", icon_size = 128, icon = "__bzcarbon__/graphics/icons/graphite.png", effects = {}, unit = { count = 30, ingredients = { {"automation-science-pack", 1}, }, time = 10, }, prerequisites = {}, order = "b-b" }, }) -- If no graphite ore, make it from coal or coke if not util.me.use_flake_graphite() then if data.raw.item["coke"] then data:extend({ { type = "recipe", name = "graphite", icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size=128, category = mods.bzfoundry and "founding" or "advanced-crafting", order = "d[graphite]", enabled = false, energy_required = 0.5, ingredients = {util.item("coke", 1)}, results = {util.item("graphite", 2)}, } }) else data:extend({ { type = "recipe", name = "graphite", icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size=128, category = mods.bzfoundry and "founding" or "advanced-crafting", subgroup = data.raw.item.graphite.subgroup, order = "d[graphite]", enabled = false, energy_required = 0.5, ingredients = {util.item("coal", 1)}, results = {util.item("graphite", 1), {type="item", name="stone", amount=1, probability=0.05}}, } }) end util.add_prerequisite("graphite-processing", "foundry") -- Increase richness of coal a bit local noise = require('noise'); data.raw.resource["coal"].autoplace.richness_expression = data.raw.resource["coal"].autoplace.richness_expression * noise.to_noise_expression(1.5) end if mods.Krastorio2 then util.add_prerequisite("graphite-processing", "kr-crusher") else -- util.add_prerequisite("graphite-processing", "automation") end if mods["space-exploration"] and not mods.Krastorio2 then data:extend({ { type = "recipe", name = "graphite-se", category = "advanced-crafting", order = "d[graphite]", enabled = false, energy_required = 0.5, ingredients = {util.item("flake-graphite", 2)}, results = {util.item("graphite")}, } }) util.add_effect("graphite-processing", { type = "unlock-recipe", recipe = "graphite-se" }) util.add_effect("se-pulveriser", { type = "unlock-recipe", recipe = "graphite" }) else util.add_effect("graphite-processing", { type = "unlock-recipe", recipe = "graphite" }) end if mods["5dim_resources"] then data:extend({ { type = "recipe", name = "graphite-5d", category = "mashering", order = "d[graphite]", enabled = true, energy_required = 0.5, ingredients = {util.item("flake-graphite", 1)}, results = {util.item("graphite", 2)}, } }) end -- diamonds data:extend({ { type = "item", name = "diamond", icon = "__bzcarbon__/graphics/icons/diamond.png", icon_size = 128, subgroup = "raw-material", order = "g[diamond]", weight = 4*kg, stack_size = util.get_stack_size(100) }, { type = "recipe", name = "synthetic-diamond", category = "diamond-synthesis", order = "d[diamond]", icons = (util.me.use_rough_diamond() and { { icon = "__bzcarbon__/graphics/icons/diamond.png", icon_size = 128}, { icon = "__bzcarbon__/graphics/icons/graphite-2.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, } or nil), allow_productivity=true, enabled = false, energy_required = 20, ingredients = {util.item("graphite", mods["space-age"] and 20 or 10)}, results = {util.item("diamond")}, -- expensive = -- { -- enabled = false, -- energy_required = 30, -- ingredients = {util.item("graphite", 20)}, -- result = "diamond" -- } }, util.me.use_rough_diamond() and { type = "recipe", name = "diamond-processing", category = "advanced-crafting", subgroup = "raw-material", order = "d[diamond]", icons = (mods["Krastorio2"] and { { icon = "__bzcarbon__/graphics/icons/diamond.png", icon_size = 128}, { icon = "__bzcarbon__/graphics/icons/rough-diamond.png", icon_size = 64, scale=0.25, shift= {-8, -8}}, } or {{ icon = "__bzcarbon__/graphics/icons/diamond.png", icon_size = 128}}), -- normal = (mods["Krastorio2"] and -- { -- enabled = false, -- energy_required = 20, -- ingredients = {util.item("rough-diamond", 1)}, -- results = { -- {type="item", name= "diamond", amount=1, probability=0.8}, -- {type="item", name= "stone", amount=1, probability=0.2} -- }, -- } or enabled = false, allow_productivity=true, energy_required = 20, ingredients = {util.item("rough-diamond", 1)}, results = { {type="item", name= "diamond", amount=1, probability=0.8}, {type="item", name= "stone", amount=1, probability=0.2} }, -- expensive = -- { -- enabled = false, -- energy_required = 40, -- ingredients = {util.item("rough-diamond", 1)}, -- result = "diamond" -- } } or nil, }) data:extend({ { type = "technology", name = "diamond-processing", icon_size = 128, icon = "__bzcarbon__/graphics/icons/diamond.png", effects = { { type = "unlock-recipe", recipe = "synthetic-diamond" }, util.me.use_rough_diamond() and not mods["space-age"] and { type = "unlock-recipe", recipe = "diamond-processing" } or nil, }, unit = { count = 100, ingredients = { {"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}, }, time = 15, }, prerequisites = {"advanced-material-processing-2"}, order = "b-b" }, }) data:extend({ -- graphene { type = "item", name = "graphene", icon = "__bzcarbon__/graphics/icons/graphene.png", icon_size = 128, subgroup = "intermediate-product", order = "g[graphite]", weight = 2*kg, stack_size = util.get_stack_size(200) }, { type = "recipe", name = "graphene", category = "chemistry", order = "d[graphite]", enabled = false, allow_productivity=true, energy_required = 6, ingredients = (mods["space-age"] or mods.Krastorio2) and { {type="item", name="graphite", amount=1}, {type="fluid", name="ammonia", amount=5}, {type="fluid", name="sulfuric-acid", amount=5}, } or { {type="item", name="graphite", amount=1}, {type="fluid", name="water", amount=10}, {type="fluid", name="sulfuric-acid", amount=10}, }, results = {util.item("graphene")}, }, { type = "technology", name = "graphene", icon_size = 128, icon = "__bzcarbon__/graphics/icons/graphene.png", effects = { { type = "unlock-recipe", recipe = "graphene" }, }, unit = { count = 400, ingredients = mods["space-exploration"] and { {"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}, } or { {"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}, {"production-science-pack", 1}, {"utility-science-pack", 1}, }, time = 60, }, prerequisites = mods["space-exploration"] and {"chemical-science-pack"} or {"utility-science-pack"}, order = "b-b" }, }) if mods["space-age"] then util.set_prerequisite("graphene", {"agricultural-science-pack"}) util.set_tech_recipe("graphene", { {"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}, {"agricultural-science-pack", 1}, }) end -- fullerenes if util.me.use_fullerenes() then data:extend({ { type = "item", name = "fullerenes", icon = "__bzcarbon__/graphics/icons/Fullerene.png", icon_size = 128, subgroup = "intermediate-product", order = "g[graphite-fullerenes]", weight = 2*kg, stack_size = util.get_stack_size(200), }, { type = "recipe", name = "fullerenes", category = mods["space-age"] and "electronics-or-assembling" or "advanced-crafting", order = "d[graphite-fullerenes]", enabled = false, allow_productivity=true, energy_required = 1, ingredients = mods.Krastorio2 and { {type="item", name="graphite", amount=2}, {type="fluid", name="nitrogen", amount=2}, } or { {type="item", name="graphite", amount=2}, }, results = {util.item("fullerenes", 20)}, }, { type = "technology", name = "fullerenes", icon_size = 128, icon = "__bzcarbon__/graphics/icons/Fullerene.png", effects = { { type = "unlock-recipe", recipe = "fullerenes", }, }, unit = { count = 100, ingredients = { {"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}, }, time = 60, }, prerequisites = {"oil-processing", "chemical-science-pack"}, order = "b-b" }, -- nanotubes { type = "item", name = "nanotubes", icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, subgroup = "intermediate-product", order = "g[graphite-nanotubes]", weight = 2*kg, stack_size = util.get_stack_size(200), }, { type = "recipe", name = "nanotubes", main_product = "nanotubes", icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, category = "chemistry", subgroup = "intermediate-product", order = "d[graphite-nanotubes]", enabled = false, allow_productivity=true, energy_required = 20, ingredients = { {type="item", name="fullerenes", amount=1}, {type="item", name="iron-plate", amount=1, catalyst_amount=1}, {type="fluid", name="sulfuric-acid", amount=10, catalyst_amount=10}, }, results = { {type="item", name="nanotubes", amount=1}, {type="item", name="iron-plate", amount=1, probability=0.95, catalyst_amount=1}, {type="fluid", name="sulfuric-acid", amount=9, catalyst_amount=9}, mods.Krastorio2 and {type="fluid", name="dirty-water", amount=1, catalyst_amount=1} or nil, }, }, { type = "technology", name = "nanotubes", icon_size = 128, icon = "__bzcarbon__/graphics/icons/nanotube.png", effects = { { type = "unlock-recipe", recipe = "nanotubes", }, }, unit = { count = 1000, ingredients = (mods.Krastorio2 and not mods["space-exploration"] and { {"production-science-pack", 1}, {"utility-science-pack", 1}, {"space-science-pack", 1}, {"matter-tech-card", 1}, {"advanced-tech-card", 1}, }) or { {"automation-science-pack", 1}, {"logistic-science-pack", 1}, {"chemical-science-pack", 1}, {"production-science-pack", 1}, {"utility-science-pack", 1}, {"space-science-pack", 1}, }, time = 60, }, prerequisites = {"space-science-pack"}, order = "b-b" }, }) end -- carbon black if util.me.use_carbon_black() then data:extend({ { type = "item", name = "carbon-black", icon = "__bzcarbon__/graphics/icons/carbon-black.png", icon_size = 64, icon_mipmaps = 3, subgroup = "intermediate-product", order = "g[graphite-carbon-black]", weight = 1*kg, stack_size = util.get_stack_size(100), }, { type = "recipe", name = "carbon-black", icon = "__bzcarbon__/graphics/icons/carbon-black.png", icon_size = 64, icon_mipmaps = 3, category = "chemistry", order = "d[graphite-carbon-black]", enabled = false, allow_productivity=true, energy_required = 1, ingredients = { {type="item", name="coal", amount=1}, }, results = { {type="item", name= "carbon-black", amount=1}, } }, { type = "recipe", name = "graphite-carbon-black", icons = { { icon = "__bzcarbon__/graphics/icons/carbon-black.png", icon_size = 64, icon_mipmaps = 3}, { icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size = 128}, }, category = "chemistry", order = "d[graphite]", enabled = false, allow_productivity=true, energy_required = 1, ingredients = { {type="item", name="carbon-black", amount=10}, }, results = {util.item("graphite", 1)}, }, }) end -- crucible data:extend({ { type = "item", name = "crucible", icon = "__bzcarbon__/graphics/icons/crucible.png", icon_size = 128, subgroup = "intermediate-product", order = "g[crucible]", weight = 4*kg, stack_size = 50, }, { type = "recipe", name = "crucible", category = "crafting", order = "d[graphite]", enabled = false, allow_productivity=true, energy_required = 3, ingredients = { {type="item", name="graphite", amount=5}, }, results = {util.item("crucible", 1)}, }, }) -- Space exploration subgroups if mods["space-exploration"] and string.sub(mods["space-exploration"], 1, 3) == "0.6" then data:extend({ { type = "item-subgroup", name = "carbon", group = "resources", order = "a-h-z-0", } }) util.set_item_subgroup("graphite", "carbon") util.set_item_subgroup("diamond", "carbon") util.set_item_subgroup("graphene", "carbon") util.set_item_subgroup("carbon-black", "carbon") util.set_item_subgroup("fullerenes", "carbon") util.set_item_subgroup("nanotubes", "carbon") end -- Set early tech tree util.set_tech_trigger("graphite-processing", {type = "mine-entity", entity = "graphite"}) util.add_prerequisite("graphite-processing", "steam-power") if mods["space-age"] then data:extend({ { type = "surface-property", name = "oxygen", default_value = 19, }, -- make graphite from diamonds on some surfaces { type = "recipe", name = "graphitization", icons = { {icon = "__bzcarbon__/graphics/icons/graphite.png", icon_size = 128}, {icon = "__bzcarbon__/graphics/icons/rough-diamond.png", icon_size = 128, scale = 0.125, shift={-8,-8}}, }, category = "smelting", order = "d[graphite]", enabled = false, allow_productivity=true, energy_required = 16, surface_conditions = { {property = "oxygen", max = 20}, }, ingredients = { {type="item", name="rough-diamond", amount=1}, }, show_amount_in_title = false, results = {util.item("graphite", 10)}, }, { type = "technology", name = "diamond-processing-2", icon_size = 128, icon = "__bzcarbon__/graphics/icons/diamond.png", effects = { { type = "unlock-recipe", recipe = "graphitization" }, { type = "unlock-recipe", recipe = "diamond-processing" }, }, research_trigger = { type = "mine-entity", entity = "diamond", }, prerequisites = {"planet-discovery-vulcanus"}, order = "b-b" }, -- Graphite from spoilage via carbon { type = "recipe", name = "graphite-synthesis", category = "organic-or-chemistry", order = "d[graphite]", enabled = false, allow_productivity=true, energy_required = 8/3, ingredients = { {type="item", name="carbon", amount=1}, }, results = {util.item("graphite", 1)}, }, }) util.add_unlock("biochamber", "graphite-synthesis") util.set_recipe_time("burnt-spoilage", 4) util.set_surface_property("nauvis", "oxygen", 21) util.set_surface_property("gleba", "oxygen", 30) util.set_surface_property("fulgora", "oxygen", 15) util.set_surface_property("vulcanus", "oxygen", 12) util.set_surface_property("aquilo", "oxygen", 10) util.set_surface_property("space-platform", "oxygen", 0) end