From 5474eb5949744ce9bea23970390aecd3d7deeec0 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 14:24:56 +0200 Subject: [PATCH 01/27] added bob- prefix for bobelectronics --- CircuitProcessing/bobelectronics.lua | 62 ++++++++++++---------------- CircuitProcessing/info.json | 2 +- 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 54349f2..61dfac0 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -185,13 +185,13 @@ data.raw.recipe['processing-unit'] = bobmods.lib.recipe.set_energy_required('cp-processing-board', 5) bobmods.lib.recipe.set_energy_required('superior-circuit-board', 5) -local cpadvancedprocessingboard = data.raw.item['advanced-processing-unit'] +local cpadvancedprocessingboard = data.raw.item['bob-advanced-processing-unit'] data.raw.item['cp-advanced-processing-board'] = cpadvancedprocessingboard cpadvancedprocessingboard.name = 'cp-advanced-processing-board' -data.raw.item['advanced-processing-unit'] = +data.raw.item['bob-advanced-processing-unit'] = { type = "item", - name = "advanced-processing-unit", + name = "bob-advanced-processing-unit", icon = "__CircuitProcessing__/graphics/icons/advanced-processing-unit.png", icon_size = 64, icon_mipmaps = 4, subgroup = "sb-circuit-board", @@ -210,18 +210,18 @@ if data.raw.fluid["nitric-acid"] then advancedacid = "nitric-acid" end -local cpadvancedprocessingboardrecipe = data.raw.recipe['advanced-processing-unit'] +local cpadvancedprocessingboardrecipe = data.raw.recipe['bob-advanced-processing-unit'] data.raw.recipe['cp-advanced-processing-board'] = cpadvancedprocessingboardrecipe cpadvancedprocessingboardrecipe.name = 'cp-advanced-processing-board' -bobmods.lib.recipe.remove_result('cp-advanced-processing-board', 'advanced-processing-unit') +bobmods.lib.recipe.remove_result('cp-advanced-processing-board', 'bob-advanced-processing-unit') bobmods.lib.recipe.add_result('cp-advanced-processing-board', 'cp-advanced-processing-board') lib.set_main_product('cp-advanced-processing-board', 'cp-advanced-processing-board') bobmods.lib.recipe.set_energy_required('cp-advanced-processing-board', 5) bobmods.lib.recipe.set_energy_required('multi-layer-circuit-board', 5) -data.raw.recipe['advanced-processing-unit'] = +data.raw.recipe['bob-advanced-processing-unit'] = { type = "recipe", - name = "advanced-processing-unit", + name = "bob-advanced-processing-unit", category = "electronics-machine", normal = { @@ -257,51 +257,43 @@ data.raw.recipe['advanced-processing-unit'] = local cable = { ['copper-cable']=true, - ['tinned-copper-cable']=true, + ['bob-tinned-copper-cable']=true, ['angels-wire-silver']=true, - ['gilded-copper-cable']=true + ['bob-gilded-copper-cable']=true } local components = { - 'basic-electronic-components', - 'electronic-components', - 'intergrated-electronics' + 'bob-basic-electronic-components', + 'bob-electronic-components', + 'bob-intergrated-electronics' } local function doublecable(ingredients) - for k,v in pairs(ingredients) do - local idx = 1 - local amt = 2 - if v.name then - idx = 'name' - amt = 'amount' - end - if cable[v[idx]] then - v[amt] = v[amt] * 2 + for _, ingr in pairs(ingredients) do + if cable[ingr.name] then + ingr.amount = ingr.amount * 2 end end end for _,v in pairs(components) do if data.raw.recipe[v] then - bobmods.lib.recipe.difficulty_split(v) - doublecable(data.raw.recipe[v].normal.ingredients) - doublecable(data.raw.recipe[v].expensive.ingredients) + doublecable(data.raw.recipe[v].ingredients) end end -data.raw.recipe['basic-electronic-components'].normal.result_count = 10 -data.raw.recipe['basic-electronic-components'].expensive.result_count = 6 -bobmods.lib.recipe.set_difficulty_energy_required('basic-electronic-components', 'normal', 4) -bobmods.lib.recipe.set_difficulty_energy_required('basic-electronic-components', 'expensive', 6) +data.raw.recipe["bob-basic-electronic-components"].results[1].amount = 10 +bobmods.lib.recipe.set_energy_required('bob-basic-electronic-components', 4) -local circuits = { - 'cp-advanced-processing-board', - 'cp-processing-board', - 'cp-advanced-circuit-board', - 'cp-electronic-circuit-board' -} -bobmods.lib.module.add_productivity_limitations(circuits) +-- local circuits = { +-- 'cp-advanced-processing-board', +-- 'cp-processing-board', +-- 'cp-advanced-circuit-board', +-- 'cp-electronic-circuit-board' +-- } + +-- TODO figure out what productivity_limitations did: https://github.com/modded-factorio/bobsmods/blob/492bd544746b867b377795f5c6a8d2b8b0bc6a52/boblibrary/module-functions.lua#L16 +-- bobmods.lib.module.add_productivity_limitations(circuits) for k,v in pairs(data.raw.technology) do for ek,ev in pairs(v.effects or {}) do diff --git a/CircuitProcessing/info.json b/CircuitProcessing/info.json index ad5044a..5b29b11 100644 --- a/CircuitProcessing/info.json +++ b/CircuitProcessing/info.json @@ -1,7 +1,7 @@ { "name": "CircuitProcessing", "version": "0.4.5", - "factorio_version": "1.1", + "factorio_version": "2.0", "title": "Circuit Processing", "author": "Trainwreck", "contact": "", From 300c55bb8a04e761bd1d2be27177a3c90d2ae8da Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 18:33:42 +0200 Subject: [PATCH 02/27] rocket-control-unit was removed with 2.0 and removed bobmodules changes (new bobmodule changes are suffiecient) --- CircuitProcessing/data-updates.lua | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/CircuitProcessing/data-updates.lua b/CircuitProcessing/data-updates.lua index 61b4595..3798fb1 100644 --- a/CircuitProcessing/data-updates.lua +++ b/CircuitProcessing/data-updates.lua @@ -1,21 +1,6 @@ require "bobelectronics" -require "bobmodules" - -data.raw.recipe['rocket-control-unit'].normal = nil -data.raw.recipe['rocket-control-unit'].expensive = nil -local module = 'speed-module' -if data.raw.module['speed-module-8'] then - module = 'speed-module-2' -end -data.raw.recipe['rocket-control-unit'].ingredients = { - {"advanced-processing-unit", 1}, - {module, 1} -} -data.raw.recipe['rocket-control-unit'].result = 'rocket-control-unit' -data.raw.recipe['rocket-control-unit'].energy_required = 30 -bobmods.lib.tech.add_prerequisite('rocket-control-unit', 'speed-module') -bobmods.lib.tech.add_prerequisite("rocket-control-unit", "advanced-electronics-3") -bobmods.lib.tech.add_science_pack("rocket-control-unit", "production-science-pack", 1) +-- Bobmodules had a massive revamp, no changes needed imo +-- require "bobmodules" -- Hide Agriculture Modules. Revisit later, once Angel's devs have finished their changes local function disable(name) From 1b9e896647c39a2c8f3962fa79a331cef21eea46 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 18:34:58 +0200 Subject: [PATCH 03/27] flags["hidden"] changed to .hidden (property) --- CircuitProcessing/data-updates.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CircuitProcessing/data-updates.lua b/CircuitProcessing/data-updates.lua index 3798fb1..2269e1a 100644 --- a/CircuitProcessing/data-updates.lua +++ b/CircuitProcessing/data-updates.lua @@ -12,7 +12,7 @@ local function disable(name) data.raw.recipe[name].hidden = true end if data.raw.module[name] then - data.raw.module[name].flags = {'hidden'} + data.raw.module[name].hidden = true end end for _,v in pairs({ From 75ee364ef018b47c20a148c56b0c11bc1ec3a4ec Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 18:46:20 +0200 Subject: [PATCH 04/27] added new recipe requirements and results instead of result --- CircuitProcessing/bobelectronics.lua | 155 ++++++++------------------- 1 file changed, 43 insertions(+), 112 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 61dfac0..7d3fe37 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -44,30 +44,14 @@ data.raw.recipe['electronic-circuit'] = type = "recipe", name = "electronic-circuit", category = "electronics", - normal = - { - ingredients = - { - {"cp-electronic-circuit-board", 1}, - {"iron-plate", 2} - }, - result = "electronic-circuit", - requester_paste_multiplier = 50, - enabled = false, - allow_decomposition = false - }, - expensive = - { - ingredients = - { - {"cp-electronic-circuit-board", 1}, - {"iron-plate", 4} - }, - result = "electronic-circuit", - requester_paste_multiplier = 50, - enabled = false, - allow_decomposition = false + ingredients = { + { type = "item", name = "cp-electronic-circuit-board", amount = 1 }, + { type = "item", name = "iron-plate", amount = 2 } }, + results = { type = "item", name = "electronic-circuit", amount = 1 }, + requester_paste_multiplier = 50, + enabled = false, + allow_decomposition = false } local cpadvancedcircuitboard = data.raw.item['advanced-circuit'] @@ -96,37 +80,19 @@ data.raw.recipe['advanced-circuit'] = type = "recipe", name = "advanced-circuit", category = "electronics", - normal = + enabled = false, + energy_required = 6, + ingredients = lib.checkplate( + {"bob-aluminium-plate", 4}, { - enabled = false, - energy_required = 6, - ingredients = lib.checkplate( - {"aluminium-plate", 4}, - { {"electronic-circuit", 2}, {"cp-advanced-circuit-board", 2}, {"copper-cable", 4} - }), - result = "advanced-circuit", - requester_paste_multiplier = 5, - allow_decomposition = false - }, - expensive = - { - enabled = false, - energy_required = 6, - ingredients = lib.checkplate( - {"aluminium-plate", 4}, - { - {"electronic-circuit", 2}, - {"cp-advanced-circuit-board", 4}, - {"copper-cable", 8} - }), - result = "advanced-circuit", - requester_paste_multiplier = 5, - allow_decomposition = false - } - } + }), + results = { type = "item", name = "advanced-circuit", amount = 1 }, + requester_paste_multiplier = 5, + allow_decomposition = false +} local cpprocessingboard = data.raw.item['processing-unit'] data.raw.item['cp-processing-board'] = cpprocessingboard @@ -153,37 +119,20 @@ data.raw.recipe['processing-unit'] = type = "recipe", name = "processing-unit", category = "electronics-machine", - normal = + enabled = false, + energy_required = 10, + ingredients = lib.checkplate( + {"bob-titanium-plate", 8}, { - enabled = false, - energy_required = 10, - ingredients = lib.checkplate( - {"titanium-plate", 8}, - { - {"advanced-circuit", 4}, - {"cp-processing-board", 4}, - {type = "fluid", name = "sulfuric-acid", amount = 5} - }), - result = "processing-unit", - allow_decomposition = false - }, - expensive = - { - enabled = false, - energy_required = 10, - ingredients = lib.checkplate( - {"titanium-plate", 8}, - { - {"advanced-circuit", 4}, - {"cp-processing-board", 4}, - {type = "fluid", name = "sulfuric-acid", amount = 10} - }), - result = "processing-unit", - allow_decomposition = false - } + { type = "item", name = "advanced-circuit", amount = 4 }, + { type = "item", name = "cp-processing-board", amount = 4 }, + { type = "fluid", name = "sulfuric-acid", amount = 5 } + }), + results = { type = "item", name = "processing-unit", amount = 1 }, + allow_decomposition = false } bobmods.lib.recipe.set_energy_required('cp-processing-board', 5) -bobmods.lib.recipe.set_energy_required('superior-circuit-board', 5) +bobmods.lib.recipe.set_energy_required('bob-superior-circuit-board', 5) local cpadvancedprocessingboard = data.raw.item['bob-advanced-processing-unit'] data.raw.item['cp-advanced-processing-board'] = cpadvancedprocessingboard @@ -202,12 +151,12 @@ data.raw.item['bob-advanced-processing-unit'] = local advancedplate = "steel-plate" if data.raw.item["angels-plate-chrome"] then advancedplate = "angels-plate-chrome" -elseif data.raw.item["gold-plate"] then - advancedplate = "gold-plate" +elseif data.raw.item["bob-gold-plate"] then + advancedplate = "bob-gold-plate" end local advancedacid = "sulfuric-acid" -if data.raw.fluid["nitric-acid"] then - advancedacid = "nitric-acid" +if data.raw.fluid["bob-nitric-acid"] then + advancedacid = "bob-nitric-acid" end local cpadvancedprocessingboardrecipe = data.raw.recipe['bob-advanced-processing-unit'] @@ -217,42 +166,24 @@ bobmods.lib.recipe.remove_result('cp-advanced-processing-board', 'bob-advanced-p bobmods.lib.recipe.add_result('cp-advanced-processing-board', 'cp-advanced-processing-board') lib.set_main_product('cp-advanced-processing-board', 'cp-advanced-processing-board') bobmods.lib.recipe.set_energy_required('cp-advanced-processing-board', 5) -bobmods.lib.recipe.set_energy_required('multi-layer-circuit-board', 5) +bobmods.lib.recipe.set_energy_required('bob-multi-layer-circuit-board', 5) data.raw.recipe['bob-advanced-processing-unit'] = { type = "recipe", name = "bob-advanced-processing-unit", category = "electronics-machine", - normal = - { - enabled = false, - energy_required = 15, - ingredients = lib.checkplate( + enabled = false, + energy_required = 15, + ingredients = lib.checkplate( {advancedplate, 10}, - { - {"processing-unit", 3}, - {"electronic-circuit", 20}, - {"cp-advanced-processing-board", 9}, - {type = "fluid", name = advancedacid, amount = 5} - }), - result = "advanced-processing-unit", - allow_decomposition = false - }, - expensive = { - enabled = false, - energy_required = 15, - ingredients = lib.checkplate( - {advancedplate, 10}, - { - {"processing-unit", 3}, - {"electronic-circuit", 20}, - {"cp-advanced-processing-board", 9}, - {type = "fluid", name = advancedacid, amount = 10} - }), - result = "advanced-processing-unit", - allow_decomposition = false - } + { type = "item", name = "processing-unit", amount = 3 }, + { type = "item", name = "electronic-circuit", amount = 2 }, + { type = "item", name = "cp-advanced-processing-board", amount = 9}, + { type = "fluid", name = advancedacid, amount = 5 } + }), + results = { type = "item", name = "bob-advanced-processing-unit", amount = 1 }, + allow_decomposition = false } local cable = { @@ -312,7 +243,7 @@ for k,v in pairs(data.raw.technology) do bobmods.lib.tech.add_prerequisite(k, 'angels-titanium-smelting-1') end break - elseif ev.type == 'unlock-recipe' and ev.recipe == 'advanced-processing-unit' then + elseif ev.type == 'unlock-recipe' and ev.recipe == 'bob-advanced-processing-unit' then table.insert(v.effects, ek, {type = 'unlock-recipe', recipe = 'cp-advanced-processing-board'}) if data.raw.technology['angels-chrome-smelting-1'] then bobmods.lib.tech.add_prerequisite(k, 'angels-chrome-smelting-1') From 45a5a37b9f59d1052b0d041fd87791b884dcab7d Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 18:55:18 +0200 Subject: [PATCH 05/27] updated checkplate function to accept new recipe requirements --- CircuitProcessing/bobelectronics.lua | 12 ++++++------ CircuitProcessing/lib.lua | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 7d3fe37..f7a27b9 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -83,11 +83,11 @@ data.raw.recipe['advanced-circuit'] = enabled = false, energy_required = 6, ingredients = lib.checkplate( - {"bob-aluminium-plate", 4}, + { type = "item", name = "bob-aluminium-plate", amount = 4 }, { - {"electronic-circuit", 2}, - {"cp-advanced-circuit-board", 2}, - {"copper-cable", 4} + { type = "item", name = "electronic-circuit", amount = 2 }, + { type = "item", name = "cp-advanced-circuit-board", amount = 2 }, + { type = "item", name = "copper-cable", amount = 4 } }), results = { type = "item", name = "advanced-circuit", amount = 1 }, requester_paste_multiplier = 5, @@ -122,7 +122,7 @@ data.raw.recipe['processing-unit'] = enabled = false, energy_required = 10, ingredients = lib.checkplate( - {"bob-titanium-plate", 8}, + { type = "item", name = "bob-titanium-plate", amount = 8 }, { { type = "item", name = "advanced-circuit", amount = 4 }, { type = "item", name = "cp-processing-board", amount = 4 }, @@ -175,7 +175,7 @@ data.raw.recipe['bob-advanced-processing-unit'] = enabled = false, energy_required = 15, ingredients = lib.checkplate( - {advancedplate, 10}, + { type = "item", name = advancedplate, amount = 10 }, { { type = "item", name = "processing-unit", amount = 3 }, { type = "item", name = "electronic-circuit", amount = 2 }, diff --git a/CircuitProcessing/lib.lua b/CircuitProcessing/lib.lua index 3555b89..c8eeaae 100644 --- a/CircuitProcessing/lib.lua +++ b/CircuitProcessing/lib.lua @@ -10,7 +10,7 @@ lib.tablefind = function(table, item) end lib.checkplate = function(plate, rest) - if data.raw.item[plate[1]] then + if data.raw.item[plate.name] then local newtable = table.deepcopy(rest) table.insert(newtable, plate) return newtable From 0add91c28bce08ad620d573df492d0fff592d426 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 19:00:10 +0200 Subject: [PATCH 06/27] results must be array of ProductPrototype, not ProductPrototype itself --- CircuitProcessing/bobelectronics.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index f7a27b9..c05bf35 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -48,7 +48,7 @@ data.raw.recipe['electronic-circuit'] = { type = "item", name = "cp-electronic-circuit-board", amount = 1 }, { type = "item", name = "iron-plate", amount = 2 } }, - results = { type = "item", name = "electronic-circuit", amount = 1 }, + results = { {type = "item", name = "electronic-circuit", amount = 1} }, requester_paste_multiplier = 50, enabled = false, allow_decomposition = false @@ -89,7 +89,7 @@ data.raw.recipe['advanced-circuit'] = { type = "item", name = "cp-advanced-circuit-board", amount = 2 }, { type = "item", name = "copper-cable", amount = 4 } }), - results = { type = "item", name = "advanced-circuit", amount = 1 }, + results = { {type = "item", name = "advanced-circuit", amount = 1} }, requester_paste_multiplier = 5, allow_decomposition = false } @@ -128,7 +128,7 @@ data.raw.recipe['processing-unit'] = { type = "item", name = "cp-processing-board", amount = 4 }, { type = "fluid", name = "sulfuric-acid", amount = 5 } }), - results = { type = "item", name = "processing-unit", amount = 1 }, + results = { {type = "item", name = "processing-unit", amount = 1} }, allow_decomposition = false } bobmods.lib.recipe.set_energy_required('cp-processing-board', 5) @@ -182,7 +182,7 @@ data.raw.recipe['bob-advanced-processing-unit'] = { type = "item", name = "cp-advanced-processing-board", amount = 9}, { type = "fluid", name = advancedacid, amount = 5 } }), - results = { type = "item", name = "bob-advanced-processing-unit", amount = 1 }, + results = { {type = "item", name = "bob-advanced-processing-unit", amount = 1} }, allow_decomposition = false } From 53282c829396d06740f3f3df71ec01ac70a5b796 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 19:48:42 +0200 Subject: [PATCH 07/27] bobmods.lib.recipe.remove_result and .add_result dont work any more --- CircuitProcessing/bobelectronics.lua | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index c05bf35..fccbfe1 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -36,9 +36,11 @@ data.raw.item['electronic-circuit'] = local cpelectroniccircuitboardrecipe = data.raw.recipe['electronic-circuit'] data.raw.recipe['cp-electronic-circuit-board'] = cpelectroniccircuitboardrecipe cpelectroniccircuitboardrecipe.name = 'cp-electronic-circuit-board' -bobmods.lib.recipe.remove_result('cp-electronic-circuit-board', 'electronic-circuit') -bobmods.lib.recipe.add_result('cp-electronic-circuit-board', 'cp-electronic-circuit-board') +data.raw.recipe["cp-electronic-circuit-board"].results = { + { type = "item", name = "cp-electronic-circuit-board", amount = 1 } +} lib.set_main_product('cp-electronic-circuit-board', 'cp-electronic-circuit-board') + data.raw.recipe['electronic-circuit'] = { type = "recipe", @@ -71,8 +73,10 @@ data.raw.item['advanced-circuit'] = local cpadvancedcircuitboardrecipe = data.raw.recipe['advanced-circuit'] data.raw.recipe['cp-advanced-circuit-board'] = cpadvancedcircuitboardrecipe cpadvancedcircuitboardrecipe.name = 'cp-advanced-circuit-board' -bobmods.lib.recipe.remove_result('cp-advanced-circuit-board', 'advanced-circuit') -bobmods.lib.recipe.add_result('cp-advanced-circuit-board', 'cp-advanced-circuit-board') + +data.raw.recipe["cp-advanced-circuit-board"].results = { + { type = "item", name = "cp-advanced-circuit-board", amount = 1 } +} lib.set_main_product('cp-advanced-circuit-board', 'cp-advanced-circuit-board') data.raw.recipe['advanced-circuit'] = @@ -111,8 +115,10 @@ data.raw.item['processing-unit'] = local cpprocessingboardrecipe = data.raw.recipe['processing-unit'] data.raw.recipe['cp-processing-board'] = cpprocessingboardrecipe cpprocessingboardrecipe.name = 'cp-processing-board' -bobmods.lib.recipe.remove_result('cp-processing-board', 'processing-unit') -bobmods.lib.recipe.add_result('cp-processing-board', 'cp-processing-board') + +data.raw.recipe["cp-processing-board"].results = { + { type = "item", name = "cp-processing-board", amount = 1 } +} lib.set_main_product('cp-processing-board', 'cp-processing-board') data.raw.recipe['processing-unit'] = { @@ -162,11 +168,14 @@ end local cpadvancedprocessingboardrecipe = data.raw.recipe['bob-advanced-processing-unit'] data.raw.recipe['cp-advanced-processing-board'] = cpadvancedprocessingboardrecipe cpadvancedprocessingboardrecipe.name = 'cp-advanced-processing-board' -bobmods.lib.recipe.remove_result('cp-advanced-processing-board', 'bob-advanced-processing-unit') -bobmods.lib.recipe.add_result('cp-advanced-processing-board', 'cp-advanced-processing-board') + +data.raw.recipe["cp-advanced-processing-board"].results = { + { type = "item", name = "cp-advanced-processing-board", amount = 1 } +} lib.set_main_product('cp-advanced-processing-board', 'cp-advanced-processing-board') bobmods.lib.recipe.set_energy_required('cp-advanced-processing-board', 5) bobmods.lib.recipe.set_energy_required('bob-multi-layer-circuit-board', 5) + data.raw.recipe['bob-advanced-processing-unit'] = { type = "recipe", From a9e15fd49fb75c690f79631603a8641a26ea71ec Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 19:56:20 +0200 Subject: [PATCH 08/27] renamed recipe_category electronics-machine to electronics --- CircuitProcessing/bobelectronics.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index fccbfe1..5163585 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -124,7 +124,7 @@ data.raw.recipe['processing-unit'] = { type = "recipe", name = "processing-unit", - category = "electronics-machine", + category = "electronics", enabled = false, energy_required = 10, ingredients = lib.checkplate( @@ -180,7 +180,7 @@ data.raw.recipe['bob-advanced-processing-unit'] = { type = "recipe", name = "bob-advanced-processing-unit", - category = "electronics-machine", + category = "electronics", enabled = false, energy_required = 15, ingredients = lib.checkplate( From fd77bac9a2aed98d0a10d45dbf8bdaf66b1ad8dd Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 20:08:56 +0200 Subject: [PATCH 09/27] updated hide_item and hide_recipe to not use flags anymore --- CircuitProcessing/lib.lua | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/CircuitProcessing/lib.lua b/CircuitProcessing/lib.lua index c8eeaae..c676d08 100644 --- a/CircuitProcessing/lib.lua +++ b/CircuitProcessing/lib.lua @@ -28,12 +28,7 @@ lib.hide_item = function(name) item = data.raw.tool[name] end if item then - if not item.flags then - item.flags = {} - end - if not lib.tablefind(item.flags, "hidden") then - table.insert(item.flags, "hidden") - end + item.hidden = true end end @@ -57,28 +52,16 @@ lib.set_main_product = function(recipe, item) log(debug.traceback()) end end - lib.hide_recipe = function(recipe) - local r = data.raw.recipe[recipe] - if - type(recipe) == "string" and - r - then - if r.normal then - r.normal.hidden = true - r.normal.enabled = false + local r = data.raw.recipe[recipe] + if + type(recipe) == "string" and + r + then + r.hidden = true + r.enabled = false + else + log(debug.traceback()) end - if r.expensive then - r.expensive.hidden = true - r.expensive.enabled = false - end - if (not r.normal) and (not r.expensive) then - r.hidden = true - r.enabled = false - end - else - log(debug.traceback()) - end end - return lib From d06b410c88050c6894cdfcf4d9b7a5a9447c0e07 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 20:13:52 +0200 Subject: [PATCH 10/27] added bobmodules fix back in order to disable some modules --- CircuitProcessing/bobmodules.lua | 465 ++++------------------------- CircuitProcessing/data-updates.lua | 3 +- 2 files changed, 60 insertions(+), 408 deletions(-) diff --git a/CircuitProcessing/bobmodules.lua b/CircuitProcessing/bobmodules.lua index 0f08c08..1ae66eb 100644 --- a/CircuitProcessing/bobmodules.lua +++ b/CircuitProcessing/bobmodules.lua @@ -1,419 +1,72 @@ +--rewrote all of bobmodules because it was a clusterfuck + local lib = require "lib" ---if not mods['bobmodules'] or not settings.startup['cp-override-modules'].value then -if not mods['bobmodules'] then - return -end -local function takeeffect(effects, name) - for i,v in ipairs(effects or {}) do - if v.recipe == name then - return table.remove(effects, i) - end - end +if not mods['bobmodules'] then + return end +-- TODO why is this even here? I cant find a mention of module-merging or -module-n-combine anywhere in bobs if data.raw.technology['module-merging'] then - data.raw.technology['module-merging'].enabled = false -end - -for _,m in pairs({ - {tech = 'modules', module_name = 'pollution-clean-processor'}, - {tech = 'modules', module_name = 'pollution-create-processor'}, - {tech = 'modules-2', module_name = 'pollution-clean-processor-2'}, - {tech = 'modules-2', module_name = 'pollution-create-processor-2'}, - {tech = 'modules-3', module_name = 'pollution-clean-processor-3'}, - {tech = 'modules-3', module_name = 'pollution-create-processor-3'} -}) do - if data.raw.technology[m.tech] then - bobmods.lib.tech.remove_recipe_unlock(m.tech, m.module_name) - end - lib.hide_recipe(m.module_name) - lib.hide_item(m.module_name) -end - -for i = 1,8 do - for _,s in pairs({'raw-speed-module-', 'raw-productivity-module-', 'pollution-create-module-', 'pollution-clean-module-', 'green-module-', 'god-module-'}) do - local str = s .. i - if data.raw.technology[str] then - data.raw.technology[str] = nil - end - data.raw.module[str] = nil - data.raw.recipe[str] = nil - end - for _,s in pairs({'raw-speed-module-', 'green-module-', 'raw-productivity-module-'}) do - local str = s .. i .. '-combine' - data.raw.recipe[str] = nil - end -end -for _,s in pairs({"speed", "effectivity", "productivity"}) do - local processor2 = takeeffect(data.raw.technology[s.."-module-3"].effects, s.."-processor-2") - if processor2 then - table.insert(data.raw.technology[s.."-module-2"].effects, processor2) - bobmods.lib.tech.add_prerequisite(s.."-module-2", "advanced-electronics-2") - end - local processor3 = takeeffect(data.raw.technology[s.."-module-6"].effects, s.."-processor-3") - if processor3 then - table.insert(data.raw.technology[s.."-module-3"].effects, processor3) - bobmods.lib.tech.remove_prerequisite(s.."-module-3", "advanced-electronics-2") - bobmods.lib.tech.add_prerequisite(s.."-module-3", "advanced-electronics-3") - end - table.insert(data.raw.technology[s.."-module"].effects, - takeeffect(data.raw.technology[s.."-module-2"].effects, s.."-module-2")) - table.insert(data.raw.technology[s.."-module-2"].effects, - takeeffect(data.raw.technology[s.."-module-3"].effects, s.."-module-3")) - table.insert(data.raw.technology[s.."-module-2"].effects, - takeeffect(data.raw.technology[s.."-module-4"].effects, s.."-module-4")) - table.insert(data.raw.technology[s.."-module-3"].effects, - takeeffect(data.raw.technology[s.."-module-5"].effects, s.."-module-5")) - table.insert(data.raw.technology[s.."-module-3"].effects, - takeeffect(data.raw.technology[s.."-module-6"].effects, s.."-module-6")) - table.insert(data.raw.technology[s.."-module-4"].effects, - takeeffect(data.raw.technology[s.."-module-7"].effects, s.."-module-7")) - table.insert(data.raw.technology[s.."-module-4"].effects, - takeeffect(data.raw.technology[s.."-module-8"].effects, s.."-module-8")) - local cost = 50 - bobmods.lib.tech.add_science_pack(s.."-module-2", "chemical-science-pack", 1) - for _,i in pairs({"", "-2", "-3", "-4"}) do - local itemtoname = { - [""] = "-0", - ["-2"] = "-1", - ["-3"] = "-2", - ["-4"] = "-3" - } - data.raw.technology[s.."-module"..i].icon = nil - data.raw.technology[s.."-module"..i].icons = nil - data.raw.technology[s.."-module"..i].unit.count = cost - local directory = "__base__" - if i == "" then - directory = "__CircuitProcessing__" - end - data.raw.technology[s.."-module"..i].icon_size = 256 - data.raw.technology[s.."-module"..i].icon = directory.."/graphics/technology/"..s.."-module"..itemtoname[i]..".png" - data.raw.technology[s.."-module"..i].localised_name = {"item-name."..s.."-module"..itemtoname[i]} - data.raw.technology[s.."-module"..i].upgrade = false - - if i == "-3" or i == "-4" then - bobmods.lib.tech.add_science_pack(s.."-module"..i, "production-science-pack", 1) - end - cost = cost * 2 - end -end -for i = 5,8 do - for _,s in pairs({'speed-module-', 'effectivity-module-', 'productivity-module-'}) do - local str = s .. i - if data.raw.technology[str] then - data.raw.technology[str] = nil - end - end + data.raw.technology['module-merging'].enabled = false end -local replacetech = {} -local replaceingredient = {} -for _,s in pairs({'speed-module', 'effectivity-module', 'productivity-module'}) do - replacetech[s.."-2"] = s - replacetech[s.."-3"] = s.."-2" - replacetech[s.."-4"] = s.."-2" - replacetech[s.."-5"] = s.."-3" - replacetech[s.."-6"] = s.."-3" - replacetech[s.."-7"] = s.."-4" - replacetech[s.."-8"] = s.."-4" - replaceingredient[s] = s.."-2" - replaceingredient[s.."-3"] = s.."-4" - replaceingredient[s.."-5"] = s.."-6" - replaceingredient[s.."-7"] = s.."-8" -end +--remove pollution clean and pollution create processor... +for _,m in pairs({ "", "-2", "-3" }) do + lib.hide_recipe("bob-pollution-clean-processor"..m) + lib.hide_item("bob-pollution-clean-processor"..m) -for tname,tech in pairs(data.raw.technology) do - tname = string.sub(tname, 1, -2) - if tname ~= 'speed-module-' and tname ~= 'effectivity-module-' and tname ~= 'productivity-module-' then - for ek,ev in pairs(tech.prerequisites or {}) do - if replacetech[ev] then - --print("in tech " .. tname .. " replacetech " .. ev .. " with " .. replacetechtech[ev]) - tech.prerequisites[ek] = replacetech[ev] - end - end - end + lib.hide_recipe("bob-pollution-create-processor"..m) + lib.hide_item("bob-pollution-create-processor"..m) end -if data.raw.technology['modules-2'] and data.raw.technology['modules-3'] then - for _,n in pairs({'speed-module', 'productivity-module', 'effectivity-module'}) do - local tech2 = data.raw.technology[n .. '-2'] - table.insert(tech2.prerequisites, 'modules-2') - local tech3 = data.raw.technology[n .. '-3'] - for k,v in pairs(tech3.prerequisites or {}) do - if v == 'modules-2' then - tech3.prerequisites[k] = 'modules-3' - end +-- ...and technologies +for i = 1,5 do + for _,s in pairs({'bob-pollution-create-module-', 'bob-pollution-clean-module-'}) do + local str = s .. i + if data.raw.technology[str] then + data.raw.technology[str].hidden = true + end + data.raw.module[str].hidden = true + lib.hide_recipe(str) end - end end -local function replaceingredients(recipe) - if recipe.normal then - replaceingredients(recipe.normal) - end - if recipe.expensive then - replaceingredients(recipe.expensive) - end - local ingredients = recipe.ingredients or {} - for _,ingredient in pairs(ingredients) do - local nameidx = 1 - if ingredient.name then nameidx = 'name' end - local r = replaceingredient[ingredient[nameidx]] - if r then - ingredient[nameidx] = r - end - end -end - -for _,recipe in pairs(data.raw.recipe) do - replaceingredients(recipe) -end - -local effects = { - ['speed-module-2'] = { speed = {bonus = 0.2}, consumption = {bonus = 0.5}}, - ['speed-module-4'] = { speed = {bonus = 0.3}, consumption = {bonus = 0.6}}, - ['speed-module-6'] = { speed = {bonus = 0.5}, consumption = {bonus = 0.7}}, - ['speed-module-8'] = { speed = {bonus = 0.7}, consumption = {bonus = 0.8}}, - ['effectivity-module-2'] = { consumption = {bonus = -0.3}}, - ['effectivity-module-4'] = { consumption = {bonus = -0.4}}, - ['effectivity-module-6'] = { consumption = {bonus = -0.5}}, - ['effectivity-module-8'] = { consumption = {bonus = -0.6}}, - ['productivity-module-2'] = { - productivity = {bonus = 0.04}, - consumption = {bonus = 0.4}, - pollution = {bonus = 0.05}, - speed = {bonus = -0.10} - }, - ['productivity-module-4'] = { - productivity = {bonus = 0.06}, - consumption = {bonus = 0.6}, - pollution = {bonus = 0.075}, - speed = {bonus = -0.12} - }, - ['productivity-module-6'] = { - productivity = {bonus = 0.08}, - consumption = {bonus = 0.8}, - pollution = {bonus = 0.1}, - speed = {bonus = -0.14} - }, - ['productivity-module-8'] = { - productivity = {bonus = 0.12}, - consumption = {bonus = 1.2}, - pollution = {bonus = 0.15}, - speed = {bonus = -0.15} - } -} - -local gems = { - ['speed-module-6'] = 'sapphire-5', - ['speed-module-8'] = 'amethyst-5', - ['effectivity-module-6'] = 'emerald-5', - ['effectivity-module-8'] = 'topaz-5', - ['productivity-module-6'] = 'ruby-5', - ['productivity-module-8'] = 'diamond-5' -} - -local tint = { - ['speed'] = { - primary = {r = 0.441, g = 0.714, b = 1.000, a = 1.000}, -- #70b6ffff - secondary = {r = 0.388, g = 0.976, b = 1.000, a = 1.000}, -- #63f8ffff - }, - ['effectivity'] = { - primary = { 0, 1, 0 }, - secondary = {r = 0.370, g = 1.000, b = 0.370, a = 1.000}, -- #5eff5eff - }, - ['productivity'] = nil -} - -for _,v in pairs({'speed', 'effectivity', 'productivity'}) do - local beacontint = tint[v] - local processor = v..'-processor' - local processor2 = v..'-processor-2' - local processor3 = v..'-processor-3' - local module = v..'-module' - local module2 = v..'-module-2' - local module3 = v..'-module-3' - local module4 = v..'-module-4' - local module5 = v..'-module-5' - local module6 = v..'-module-6' - local module7 = v..'-module-7' - local module8 = v..'-module-8' - - data.raw.recipe[module].ingredients = lib.checkplate( - {'solder', 1}, - { - {'electronic-circuit', 1}, - {'insulated-cable', 2}, - {'module-contact', 1} - }) - data.raw.recipe[module].energy_required = 7.5 - data.raw.item[module] = data.raw.module[module] - data.raw.module[module] = nil - data.raw.item[module].type = 'item' - data.raw.item[module].icon = "__CircuitProcessing__/graphics/icons/"..v.."-module-0-harness.png" - data.raw.item[module].icon_size = 64 - data.raw.item[module].icon_mipmaps = 4 - data.raw.item[module].localised_name = {"item-name."..v.."-module-0-harness"} - data.raw.item[module].localised_description = "" - - data.raw.recipe[module2].ingredients = { - {module, 4}, - {processor, 5}, - {'advanced-circuit', 5}, - {'module-case', 1}, - {'module-circuit-board', 1} - } - data.raw.recipe[module2].energy_required = 15 - data.raw.module[module2].icon = "__CircuitProcessing__/graphics/icons/"..v.."-module-0.png" - data.raw.module[module2].icon_size = 64 - data.raw.module[module2].icon_mipmaps = 4 - data.raw.module[module2].localised_name = {"item-name."..v.."-module-0"} - data.raw.module[module2].effect = effects[module2] - data.raw.module[module2].beacon_tint = beacontint - data.raw.module[module2].tier = 1 - - data.raw.recipe[module3].ingredients = lib.checkplate( - {'solder', 2}, - { - {module2, 1}, - {'electronic-components', 4}, - {'module-contact', 1} - }) - data.raw.recipe[module3].energy_required = 15 - data.raw.item[module3] = data.raw.module[module3] - data.raw.module[module3] = nil - data.raw.item[module3].type = 'item' - data.raw.item[module3].icon = "__CircuitProcessing__/graphics/icons/"..v.."-module-harness.png" - data.raw.item[module3].icon_size = 64 - data.raw.item[module3].icon_mipmaps = 4 - data.raw.item[module3].localised_name = {"item-name."..v.."-module-1-harness"} - data.raw.item[module3].localised_description = "" - data.raw.recipe[module4].ingredients = { - {module3, 4}, - {processor2, 5}, - {'advanced-circuit', 5}, - {'processing-unit', 5} - } - data.raw.recipe[module4].energy_required = 30 - data.raw.module[module4].icon = "__base__/graphics/icons/"..v.."-module.png" - data.raw.module[module4].icon_size = 64 - data.raw.module[module4].icon_mipmaps = 4 - data.raw.module[module4].localised_name = {"item-name."..v.."-module-1"} - data.raw.module[module4].localised_description = {"item-description."..module} - data.raw.module[module4].effect = effects[module4] - data.raw.module[module4].beacon_tint = beacontint - data.raw.module[module4].tier = 2 - - data.raw.recipe[module5].ingredients = lib.checkplate( - {'solder', 1}, - { - {module4, 1}, - {'electronic-components', 5}, - {'intergrated-electronics', 4}, - {'module-contact', 1} - }) - data.raw.recipe[module5].energy_required = 30 - data.raw.item[module5] = data.raw.module[module5] - data.raw.module[module5] = nil - data.raw.item[module5].type = 'item' - data.raw.item[module5].icon = "__CircuitProcessing__/graphics/icons/"..v.."-module-2-harness.png" - data.raw.item[module5].icon_size = 64 - data.raw.item[module5].icon_mipmaps = 4 - data.raw.item[module5].localised_name = {"item-name."..v.."-module-2-harness"} - data.raw.recipe[module6].ingredients = { - {module5, 4}, - {processor3, 20}, - {'processing-unit', 5}, - {'advanced-processing-unit', 2} - } - local gem = gems[module6] - if data.raw.item[gem] then - table.insert(data.raw.recipe[module6].ingredients, 3, {gem, 1}) - end - data.raw.recipe[module6].energy_required = 60 - data.raw.module[module6].icon = "__base__/graphics/icons/"..v.."-module-2.png" - data.raw.module[module6].icon_size = 64 - data.raw.module[module6].icon_mipmaps = 4 - data.raw.module[module6].localised_name = {"item-name."..v.."-module-2"} - data.raw.module[module6].localised_description = {"item-description."..module} - data.raw.module[module6].effect = effects[module6] - data.raw.module[module6].beacon_tint = beacontint - data.raw.module[module6].tier = 3 - - data.raw.recipe[module7].ingredients = lib.checkplate( - {'solder', 5}, - { - {module6, 1}, - {'electronic-components', 10}, - {'intergrated-electronics', 5}, - {'processing-electronics', 20}, - {'module-contact', 1} - }) - data.raw.recipe[module7].energy_required = 30 - data.raw.item[module7] = data.raw.module[module7] - data.raw.module[module7] = nil - data.raw.item[module7].type = 'item' - data.raw.item[module7].icon = "__CircuitProcessing__/graphics/icons/"..v.."-module-3-harness.png" - data.raw.item[module7].icon_size = 64 - data.raw.item[module7].icon_mipmaps = 4 - data.raw.item[module7].localised_name = {"item-name."..v.."-module-3-harness"} - data.raw.recipe[module8].ingredients = { - {module7, 2}, - {'electronic-circuit', 20}, - {'advanced-circuit', 10}, - {'processing-unit', 5}, - {'advanced-processing-unit', 5} - } - gem = gems[module8] - if data.raw.item[gem] then - table.insert(data.raw.recipe[module8].ingredients, 2, {gem, 1}) - end - data.raw.recipe[module8].energy_required = 60 - data.raw.module[module8].icon = "__base__/graphics/icons/"..v.."-module-3.png" - data.raw.module[module8].icon_size = 64 - data.raw.module[module8].icon_mipmaps = 4 - data.raw.module[module8].localised_name = {"item-name."..v.."-module-3"} - data.raw.module[module8].localised_description = {"item-description."..module} - data.raw.module[module8].effect = effects[module8] - data.raw.module[module8].beacon_tint = beacontint - data.raw.module[module8].tier = 4 -end - -local function makebeacontable() - local ret = {} - for k,v in pairs({{'module-lights', 4}, {'module-mask-box', 4}, {'module-mask-lights', 4}, {'module-slot', 5}}) do - ret['__base__/graphics/entity/beacon/beacon-'..v[1]..'-1.png'] = - {file = '__CircuitProcessing__/graphics/beacon/beacon-'..v[1]..'-1.png', count = v[2]} - ret['__base__/graphics/entity/beacon/hr-beacon-'..v[1]..'-1.png'] = - {file = '__CircuitProcessing__/graphics/beacon/hr-beacon-'..v[1]..'-1.png', count = v[2]} - ret['__base__/graphics/entity/beacon/beacon-'..v[1]..'-2.png'] = - {file = '__CircuitProcessing__/graphics/beacon/beacon-'..v[1]..'-2.png', count = v[2]} - ret['__base__/graphics/entity/beacon/hr-beacon-'..v[1]..'-2.png'] = - {file = '__CircuitProcessing__/graphics/beacon/hr-beacon-'..v[1]..'-2.png', count = v[2]} - end - return ret -end -local beacontable = makebeacontable() - -local function updatepictures(pictures) - local r = beacontable[pictures.filename] - if r then - pictures.filename = r.file - pictures.variation_count = r.count - pictures.line_length = r.count - end - if pictures.hr_version then - updatepictures(pictures.hr_version) - end -end - -for _,b in pairs(data.raw.beacon) do - if b.graphics_set and b.graphics_set.module_visualisations then - for ki,vi in pairs(b.graphics_set.module_visualisations[1].slots) do - for kj, vj in pairs(vi) do - updatepictures(vj.pictures) - end - end - end -end +-- local function module_name_builder(module_name, level) +-- if (level == 1) then return module_name.."-module" end +-- if (level <= 3) then return module_name.."-module-"..level +-- else +-- return "bob-"..module_name.."-module-"..level +-- end +-- end + +-- --replace effects and techs of existing modules +-- local techs = data.raw["technology"] + +-- for _, module_name in pairs({ "speed", "efficiency", "productivity" }) do +-- techs[module_name.."-module"].effects = { -- module-0 +-- { type = "unlock-recipe", recipe = "efficiency-module-2" }, +-- { type = "unlock-recipe", recipe = "bob-efficiency-processor" }, +-- { type = "unlock-recipe", recipe = "efficiency-module" } +-- } + +-- techs[module_name.."-module-2"].effects = { -- module-1 +-- { type = "unlock-recipe", recipe = "efficiency-module-3" }, +-- { type = "unlock-recipe", recipe = "bob-efficiency-processor" }, +-- { type = "unlock-recipe", recipe = "efficiency-module" } +-- } +-- end + +-- --remove bob-god-module +-- data.raw["technology"]["bob-god-module"] = nil +-- data.raw["recipe"]["bob-god-module"] = nil +-- data.raw["module"]["bob-god-module"] = nil + +-- --remove all other bobmodules +-- for i = 4,5 do +-- for _, module_name in pairs({ "speed", "efficiency", "productivity" }) do +-- data.raw["technology"][module_name_builder(module_name)..i] = nil +-- data.raw["recipe"][module_name_builder(module_name)..i] = nil +-- data.raw["module"][module_name_builder(module_name)..i] = nil +-- end +-- end \ No newline at end of file diff --git a/CircuitProcessing/data-updates.lua b/CircuitProcessing/data-updates.lua index 2269e1a..a8b4c37 100644 --- a/CircuitProcessing/data-updates.lua +++ b/CircuitProcessing/data-updates.lua @@ -1,6 +1,5 @@ require "bobelectronics" --- Bobmodules had a massive revamp, no changes needed imo --- require "bobmodules" +require "bobmodules" -- Hide Agriculture Modules. Revisit later, once Angel's devs have finished their changes local function disable(name) From cc9f6bbe50ff861fbf621ab5e33b1bdaa6499361 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Fri, 5 Sep 2025 22:51:39 +0200 Subject: [PATCH 11/27] updated cost of modules --- CircuitProcessing/angelsmodules.lua | 6 +++ CircuitProcessing/bobmodules.lua | 81 +++++++++++++++-------------- CircuitProcessing/data-updates.lua | 27 +--------- CircuitProcessing/data.lua | 23 ++++++++ 4 files changed, 73 insertions(+), 64 deletions(-) create mode 100644 CircuitProcessing/angelsmodules.lua diff --git a/CircuitProcessing/angelsmodules.lua b/CircuitProcessing/angelsmodules.lua new file mode 100644 index 0000000..8665f1c --- /dev/null +++ b/CircuitProcessing/angelsmodules.lua @@ -0,0 +1,6 @@ +--replace pollution modules ingredient with efficiency modules +replace_recipe_ingredient("angels-bio-yield-module", "bob-pollution-create-module-1", "efficiency-module") +replace_recipe_ingredient("angels-bio-yield-module-2", "bob-pollution-create-module-2", "efficiency-module-2") +replace_recipe_ingredient("angels-bio-yield-module-3", "bob-pollution-create-module-3", "efficiency-module-3") +replace_recipe_ingredient("angels-bio-yield-module-4", "bob-pollution-create-module-4", "bob-efficiency-module-4") +replace_recipe_ingredient("angels-bio-yield-module-5", "bob-pollution-create-module-5", "bob-efficiency-module-5") \ No newline at end of file diff --git a/CircuitProcessing/bobmodules.lua b/CircuitProcessing/bobmodules.lua index 1ae66eb..f04209e 100644 --- a/CircuitProcessing/bobmodules.lua +++ b/CircuitProcessing/bobmodules.lua @@ -32,41 +32,46 @@ for i = 1,5 do end end --- local function module_name_builder(module_name, level) --- if (level == 1) then return module_name.."-module" end --- if (level <= 3) then return module_name.."-module-"..level --- else --- return "bob-"..module_name.."-module-"..level --- end --- end - --- --replace effects and techs of existing modules --- local techs = data.raw["technology"] - --- for _, module_name in pairs({ "speed", "efficiency", "productivity" }) do --- techs[module_name.."-module"].effects = { -- module-0 --- { type = "unlock-recipe", recipe = "efficiency-module-2" }, --- { type = "unlock-recipe", recipe = "bob-efficiency-processor" }, --- { type = "unlock-recipe", recipe = "efficiency-module" } --- } - --- techs[module_name.."-module-2"].effects = { -- module-1 --- { type = "unlock-recipe", recipe = "efficiency-module-3" }, --- { type = "unlock-recipe", recipe = "bob-efficiency-processor" }, --- { type = "unlock-recipe", recipe = "efficiency-module" } --- } --- end - --- --remove bob-god-module --- data.raw["technology"]["bob-god-module"] = nil --- data.raw["recipe"]["bob-god-module"] = nil --- data.raw["module"]["bob-god-module"] = nil - --- --remove all other bobmodules --- for i = 4,5 do --- for _, module_name in pairs({ "speed", "efficiency", "productivity" }) do --- data.raw["technology"][module_name_builder(module_name)..i] = nil --- data.raw["recipe"][module_name_builder(module_name)..i] = nil --- data.raw["module"][module_name_builder(module_name)..i] = nil --- end --- end \ No newline at end of file +-- balance cost of modules +for _, module_name in pairs({ "speed", "productivity", "efficiency" }) do + -- modules-1 + replace_recipe_ingredient(module_name.."-module", "electronic-circuit", "electronic-circuit", 6) + add_recipe_ingredient(module_name.."-module", "advanced-circuit", 6) + bobmods.lib.tech.add_prerequisite(module_name.."-module", "advanced-circuit") + + --module-2 + replace_recipe_ingredient(module_name.."-module-2", "advanced-circuit", "advanced-circuit", 5) + replace_recipe_ingredient(module_name.."-module-2", module_name.."-module", module_name.."-module", 4) + add_recipe_ingredient(module_name.."-module-2", "processing-unit", 5) + bobmods.lib.tech.add_prerequisite(module_name.."-module-2", "processing-unit") + + --module-3 + replace_recipe_ingredient(module_name.."-module-3", "processing-unit", "processing-unit", 5) + replace_recipe_ingredient(module_name.."-module-3", module_name.."-module-2", module_name.."-module", 4) + add_recipe_ingredient(module_name.."-module-3", "bob-advanced-processing-unit", 5) + bobmods.lib.tech.add_prerequisite(module_name.."-module-3", "bob-advanced-processing-unit") + + --module-4 + replace_recipe_ingredient("bob-"..module_name.."-module-4", module_name.."-module-3", module_name.."-module", 3) + add_recipe_ingredient("bob-"..module_name.."-module-4", "processing-unit", 10) + + --module-5 + replace_recipe_ingredient("bob-"..module_name.."-module-5", module_name.."-module-4", module_name.."-module", 2) +end + +--balance cost of agricultural modules +replace_recipe_ingredient("angels-bio-yield-module", "efficiency-module", "efficiency-module", 2) +replace_recipe_ingredient("angels-bio-yield-module", "productivity-module", "productivity-module", 2) +replace_recipe_ingredient("angels-bio-yield-module", "angels-token-bio", "angels-token-bio", 5) + +replace_recipe_ingredient("angels-bio-yield-module-2", "angels-bio-yield-module", "angels-bio-yield-module", 4) +replace_recipe_ingredient("angels-bio-yield-module-2", "angels-token-bio", "angels-token-bio", 5) + +replace_recipe_ingredient("angels-bio-yield-module-3", "angels-bio-yield-module-2", "angels-bio-yield-module-2", 4) +replace_recipe_ingredient("angels-bio-yield-module-3", "angels-token-bio", "angels-token-bio", 5) + +replace_recipe_ingredient("angels-bio-yield-module-4", "angels-bio-yield-module-3", "angels-bio-yield-module-3", 3) +replace_recipe_ingredient("angels-bio-yield-module-4", "angels-token-bio", "angels-token-bio", 10) + +replace_recipe_ingredient("angels-bio-yield-module-5", "angels-bio-yield-module-4", "angels-bio-yield-module-4", 2) +replace_recipe_ingredient("angels-bio-yield-module-5", "angels-token-bio", "angels-token-bio", 10) \ No newline at end of file diff --git a/CircuitProcessing/data-updates.lua b/CircuitProcessing/data-updates.lua index a8b4c37..dec330b 100644 --- a/CircuitProcessing/data-updates.lua +++ b/CircuitProcessing/data-updates.lua @@ -1,28 +1,3 @@ require "bobelectronics" require "bobmodules" - --- Hide Agriculture Modules. Revisit later, once Angel's devs have finished their changes -local function disable(name) - if data.raw.technology[name] then - data.raw.technology[name].enabled = false - data.raw.technology[name].hidden = true - end - if data.raw.recipe[name] then - data.raw.recipe[name].hidden = true - end - if data.raw.module[name] then - data.raw.module[name].hidden = true - end -end -for _,v in pairs({ - 'angels-bio-yield-module', - 'angels-bio-yield-module-2', - 'angels-bio-yield-module-3', - 'angels-bio-yield-module-4', - 'angels-bio-yield-module-5', - 'angels-bio-yield-module-6', - 'angels-bio-yield-module-7', - 'angels-bio-yield-module-8' - }) do - disable(v) -end +require "angelsmodules" \ No newline at end of file diff --git a/CircuitProcessing/data.lua b/CircuitProcessing/data.lua index 58b5939..a6bbb7c 100644 --- a/CircuitProcessing/data.lua +++ b/CircuitProcessing/data.lua @@ -2,3 +2,26 @@ if angelsmods and angelsmods.trigger and angelsmods.trigger.smelting_products an angelsmods.trigger.smelting_products["chrome"] then angelsmods.trigger.smelting_products["chrome"].plate = true end + +-- replaces existing ingredient with new ingredient (only items) +function replace_recipe_ingredient(recipe_name, old_ingredient, new_ingredient, new_amount) + local recipes = data.raw.recipe + if (not recipes[recipe_name]) then error("Recipe "..recipe_name.." not found while trying to replace ingredient") end + + for _, ingr in pairs(recipes[recipe_name].ingredients) do + if (ingr.name == old_ingredient) then + ingr.name = new_ingredient + ingr.amount = new_amount or ingr.amount + end + end +end + +-- adds recipe ingredient (only items) +function add_recipe_ingredient(recipe_name, ingr_name, ingr_amount) + local recipes = data.raw.recipe + if (not recipes[recipe_name]) then error("Recipe "..recipe_name.." not found while trying to add ingredient") end + + recipes[recipe_name].ingredients = recipes[recipe_name].ingredients or {} + + table.insert(recipes[recipe_name].ingredients, { type = "item", name = ingr_name, amount = ingr_amount or 1 }) +end \ No newline at end of file From f77f9da03e1e11cd924e5eebe3f4c493ad23a8eb Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sat, 6 Sep 2025 09:51:31 +0200 Subject: [PATCH 12/27] bobmods.lib.recipe.set_energy_required stopped working --- CircuitProcessing/bobelectronics.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 5163585..1b7da76 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -137,8 +137,8 @@ data.raw.recipe['processing-unit'] = results = { {type = "item", name = "processing-unit", amount = 1} }, allow_decomposition = false } -bobmods.lib.recipe.set_energy_required('cp-processing-board', 5) -bobmods.lib.recipe.set_energy_required('bob-superior-circuit-board', 5) +lib.set_energy_required('cp-processing-board', 5) +lib.set_energy_required('bob-superior-circuit-board', 5) local cpadvancedprocessingboard = data.raw.item['bob-advanced-processing-unit'] data.raw.item['cp-advanced-processing-board'] = cpadvancedprocessingboard @@ -173,8 +173,8 @@ data.raw.recipe["cp-advanced-processing-board"].results = { { type = "item", name = "cp-advanced-processing-board", amount = 1 } } lib.set_main_product('cp-advanced-processing-board', 'cp-advanced-processing-board') -bobmods.lib.recipe.set_energy_required('cp-advanced-processing-board', 5) -bobmods.lib.recipe.set_energy_required('bob-multi-layer-circuit-board', 5) +lib.set_energy_required('cp-advanced-processing-board', 5) +lib.set_energy_required('bob-multi-layer-circuit-board', 5) data.raw.recipe['bob-advanced-processing-unit'] = { @@ -223,7 +223,7 @@ for _,v in pairs(components) do end data.raw.recipe["bob-basic-electronic-components"].results[1].amount = 10 -bobmods.lib.recipe.set_energy_required('bob-basic-electronic-components', 4) +lib.set_energy_required('bob-basic-electronic-components', 4) -- local circuits = { -- 'cp-advanced-processing-board', From ec08d069bf555a39e4f59eb91c6d4d3e5c22221c Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sat, 6 Sep 2025 09:55:14 +0200 Subject: [PATCH 13/27] added energy_required lib function --- CircuitProcessing/lib.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CircuitProcessing/lib.lua b/CircuitProcessing/lib.lua index c676d08..223fe06 100644 --- a/CircuitProcessing/lib.lua +++ b/CircuitProcessing/lib.lua @@ -64,4 +64,14 @@ lib.hide_recipe = function(recipe) log(debug.traceback()) end end -return lib + +lib.set_energy_required = function(recipe, energy) + local r = data.raw.recipe[recipe] + if type(recipe) == "string" and type(energy) == "number" and r then + r.energy_required = energy + else + log(debug.traceback()) + end +end + +return lib \ No newline at end of file From af2a03c383589775cda2e5453b4228e89637abcc Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sat, 6 Sep 2025 10:09:26 +0200 Subject: [PATCH 14/27] reworked effects of agriculture module and moved functions to lib --- CircuitProcessing/angelsmodules.lua | 12 +++--- CircuitProcessing/bobmodules.lua | 66 +++++++++++++++++------------ CircuitProcessing/data.lua | 23 ---------- CircuitProcessing/lib.lua | 31 ++++++++++++++ 4 files changed, 78 insertions(+), 54 deletions(-) diff --git a/CircuitProcessing/angelsmodules.lua b/CircuitProcessing/angelsmodules.lua index 8665f1c..9a5ed35 100644 --- a/CircuitProcessing/angelsmodules.lua +++ b/CircuitProcessing/angelsmodules.lua @@ -1,6 +1,8 @@ +local lib = require "lib" + --replace pollution modules ingredient with efficiency modules -replace_recipe_ingredient("angels-bio-yield-module", "bob-pollution-create-module-1", "efficiency-module") -replace_recipe_ingredient("angels-bio-yield-module-2", "bob-pollution-create-module-2", "efficiency-module-2") -replace_recipe_ingredient("angels-bio-yield-module-3", "bob-pollution-create-module-3", "efficiency-module-3") -replace_recipe_ingredient("angels-bio-yield-module-4", "bob-pollution-create-module-4", "bob-efficiency-module-4") -replace_recipe_ingredient("angels-bio-yield-module-5", "bob-pollution-create-module-5", "bob-efficiency-module-5") \ No newline at end of file +lib.replace_recipe_ingredient("angels-bio-yield-module", "bob-pollution-create-module-1", "efficiency-module") +lib.replace_recipe_ingredient("angels-bio-yield-module-2", "bob-pollution-create-module-2", "efficiency-module-2") +lib.replace_recipe_ingredient("angels-bio-yield-module-3", "bob-pollution-create-module-3", "efficiency-module-3") +lib.replace_recipe_ingredient("angels-bio-yield-module-4", "bob-pollution-create-module-4", "bob-efficiency-module-4") +lib.replace_recipe_ingredient("angels-bio-yield-module-5", "bob-pollution-create-module-5", "bob-efficiency-module-5") \ No newline at end of file diff --git a/CircuitProcessing/bobmodules.lua b/CircuitProcessing/bobmodules.lua index f04209e..d283491 100644 --- a/CircuitProcessing/bobmodules.lua +++ b/CircuitProcessing/bobmodules.lua @@ -35,43 +35,57 @@ end -- balance cost of modules for _, module_name in pairs({ "speed", "productivity", "efficiency" }) do -- modules-1 - replace_recipe_ingredient(module_name.."-module", "electronic-circuit", "electronic-circuit", 6) - add_recipe_ingredient(module_name.."-module", "advanced-circuit", 6) + lib.replace_recipe_ingredient(module_name.."-module", "electronic-circuit", "electronic-circuit", 6) + lib.add_recipe_ingredient(module_name.."-module", "advanced-circuit", 6) bobmods.lib.tech.add_prerequisite(module_name.."-module", "advanced-circuit") --module-2 - replace_recipe_ingredient(module_name.."-module-2", "advanced-circuit", "advanced-circuit", 5) - replace_recipe_ingredient(module_name.."-module-2", module_name.."-module", module_name.."-module", 4) - add_recipe_ingredient(module_name.."-module-2", "processing-unit", 5) + lib.replace_recipe_ingredient(module_name.."-module-2", "advanced-circuit", "advanced-circuit", 5) + lib.replace_recipe_ingredient(module_name.."-module-2", module_name.."-module", module_name.."-module", 4) + lib.add_recipe_ingredient(module_name.."-module-2", "processing-unit", 5) bobmods.lib.tech.add_prerequisite(module_name.."-module-2", "processing-unit") --module-3 - replace_recipe_ingredient(module_name.."-module-3", "processing-unit", "processing-unit", 5) - replace_recipe_ingredient(module_name.."-module-3", module_name.."-module-2", module_name.."-module", 4) - add_recipe_ingredient(module_name.."-module-3", "bob-advanced-processing-unit", 5) + lib.replace_recipe_ingredient(module_name.."-module-3", "processing-unit", "processing-unit", 5) + lib.replace_recipe_ingredient(module_name.."-module-3", module_name.."-module-2", module_name.."-module", 4) + lib.add_recipe_ingredient(module_name.."-module-3", "bob-advanced-processing-unit", 5) bobmods.lib.tech.add_prerequisite(module_name.."-module-3", "bob-advanced-processing-unit") --module-4 - replace_recipe_ingredient("bob-"..module_name.."-module-4", module_name.."-module-3", module_name.."-module", 3) - add_recipe_ingredient("bob-"..module_name.."-module-4", "processing-unit", 10) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-4", module_name.."-module-3", module_name.."-module", 3) + lib.add_recipe_ingredient("bob-"..module_name.."-module-4", "processing-unit", 10) --module-5 - replace_recipe_ingredient("bob-"..module_name.."-module-5", module_name.."-module-4", module_name.."-module", 2) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", module_name.."-module-4", module_name.."-module", 2) end --balance cost of agricultural modules -replace_recipe_ingredient("angels-bio-yield-module", "efficiency-module", "efficiency-module", 2) -replace_recipe_ingredient("angels-bio-yield-module", "productivity-module", "productivity-module", 2) -replace_recipe_ingredient("angels-bio-yield-module", "angels-token-bio", "angels-token-bio", 5) - -replace_recipe_ingredient("angels-bio-yield-module-2", "angels-bio-yield-module", "angels-bio-yield-module", 4) -replace_recipe_ingredient("angels-bio-yield-module-2", "angels-token-bio", "angels-token-bio", 5) - -replace_recipe_ingredient("angels-bio-yield-module-3", "angels-bio-yield-module-2", "angels-bio-yield-module-2", 4) -replace_recipe_ingredient("angels-bio-yield-module-3", "angels-token-bio", "angels-token-bio", 5) - -replace_recipe_ingredient("angels-bio-yield-module-4", "angels-bio-yield-module-3", "angels-bio-yield-module-3", 3) -replace_recipe_ingredient("angels-bio-yield-module-4", "angels-token-bio", "angels-token-bio", 10) - -replace_recipe_ingredient("angels-bio-yield-module-5", "angels-bio-yield-module-4", "angels-bio-yield-module-4", 2) -replace_recipe_ingredient("angels-bio-yield-module-5", "angels-token-bio", "angels-token-bio", 10) \ No newline at end of file +lib.replace_recipe_ingredient("angels-bio-yield-module", "efficiency-module", "efficiency-module", 2) +lib.replace_recipe_ingredient("angels-bio-yield-module", "productivity-module", "productivity-module", 2) +lib.replace_recipe_ingredient("angels-bio-yield-module", "angels-token-bio", "angels-token-bio", 5) + +lib.replace_recipe_ingredient("angels-bio-yield-module-2", "angels-bio-yield-module", "angels-bio-yield-module", 4) +lib.replace_recipe_ingredient("angels-bio-yield-module-2", "angels-token-bio", "angels-token-bio", 5) + +lib.replace_recipe_ingredient("angels-bio-yield-module-3", "angels-bio-yield-module-2", "angels-bio-yield-module-2", 4) +lib.replace_recipe_ingredient("angels-bio-yield-module-3", "angels-token-bio", "angels-token-bio", 5) + +lib.replace_recipe_ingredient("angels-bio-yield-module-4", "angels-bio-yield-module-3", "angels-bio-yield-module-3", 3) +lib.replace_recipe_ingredient("angels-bio-yield-module-4", "angels-token-bio", "angels-token-bio", 10) + +lib.replace_recipe_ingredient("angels-bio-yield-module-5", "angels-bio-yield-module-4", "angels-bio-yield-module-4", 2) +lib.replace_recipe_ingredient("angels-bio-yield-module-5", "angels-token-bio", "angels-token-bio", 10) + +--added consumption_modifier to agriculture module since it now has efficiency module as ingredient +lib.add_module_effect("angels-bio-yield-module", "consumption", -0.1) +lib.add_module_effect("angels-bio-yield-module-2", "consumption", -0.1) +lib.add_module_effect("angels-bio-yield-module-3", "consumption", -0.2) +lib.add_module_effect("angels-bio-yield-module-4", "consumption", -0.2) +lib.add_module_effect("angels-bio-yield-module-5", "consumption", -0.3) + +--reworked pollution_modifier of agriculture module since it now lacks the pollution create module +lib.add_module_effect("angels-bio-yield-module", "pollution", nil) +lib.add_module_effect("angels-bio-yield-module-2", "pollution", nil) +lib.add_module_effect("angels-bio-yield-module-3", "pollution", nil) +lib.add_module_effect("angels-bio-yield-module-4", "pollution", nil) +lib.add_module_effect("angels-bio-yield-module-5", "pollution", nil) \ No newline at end of file diff --git a/CircuitProcessing/data.lua b/CircuitProcessing/data.lua index a6bbb7c..5c532ae 100644 --- a/CircuitProcessing/data.lua +++ b/CircuitProcessing/data.lua @@ -1,27 +1,4 @@ if angelsmods and angelsmods.trigger and angelsmods.trigger.smelting_products and angelsmods.trigger.smelting_products["chrome"] then angelsmods.trigger.smelting_products["chrome"].plate = true -end - --- replaces existing ingredient with new ingredient (only items) -function replace_recipe_ingredient(recipe_name, old_ingredient, new_ingredient, new_amount) - local recipes = data.raw.recipe - if (not recipes[recipe_name]) then error("Recipe "..recipe_name.." not found while trying to replace ingredient") end - - for _, ingr in pairs(recipes[recipe_name].ingredients) do - if (ingr.name == old_ingredient) then - ingr.name = new_ingredient - ingr.amount = new_amount or ingr.amount - end - end -end - --- adds recipe ingredient (only items) -function add_recipe_ingredient(recipe_name, ingr_name, ingr_amount) - local recipes = data.raw.recipe - if (not recipes[recipe_name]) then error("Recipe "..recipe_name.." not found while trying to add ingredient") end - - recipes[recipe_name].ingredients = recipes[recipe_name].ingredients or {} - - table.insert(recipes[recipe_name].ingredients, { type = "item", name = ingr_name, amount = ingr_amount or 1 }) end \ No newline at end of file diff --git a/CircuitProcessing/lib.lua b/CircuitProcessing/lib.lua index 223fe06..bf8328a 100644 --- a/CircuitProcessing/lib.lua +++ b/CircuitProcessing/lib.lua @@ -74,4 +74,35 @@ lib.set_energy_required = function(recipe, energy) end end +lib.add_module_effect = function(module_name, effect_name, effect_amount) + local module = data.raw.module[module_name] + + if (not module) then error("Tried to remove effect of non existing module "..module_name) end + + module.effect[effect_name] = effect_amount +end + +-- replaces existing ingredient with new ingredient (only items) +lib.replace_recipe_ingredient = function(recipe_name, old_ingredient, new_ingredient, new_amount) + local recipes = data.raw.recipe + if (not recipes[recipe_name]) then error("Recipe "..recipe_name.." not found while trying to replace ingredient") end + + for _, ingr in pairs(recipes[recipe_name].ingredients) do + if (ingr.name == old_ingredient) then + ingr.name = new_ingredient + ingr.amount = new_amount or ingr.amount + end + end +end + +-- adds recipe ingredient (only items) +lib.add_recipe_ingredient = function(recipe_name, ingr_name, ingr_amount) + local recipes = data.raw.recipe + if (not recipes[recipe_name]) then error("Recipe "..recipe_name.." not found while trying to add ingredient") end + + recipes[recipe_name].ingredients = recipes[recipe_name].ingredients or {} + + table.insert(recipes[recipe_name].ingredients, { type = "item", name = ingr_name, amount = ingr_amount or 1 }) +end + return lib \ No newline at end of file From cf2321ca466c407fa57260ba9bdeb5b77365dca7 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sat, 6 Sep 2025 10:14:10 +0200 Subject: [PATCH 15/27] Changelog and Version number --- CircuitProcessing/changelog.txt | 8 ++++++++ CircuitProcessing/info.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CircuitProcessing/changelog.txt b/CircuitProcessing/changelog.txt index 207a2ba..9536c1a 100644 --- a/CircuitProcessing/changelog.txt +++ b/CircuitProcessing/changelog.txt @@ -1,4 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 0.5.0 +Date: 06.09.2025 + Changes: + - Factorio 2.0 update + - Enabled Angel's Agriculture Modules + - Updated module cost and effects + - Renamed components of Bob's +--------------------------------------------------------------------------------------------------- Version: 0.4.5 Date: 01.01.2023 Changes: diff --git a/CircuitProcessing/info.json b/CircuitProcessing/info.json index 5b29b11..6e847c7 100644 --- a/CircuitProcessing/info.json +++ b/CircuitProcessing/info.json @@ -1,6 +1,6 @@ { "name": "CircuitProcessing", - "version": "0.4.5", + "version": "0.5.0", "factorio_version": "2.0", "title": "Circuit Processing", "author": "Trainwreck", From 17db76f174bff2a41f8101ec0145938827cacb36 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Tue, 9 Sep 2025 21:36:49 +0200 Subject: [PATCH 16/27] Fixed recipe group for circuits --- CircuitProcessing/bobelectronics.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 1b7da76..f413f0f 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -14,7 +14,7 @@ else { type = 'item-subgroup', name = 'sb-circuit-board', - group = 'bob-intermediate-products', + group = 'intermediate-products', order = 'e-a4' } }) From 82ae2ee2b71bb4a18ee8fff191c2628fcc032451 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Wed, 10 Sep 2025 20:51:53 +0200 Subject: [PATCH 17/27] Removed normal/expensive properties --- CircuitProcessing/lib.lua | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/CircuitProcessing/lib.lua b/CircuitProcessing/lib.lua index bf8328a..e4028c7 100644 --- a/CircuitProcessing/lib.lua +++ b/CircuitProcessing/lib.lua @@ -39,15 +39,7 @@ lib.set_main_product = function(recipe, item) type(item) == "string" and r then - if r.normal then - r.normal.main_product = item - end - if r.expensive then - r.expensive.main_product = item - end - if (not r.normal) and (not r.expensive) then - r.main_product = item - end + r.main_product = item else log(debug.traceback()) end From bf8250bce27e3da729c4192518fc84adffca3601 Mon Sep 17 00:00:00 2001 From: voldkost <48951456+voldkost@users.noreply.github.com> Date: Fri, 12 Sep 2025 21:10:22 +0300 Subject: [PATCH 18/27] Update bobmodules.lua fix for updated code --- CircuitProcessing/bobmodules.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CircuitProcessing/bobmodules.lua b/CircuitProcessing/bobmodules.lua index d283491..9c96221 100644 --- a/CircuitProcessing/bobmodules.lua +++ b/CircuitProcessing/bobmodules.lua @@ -47,16 +47,16 @@ for _, module_name in pairs({ "speed", "productivity", "efficiency" }) do --module-3 lib.replace_recipe_ingredient(module_name.."-module-3", "processing-unit", "processing-unit", 5) - lib.replace_recipe_ingredient(module_name.."-module-3", module_name.."-module-2", module_name.."-module", 4) + lib.replace_recipe_ingredient(module_name.."-module-3", module_name.."-module-2", module_name.."-module-2", 4) lib.add_recipe_ingredient(module_name.."-module-3", "bob-advanced-processing-unit", 5) bobmods.lib.tech.add_prerequisite(module_name.."-module-3", "bob-advanced-processing-unit") --module-4 - lib.replace_recipe_ingredient("bob-"..module_name.."-module-4", module_name.."-module-3", module_name.."-module", 3) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-4", module_name.."-module-3", module_name.."-module-3", 3) lib.add_recipe_ingredient("bob-"..module_name.."-module-4", "processing-unit", 10) --module-5 - lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", module_name.."-module-4", module_name.."-module", 2) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", module_name.."-module-4", module_name.."-module-4", 2) end --balance cost of agricultural modules @@ -88,4 +88,4 @@ lib.add_module_effect("angels-bio-yield-module", "pollution", nil) lib.add_module_effect("angels-bio-yield-module-2", "pollution", nil) lib.add_module_effect("angels-bio-yield-module-3", "pollution", nil) lib.add_module_effect("angels-bio-yield-module-4", "pollution", nil) -lib.add_module_effect("angels-bio-yield-module-5", "pollution", nil) \ No newline at end of file +lib.add_module_effect("angels-bio-yield-module-5", "pollution", nil) From fff83c56d8e39461d23577d4a91c7281f447551d Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sat, 20 Sep 2025 17:03:48 +0200 Subject: [PATCH 19/27] Changed recipe category for blue and black circuits (they not include fluids) --- CircuitProcessing/bobelectronics.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index f413f0f..c1d79b8 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -124,7 +124,7 @@ data.raw.recipe['processing-unit'] = { type = "recipe", name = "processing-unit", - category = "electronics", + category = "electronics-with-fluid", enabled = false, energy_required = 10, ingredients = lib.checkplate( @@ -180,7 +180,7 @@ data.raw.recipe['bob-advanced-processing-unit'] = { type = "recipe", name = "bob-advanced-processing-unit", - category = "electronics", + category = "electronics-with-fluid", enabled = false, energy_required = 15, ingredients = lib.checkplate( From dbb41cc6cb9d5e82cbc4dd3bcb8d2fabb832222f Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Tue, 23 Sep 2025 18:48:49 +0200 Subject: [PATCH 20/27] Updated cost of modules KompetenzAirbag/SeaBlock#30 --- CircuitProcessing/bobmodules.lua | 23 +++++++++++++++++++---- CircuitProcessing/data-updates.lua | 4 ++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/CircuitProcessing/bobmodules.lua b/CircuitProcessing/bobmodules.lua index 9c96221..f707808 100644 --- a/CircuitProcessing/bobmodules.lua +++ b/CircuitProcessing/bobmodules.lua @@ -35,8 +35,8 @@ end -- balance cost of modules for _, module_name in pairs({ "speed", "productivity", "efficiency" }) do -- modules-1 - lib.replace_recipe_ingredient(module_name.."-module", "electronic-circuit", "electronic-circuit", 6) - lib.add_recipe_ingredient(module_name.."-module", "advanced-circuit", 6) + lib.replace_recipe_ingredient(module_name.."-module", "electronic-circuit", "electronic-circuit", 5) + lib.add_recipe_ingredient(module_name.."-module", "advanced-circuit", 5) bobmods.lib.tech.add_prerequisite(module_name.."-module", "advanced-circuit") --module-2 @@ -48,17 +48,32 @@ for _, module_name in pairs({ "speed", "productivity", "efficiency" }) do --module-3 lib.replace_recipe_ingredient(module_name.."-module-3", "processing-unit", "processing-unit", 5) lib.replace_recipe_ingredient(module_name.."-module-3", module_name.."-module-2", module_name.."-module-2", 4) - lib.add_recipe_ingredient(module_name.."-module-3", "bob-advanced-processing-unit", 5) + lib.add_recipe_ingredient(module_name.."-module-3", "bob-advanced-processing-unit", 3) bobmods.lib.tech.add_prerequisite(module_name.."-module-3", "bob-advanced-processing-unit") --module-4 lib.replace_recipe_ingredient("bob-"..module_name.."-module-4", module_name.."-module-3", module_name.."-module-3", 3) - lib.add_recipe_ingredient("bob-"..module_name.."-module-4", "processing-unit", 10) + lib.add_recipe_ingredient("bob-"..module_name.."-module-4", "advanced-circuit", 6) + lib.add_recipe_ingredient("bob-"..module_name.."-module-4", "processing-unit", 5) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-4", "bob-advanced-processing-unit", "bob-advanced-processing-unit", 4) --module-5 + lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", "electronic-circuit", "electronic-circuit", 15) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", "advanced-circuit", "advanced-circuit", 10) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", "processing-unit", "processing-unit", 5) + lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", "bob-advanced-processing-unit", "bob-advanced-processing-unit", 5) lib.replace_recipe_ingredient("bob-"..module_name.."-module-5", module_name.."-module-4", module_name.."-module-4", 2) end +--balance effects of modules-1 because they are much cheaper as module-0 in 1.1 +lib.add_module_effect("productivity-module", "productivity", 0.03) --was 0.04 +lib.add_module_effect("productivity-module", "speed", -0.1) --was -0.05 + +lib.add_module_effect("speed-module", "speed", 0.15) --was 0.2 +lib.add_module_effect("speed-module", "consumption", 0.55) --was 0.5 + +lib.add_module_effect("efficiency-module", "consumption", -0.3) --was -0.4 + --balance cost of agricultural modules lib.replace_recipe_ingredient("angels-bio-yield-module", "efficiency-module", "efficiency-module", 2) lib.replace_recipe_ingredient("angels-bio-yield-module", "productivity-module", "productivity-module", 2) diff --git a/CircuitProcessing/data-updates.lua b/CircuitProcessing/data-updates.lua index dec330b..62398aa 100644 --- a/CircuitProcessing/data-updates.lua +++ b/CircuitProcessing/data-updates.lua @@ -1,3 +1,3 @@ require "bobelectronics" -require "bobmodules" -require "angelsmodules" \ No newline at end of file +require "angelsmodules" +require "bobmodules" \ No newline at end of file From 7aa45f12dde5a47a02be7dc160e009185a699fbd Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sun, 12 Oct 2025 18:53:52 +0200 Subject: [PATCH 21/27] Made electronic components allow productivity --- CircuitProcessing/bobelectronics.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index c1d79b8..42c7ac6 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -53,6 +53,7 @@ data.raw.recipe['electronic-circuit'] = results = { {type = "item", name = "electronic-circuit", amount = 1} }, requester_paste_multiplier = 50, enabled = false, + allow_productivity = true, allow_decomposition = false } @@ -95,7 +96,8 @@ data.raw.recipe['advanced-circuit'] = }), results = { {type = "item", name = "advanced-circuit", amount = 1} }, requester_paste_multiplier = 5, - allow_decomposition = false + allow_decomposition = false, + allow_productivity = true } local cpprocessingboard = data.raw.item['processing-unit'] @@ -135,7 +137,8 @@ data.raw.recipe['processing-unit'] = { type = "fluid", name = "sulfuric-acid", amount = 5 } }), results = { {type = "item", name = "processing-unit", amount = 1} }, - allow_decomposition = false + allow_decomposition = false, + allow_productivity = true } lib.set_energy_required('cp-processing-board', 5) lib.set_energy_required('bob-superior-circuit-board', 5) @@ -192,7 +195,8 @@ data.raw.recipe['bob-advanced-processing-unit'] = { type = "fluid", name = advancedacid, amount = 5 } }), results = { {type = "item", name = "bob-advanced-processing-unit", amount = 1} }, - allow_decomposition = false + allow_decomposition = false, + allow_productivity = true } local cable = { From 4ec7482da783b88cbc60f1b1f6019e59979cacea Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:34:27 +0200 Subject: [PATCH 22/27] Revert "Made electronic components allow productivity" This reverts commit 7aa45f12dde5a47a02be7dc160e009185a699fbd. --- CircuitProcessing/bobelectronics.lua | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 42c7ac6..c1d79b8 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -53,7 +53,6 @@ data.raw.recipe['electronic-circuit'] = results = { {type = "item", name = "electronic-circuit", amount = 1} }, requester_paste_multiplier = 50, enabled = false, - allow_productivity = true, allow_decomposition = false } @@ -96,8 +95,7 @@ data.raw.recipe['advanced-circuit'] = }), results = { {type = "item", name = "advanced-circuit", amount = 1} }, requester_paste_multiplier = 5, - allow_decomposition = false, - allow_productivity = true + allow_decomposition = false } local cpprocessingboard = data.raw.item['processing-unit'] @@ -137,8 +135,7 @@ data.raw.recipe['processing-unit'] = { type = "fluid", name = "sulfuric-acid", amount = 5 } }), results = { {type = "item", name = "processing-unit", amount = 1} }, - allow_decomposition = false, - allow_productivity = true + allow_decomposition = false } lib.set_energy_required('cp-processing-board', 5) lib.set_energy_required('bob-superior-circuit-board', 5) @@ -195,8 +192,7 @@ data.raw.recipe['bob-advanced-processing-unit'] = { type = "fluid", name = advancedacid, amount = 5 } }), results = { {type = "item", name = "bob-advanced-processing-unit", amount = 1} }, - allow_decomposition = false, - allow_productivity = true + allow_decomposition = false } local cable = { From 4a693c2ccd0a3122fe95337270c74b5df0576979 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:51:46 +0200 Subject: [PATCH 23/27] Added productivity for circuit intermediates --- CircuitProcessing/bobelectronics.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index c1d79b8..80e3c68 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -36,6 +36,8 @@ data.raw.item['electronic-circuit'] = local cpelectroniccircuitboardrecipe = data.raw.recipe['electronic-circuit'] data.raw.recipe['cp-electronic-circuit-board'] = cpelectroniccircuitboardrecipe cpelectroniccircuitboardrecipe.name = 'cp-electronic-circuit-board' +data.raw.recipe["cp-electronic-circuit-board"].allow_productivity = true + data.raw.recipe["cp-electronic-circuit-board"].results = { { type = "item", name = "cp-electronic-circuit-board", amount = 1 } } @@ -73,6 +75,7 @@ data.raw.item['advanced-circuit'] = local cpadvancedcircuitboardrecipe = data.raw.recipe['advanced-circuit'] data.raw.recipe['cp-advanced-circuit-board'] = cpadvancedcircuitboardrecipe cpadvancedcircuitboardrecipe.name = 'cp-advanced-circuit-board' +data.raw.recipe["cp-advanced-circuit-board"].allow_productivity = true data.raw.recipe["cp-advanced-circuit-board"].results = { { type = "item", name = "cp-advanced-circuit-board", amount = 1 } @@ -115,6 +118,7 @@ data.raw.item['processing-unit'] = local cpprocessingboardrecipe = data.raw.recipe['processing-unit'] data.raw.recipe['cp-processing-board'] = cpprocessingboardrecipe cpprocessingboardrecipe.name = 'cp-processing-board' +data.raw.recipe["cp-processing-board"].allow_productivity = true data.raw.recipe["cp-processing-board"].results = { { type = "item", name = "cp-processing-board", amount = 1 } @@ -168,6 +172,7 @@ end local cpadvancedprocessingboardrecipe = data.raw.recipe['bob-advanced-processing-unit'] data.raw.recipe['cp-advanced-processing-board'] = cpadvancedprocessingboardrecipe cpadvancedprocessingboardrecipe.name = 'cp-advanced-processing-board' +data.raw.recipe["cp-advanced-processing-board"].allow_productivity = true data.raw.recipe["cp-advanced-processing-board"].results = { { type = "item", name = "cp-advanced-processing-board", amount = 1 } From aca9abfc93aba1cb23590d2652151640b6d14741 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sun, 19 Oct 2025 19:16:24 +0200 Subject: [PATCH 24/27] Fixed prerequisites for angels-bio-modules --- CircuitProcessing/angelsmodules.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/CircuitProcessing/angelsmodules.lua b/CircuitProcessing/angelsmodules.lua index 9a5ed35..60ac3ae 100644 --- a/CircuitProcessing/angelsmodules.lua +++ b/CircuitProcessing/angelsmodules.lua @@ -5,4 +5,16 @@ lib.replace_recipe_ingredient("angels-bio-yield-module", "bob-pollution-create-m lib.replace_recipe_ingredient("angels-bio-yield-module-2", "bob-pollution-create-module-2", "efficiency-module-2") lib.replace_recipe_ingredient("angels-bio-yield-module-3", "bob-pollution-create-module-3", "efficiency-module-3") lib.replace_recipe_ingredient("angels-bio-yield-module-4", "bob-pollution-create-module-4", "bob-efficiency-module-4") -lib.replace_recipe_ingredient("angels-bio-yield-module-5", "bob-pollution-create-module-5", "bob-efficiency-module-5") \ No newline at end of file +lib.replace_recipe_ingredient("angels-bio-yield-module-5", "bob-pollution-create-module-5", "bob-efficiency-module-5") + +bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module", "bob-pollution-create-module-1") +bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-2", "bob-pollution-create-module-2") +bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-3", "bob-pollution-create-module-3") +bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-4", "bob-pollution-create-module-4") +bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-5", "bob-pollution-create-module-5") + +bobmods.lib.tech.add_prerequisite("angels-bio-yield-module", "efficiency-module") +bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-2", "efficiency-module-2") +bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-3", "efficiency-module-3") +bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-4", "bob-efficiency-module-4") +bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-5", "bob-efficiency-module-5") \ No newline at end of file From 713f22a19e6967803cfb24b300d71f6e01fc9770 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:14:40 +0200 Subject: [PATCH 25/27] Added bobassembly check for crafting categories --- CircuitProcessing/bobelectronics.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 80e3c68..44fa3d2 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -43,11 +43,19 @@ data.raw.recipe["cp-electronic-circuit-board"].results = { } lib.set_main_product('cp-electronic-circuit-board', 'cp-electronic-circuit-board') +local electronics_crafting_category = "crafting" +local electronics_fluid_crafting_category = "advanced-crafting" + +if mods["bobassembly"] then + electronics_crafting_category = "electronics" + electronics_fluid_crafting_category = "electronics-with-fluid" +end + data.raw.recipe['electronic-circuit'] = { type = "recipe", name = "electronic-circuit", - category = "electronics", + category = electronics_crafting_category, ingredients = { { type = "item", name = "cp-electronic-circuit-board", amount = 1 }, { type = "item", name = "iron-plate", amount = 2 } @@ -86,7 +94,7 @@ data.raw.recipe['advanced-circuit'] = { type = "recipe", name = "advanced-circuit", - category = "electronics", + category = electronics_crafting_category, enabled = false, energy_required = 6, ingredients = lib.checkplate( @@ -128,7 +136,7 @@ data.raw.recipe['processing-unit'] = { type = "recipe", name = "processing-unit", - category = "electronics-with-fluid", + category = electronics_fluid_crafting_category, enabled = false, energy_required = 10, ingredients = lib.checkplate( @@ -185,7 +193,7 @@ data.raw.recipe['bob-advanced-processing-unit'] = { type = "recipe", name = "bob-advanced-processing-unit", - category = "electronics-with-fluid", + category = electronics_fluid_crafting_category, enabled = false, energy_required = 15, ingredients = lib.checkplate( From c42481395ab0f9f5791444697c7fc12a4007d268 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:17:29 +0200 Subject: [PATCH 26/27] Added angels-bio-module checks --- CircuitProcessing/angelsmodules.lua | 21 +++++++++++++++------ CircuitProcessing/data-updates.lua | 6 +++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/CircuitProcessing/angelsmodules.lua b/CircuitProcessing/angelsmodules.lua index 60ac3ae..4ae8744 100644 --- a/CircuitProcessing/angelsmodules.lua +++ b/CircuitProcessing/angelsmodules.lua @@ -4,17 +4,26 @@ local lib = require "lib" lib.replace_recipe_ingredient("angels-bio-yield-module", "bob-pollution-create-module-1", "efficiency-module") lib.replace_recipe_ingredient("angels-bio-yield-module-2", "bob-pollution-create-module-2", "efficiency-module-2") lib.replace_recipe_ingredient("angels-bio-yield-module-3", "bob-pollution-create-module-3", "efficiency-module-3") -lib.replace_recipe_ingredient("angels-bio-yield-module-4", "bob-pollution-create-module-4", "bob-efficiency-module-4") -lib.replace_recipe_ingredient("angels-bio-yield-module-5", "bob-pollution-create-module-5", "bob-efficiency-module-5") + +if mods["bobmodules"] then + lib.replace_recipe_ingredient("angels-bio-yield-module-4", "bob-pollution-create-module-4", "bob-efficiency-module-4") + lib.replace_recipe_ingredient("angels-bio-yield-module-5", "bob-pollution-create-module-5", "bob-efficiency-module-5") +end bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module", "bob-pollution-create-module-1") bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-2", "bob-pollution-create-module-2") bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-3", "bob-pollution-create-module-3") -bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-4", "bob-pollution-create-module-4") -bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-5", "bob-pollution-create-module-5") + +if mods["bobmodules"] then + bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-4", "bob-pollution-create-module-4") + bobmods.lib.tech.remove_prerequisite("angels-bio-yield-module-5", "bob-pollution-create-module-5") +end bobmods.lib.tech.add_prerequisite("angels-bio-yield-module", "efficiency-module") bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-2", "efficiency-module-2") bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-3", "efficiency-module-3") -bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-4", "bob-efficiency-module-4") -bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-5", "bob-efficiency-module-5") \ No newline at end of file + +if mods["bobmodules"] then + bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-4", "bob-efficiency-module-4") + bobmods.lib.tech.add_prerequisite("angels-bio-yield-module-5", "bob-efficiency-module-5") +end \ No newline at end of file diff --git a/CircuitProcessing/data-updates.lua b/CircuitProcessing/data-updates.lua index 62398aa..b28d891 100644 --- a/CircuitProcessing/data-updates.lua +++ b/CircuitProcessing/data-updates.lua @@ -1,3 +1,7 @@ require "bobelectronics" -require "angelsmodules" + +if mods["angelsbioprocessing"] then + require "angelsmodules" +end + require "bobmodules" \ No newline at end of file From f37fd9971190a4e28e5e9c3532734bd32c236781 Mon Sep 17 00:00:00 2001 From: Athena Faris <75452942+KompetenzAirbag@users.noreply.github.com> Date: Sun, 4 Jan 2026 22:22:07 +0100 Subject: [PATCH 27/27] Adding new advanced electronic icons to better distinguish --- CircuitProcessing/bobelectronics.lua | 10 ++++++++++ .../graphics/icons/circuit-board.png | Bin 0 -> 8536 bytes .../graphics/icons/electronic-circuit-board.png | Bin 0 -> 9962 bytes 3 files changed, 10 insertions(+) create mode 100644 CircuitProcessing/graphics/icons/circuit-board.png create mode 100644 CircuitProcessing/graphics/icons/electronic-circuit-board.png diff --git a/CircuitProcessing/bobelectronics.lua b/CircuitProcessing/bobelectronics.lua index 44fa3d2..9af488e 100644 --- a/CircuitProcessing/bobelectronics.lua +++ b/CircuitProcessing/bobelectronics.lua @@ -274,3 +274,13 @@ for k,v in pairs(data.raw.technology) do end end end + +-- Update advanced circuit icons as they are very similar +local circuit_board = data.raw.item["bob-circuit-board"] +if circuit_board then + circuit_board.icon = "__CircuitProcessing__/graphics/icons/circuit-board.png" +end + +circuit_board = data.raw.item["cp-advanced-circuit-board"] + +circuit_board.icon = "__CircuitProcessing__/graphics/icons/electronic-circuit-board.png" \ No newline at end of file diff --git a/CircuitProcessing/graphics/icons/circuit-board.png b/CircuitProcessing/graphics/icons/circuit-board.png new file mode 100644 index 0000000000000000000000000000000000000000..609411236ce0857f0e8fbf9ed4450afa31bdf45f GIT binary patch literal 8536 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 literal 0 HcmV?d00001