From 3a821d15bc06015e1e425f0486409dd3e215c86d Mon Sep 17 00:00:00 2001 From: Brevven Date: Sat, 27 Feb 2021 19:25:09 -0800 Subject: [PATCH] Add (optional) silicon wafer --- changelog.txt | 5 ++++ graphics/icons/silicon-wafer.png | Bin 0 -> 8502 bytes info.json | 2 +- locale/en/silicon.cfg | 12 ++++++++++ prototypes/silicon-recipe.lua | 39 +++++++++++++++++++++++++++++-- recipe-updates.lua | 18 +++++++++----- settings.lua | 10 ++++++++ util.lua | 37 +++++++++++++++++++++-------- 8 files changed, 104 insertions(+), 19 deletions(-) create mode 100644 graphics/icons/silicon-wafer.png create mode 100644 settings.lua diff --git a/changelog.txt b/changelog.txt index 0621323..7f172cf 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 0.4.0 +Date: 2021-02-27 + Features: + - New optional intermediates: Silicon wafer +--------------------------------------------------------------------------------------------------- Version: 0.3.7 Date: 2021-02-15 Changes: diff --git a/graphics/icons/silicon-wafer.png b/graphics/icons/silicon-wafer.png new file mode 100644 index 0000000000000000000000000000000000000000..65bcc8cb9850d35fc819e7a99adb5b79d5540a3a GIT binary patch literal 8502 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

