From bb624c1159b748f90f1a7431cfd018697e10f5a0 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 15 Dec 2025 23:11:31 +0100 Subject: [PATCH] Add setting to make the lumber mill electric --- lignumis/locale/en/strings.cfg | 2 + lignumis/prototypes/compatibility/data.lua | 3 +- lignumis/prototypes/compatibility/updates.lua | 3 +- .../compatibility/wood-logistics.lua | 62 ++++++++++---- lignumis/prototypes/content/lumber-mill.lua | 81 +++++++++++-------- .../prototypes/content/technology-updates.lua | 13 --- lignumis/prototypes/content/updates.lua | 3 +- lignumis/settings.lua | 9 ++- lignumis/settings/wood-logistics.lua | 1 - 9 files changed, 108 insertions(+), 69 deletions(-) delete mode 100644 lignumis/prototypes/content/technology-updates.lua diff --git a/lignumis/locale/en/strings.cfg b/lignumis/locale/en/strings.cfg index f165a69..bf7d502 100644 --- a/lignumis/locale/en/strings.cfg +++ b/lignumis/locale/en/strings.cfg @@ -195,6 +195,7 @@ lignumis-vanilla-lab=[color=orange][font=heading-2]Overhaul[/font][/color] Keep lignumis-double-rocket=[color=green][font=heading-2]Easy[/font][/color] Double provisional rocket cargo capacity lignumis-sciences-spoil=[color=red][font=heading-2]Hard[/font][/color] Lignumis science packs spoil lignumis-infinite-astroponics-productivity-research=[color=green][font=heading-2]Easy[/font][/color] Infinite productivity research for Astroponics +lignumis-electric-lumber-mill=[color=green][font=heading-2]Easy[/font][/color] Electric lumber mill [mod-setting-description] lignumis-belt-progression=Yellow belts will require wood belts to craft. @@ -211,6 +212,7 @@ lignumis-vanilla-lab=Moves the transport belt recipe to Iron processing so the l lignumis-double-rocket=The provisional rocket can carry 80 instead of 40 slots. lignumis-sciences-spoil=Both wood science packs and steam science packs spoil for additional difficulty. lignumis-infinite-astroponics-productivity-research=Productivity research for Astroponics is infinite instead of being capped to level 5 (which results in 50% productivity). +lignumis-electric-lumber-mill=The lumber mill will consume electricity instead of burner fuel and will be unlocked after researching electricity. [autoplace-control-names] lignumis_enemy_base=Lignumis enemy bases diff --git a/lignumis/prototypes/compatibility/data.lua b/lignumis/prototypes/compatibility/data.lua index 8450277..0ed7173 100644 --- a/lignumis/prototypes/compatibility/data.lua +++ b/lignumis/prototypes/compatibility/data.lua @@ -8,5 +8,4 @@ require("lane-splitters") require("wood-industry") require("crushing-industry") require("canal-excavator") -require("diversitree") -require("wood-logistics") \ No newline at end of file +require("diversitree") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/updates.lua b/lignumis/prototypes/compatibility/updates.lua index 56e0bbe..2042d0d 100644 --- a/lignumis/prototypes/compatibility/updates.lua +++ b/lignumis/prototypes/compatibility/updates.lua @@ -1,4 +1,5 @@ require("aai-industry") require("gleba-reborn") require("crushing-industry-updates") -require("k2so") \ No newline at end of file +require("k2so") +require("wood-logistics") \ No newline at end of file diff --git a/lignumis/prototypes/compatibility/wood-logistics.lua b/lignumis/prototypes/compatibility/wood-logistics.lua index 31cf9ed..98ea43f 100644 --- a/lignumis/prototypes/compatibility/wood-logistics.lua +++ b/lignumis/prototypes/compatibility/wood-logistics.lua @@ -7,6 +7,7 @@ if not mods["wood-logistics"] then end local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value +local electric_lumber_mill = settings.startup["lignumis-electric-lumber-mill"].value -- Lumber @@ -18,26 +19,29 @@ end -- Lumber mill if settings.startup["wood-logistics-lumber-mill"].value then local lumberMill = data.raw["assembling-machine"]["lumber-mill"] - table.assign(lumberMill, { - energy_source = { + lumberMill.surface_conditions = { + { + property = has_oxygen and "oxygen" or "pressure", + min = 3 + }, + { + property = "gravity", + min = 1 + } + } + table.insert(lumberMill.crafting_categories, "wood-processing") + + if electric_lumber_mill then + lumberMill.energy_source.emissions_per_minute.noise = 100 + else + lumberMill.energy_source = { type = "burner", fuel_categories = { "chemical" }, effectivity = 1, fuel_inventory_size = 3, emissions_per_minute = { pollution = 10, noise = 100 }, - }, - surface_conditions = { - { - property = has_oxygen and "oxygen" or "pressure", - min = 3 - }, - { - property = "gravity", - min = 1 - } } - }) - table.insert(lumberMill.crafting_categories, "wood-processing") + end data.raw.item["lumber-mill"].default_import_location = "lignumis" @@ -63,9 +67,37 @@ if settings.startup["wood-logistics-lumber-mill"].value then } }) :replaceIngredient("gold-plate", "copper-plate") + :unlockedByTechnology( + electric_lumber_mill and "advanced-carpentry" + or basic_circuit_board and "copper-processing" + or "electronics" + ) :apply() - Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper") + if electric_lumber_mill then + table.assign(data.raw.technology["advanced-carpentry"], { + prerequisites = { "automation-science-pack" }, + unit = { + count = 250, + time = 15, + ingredients = { + { "automation-science-pack", 1 } + } + } + }) + else + table.assign(data.raw.technology["advanced-carpentry"], { + prerequisites = { "steam-science-pack" }, + unit = { + count = 250, + time = 15, + ingredients = { + { "wood-science-pack", 1 }, + { "steam-science-pack", 1 } + } + } + }) + end end diff --git a/lignumis/prototypes/content/lumber-mill.lua b/lignumis/prototypes/content/lumber-mill.lua index 1e21aa4..c10aac5 100644 --- a/lignumis/prototypes/content/lumber-mill.lua +++ b/lignumis/prototypes/content/lumber-mill.lua @@ -3,8 +3,6 @@ local Technology = require("__cf-lib__/data/Technology") local LumberMillFactory = require(MF.buildings .. "LumberMill") local LumberMill = LumberMillFactory() -local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value - data:extend({ { type = "recipe-category", @@ -12,39 +10,45 @@ data:extend({ } }) +local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value local has_oxygen = data.raw["surface-property"]["oxygen"] ~= nil +local electric_lumber_mill = settings.startup["lignumis-electric-lumber-mill"].value if mods["wood-logistics"] then return end - LumberMill.EntityBuilder:new() - :burnerEnergySource({ emissions_per_minute = { noise = 100 } }) - :baseProductivity(0.5) - :apply({ - crafting_categories = { "wood-processing" }, - crafting_speed = 2, - energy_usage = "1000kW", - surface_conditions = { - { - property = has_oxygen and "oxygen" or "pressure", - min = 3 - }, - { - property = "gravity", - min = 1 - } +local lumberMill = LumberMill.EntityBuilder:new() + :baseProductivity(0.5) +if electric_lumber_mill then + lumberMill:electricEnergySource({ emissions_per_minute = { noise = 100 } }) +else + lumberMill:burnerEnergySource({ emissions_per_minute = { noise = 100 } }) +end +lumberMill:apply({ + crafting_categories = { "wood-processing" }, + crafting_speed = 2, + energy_usage = "1000kW", + surface_conditions = { + { + property = has_oxygen and "oxygen" or "pressure", + min = 3 + }, + { + property = "gravity", + min = 1 } - }) + } +}) - local lumber_mill_item = LumberMill.ItemBuilder:new() - :apply({ +local lumber_mill_item = LumberMill.ItemBuilder:new() + :apply({ default_import_location = "lignumis", order = "2[lumber-mill]" }) - LumberMill.RecipeBuilder:new() - :ingredients(table.trim({ +LumberMill.RecipeBuilder:new() + :ingredients(table.trim({ { type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "lumber", amount = 50 }, { type = "item", name = "wooden-gear-wheel", amount = 50 }, @@ -52,19 +56,24 @@ end basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 20 } or nil, { type = "item", name = "burner-assembling-machine", amount = 2 } })) - :apply({ + :apply({ additional_categories = { "wood-processing" } }) - LumberMill.TechnologyBuilder:new() - :prerequisites({ "steam-science-pack" }) - :count(250) - :time(15) - :ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }) - :apply() +local tech = LumberMill.TechnologyBuilder:new() + :count(250) + :time(15) +if electric_lumber_mill then + tech:prerequisites({ "automation-science-pack" }) + :ingredients({ { "automation-science-pack", 1 } }) +else + tech:prerequisites({ "steam-science-pack" }) + :ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }) +end +tech:apply() - LumberMill.RecipeBuilder:new() - :ingredients({ +LumberMill.RecipeBuilder:new() + :ingredients({ { type = "item", name = "stone-brick", amount = 40 }, { type = "item", name = "lumber", amount = 50 }, { type = "item", name = "wooden-gear-wheel", amount = 50 }, @@ -72,7 +81,7 @@ end { type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 20 }, { type = "item", name = "assembling-machine-1", amount = 2 } }) - :apply({ + :apply({ name = "lumber-mill-copper", localised_name = { "entity-name.lumber-mill" }, additional_categories = { "wood-processing" }, @@ -82,7 +91,11 @@ end } }) - Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper") +Technology:new( + electric_lumber_mill and "lumber-mill" + or basic_circuit_board and "copper-processing" + or "electronics" +):addRecipe("lumber-mill-copper") Recipe:new("wooden-chest"):addCategory("wood-processing") Recipe:new("small-electric-pole"):addCategory("wood-processing") \ No newline at end of file diff --git a/lignumis/prototypes/content/technology-updates.lua b/lignumis/prototypes/content/technology-updates.lua deleted file mode 100644 index 386ddf2..0000000 --- a/lignumis/prototypes/content/technology-updates.lua +++ /dev/null @@ -1,13 +0,0 @@ -if mods["wood-logistics"] then - table.assign(data.raw.technology["advanced-carpentry"], { - prerequisites = { "steam-science-pack" }, - unit = { - count = 250, - time = 15, - ingredients = { - { "wood-science-pack", 1 }, - { "steam-science-pack", 1 } - } - } - }) -end \ No newline at end of file diff --git a/lignumis/prototypes/content/updates.lua b/lignumis/prototypes/content/updates.lua index 640ef0c..7087806 100644 --- a/lignumis/prototypes/content/updates.lua +++ b/lignumis/prototypes/content/updates.lua @@ -1,3 +1,2 @@ require("fuel-category-updates") -require("lignumis/planet-updates") -require("technology-updates") \ No newline at end of file +require("lignumis/planet-updates") \ No newline at end of file diff --git a/lignumis/settings.lua b/lignumis/settings.lua index 9cc4a5e..f043c65 100644 --- a/lignumis/settings.lua +++ b/lignumis/settings.lua @@ -99,11 +99,18 @@ data:extend({ }, { type = "bool-setting", - name = "lignumis-sciences-spoil", + name = "lignumis-electric-lumber-mill", setting_type = "startup", default_value = false, order = "o" }, + { + type = "bool-setting", + name = "lignumis-sciences-spoil", + setting_type = "startup", + default_value = false, + order = "p" + }, { type = "string-setting", name = "lignumis-second-planet", diff --git a/lignumis/settings/wood-logistics.lua b/lignumis/settings/wood-logistics.lua index ab0a231..2595d62 100644 --- a/lignumis/settings/wood-logistics.lua +++ b/lignumis/settings/wood-logistics.lua @@ -4,6 +4,5 @@ end local Settings = require("__cf-lib__/settings/Settings") local force = Settings.force -local default = Settings.default force("wood-logistics-woodtronics", false) \ No newline at end of file