diff --git a/carbon-recipe-final-k2.lua b/carbon-recipe-final-k2.lua index fa9f118..495b2fe 100644 --- a/carbon-recipe-final-k2.lua +++ b/carbon-recipe-final-k2.lua @@ -1,72 +1,11 @@ -local util = require("data-util"); -local futil = require("util") +local util = require("data-util") +local cutil = require("carbon-util") if mods.Krastorio2 then if util.me.use_fullerenes() then - -- Add extra nanotube recipes. - -- This could be moved to data-updates in future if necessary - data:extend({ - { - type = "recipe", - name = "imersium-plate-nanotubes", - icons = { - { icon = data.raw.item["imersium-plate"].icon, icon_size = data.raw.item["imersium-plate"].icon_size}, - { icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, - }, - category = "smelting", - subgroup = "raw-material", - order = "e00-a2[imersium-plate]", - enabled = false, - energy_required = 32, - ingredients = { - {"nanotubes", 6}, - table.unpack(futil.table.deepcopy(data.raw.recipe["imersium-plate"].ingredients)), - }, - result = "imersium-plate", - result_count = 6, - }, - { - type = "recipe", - name = "imersium-beam-nanotubes", - icons = { - { icon = data.raw.item["imersium-beam"].icon, icon_size = data.raw.item["imersium-beam"].icon_size}, - { icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, - }, - category = "smelting-crafting", - subgroup = "smelting-crafting", - hide_from_player_crafting = true, - order = data.raw.item["imersium-beam"].order.."z", - enabled = false, - energy_required = 12, - ingredients = { - {"nanotubes", 4}, - table.unpack(futil.table.deepcopy(data.raw.recipe["kr-s-c-imersium-beam"].ingredients)), - }, - result = "imersium-beam", - result_count = 2, - }, - { - type = "recipe", - name = "imersium-gear-wheel-nanotubes", - icons = { - { icon = data.raw.item["imersium-gear-wheel"].icon, icon_size = data.raw.item["imersium-gear-wheel"].icon_size}, - { icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, - }, - category = "smelting-crafting", - subgroup = "smelting-crafting", - hide_from_player_crafting = true, - order = data.raw.item["imersium-gear-wheel"].order.."z", - enabled = false, - energy_required = 12, - ingredients = { - {"nanotubes", 2}, - table.unpack(futil.table.deepcopy(data.raw.recipe["kr-s-c-imersium-gear-wheel"].ingredients)), - }, - result = "imersium-gear-wheel", - result_count = 2, - }, - }) - util.add_unlock("nanotubes", "imersium-plate-nanotubes") - util.add_unlock("nanotubes", "imersium-beam-nanotubes") - util.add_unlock("nanotubes", "imersium-gear-wheel-nanotubes") + -- Add extra nanotube recipes. + -- This could be moved to data-updates in future if necessary + cutil.nanotube_recipe("imersium-plate") + cutil.nanotube_recipe("kr-s-c-imersium-beam", "imersium-beam") + cutil.nanotube_recipe("kr-s-c-imersium-gear-wheel", "imersium-gear-wheel") end end diff --git a/carbon-recipe-final-se.lua b/carbon-recipe-final-se.lua index 23b09bf..098ba70 100644 --- a/carbon-recipe-final-se.lua +++ b/carbon-recipe-final-se.lua @@ -1,58 +1,13 @@ local util = require("data-util"); -local futil = require("util") +local cutil = require("carbon-util") if mods["space-exploration"] then -- core mining balancing graphite at full, diamond removed util.remove_product("se-core-fragment-omni", "rough-diamond") if util.me.use_fullerenes() then - -- Add an extra nanotube aeroframe scaffold recipe. - -- This could be moved to data-updates in future if necessary - data:extend({ - { - type = "recipe", - name = "aeroframe-scaffold-nanotubes", - icons = { - { icon = data.raw.item["se-aeroframe-scaffold"].icon, icon_size = data.raw.item["se-aeroframe-scaffold"].icon_size}, - { icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, - }, - category = "crafting", - order = data.raw.item["se-aeroframe-scaffold"].order.."z", - enabled = false, - energy_required = 2, - ingredients = { - {"nanotubes", 2}, - table.unpack(futil.table.deepcopy(data.raw.recipe["se-aeroframe-scaffold"].ingredients)), - }, - result = "se-aeroframe-scaffold", - result_count = 2, - }, - }) - util.add_unlock("se-aeroframe-scaffold", "aeroframe-scaffold-nanotubes") - - data:extend({ - { - type = "recipe", - name = "nanomaterial-nanotubes", - icons = { - { icon = data.raw.item["se-nanomaterial"].icon, icon_size = data.raw.item["se-nanomaterial"].icon_size}, - { icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, - }, - category = data.raw.recipe["se-nanomaterial"].category, - order = data.raw.item["se-nanomaterial"].order.."z", - subgroup = data.raw.item["se-nanomaterial"].subgroup, - enabled = false, - energy_required = data.raw.recipe["se-nanomaterial"].energy_required, - ingredients = { - {"nanotubes", 2}, - table.unpack(futil.table.deepcopy(data.raw.recipe["se-nanomaterial"].ingredients)), - }, - results = { - table.unpack(futil.table.deepcopy(data.raw.recipe["se-nanomaterial"].results)), - } - } - }) - util.add_to_product("nanomaterial-nanotubes", "se-nanomaterial", 16) - util.add_unlock("se-nanomaterial", "nanomaterial-nanotubes") + cutil.nanotube_recipe("se-aeroframe-scaffold", "se-aeroframe-scaffold", "se-aeroframe-scaffold") + local nm_name = cutil.nanotube_recipe("se-nanomaterial", "se-nanomaterial", "se-nanomaterial") + util.set_ingredient(nm_name, "nanotubes", 2) end end diff --git a/carbon-recipe-modules.lua b/carbon-recipe-modules.lua index efa7668..8be6a88 100644 --- a/carbon-recipe-modules.lua +++ b/carbon-recipe-modules.lua @@ -11,17 +11,19 @@ recipes = { "fullerenes", "nanotubes", - "low-density-structure-nanotubes", - "imersium-plate-nanotubes", - "imersium-beam-nanotubes", - "imersium-gear-wheel-nanotubes", - "aeroframe-scaffold-nanotubes", - "nanomaterial-nanotubes", "diamond-synthesis-vulcanite", -- NOTE: Carbon black recipes do not allow prod modules } +-- Add all *-nanotubes recipes that exist +local ending = "-nanotubes" +for i, recipe in pairs(data.raw.recipe) do + if recipe.name:sub(-#ending) == ending then + table.insert(recipes, recipe.name) + end +end + for i, recipe in pairs(recipes) do if data.raw.recipe[recipe] then for j, module in pairs(data.raw.module) do diff --git a/carbon-util.lua b/carbon-util.lua new file mode 100644 index 0000000..5e50e7a --- /dev/null +++ b/carbon-util.lua @@ -0,0 +1,29 @@ +local futil = require("util") +local util = require("data-util"); + +local cutil = {} + +function cutil.nanotube_recipe(recipe_name, item_name, tech) + if not tech then tech = "nanotubes" end + if not item_name then item_name = recipe_name end + if not data.raw.recipe[recipe_name] or not data.raw.item[item_name] then return end + -- local normal = get_normal(recipe_name) + + local new_recipe = futil.table.deepcopy(data.raw.recipe[recipe_name]) + new_recipe.name = recipe_name.."-nanotubes" + new_recipe.icons = { + { icon = data.raw.item[item_name].icon, icon_size = data.raw.item[item_name].icon_size}, + { icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, + } + new_recipe.icon = nil + new_recipe.icon_size = nil + new_recipe.icon_mipmaps = nil + data:extend({new_recipe}) + local amt = 2 * util.get_amount(recipe_name, item_name) + util.add_ingredient(new_recipe.name, "nanotubes", amt, {force=true}) + util.set_product_amount(new_recipe.name, item_name, amt, {force=true}) + util.add_unlock(tech, new_recipe.name) + return new_recipe.name +end + +return cutil diff --git a/changelog.txt b/changelog.txt index 64ccd37..d91d82b 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,8 +1,10 @@ --------------------------------------------------------------------------------------------------- Version: 0.4.7 Date: 2022-09-25 + Changes: + - Updated some nanotube recipes to more closely mirror their counterparts in all mod loadouts. Fixes: - - Attempt to fix issue with K2, S3, Omni mods, 248k. + - Attempt to fix issue with K2, S3, Omni mods, 248k, when used with nanotubes. --------------------------------------------------------------------------------------------------- Version: 0.4.6 Date: 2022-08-23 diff --git a/data-final-fixes.lua b/data-final-fixes.lua index 3717753..67faf44 100644 --- a/data-final-fixes.lua +++ b/data-final-fixes.lua @@ -23,6 +23,7 @@ if data.raw.recipe["low-density-structure"] and not data.raw.recipe["low-density-structure"].icon and not data.raw.recipe["low-density-structure"].icons then + -- final failsafe check, might no longer be necessary, needs testing with a lot of varied mod loadouts util.set_subgroup("low-density-structure", data.raw.item["low-density-structure"].subgroup) util.set_icons("low-density-structure", { { icon = "__base__/graphics/icons/low-density-structure.png", icon_size = 64, icon_mipmaps = 4}, diff --git a/data-util.lua b/data-util.lua index cd2148a..3373bb2 100644 --- a/data-util.lua +++ b/data-util.lua @@ -235,6 +235,18 @@ function util.se_matter(params) end end +-- Get the normal prototype for a recipe -- either .normal or the recipe itself +function util.get_normal(recipe_name) + if data.raw.recipe[recipe_name] then + recipe = data.raw.recipe[recipe_name] + if recipe.normal and recipe.normal.ingredients then + return recipe.normal + elseif recipe.ingredients then + return recipe + end + end +end + -- Set/override a technology's prerequisites function util.set_prerequisite(technology_name, prerequisites) local technology = data.raw.technology[technology_name] diff --git a/low-density-structure-nanotubes.lua b/low-density-structure-nanotubes.lua index 652c56f..94025ec 100644 --- a/low-density-structure-nanotubes.lua +++ b/low-density-structure-nanotubes.lua @@ -1,53 +1,6 @@ local util = require("data-util"); -local futil = require("util") +local cutil = require("carbon-util") if util.me.use_fullerenes() then - data:extend({ - { - type = "recipe", - name = "low-density-structure-nanotubes", - icons = { - { icon = "__base__/graphics/icons/low-density-structure.png", icon_size = 64, icon_mipmaps = 4}, - { icon = "__bzcarbon__/graphics/icons/nanotube.png", icon_size = 128, scale=0.125, shift= {-8, -8}}, - }, - category = "advanced-crafting", - subgroup = data.raw.item["low-density-structure"].subgroup, - order = "o[low-density-structure-nanotubes]", - }, - }) - if data.raw.recipe["low-density-structure"].normal and data.raw.recipe["low-density-structure"].normal.ingredients then - data.raw.recipe["low-density-structure-nanotubes"].normal = { - enabled = false, - energy_required = 20, - results = {{"low-density-structure", 2}}, - ingredients = { - {"nanotubes", 2}, - table.unpack(futil.table.deepcopy(data.raw.recipe["low-density-structure"].normal.ingredients)), - }, - } - if data.raw.recipe["low-density-structure"].expensive and data.raw.recipe["low-density-structure"].expensive.ingredients then - data.raw.recipe["low-density-structure-nanotubes"].expensive = { - enabled = false, - energy_required = 20, - results = {{"low-density-structure", 2}}, - ingredients = { - {"nanotubes", 2}, - table.unpack(futil.table.deepcopy(data.raw.recipe["low-density-structure"].expensive.ingredients)), - }, - } - end - else - local recipe = data.raw.recipe["low-density-structure-nanotubes"] - recipe.enabled = false - recipe.energy_required = 20 - recipe.results = {{"low-density-structure", 2}} - recipe.ingredients = { - {"nanotubes", 2}, - table.unpack(futil.table.deepcopy(data.raw.recipe["low-density-structure"].ingredients)), - } - end - - if util.me.reuse() then - util.add_product("low-density-structure-nanotubes", {type="item", name="diamond", amount=1, probability = 0.5, catalyst_amount=1}) - end + cutil.nanotube_recipe("low-density-structure") end diff --git a/migrations/bzcarbon.0.4.7.json b/migrations/bzcarbon.0.4.7.json new file mode 100644 index 0000000..1d6aeab --- /dev/null +++ b/migrations/bzcarbon.0.4.7.json @@ -0,0 +1,8 @@ +{ + "recipe": [ + ["imersium-gear-wheel-nanotubes", "kr-s-c-imersium-gear-wheel-nanotubes"], + ["imersium-beam-nanotubes", "kr-s-c-imersium-beam-nanotubes"], + ["aeroframe-scaffold-nanotubes", "se-aeroframe-scaffold-nanotubes"], + ["nanomaterial-nanotubes", "se-nanomaterial-nanotubes"] + ] +}