TY8 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 literal 0 HcmV?d00001 diff --git a/info.json b/info.json index e3cb46c..19b0565 100644 --- a/info.json +++ b/info.json @@ -1,6 +1,6 @@ { "name": "bzsilicon", - "version": "0.3.7", + "version": "0.4.0", "factorio_version": "1.1", "title": "Silica & Silicon", "author": "Brevven", diff --git a/locale/en/silicon.cfg b/locale/en/silicon.cfg index dfa2ef9..c681e48 100644 --- a/locale/en/silicon.cfg +++ b/locale/en/silicon.cfg @@ -1,16 +1,19 @@ [entity-name] silica=Silica silicon=Silicon +silicon-wafer=Silicon wafer optical-fiber=Optical Fiber [item-name] silica=Silica silicon=Silicon +silicon-wafer=Silicon wafer optical-fiber=Optical Fiber [item-description] silica=Can be used directly or processed further. silicon=Needed for various electrical and electronic applications +silicon-wafer=Use silicon in circuits optical-fiber=Cable used for fiber optics, including circuit network. [technology-name] @@ -27,3 +30,12 @@ fiber-optics=Optical fiber for circuit network silica=__ITEM__silica__ silicon=__ITEM__silicon__ optical-fiber=__ITEM__optical-fiber__ + + +# Settings + +[mod-setting-name] +bzsilicon-more-intermediates=Enable more intermediate recipes such as silicon wafers. More complex production chains. + +[mod-setting-description] +bzsilicon-more-intermediates=Optional in vanilla, Krastorio 2, etc. Requried for Bio Industries. diff --git a/prototypes/silicon-recipe.lua b/prototypes/silicon-recipe.lua index 9c1f5f6..6afba17 100644 --- a/prototypes/silicon-recipe.lua +++ b/prototypes/silicon-recipe.lua @@ -60,8 +60,14 @@ data:extend( { { type = "unlock-recipe", - recipe = "silicon" - } + recipe = "silicon", + }, + util.more_intermediates() and + { + type = "unlock-recipe", + recipe = "silicon-wafer", + } or nil, + }, unit = { @@ -78,3 +84,32 @@ data:extend( } or nil, } ) +if util.more_intermediates() then +data:extend({ + { + type = "item", + name = "silicon-wafer", + icon = "__bzsilicon__/graphics/icons/silicon-wafer.png", + icon_size = "64", + subgroup = "intermediate-product", + stack_size = util.get_stack_size(100), + }, + { + type = "recipe", + name = "silicon-wafer", + category = "crafting-with-fluid", + subgroup = "intermediate-product", + enabled = false, + energy_required = 20, + ingredients = (mods["Krastorio2"] and { + {type= "item", name="silicon", amount=20}, + {type= "fluid", name="hydrogen-chloride", amount=50}, + } or { + {type= "item", name="silicon", amount=20}, + {type= "fluid", name="sulfuric-acid", amount=50}, + }), + result = "silicon-wafer", + result_count = 10, + }, +}) +end diff --git a/recipe-updates.lua b/recipe-updates.lua index f650e56..4039671 100644 --- a/recipe-updates.lua +++ b/recipe-updates.lua @@ -5,15 +5,15 @@ if not mods["Krastorio2"] then util.add_ingredient("concrete", "silica", 25); util.add_prerequisite("concrete", "silica-processing") - util.replace_some_ingredient("processing-unit", "electronic-circuit", "silicon", 10) + util.replace_some_ingredient("processing-unit", "electronic-circuit", 10, "silicon-wafer", 5) util.add_prerequisite("advanced-electronics-2", util.silicon_processing) - util.replace_some_ingredient("solar-panel", "electronic-circuit", "silicon", 10) + util.replace_some_ingredient("solar-panel", "electronic-circuit", 10, "silicon", 10) util.add_prerequisite("solar-energy", "silicon-processing") - util.replace_ingredient("effectivity-module", "electronic-circuit", "silicon") - util.replace_ingredient("productivity-module", "electronic-circuit", "silicon") - util.replace_ingredient("speed-module", "electronic-circuit", "silicon") + util.replace_ingredient("effectivity-module", "electronic-circuit", "silicon-wafer") + util.replace_ingredient("productivity-module", "electronic-circuit", "silicon-wafer") + util.replace_ingredient("speed-module", "electronic-circuit", "silicon-wafer") util.add_prerequisite("modules", util.silicon_processing) else util.add_ingredient("concrete", "silica", 15); @@ -48,9 +48,15 @@ util.add_prerequisite("circuit-network", "fiber-optics") util.add_prerequisite("circuit-network", util.silicon_processing) if mods["Krastorio2"] then - util.add_prerequisite("kr-silicon-processing", "silica-processing") util.add_ingredient("biusart-lab", "optical-fiber", 10) util.add_ingredient("ai-core", "optical-fiber", 2) + + util.add_prerequisite(util.silicon_processing, "silica-processing") + if util.more_intermediates() then + util.add_effect(util.silicon_processing, {type = "unlock-recipe", recipe="silicon-wafer"}) + util.remove_ingredient("electronic-components", "silicon") + util.add_ingredient("electronic-components", "silicon-wafer", 1) + end end if mods["aai-signal-transimission"] then diff --git a/settings.lua b/settings.lua new file mode 100644 index 0000000..8864bb1 --- /dev/null +++ b/settings.lua @@ -0,0 +1,10 @@ +data:extend( +{ + { + type = "string-setting", + name = "bzsilicon-more-intermediates", + setting_type = "startup", + default_value = "no", + allowed_values = {"yes", "no"}, + }, +}) diff --git a/util.lua b/util.lua index b731c6b..b2f72cf 100644 --- a/util.lua +++ b/util.lua @@ -2,6 +2,17 @@ local util = {} util.silicon_processing = mods["Krastorio2"] and "kr-silicon-processing" or "silicon-processing" +function util.get_setting(name) + if settings.startup[name] == nil then + return nil + end + return settings.startup[name].value +end + +function util.more_intermediates() + return mods["Bio_Industries"] or util.get_setting("bzsilicon-more-intermediates") == "yes" +end + function util.get_stack_size(default) if mods["Krastorio2"] then size = tonumber(krastorio.general.getSafeSettingValue("kr-stack-size")) @@ -92,26 +103,32 @@ end -- Replace an amount of an ingredient in a recipe. Keep at least 1 of old. -function util.replace_some_ingredient(recipe_name, old, new, amount) - replace_some_ingredient(data.raw.recipe[recipe_name], old, new, amount) - replace_some_ingredient(data.raw.recipe[recipe_name].normal, old, new, amount) - replace_some_ingredient(data.raw.recipe[recipe_name].expensive, old, new, amount) +function util.replace_some_ingredient(recipe_name, old, old_amount, new, new_amount) + replace_some_ingredient(data.raw.recipe[recipe_name], old, old_amount, new, new_amount) + replace_some_ingredient(data.raw.recipe[recipe_name].normal, old, old_amount, new, new_amount) + replace_some_ingredient(data.raw.recipe[recipe_name].expensive, old, old_amount, new, new_amount) end -function replace_some_ingredient(recipe, old, new, amount) +function replace_some_ingredient(recipe, old, old_amount, new, new_amount) if recipe ~= nil and recipe.ingredients ~= nil then for i, ingredient in pairs(recipe.ingredients) do - -- For final fixes if ingredient.name == old then - ingredient.amount = math.max(1, ingredient.amount - amount) + ingredient.amount = math.max(1, ingredient.amount - old_amount) end - -- For updates if ingredient[1] == old then - ingredient[2] = math.max(1, ingredient[2] - amount) + ingredient[2] = math.max(1, ingredient[2] - old_amount) end end - add_ingredient(recipe, new, amount) + add_ingredient(recipe, new, new_amount) end end +-- Add an effect to a given technology +function util.add_effect(technology_name, effect) + technology = data.raw.technology[technology_name] + if technology then + table.insert(technology.effects, effect) + end +end + return util